问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
Amadey僵尸网络恶意样本详细分析
Amadey僵尸网络是一种恶意软件,它能够通过接收攻击者的命令来窃取信息并安装其他恶意软件。该样本分析报告分析了Amadey的大致感染过程,以及如何通过xdbg和Ghirda找到该恶意软件的C2信息。
前言 == Amadey是一种常见的恶意软件,通常被归类为信息窃取程序(Stealer)或僵尸网络(Botnet)木马。因为它的主要功能就是从被感染的系统中窃取各种敏感信息发送给C2服务器。同时,系统被感染后,Amadey会将受害者系统连接到一个僵尸网络中,攻击者可以远程控制受感染的机器,执行进一步的恶意操作,例如安装其它恶意软件,发送垃圾邮件、发送DDoS攻击等。 样本分析 ==== IOC --- | Hash | Value | |---|---| | SHA256 | 449d9e29d49dea9697c9a84bb7cc68b50343014d9e14667875a83cade9adbc60 | | MD5 | 26b31e11da1e9fb60b64b91414884eb9 | | SHA1 | 0358b52196af9125be76f335a57f2905f400999d | ANY.RUN沙箱链接:<https://app.any.run/tasks/5c44716d-e2f8-4cbd-a86e-031147a3a02b/> DIE查看 -----  本质上是一个zip文件,解压。  si684017.exe ------------ ### DIE查看  32位文件,查看一下信息熵:  高而平坦的曲线,说明该文件是一个加过壳的程序。 ### 脱壳 使用x32dbg载入恶意程序。  通过命令 `bp VirtualAlloc` 给函数 `VirtualAlloc`打下断点。该函数用于在地址空间中分配内存,其执行完返回值是分配的页面区域的基地址。  F9运行后 会断在`VirtualAlloc`处  此时通过 Ctrl+F9 可以执行到该函数结束,观察eax,eax的值就是该函数的返回值,即分配的内存的地址。  点击跳转到该内存:  创建一个硬件断点  接着F9运行,再Ctrl+F9运行到结束,会发现该内存已经填满了数据。  可是发现,该内存起始 是EB,并不是PE文件标识,推测这里并不是我们要的有效负载。 删除这个硬件断点,接着F9会断到下一个 `VirtualAlloc`处,继续刚刚的步骤  成功将脱壳文件加载到了内存中。 这里需要等待一段时间,确保这块缓冲区被填满。不然dump出来的文件是缺失的,分析了半天没有东西。 ### Dump 右键刚刚的内存基地址,查看其内存布局  找到其对应的模块,右键选择dump到文件中  重命名为dump.bin dump.bin -------- ### DIE查看   32位程序,信息熵表示没有隐藏的有效负载。 #### 导入表  发现wininet.dll,说明该恶意程序有关于C2服务器的操作。 #### 字符串  发现了很多可能由base64编码的字符串,尝试解密  都是乱码,估计是加了别的混淆 ### Ghidra和xdbg分析 #### 同步地址 为了方便调试。先同步一下地址。  先找到该文件在xdbg中的基址,005B0000 在ghirda内存映射中设置   #### 定位字符串 在Ghirda中搜索字符串:  双击跳转到该地址处  右键选择 Reference -> Show References to Address  可以看到该函数还未定义:  鼠标选中左侧该函数首地址,按F可以定义函数:  #### FUN\_005c4550  该函数像是在进行解码操作,对其进行交叉引用可以发现它被大量引用:  因此我们可以对该函数下断点,动态调试的方法得到解码后的数据。 ### xdbg解密 刚刚已经进行了同步地址,直接在xdbg上下断点 `bp 005c4550`  F9运行 命中了一个字符串  之后继续 Ctrl+F9 就可以得到解密的结果   经过多次的尝试后,发现解密的东西并不是我们所需的,这个函数也并不是最终解码的函数,它似乎只是base64混淆的一部分。 ### 回到Entry入口     一个解码函数:  同样的,在xdbg中对该函数下断点,调试:  传入了一个base64编码,解码后:    可以看到,上一个编码的值被作为路径的一部分。这里像是在检查该路径 继续F9:  发现没有命中任何东西了,Ctrl+F9,执行完该函数,你会发现程序结束了:  说明这里存在了某种反调试。 ### 绕过反调试 回到刚刚的`FUN_005c4040`  查看一下`FUN_005b7b70`:  `CreateMutexA`函数创建了一个互斥锁,后面检查错误码 `0xb7`,不符合的话退出程序。 回到xdbg,命令 `bp 005b7b70` 重新运行后,发现程序还是退出了,结合刚刚分析出来的路径,推测是检查同一路径下是否有文件 `oneetx.exe` 这里绕过可以 运行下恶意软件,让其再路径下自动生成一个副本。之后分析副本即可,重新同步一下地址(有所变化)再次运行,发现成功断下来了  该 `00967b70`即刚刚的 `FUN_005b7b70` F8单步下去,直接patch掉即可  这样俩处反调试就绕过了。  ### 开始解码 之后就是不断运行,F9后Ctrl+F9 查看返回值 疑似对注册表进行查询修改  该命令用于创建计划任务,持久性操作    可能尝试窃取计算机上的某些数据  检查一些安全厂商   #### C2服务器   最后找到了该恶意软件的C2域名。 后言 == 分析了该样本的大致流程,如何找到了C2信息。关于该样本恶意行为具体是怎样实现的后续再分析。
发表于 2024-08-22 09:38:34
阅读 ( 19221 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
Sciurdae
16 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!