本帖最后由 659525 于 2019-12-5 10:31 编辑
0x0 前言
Pony Fareit木马.net分析--通过STMP协议的.net样本挺多的,写下来当样本记录下
0x1 样本信息(截图自Virus total)
样本信息
0x2 分析过程
1.第一段解密:对资源字符串进行异或解密,解密方式为每个双字减去0x58D1(22737)然后与0x8E异或
第一段解密异或
2.第二段解密:将异或获得的XorCode进行Base64解码,得到一个PE文件(dump1,也是.net)
第二段解密Base64
解密出dump1
3.dump1内有检测虚拟机的函数IsVM(但是并未执行这一函数体,我们待会进去仔细分析一下)
检测虚拟机
4.异或解密资源,并加载其运行(异或Key为:CnajNowpjKsL)。由此可以发现dump1依旧是一个外壳程序,解密出真正的病毒本体(dump2,也是.net)
dump2的Key
5.dump2开始干活,先是常规三连:拷贝,隐藏,自启动
自我拷贝
隐藏
长久驻留
6.进入木马的特色部分:窃取各个浏览器Cookie,以及mail的内容等等
UC-Cookie
Claws-mail
7.将获取的Cookie打包成zip,绑定STMP邮箱后发送(zip在发送成功后会删除,从而清理痕迹)
STMP邮箱绑定发送
0x3 总结
1..net调试一般选择从入口点开始调试,在调试之前最好在静态分析,找到关键处代码(不然跟不进去)
2.dump2是一个常见的通过STMP窃密的邮件木马,这里我参考了前辈的分析:https://blog.csdn.net/chr8230401/article/details/100664775
3.dump1其实有反虚拟机检测,但是作者并未开启,我们又想进去一探究竟,怎么办呢,只能强改跳转看了(dnSpy的使用感不太好):
先尝试右键改下逻辑跳转,发现只能改到当前的那一行(改了也无效,想直接改到函数内部也不行,不知道啥原理)
.net调试修改1
然后只能强行改内存了,这种方法也不太友好(只对当前调试程序一次有效,重新F5都要重新改):
先右键->查看到反汇编,然后通过汇编定位(Crtl+F搜索函数名快速定位)到关键跳转,内存窗口中crtl+G跳转至该地址,查找对应OPCode修改即可(比如这里是0x74 je->0x75 jne).
.net调试修改2
反虚拟机的操作基本上是查询注册表来比对返回值有无vmware之类的关键字符串
附:第一次发帖,找不到预览按钮;md格式上传的图都挂了要重新贴,有没有铁子教一教小伙
|