-
UID:17777
-
- 注册时间2007-05-02
- 最后登录2025-05-03
- 在线时间18637小时
-
- 发帖786324
- 搜Ta的帖子
- 精华0
- 飞翔币211574
- 威望215717
- 飞扬币2615603
- 信誉值8
-
访问TA的空间加好友用道具
- 发帖
- 786324
- 飞翔币
- 211574
- 威望
- 215717
- 飞扬币
- 2615603
- 信誉值
- 8
|
Delphi- 木马分析0x0 前言样本本身为Delphi编写,本人并不精通Delphi编写的思路,所以如果存在纰漏或者错误,还请指出,共同进步。样本本身因为存在混淆,乱序,并且我没有找到可以去混淆乱序的工具,只能手动调试。看起来比较麻烦。适合新手。0x01 样本信息样本MD5: 067C37A6C5CFF406520914AABACA3136样本大小: 537K语言: Delphi来源:https://www.virustotal.com/gui/file/9ae664348eb29f92142f177b1abb142ca93bb35246165e8fc62f965d337be71b/detection查壳,Delphi编写 0x02 环境与工具Win 32、OD、IDA、python0x03 分析原始样本分析寻找突破口整体看结构,比较清晰。 进入第一个函数中 InitExe()中。找到关键点 动态调试,查看赋值起始地址为 0x00453FD0看到这些函数指针,猜测这里应该是初始化的时候依次调用,联想C语言中的init函数,这里很可能存在恶意代码 通过排查,发现倒数第二函数,为关键函数 至此我们就发现了关键点,接下来就动态了,这里说一句,可能读者会想为什么是这里呢?其实我也是慢慢调试出来的,虽然不可能完全正确,但是恶意行为发生在这里,我们不可能所有语言都了解,当遇到一种不熟悉甚至可能是陌生的语言环境,能够最快的上手这才能够达标。如果这一切如果能有理论支撑,才算比较好的操作。 第一次解密运行接下来动态调试进入函数发现很多无用代码和内存申请在赋值在释放的过程,并且存在sleep过程,该过程耗时较长,猜测可能是防止沙箱等检测。 经过等待之后,再次申请0X5E4D的空间并异或解密赋值,通过pushret操作,指向解密代码 乱序+各种简单反调试当看到这些乱序代码时,可以暂时开启run跟踪功能,耐心一点就可以。 首先根据PEB找到Kernel模块,然后通过导出表找到对应API 样本先找到VirtualAlloc地址,通过调用申请空间,接下来将得到的API地址和模块地址全部存放在该空间 创建快照,遍历进程,记录其PID和name 接下来就是一些简单的反调试1) 通过CPUID获取处理器然后比较 2) 比较文件名反调试 3) 反杀软 4) 反调试器反MS工具 5) 通过API反调试 6) PEB结构反调试 获取资源 资源解码,该处应该为配置文件 再次检测avp.exe、bdagent.exe、bdwtxag.exe、dwengine.exe进程,在后边代码中,还存在多次简单的反调试,不过利用论坛调试器可以直接略过第二次解密运行根据配置文件多次解密资源文件,并拷贝,每次拷贝0x314的大小,拷贝0x87次,解密前 重新排列解码后为一PE文件 再次以挂起的形式创建进程 利用CreateSection注入代码 木马文件分析得到上边的PE文件,IDA查看,发现一个很简单的代码填充,编写一个简单脚本过掉 动态加载所需dll 查看权限,提权 获取用户名并且遍历注册表SOFTWAREMicrosoftWindowsCurrentVersionUninstall下的所有子键,查看是否存在UninstallString的项,以此获取计算机安装的软件信息 OEL操作,可以看到PWDFILE0YUIPKDFILE0YUICRYPTED0YUI1.0这样的字样 循环调用,获取各种FTP各种信息 发送所得信息到 http://vman23.com/ab4/gate.php 之后与http://vman23.com/ab4/ab4.exe通信,获取ab4.exe 写入文件,并执行,由于该链接已失效,所以不能知道该exe文件作用 扩大战果尝试爆破该计算机其他用户,同样获取信息,并发送 清理痕迹最后创建bat文件,并执行,删除该文件和bat文件。 总结当调试完毕之后,发现还是很简单的。练下基本功,回顾一下IDA脚本和自己的耐心值还是有帮助的。
|