恶意代码分析Lab-1
第一章实验
ida快捷键
1 |
|
常见dll函数
Lab1-1
Lab01-01.exe和Lab01-01.dll
1.将文件上传至 http://www.VirusTotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件的特征?

2.这些文件是什么时候编译的?
exe:

dll:

3.这两个文件中是否存在迹象说明它们是否被加壳或混淆了?如果是,这些迹象在哪里?
用peid分析,能够正常识别编译环境,ep段正常,所以没有加密或者混淆


4.是否有导入函数显示出了这个恶意代码是做什么的?如果是,是哪些导入函数?
Lab01-01.dll的导入函数:
Wsock32.dll和Ws2_32.dll这两个是联网DLL,访问其中任何一个DLL的程序非常可能连接网络,或是执行网络相关的任务。

Lab01-01.exe的导入函数:
FindFirstFile和FindNextFile函数是特别值得关注的,因为它们提供的功能是搜索一个目录下所有的文件。

Lab01-01.exeexe,根据ida的字符串分析(ctrl+f12)可得到C:\Windows\System32\kerne132.dll可能是程序运行的特征
Lab1-2
peid的ep段显示upx1,说明文件可能加壳了

upx -d 脱壳

脱壳后正常显示了

上传网页分析,得到导入函数
WININET.dll,ADVAPI32.dll说明这个程序可能进行网络和进程的操作

通过ida的字符串分析
这里可能是创建了一个名为MalService的服务(DisplayName的内容就是MalService)

验证样本传输的网络数据
使用od分析,右键中文搜索引擎,智能搜索,找到网站


主线程窗口中选择数据窗口跟随(主线程窗口放大即可找到数据窗口)


改成127.0.0.1,用00填充剩下的位置

然后右键选择复制到可执行文件,然后再右键保存文件
PS:一直捕捉不到样本的网络数据,并且调试的时候会卡住,故放弃了。。。
Lab1-3
首先可以看到这是个fsg壳,看到有人试过了,所以我也决定尝试手动脱壳试试
使用x32dbg,技巧就是f4过跳转,f8走,直到看到一个大跳,跟进去看看

如果到了系统领空,可以alt+f9跳出去

猜测这个就是程序的oep,在反汇编窗口中转到这个地址,然后直接f4看看

然后使用这个插件,先dump一份

然后点击自动搜索IAT表和获取导入表

最后修复dump的文件即可

导入表内容


拖进ida,这个psz就是这个网址,可能程序会与这个网址进行连接

CoCreateInstance的官方文档
CoCreateInstance function (combaseapi.h) - Win32 apps |微软文档 (microsoft.com)
相关文章COM组件的逆向 - QKSword - 博客园 (cnblogs.com)
TOD赤橙黄绿青蓝紫队系列:COM之恶 - FreeBuf网络安全行业门户
参考以上文章,com组件使用之前需要初始化,初始化com组件之后,使用函数CoCreateInstance来调用对象和接口,第一个参数使用CLSID指定了对象,第四个参数使用IID指定了接口,最后一个参数为获得的接口指针。
原型
1 |
|
iid和clsid的结构
样本中查看其clsid为0002DF01-0000-0000-C000-000000000046
可以直接在注册表里搜索(clsid在注册表HKEY_CLASSES_ROOT\CLSID下,IID在HKEY_CLASSES_ROOT\Interface或HKLM\Software\Classes\Interface下)

这里获取到的IID是D30C1661-CDAF-11D0-8A3E-00C04FC9E26E
可以谷歌或者百度看看这个GUID对应的接口是什么,这里是IWebBrowser2
找到接口之后,在ida的结构体窗口添加这个标准结构体(Vtbl是虚函数表的意思)

对于这个指针,右键convert to struct与结构体建立联系,就可以看到调用的函数是什么了
之后就可以知道正确调用的函数了
这里可以看到是使用了IWebBrowser2::Navigate方法IWebBrowser2::导航|微软文档 (microsoft.com)打开了这个url
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!,本博客仅用于交流学习,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此站文章的修改和解释权。如欲转载此站文章,需取得作者同意,且必须保证此文章的完整性,包括版权声明等全部内容。未经文章作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。若造成严重后果,本人将依法追究法律责任。 阅读本站文章则默认遵守此规则。