译者:知道创宇404实验室翻译组
原文链接:https://www.gdatasoftware.com/blog/trat-control-via-smartphone
恶意软件攻击者希望通过便利功能吸引客户。现在,攻击者只需使用智能手机和Telegram应用程序,就可以远程控制恶意软件。
研究人员@3xp0rtblog发现了T-rat2.0,并在Twitter上发布了它,其中包括示例哈希值和销售线程。一个奢侈的广告如下所示。
下图显示了lolz.guru(由3xp0rtblog发现并报告)上张贴广告的部分内容。它赞扬了使用T-RAT时的舒适性和便利性,因为它可以通过带有Telegram应用程序的智能手机进行控制。
翻译:更新的,成熟的RAT。放在口袋里就可以访问和使用所有功能。只需Internet和T-RAT就可以从任何设备进行控制,使其正常工作。
翻译:优点:舒适,方便,控制简单,功能丰富,匿名性和可靠性……
第一个已知阶段是下载器[4],它从hxxps://hgfhhdsf.000webhostapp.com/1DJjnw(dot)jpg获取加密的文件[6],并将其保存到%TEMP%/gfdggfd.jpg。
为了解密有效负载,下载程序将密钥0x01应用于XOR。生成的文件是一个ZIP存档,它将保存到%TEMP%/hrtghgesd.zip中。下载程序将删除%TEMP%/gfdggfd.jpg并提取ZIP存档。注意:这两个硬编码名称均由QWERTY键盘上的按键彼此相邻的字符组成,因此攻击者可能只是在键盘上滚动来创建它们。
提取的恶意软件的位置确定如下:
(1)下载器检查当前用户是否具有管理员权限。如果有,则路径的第一部分是以下内容之一(随机选择)。
如果他们没有管理员权限,则路径的第一部分为以下内容之一:
(2)对于恶意软件路径的第二部分,下载程序生成一个介于347和568203之间的随机数,将其转换为字符串,然后使用MD5,SHA1或SHA256生成哈希。它使用哈希的十六进制表示形式作为恶意软件路径的第二部分。
该档案包含实际的T-RAT可执行文件sihost.exe,以及几个DLL文件。一些值得注意的库是Telegram.Bot.dll和socks5.dll。
名为service的子文件夹包含另外六个文件(哈希在IoC列表中):
该下载程序通过安排日常任务来保留sihost.exe。任务的名称是系统的处理器ID。如果当前用户具有管理员权限,则会将运行级别设置为HIGHEST。之后,下载程序将在批处理文件的帮助下删除自己。
原始的T-RAT示例[1]和下载程序[4]是.NET程序集,他们以相同的方式打包。打包的部分作为base64字符串嵌入在文件的叠加层中。字符串的开头和结尾由序列“ghjghjbnv”标记。打包程序存根会搜索序列以找到打包的图像,解码base64字符串并动态加载生成的.NET程序集。
解压缩的.NET程序集被ConfuserEx的变体所模糊。某些俄语字符串是可见的,但大多数引用的字符串都是base64编码的。
用NoFuserEx对程序集进行模糊处理后,将保留base64编码的字符串。我编写了一个小的Python脚本来完成其余的工作(请参阅附录A)。它用NOP替换了对FromBase64String的调用的IL代码,并将base64字符串替换为其已解码的对应字符串。由于解码的字符串较短,因此其余部分将填充为U + 200B,这是零宽度空间Unicode字符。(注意:这是一个相当懒惰的解决方案,它不会创建完美运行的可执行文件,但足以进行持续的静态分析。)
此程序集的混淆处理中最耗时的部分无法自动化。方法和类的符号名称已由混淆器消除。因此,在分析T-RAT的代码时,我在此过程中添加了自己的名称。该代码库具有98个不同的命令来控制T-RAT客户端。
攻击者使用基于文本的命令和RAT提供的命令按钮,通过电报控制T-RAT。命令使用英语,帮助消息大多为俄语。广告横幅的一部分展示了这些控件以及它们在手机上的外观(请参见下图)。
第一段翻译:您将获得什么?成熟RAT。我们的产品具有有趣且最重要的必需功能:RAT、窃取程序、键盘记录程序VNC、HRDP、Clipper、隐藏代理服务器等等。我们邀请您更详细地了解我们的功能。
U-RAT有98条命令。我没有在主要文章中描述每个命令,而是将它们分为几组,下面将对其进行说明。完整的命令清单在附录B中。
Menu navigation
这些用于进入或退出某些模块(如文件管理器)。它们有助于通过智能手机进行更方便的控制。
File manager
T-RAT可以在文件系统上导航,显示有关驱动器和可用空间,文件夹内容以及修改文件和文件夹的信息。它还可以将文件发送给攻击者。有趣的是,它混入了Unix命令名称。例如,文件列表是通过ls完成的。
Stealer
该模块允许从浏览器获取密码,Cookie,自动填充数据,Telegram、Discord、Steam、Nord、Viber、Skype和Filezilla的会话或配置数据。在发送到Telegram之前,大多数数据文件除了将T-RAT可执行文件保存在文本文件中外,还保存在%TEMP%/winsys/中的ZIP存档中。
Clipper
Clipper检查剪贴板上的硬币地址并替换它们,因此,任何数字货币都会被发送到攻击者的钱包中。它支持Qiwi、WMR、WMZ、WME、WMX、Yandex money、Payer、CC、BTC、BTCG、Ripple、Doge和Tron。攻击者使用clipper命令保存指定加密货币的地址,并启动或停止clipper的执行。
Monitoring and spying
攻击者可以运行键盘记录器,创建屏幕截图,通过麦克风录制音频,通过网络摄像头拍照,发送剪贴板内容。
Evasion
T-RAT有多种绕过UAC的方法,包括Fodhelper,Cmstp,Cleanup和Computerdefaults。它可以禁用Windows Defender和智能屏幕通知。它可以禁用各种安全设置,例如,可以更改关联策略以将“.exe”设置为低风险文件扩展名,并可以关闭ZoneIdentifiers。它可以检查沙箱和虚拟机。
Disruption
这些命令杀死进程、通过主机文件阻止网站、通过图像文件执行选项设置调试器来阻止和重定向程序(因为阻止调试器是不存在的)、禁用任务栏和任务管理器。
Remote control
T-RAT通过电报提供Powershell或CMD终端。也可以通过HRDP或VNC进行远程控制。
T-RAT运行名为service \ in.exe的HRDP客户端,该客户端位于可执行文件的位置。然后,它将创建一个具有随机密码和名称的新用户帐户,并将凭据发送给攻击者。它将新创建的用户添加到“远程桌面用户”组,并通过将fDenyTSConnections设置为“0”来启用远程访问。
VNC服务器在32位系统上为service\winserv1.exe,在64位系统上为service\winserv2.exe。
Hashes
IoCs for downloader[4]
IoCs for T-RAT[1]
附录A:去模糊脚本
#!/usr/bin/env python2.7
import re
import base64
import sys
import os
import argparse
from shutil import copyfile
def isBase64(s):
try:
return base64.b64encode(base64.b64decode(s)) == s
except Exception:
return False
def searchAndReplace(search, replace, binfile):
content = ""
with open(binfile,"rb") as bif:
content = bif.read()
new_content = content.replace(search, replace)
if new_content == content:
print "Search string not found."
return
with open(binfile,"wb+") as wif:
wif.write(new_content)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Decode and replace base64 strings in binary. Karsten Hahn @ G DATA CyberDefense')
parser.add_argument('str_listing', help='Text file with strings listing of sample. E.g. use Sysinternals strings.exe')
parser.add_argument('sample', help='Sample file where base64 strings should be replaced')
args = parser.parse_args()
inputfile = args.sample
outputfile = args.sample + ".decoded"
copyfile(inputfile, outputfile)
base64Regex = re.compile(r'^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$')
str_listing = args.str_listing
with open(str_listing) as ref_file:
print 'Extracting base64 strings...'
base_strings = []
for line in ref_file:
base_strings += base64Regex.findall(line)
print "Replacing base64 strings..."
for base_str in sorted(base_strings, key=len, reverse=True):
if len(base_str) > 3 and isBase64(base_str):
decoded_string = base64.b64decode(base_str)
decoded_bytes = bytearray(str(decoded_string).decode('utf-8').encode("utf-16le"))
base_bytes = bytearray(str(base_str).decode('utf-8').encode("utf-16le"))
while len(decoded_bytes) < len(base_bytes):
decoded_bytes.extend(b'\x0B\x20')
#print decoded_bytes
searchAndReplace(base_bytes, decoded_bytes, outputfile)
print "Replacing calls to decode Base64..."
# Optional: remove calls to Base64 conversion, this is specific to the sample
# for T-RAT
# searchAndReplace(b'\x28\x27\x00\x00\x0A', b'\x00\x00\x00\x00\x00', outputfile)
# for T-RAT downloader
# searchAndReplace(b'\x28\x17\x00\x00\x0A', b'\x00\x00\x00\x00\x00', outputfile)
print 'All done'
print 'Deobfuscated file written to', outputfile
附录B:T-RAT命令
这些是T-RAT 2.0命令以及其中一些命令的说明。
Command | Description |
---|---|
/help | Print available commands (shows different commands depending on the state of the menu) |
/getscreen | Takes a screenshot and sends as photo to Telegram |
/webcam | Takes a picture using the webcam and sends as photo to Telegram |
/record | Records audio using the microphone. Saves it to record.wav in the executable's folder. |
/sysinfo | Shows: username, IP, MAC, computername, processor model, number of cores, processor size, graphics card model, RAM, operating system, architecture, system directory, antivirus, firewall, drive info and available space |
/isadmin | Checks if executable has admin rights |
/activewindow | |
/openwindows | |
/programs | Shows list of installed programs by obtaining all DisplayName values for all subkeys of SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
/processlist | |
/killprocess [process] | |
/run [path] | Creates a hidden folder in %TEMP% named winsys. Puts a VBScript file named |
It uses a template called "Run2" in the resources for the VBScript and replaces "lmao" with [path] | |
/clipboard | Posts clipboard content to Telegram |
/location | |
/path | |
/blocksite [example google.com] | Blocks a site via hosts file redirection to localhost |
/redirectprogram [first] [second] | Sets the second parameter as debugger for the first via Image File Execution Options (IFEO) |
/blockprogram [name] [block | unblock] |
unblock: Removes the IFEO debugger from registry | |
/CmstpUACBypass | UAC bypass via cmstp.exe |
/CleanupUACBypass | UAC bypass via SilentCleanup |
/FodHelperUACBypass | UAC bypass via fodhelper.exe |
/ComputerDefUACBypass | UAC bypass via computerdefaults.exe |
/OffCertChecking | In Attachment Policies sets: HideZoneInfoOnProperties to "1" and SaveZoneInformation to "2" (= Off) |
In Associations Policies sets: DefaultFileTypeRisk to "6152" (= Low) and LowRiskFileTypes to ".exe" (yes, only ".exe") | |
/DisableWindowsDefender | Disables TamperProtection; enables DisableAntiSpyware, DisableBehaviorMonitoring, DisableOnAccessProtection and DisableScanOnRealtimeEnable |
/OffAvNotification | Disables SmartScreen and sets registry values to "0" for: EnableLUA, ConsentPromptBehaviorAdmin, PromptOnSecureDesktop |
/cmd | Provides a remote cmd terminal |
/powershell | Provides a remote powershell console |
/settings | |
/disconnect | |
/opencd | Calls mciSendStringA with "set cdaudio door open" |
/closecd | Calls mciSendStringA with "set cdaudio door closed" |
/exploreroff | Sets DisableTaskMgr to "1" |
/exploreron | Deletes subkey tree for Software\Microsoft\Windows\CurrentVersion\Policies\System |
/hidetaskbar | Calls user32.dll ShowWindow with SW_HIDE parameter |
/showtaskbar | Calls user32.dll ShowWindow for Shell_TrayWnd |
/wallpaper | Asks the user to send a picture to set as wallpaper |
/collapsewindows | |
/reboot | |
/kill | |
/suicide | |
cd [directory] | Sets working directory |
back | Goes one step back in the command listing |
ls | |
drives | |
action [name] | Provides file operations: info, run, delete, read, send, cd |
mkdir [NameFileInFolder] | Creates a directory |
remove [NameFileInFolder],[AnotherDirectory] | |
rename [NameFileInFolder],[NewName] | |
/hrdp | 1) Runs service\in.exe from executable folder. 2) Sets fDenyTSConnections to "0" 3) Creates new user account named usr |
/StartProxyServer | Starts a Socks5 proxy using port 5901 |
/StopProxyServer | Stops above proxy |
/StartVNC | Runs service\winserv1.exe for 32 bit architecture, or service\winserv2.exe for 64 bit architecture. Both reside in the executable folder. |
/StopVNC | Kills any process with a name containing the substring winserv1 (32 bit)or winserv2 (64 bit) |
/CheckVNC | Returns if a process name containing winserv1 or winserv2 exists |
/commands | Menu navigation |
/control | Menu navigation |
/stealer | Menu navigation |
/filemanager | Menu navigation |
/StealPasswords | |
/StealWebData | Searches for Web Data folder in the %LOCALAPPDATA% directory and extracts autofill information. This folder is part of Chrome. |
/StealCookies | Saves cookies to Cookies.txt in the executable folder and uploads it to Telegram |
/GetTelegramSession | Steal Telegram data |
/GetSteamFiles | Steal Steam data |
/GetNordData | Steal Nord data |
/GetFilezillaConfig | Steal Filezilla configuration |
/GetSkypeSession | Saves skype appdata folder contents to %TEMP%/winsys/Skype.zip and uploads this file to Telegram |
/GetDiscordSession | Saves Discord\Local Storage\leveldb folder contents to %TEMP%/winsys/Discord.zip and uploads this to Telegram |
/GetViberSession | Steal Viber data |
/SetQiwi [wallet] | Set Qiwi wallet for clipper |
/SetWMR [wallet] | Set WMR wallet for clipper |
/SetWMZ [wallet] | Set WMZ wallet for clipper |
/SetWME [wallet] | Set WME wallet for clipper |
/SetWMX [wallet] | Set WMX wallet for clipper |
/SetYandexMoney [wallet] | Set Yandex Money wallet for clipper |
/SetCC [wallet] | Set CC wallet for clipper |
/SetPayeer [wallet] | Set Payeer wallet for clipper |
/SetRipple [wallet] | Set Ripple wallet for clipper |
/SetDogechain [wallet] | Set Doge wallet for clipper |
/SetTron [wallet] | Set Tron wallet for clipper |
/SetBTCG [wallet] | Set BTCG wallet for clipper |
/SetBTC [wallet] | Set BTC waller for clipper |
/wallets | |
/SaveConfig | |
/SendConfig | |
/StartScreenLogger | |
/StartKeyLogger | |
/SendLog | |
/StopKeyLogger | |
/SendScreenshots | |
/StopScreenLogger | |
/ClipperStart | |
/ClipperStop | |
/ClipboardLoggerStart | |
/ClipboardLoggerSend | |
/ClipboardLoggerStop | |
/clipboard | |
/functions | |
/exit | Menu navigation |
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1379/