好友
阅读权限10
听众
最后登录1970-1-1
|
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子! 病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途! 禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 hbesljx 于 2025-9-15 11:53 编辑
看了本站一篇文章,决定下载这个木马下来分析一下,原文链接:https://www.52pojie.cn/thread-2055344-1-1.html
报告链接(密码52pojie):https://wwby.lanzouo.com/iSLZ8367s2wj
首先DIE查看一下:
没有加壳,那就直接拖到IDA里面分析了,IDA看一下导入函数,发现也没什么特别的混淆手段,没用什么loadLibraryA动态加载,就是规规矩矩调用这些api
下面就是直接F5看明文源码了:
可以看见直接sleep了3s,然后创建一个互斥体避免重复运行,再获取一下完整路径,提取文件名。都是一些常规操作
接下来这一步:
这其实是删除了源文件的一个名为.Zone.Identifier的ADS流,这里解释两个概念
ADS流:可以理解为一个文件的备用数据流,就是依附在一个文件上面的一些文件内容,但是不会直接展示出来,通过cmd命令就可以看见了
:Zone.Identifier:这个是一个ADS流的名称,直接说可能不知道是什么,但是当我们从浏览器下载了一个文件时,点击运行Windows会提示我们这个文件是从浏览器下载的,有风险,是否确定运行,这就是这个ADS流的作用
那这一步其实就是删除这个ADS流,让Windows不再弹框提示我们有风险。
接下来进行三重驻留操作:
- 复制自己到C:\Windows\sysnldcvmr.exe,并写入HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Windows Settings注册表项
- 复制自己到C:\Users\用户名\sysnldcvmr.exe,并写入同样的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Windows Settings注册表项
- 复制自己到C:\Users\用户名\AppData\Local\Temp\sysnldcvmr.exe,写入HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Windows Settings注册表项
然后就是创建3个线程执行了:
逐个分析:
请求一下C2服务器:http://185.215.113.66/
sub_40EA30进去分析发现就是读取响应头的长度信息和当前的buffer比较,若长度和buffer不同且大于5000Byte,则设置flag为1并返回
sub_40EAE0进去分析发现就是在Temp目录下根据时间戳生成一个随机名的exe文件,并从指定url下载内容然后写入,删除掉:Zone.Identifier这个ADS流
然后在sub_40EAE0里面执行了sub_40E7C0,片段如下:
猜测这个函数是先解密再执行
里面有一个sub_40C190函数,进去分析后发现是一个RC4解密。回看sub_40E7C0发现有一个sub_40C7F0函数,这个函数就是读取文件头中的256字节,检查文件完整性并读取密钥。前4字节为魔数(判断是否篡改),再读16字节为RC4密钥,再读4字节保存加密数据的长度,再读16字节保存预期的hash值,其余的为填充字节。
解密之后:调用sub_40A4E0和sub_40A1B0函数就是计算出hash值判断文件的完整性。
最后再写回去:
发现就是根据时间戳动态生成窗口,核心逻辑应该在sub_405970里面:
进去一看发现是在窃取剪切板,然后处理数据,里面的逻辑集中在sub_404970,再进去一看:
又是什么bitcoincash,什么ronin:,什么nano_,其实就是读取剪切板,读到了web3的地址,就换成攻击者自己的地址,这样被攻击者就会粘贴的时候其实是攻击者的地址,钱就转走了
这就是主要的感染逻辑了:
首先sub_40E770判断目标文件和当前文件是否大小一致,如果不一致就删除文件并复制自身过去
然后sub_4063A0查询Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer下的NoDrives键来查询被隐藏的磁盘,返回未被隐藏的磁盘列表
接下来sub_4062C0判断磁盘是否存在,构造完整的磁盘路径
sub_406320排除掉只读的磁盘,根据磁盘类型和是否可访问,筛选出可以感染的磁盘,只保留 “可写、可访问、标准格式” 的磁盘(本地硬盘、U 盘),排除只读设备(如 CD)
sub_4066B0是核心感染逻辑:
删除{"*.lnk", "*.vbs", "*.js", "*.scr", "*.com", "*.jse", "*.cmd", "*.pif", "*.jar", "*.dll", "*.vbe", "*.bat", "*.inf"}这些文件,绕过{"Thumbs.db", "$RECYCLE.BIN", "desktop.ini", "System Volume Information"}这些文件
然后自我复制到目标磁盘,命名为DriveSecManager.exe并创建快捷方式,创建隐藏目录,将用户的文件移动到隐藏目录。
3个线程执行完后,还有一系列的恶意逻辑:
慢慢看,先看sub_40D640函数:
原来是通过路由器的UPnP协议,开放路由器的40500端口映射到靶机的40500端口,使得攻击者在外网可以直接访问到内网的靶机。
再分析sub_406FE0函数
进去看一下其实就是将恶意程序加入防火墙白名单
接下来两步:
生成了几个随机数。继续看:
这个sub_40D160其实就是安全地CreateThread创建了几个线程,其实就是接收TCP和UDP数据,而生成的随机数,就是接收的指令中必须包含该随机数,才会继续处理数据。
函数链:sub_40D5F0->sub_40D4D0->sub_40D520->sub_40B570
sub_40AE80用来检测UDP连接的ip,排除0.0.0.1和127.0.0.1以及192这样的内网ip,筛选出剩下的ip加入连接池,因为他们可能是攻击者的公网ip
sub_406E90和sub_406F30用来发送缓冲区内容到C2服务器
sub_40B520用来拼接固定标识Twizt,并计算校验值写入数据,然后封装成UDP包发送
- 线程2:sub_40D5F0同上
- 线程3:sub_40CF00
创建TCP监听环境,读取之前生成的连接池,找到和攻击者ip通信的上下文,接收指令并执行,指令内容同上
检查连接池中的通信状态,每5秒循环一次,尝试重新连接恢复状态。
后面的代码实在是太多了,又是各种嵌套绕来绕去,看晕了。都是明文, |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|