码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一例MFC文件夹病毒的分析


    概述

    这是一个MFC写的文件夹病毒,通过感染USB设备传播,感染后,会向c2(fecure.info:443)请求指令来执行。

    样本的基本信息

    Verified:    Unsigned
    Link date:    19:52 2007/7/5
    MachineType:    32-bit
    MD5:    4B463901E5858ADA9FED28FC5134A039
    SHA1:    9F10D1E42AC628B1794DDA08EB6C9B7D7B5DBD55
    SHA256:    2C2D947D62D352E8FC0AB8A9D69B8DCA0AEE73716CC02806BD79B473CDBB7B7B
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这是一个MFC程序,不太好分析,首先先找到程序的入口

    用ResHacker看一下它的资源,其中有一个对话框 ,title为MyPCMD,暂且将这个窗口命名为MyPCMD。

    在样本的.rdata节中找到了CMyPCMDApp和CMyPCMDDlg中的方法。
    其中CMyPCMDApp类中用户自定义的函数有

    ~CMyPCMDApp_409A10
    GetMessageMap_4093FA
    InitInstance_4096C6
    
    • 1
    • 2
    • 3

    CMyPCMDDlg类中用户自定义的方法有

    ~CMyPCMDDlg_40A050
    GetMessageMap_409C56
    OnInitDialog_409C66
    
    • 1
    • 2
    • 3

    病毒的恶意操作肯定在这几个函数中,依次分析这些函数发现CMyPCMDApp::InitInstance_4096C6和CMyPCMDDlg::OnInitDialog_409C66这两个函数比较可疑。

    CMyPCMDApp::InitInstance_4096C6

    在注册表中创建开机启动项

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
    "winmcs"="c:\programdata\winmcs.exe"
    
    • 1
    • 2

    将病毒自身拷贝为c:\programdata\winmcs.exe

    打开与病毒文件同名的目录

    若当前文件名不是c:\programdata\winmcs.exe,启动c:\programdata\winmcs.exe,然后退出。

    创建互斥量Hello_ss,若存在同名的互斥量,退出。若不存在同名互斥量,创建一个窗口类CMyPCMDDialog,调用这个对话框的DoModal()方法。

    CMyPCMDDlg::OnInitDialog_409C66

    在这个函数中将对话框的标题设置空,隐藏窗口,创建又删除文件%temp%\Ie5TempFile.Dat,莫明其妙。之后创建了一个线程来执行恶意操作。


    在这个线程中构造了一个非常复杂的类。然后连接fecure.info:443来获取指令,根据指令来执行不同的操作
    根据字符串大致可以推断具有以下功能,这部分有点复杂,啃不动。

    FileSend send file to romot, peer  
    FileRecv recv file to romot, peer  
    FileRun recv file to romot, peer and run 
    sendfile Send file to the romote
    getfile Get the romote file
    cmdshell Get the remote cmdshell
    mycmd Run the remote cmd
    exec Run the remote exec
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    遍历D-X盘符,寻找U盘来感染。

    判断U盘的方式有两种,一是调用GetDriveTypeA,二是通过DeviceIoControl来查询存储设备的属性来判断是否为USB设备(code为IOCTL_STORAGE_QUERY_PROPERTY 0x2D1400u)。

    感染U盘的方式简单粗暴,直接将根目录下的原文件夹隐藏,将自身复制为目录名+169个空格+'.exe',感染后的症状如下图所示,由于exe文件名太长了,资源管理器显示不全,用户一般看不到后缀名,会误点击造成感染系统。

    IOC

    hash 
    4B463901E5858ADA9FED28FC5134A039
    
    文件
    c:\programdata\winmcs.exe
    %temp%\Ie5TempFile.Dat
    
    X:\目录名+169个空格+'.exe'
    
    互斥量 Hello_ss
    
    网络
    fecure.info:443
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    总结

    这个样本是分析的第一个MFC病毒,又重新把MFC学习了一篇,对于C++中的类的逆向有点费劲。

    参考资料

    • 逆向MFC程序_mfc逆向-CSDN博客

    • VS2010/MFC编程入门教程之目录和总结-软件开发-鸡啄米 (jizhuomi.com)

    • [翻译]浅析MFC逆向(Basic MFC Reversing)-外文翻译-看雪-安全社区|安全招聘|kanxue.com

    • [原创]STORAGE_DEVICE_DESCRIPTOR 方式获取硬盘序列号-编程技术-看雪-安全社区|安全招聘|kanxue.com

  • 相关阅读:
    删除不必要的内核模块
    JVM成神之路(十一) -- JVM常用命令解析
    【HTML特效程序】① 给女神表白的程序(让女神看科技烟花),输入名字自动生成表白二维码
    怎么裁剪图片?总结了下面几个方法
    6.1二叉树的递归遍历(LC144,LC15,LC94)
    JAVA学习(4)-全网最详细~
    《算法竞赛·快冲300题》每日一题:“二进制数独”
    携创教育:成人自考本科全部流程!
    Day03—Python的条件判断(if、elif和else语句),代码缩进规则
    聊聊 Vue 的双端 diff 算法
  • 原文地址:https://blog.csdn.net/a854596855/article/details/138083330
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号