黑白鉴定入门之一款后门的分析思路

0x1 文章简介
这是一篇针对初学小白的文章, 楼主也刚刚进入安全行业实习,本篇文章主要记录分析过程,思想方法,如有不对不足,欢迎指出。


0x2 样本hash[size=1.5]3c8ba5a38cd1e4048c969464ab86591d9b08cba9

0x3 分析思路
在拿到一个样本之后,第一件事拖入PEID查壳

没壳,区段正常
分析一下字符串
选出一些有用的字符串
LoadLibraryA
GetProcAddress
ReadFile
CreateFileW
剩下的都是大片的乱码867232_5RPKS6UFK5Q8X49.png没什么有用的信息
拖入IDA看一下导入表867232_5RPKS6UFK5Q8X49.png
找出一些能下手的地方
0040301C LoadLibraryA KERNEL32
00403020 GetProcAddress KERNEL32
00403034 ReadFile KERNEL32
能作为突破点的API很少,先试着从LoadLibraryA入手
通过ida的交叉引用查看调用867232_5RPKS6UFK5Q8X49.png发现样本使用了CreateFileW,推测有释放文件的操作。
虚拟机打开OD,定位到调用CreateFileW处,在00401FF8 下段,看看样本创建了什么文件867232_5RPKS6UFK5Q8X49.png观察堆栈 发现样本创建了自身,放行,样本直接结束
转为在CreateFileW函数头部下断,重新运行样本,观察堆栈
发现断下多次,我们将每一次的堆栈信息都截图下来,并且将文件备份一份867232_5RPKS6UFK5Q8X49.png
根据以上可以推测出样本创建了第二个自身,结束第一个自身,然后释放文件
为了验证,打开火绒剑捕捉行为

过滤没有用的动作,分析剩下的动作
和我们预测的差不多,启动自身,释放文件,结束
因为他释放完紧接着删除了,很不正常,我们是用火绒的拦截功能,拦截样本的删除动作,捕获被释放的文件

再次执行样本

可以看到样本在试图删除tmp,我们点击阻止,然后分析这个tmp

可以发现tmp是0字节,是哪里出了问题,这是样本的障眼法?或者是他的写入代码没有被执行
到这里好像所有步骤都白费了,抓到的释放行为,结果是释放了一个空文件
那么他的真正功能在哪里呢,既然没被释放到磁盘,那就有可能直接在内存开辟了缓冲区去执行
接下来试着验证这条猜想,打开OD,在VirtualAlloc处下断
放行

果然断下来了,跟出函数,看看他申请这块内存要干什么
867232_5RPKS6UFK5Q8X49.png
这就是申请好的内存地址,右键数据窗口中跟随,下内存写入断点,放行

卧槽,竟然直接终止了,肯定是哪里不对
还是回到那个申请的内存,下硬件写入断点
再次放行

这次断下了,观察数据,发现是很熟悉的PE结构
右键->备份->保存数据到文件
将导出的数据拖入PEID

果然 这段数据很有问题
打开beyond进行代码比较

和本体一模一样的数据,这可能就是火绒剑行为中的创建自身进程用到的数据
回到OD,删除硬件断点,放行
竟然又在alloc处断下,本来以为程序差不多结束了,没想到有意外收获
同样的方法查看这块内存的数据

同样的方法比对代码,依然一样
再次放行,又在alloc断下,同样方法,再次来一遍
这次你会发现,硬断触发的代码,有个循环用来向开辟的内存中赋值
跳出这段循环,被填充的代码是没见过的,但是当你F8下去的时候,会发现下面还有个循环,跳出这个循环,再次F8下去,会有一个大循环
867232_5RPKS6UFK5Q8X49.png
同样是PE结构,但是这次还做了加密解密,必然有问题
同样的方法保存下来,进行对比
867232_5RPKS6UFK5Q8X49.png
正如我们猜测的,这个PE文件开始发生了变化,先将其存好
回到OD,删除硬断,放行
程序结束
由此看来,整个程序的真正作用就是释放第三次alloc处的代码,也就是上面那幅图
接下来的步骤我们将针对这第三个文件,我们取名为new
将new拖入PEID
867232_5RPKS6UFK5Q8X49.png
UPX壳,这更证明了这个文件有大问题
拖入火绒剑,过滤动作,看一下干了什么
867232_5RPKS6UFK5Q8X49.png
又是释放TMP。。,打开火绒,拦截删除动作,发现TMP还是空的
那就不管它,new和原版一个明显的区别就是,new没有退出,而原版直接退出了,所以原版看起来啥也没干
继续火绒剑
867232_5RPKS6UFK5Q8X49.png
捕捉到了connect,自身文件属性也变为了隐藏
符合一个后门的特征了
为了验证猜想,拖入IDA,分析导入表,字符串
867232_5RPKS6UFK5Q8X49.png867232_5RPKS6UFK5Q8X49.png数据很少,既然有了connect动作,不应该只有这么点东西
既然这样,就把壳脱掉,使用ESP定律脱掉壳子,定律可以自行百度,资料很多
脱壳后拖入IDA,分析导入表和字符串
截取敏感信息
867232_5RPKS6UFK5Q8X49.png
根据以下行为:
内存运行代码
隐藏自身
无窗口
静默发送connect链接
遍历IP地址
敏感字符串
可以推测为一个后门病毒,并可能带有扫描IP爆破的功能
PS:楼主为个人自学逆向,所以没有接受过专业的培训,可能逆向思维,实践思路有些奇葩,各位谅解。此文章希望可以帮助自学的小白建立一些逆向思维。
保存完帖子才发现,图片有看❄水印,申明一下非转载image.png

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消

    请填写用户信息: