InfoStealer是一种木马,功能为收集受害计算机系统用户的敏感信息,并将其转发到一个预定的位置,而搜集的信息包含财务信息,登录凭据,密码或者都有,这些信息可能被出售在黑市上。AVAST将其命名为MSIL:Agent-AKP。
下面,我们就来看看一个通过exploit kit(全自动攻击工具)部署在受害者电脑上的恶意.NET文件。用反编译器打开该文件后,发现资源中只包含如下干扰图片:
以位图方式打开图片,一个像素一个像素的处理。对于每个像素,它并不是非黑即白(ARGB不等于0×00000000),3种颜色提取并保存在一个列表中,一个值接着一个值,一列接着一列。
当我们提取出整张列表后,得到如下的结果。注意MZ标识,正是可执行文件的开头:
很明显,我们正在对付一个obfuscator(混淆器),它从位图中转换数据,构造可执行文件。
单单的查看这个位图文件,并不能立即意识到它还存储着可执行文件。对照BITMAPINFOHEADER和它的bitHeight项,我们可以看到它的值是0X134。
根据文档,如果biHeight是正值,相应的位图就是自底而上的DIB(与设备无关的位图),它的起始点在较低的靠左的位置。
下图展示了这个可执行文件的前9个字符是如何隐藏在位图中的。一个像素包含3个字符,随后的下一列是下一组3字符(自底而上)。我们发现红色标识的字符正是可执行文件的MZ特征:4D5A90 000300 000004。
仔细观察Payload
Payload从位图中被提取出来,原始文件有两个位图,其中一个解析后是用.NET写的加载器,装载进内存并执行第二个二进制文件。第一个二进制文件通过修改zone.identifier 来修改数据流。
硬盘上的任何文件都被赋予了
数据流,它包含了这个原始文件的zone信息。如果文件来自Internet,它的zone值是3;如果来自本地,zone值就是0。
这里的恶意文件试图将zone值设为2,表明是URLZONE_TRUSTED。
这个区域的存在是由于安全原因考虑。某些程序/操作系统可能会报告与此类文件有关的安全信息。
第二个汇编码是从第二个位图源文件中提取的。它通过创建Win7zip注册表Uuid值来生成。
通过创建[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options],运行之后将禁用几个安全方案,将调试器的值设置成一个不存在的exe文件路径,每当用户试图使用受影响的程序时,Windows将运行“调试”出来的值来代替原本的值,这样就可以成功的禁用此类程序。下图显示了通过修改此注册表项禁用的程序的列表。
同样利用修改注册表项禁用安全组件:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]。将HideSCAHealth的值设置成1来禁用Action Center。Notification balloons的禁用可以通过修改TaskbarNoNotification的注册表项来达成。
在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup],修改DisableMonitoring注册表项,可以禁用Windows备份通知。
通过对注册表项2500键值进行设置,设置为3-禁用,就可以关闭Internet Explorer的保护模式。
如果发现装有如下的FTP软件,就会窃取它们的认证日志:
FileZilla
SmartFTP
CoreFTP
FlashFXP
WinSCP
FTP Commander
可以在它的body中看到下列字符:
FileZilla\sitemanager.xml
SmartFTP\Client 2.0\Favorites
SmartFTP
Software\FTPWare\CoreFTP\Sites
FlashFXP
Sites.dat
Quick.dat
Software\Martin Prikryl\WinSCP 2\Sessions
%s\FTP Commander
%s\FTP Commander Deluxe
Ftplist.txt
它同样可以修改注册表项:
注册表项[HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Plug-in\{version}\UseJava2IExplorer]的种类是REG_DWORD,设置成0的意思就是禁用JAVA;设置成1的意思就是启用JAVA。
注册表项 [HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\{version}\Privileged\bProtectedMode]的种类是REG_DWORD,设置成0就是禁用;设置成1就是启用。
(木马)作者力求保留将来再次感染该系统的可能。一旦用户再次登录exploit kit,感染将再次发生。
InfoStealer同时也向作者报告被入侵电脑上安装的一些软件,通过判断是否存在如下的文件、目录或者注册表键值:
Software\Valve\Steam
jagexcache
SOFTWARE\Blizzard Entertainment
.minecraft
League of Legends
Software\Skype
例如,“jagexcache”的出现表明在线游戏RuneScape,“.minecraft”表明Minecraft,注册表键值“SOFTWARE\\Blizzard Entertainment”或者“Software\Valve\Steam”告诉我们或许机器上安装着这来自这些游戏厂商的游戏。“League of legends”和”Software\Skype”这些字符不言自明。
InfoStealer禁用了一些系统服务。Wuauserv就是“Windows Update service”,wscsvc就是“Security Center”,mpssvc就是“Windows Firewall”,BITS是“Background Intelligent Transfer Service”。
它也拥有“洪水”攻击目标服务器的能力。
当我们试图搜寻上面提及的命令时,我们发现了一个地下论坛,如下描述:
通过向[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下添加“AudioDriver32”值,就能达到永远存在的效果,即使机器重启。
InfoStealer木马通过展示如下的错误信息提示窗的聪明方式来迷惑用户,使其可以提升权限运行。
无论点“Restore files”还是“Restore files and check disk for errors”后,都执行下面j的代码。
InfoStealer使用ShellExecute函数执行自身。要注意“runas”命令,试图以提升的权限运行程序。如果一个用户被提示UAC(用户访问控制),他很可能会允许该程序运行,因为它需要“restore his corrupted document files”。
如果用户点击了“More details about this error”, 如下的页面将会打开。它是正常的微软社区页面,用户在此提问、答复相关问题。
这里的问题正是与“Corrupted Documents Folder”相关的,与展现给受害用户的出错信息窗口相关。
InfoStealer扫描所有正在运行的进程以及它们的启动命令行参数。这些命令行会被解析,如果匹配如下的模式,它们还会被报告给(木马)作者。这些模式代表着比特币挖掘的进行。如果cgminer在入侵电脑上运行,将会被报告。
所有获取的数据存放在[HKCU\Software\Classes\CLSID\{GUID}]注册表键值中,这些信息稍后会被发送给攻击者。
总结
上面所展现的恶意软件试图窃取多种程序的认证信息,或者至少报告它们的存在。通过修改多处系统注册表值来禁止安全软件或者action center的通知服务的运行,且该信息窃取者针对的对象为终端用户。
原文 Your documents are corrupted: From image to an information stealing trojan
翻译 IDF实验室 李天星