概述
这是一个MFC写的文件夹病毒,通过感染USB设备传播,感染后,会向c2(fecure.info:443
)请求指令来执行。
样本的基本信息
Verified: Unsigned
Link date: 19:52 2007/7/5
MachineType: 32-bit
MD5: 4B463901E5858ADA9FED28FC5134A039
SHA1: 9F10D1E42AC628B1794DDA08EB6C9B7D7B5DBD55
SHA256: 2C2D947D62D352E8FC0AB8A9D69B8DCA0AEE73716CC02806BD79B473CDBB7B7B
这是一个MFC程序,不太好分析,首先先找到程序的入口
用ResHacker看一下它的资源,其中有一个对话框 ,title为MyPCMD
,暂且将这个窗口命名为MyPCMD
。
在样本的.rdata节中找到了CMyPCMDApp和CMyPCMDDlg中的方法。
其中CMyPCMDApp类中用户自定义的函数有
~CMyPCMDApp_409A10
GetMessageMap_4093FA
InitInstance_4096C6
CMyPCMDDlg类中用户自定义的方法有
~CMyPCMDDlg_40A050
GetMessageMap_409C56
OnInitDialog_409C66
病毒的恶意操作肯定在这几个函数中,依次分析这些函数发现CMyPCMDApp::InitInstance_4096C6和CMyPCMDDlg::OnInitDialog_409C66这两个函数比较可疑。
CMyPCMDApp::InitInstance_4096C6
在注册表中创建开机启动项
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"winmcs"="c:\programdata\winmcs.exe"
将病毒自身拷贝为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
来获取指令,根据指令来执行不同的操作
根据字符串大致可以推断具有以下功能,这部分有点复杂,啃不动。
c
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
遍历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
总结
这个样本是分析的第一个MFC病毒,又重新把MFC学习了一篇,对于C++中的类的逆向有点费劲。