TeamSpy通过欺骗人们下载恶意附件并启用宏来感染计算机。之后,恶意软件秘密安装TeamViewer,让网络犯罪分子完全控制受感染的计算机。TeamSpy首先在2013年出现,当时CrySyS Lab和卡巴斯基实验室发布了有关其操作的白皮书。Heimdal Security最近报道,已经重新出现了一个有针对性的垃圾邮件发送的恶意软件。
感染设备后,大多数恶意软件与命令和控制(C&C)服务器通信。顾名思义,C&C服务器是发送恶意软件执行命令的控制中心。C&C服务器也是恶意软件发回它收集的数据的地方。对于此通信,恶意软件作者通常会实现一个自定义协议,可以很容易地区别于其他流量,从而阻止防病毒解决方案。为了使防病毒解决方案更加难以检测,一些恶意软件作者使用流行的远程控制程序(如TeamViewer),而不是利用其VPN网络来更好地掩盖其恶意软件和C&C服务器之间的通信。
TeamSpy通过垃圾邮件传播,旨在诱骗人们打开附件。附件是一个带有宏的Excel文件。打开附件后,将出现以下屏幕:
当目标人员启用宏时,感染过程开始,在后台完全运行,因此受害者不会发现任何内容。如果我们查看恶意宏,我们可以看到稍微混淆的字符串,通常会分割成一个或多个子串,这些子串后来被连接起来。最重要的信息以红色下方圈出,并且是一个链接,从中下载某些东西以及稍后使用的密码。
该链接disk.karelia.pro是用于上传和共享文件的合法的俄罗斯服务商。虽然下载的附件是PNG,但它实际上是一个EXE文件,更具体地说,它是一个受密码保护的Inno安装程序安装程序。
在innounp实用程序的帮助下,我们可以轻松地从恶意软件使用的Inno Setup安装程序列出或提取文件。如下列所示,大多数文件是常规的,数字签名的TeamViewer二进制文件,但两个文件 – msimg32.dll和tvr.cfg除外。Tvr.cfg是TeamSpy的配置文件,稍后将介绍,msimg32.dll是恶意软件本身。Msimg32.dll是一个DLL库,它是Windows操作系统的一部分。但是,在这种情况下,TeamSpy会滥用DLL搜索顺序,从而将当前目录中的假msimg32.dll加载到进程中,而不是从Windows/System32目录调用原始的msimg32.dll 。恶意软件本身就在假的msimg32.dll库中。
通常当您安装TeamViewer时,您将看到一个带有ID和密码的GUI窗口,另一方需要知道ID和密码才能远程连接到您的计算机。
如果TeamSpy成功感染了PC,则没有显示任何内容 – 记住所有操作都在后台运行,因此受害者不会注意到安装了TeamViewer。这是通过挂接许多API函数并改变其行为来实现的。TeamSpy挂接以下API(近50种不同的API):
kernel32.dll
CreateMutexW,CreateDirectoryW,CreateFileW,CreateProcessW,GetVolumeInformationW,GetDriveTypeW,GetCommandLineW,GetCommandLineA,GetStartupInfoA,MoveFileExW,CreateMutexA
user32.dll
SetWindowTextW,TrackPopupMenuEx,DrawTextExW,InvalidateRect,InvalidateRgn,RedrawWindow,的SetWindowRgn,UpdateWindow,SetFocus的,SetActiveWindow,SetForegroundWindow,的MoveWindow,DialogBoxParamW,LoadIconW,SetWindowLongW,FindWindowW,SystemParametersInfoW,RegisterClassExW,CreateWindowExW,CreateDialogParamW,SetWindowPos,ShowWindow函数,GetLayeredWindowAttributes,SetLayeredWindowAttributes,IsWindowVisible, GetWindowRect,MessageBoxA,MessageBoxW
advapi32.dll
RegCreateKeyW,RegCreateKeyExW,RegOpenKeyExW,CreateProcessAsUserW,CreateProcessWithLogonW,CreateProcessWithTokenW,Shell_NotifyIconW,ShellExecuteW
iphlpapi.dll
GetAdaptersInfo
某些dll阻止应用程序访问某些特定资源,例如,如果RegCreateKey或RegOpenKey尝试访问Software\TeamViewer注册表项,则会返回错误代码:ERROR_BADKEY。
调用GetCommandLine使得TeamViewer认为它是以预定义的密码开始的(而不是随机生成的密码,TeamViewer用户通常可以通过添加命令行参数将此密码设置为任意值)
Hooking SetWindowLayeredAttributes将TeamViewer窗口不透明度设置为0(指令PUSH 0),根据MSDN文档,该视图的含义如下:“当bAlpha为0时,窗口是完全透明的。当bAlpha为255时,窗口是不透明的。
挂钩CreateDialogParam阻止一些恶意软件不需要显示的对话框。这些对话可以在文件中查找TeamViewer_Resource_en.dll,见下图。
在ShowWindow的情况下,它定义了它自己的nCmdShow参数4d2h和10e1h。如果其他值超过这些值,则不会发生任何事情。
可能最有趣的是挂钩CreateWindowEx API。通过一系列类名检查,它标识属于TeamViewer聊天窗口的窗口和其他窗口控件。在WinSpy ++等工具的帮助下,我们可以看到属于特定进程的所有窗口(即使它们被隐藏)。从下图可以看出,有一个ControlWin窗口,它有几个TVWidgets。 是一个简易的聊天组件。聊天窗口无法正常显示,因为恶意软件在后台运行,但是可以修复恶意软件,从而不会发生隐藏窗口。
下面的代码片段显示恶意软件如何获取这些窗口控件的句柄。GetWindowLong和CallWindowProc和SetWindowLong与nIndex = GWL_PROC用自定义窗口过程替换聊天历史文本编辑的窗口过程的旧地址。
自定义窗口过程监听传入消息并且基于窗口消息id,它发送新消息或等待来自C&C服务器的回复(EM_SETCHARFORMAT消息到达)。
下图显示了如何发送新消息。恶意软件首先设置焦点与新的消息文本编辑WM_SETFOCUS,然后通过设置新的消息文本WM_SETTEXT,最后通过发送点击“发送”按钮BM_CLICK。
上述50个API中的大多数应用了类似的修改。一些补丁很简单,只有几个指令,而一些补丁是非常复杂的,如CreateWindowEx。我们不会在这里列出所有这些,但是最终的效果是明确的 – TeamViewer的窗口不会显示给受害者。他们在系统中默默存在,就是这样。
TeamSpy的配置存储在tvr.cfg文件中。它使用简单的自定义加密算法,可以在下面看到。它读取输入的文件并使用密码“TeamViewer”。该算法运行两个计数器,CNT1(以字节为单位的0..number tvr.cfg)和CNT2(密码的0..length)。它需要一个来自密码的字节,加上乘法cnt1 * cnt2的结果。这是为每个字符的密码完成的。这些结果都是异或,产生一个字符,并且在循环结束时,它与来自配置文件的相应字节进行异或。配置文件中的所有字节都重复这些步骤。
解密的配置文件可以在下面看到。参数的名称大多是标准的。对我们来说最重要的是密码(受感染的机器具有密码“superpass”)和server1,其中感染的机器ID被过滤。
受感染机器和C&C服务器之间的通信在感染过程开始后立即建立。定期发送以下请求。大多数参数的名称可以被清楚地推断出来。
id = TeamViewer ID,网络犯罪分子需要这个id,它与密码一起就足以远程连接到受感染的计算机
tout = timeout
idl =空闲时间
osbt = 32bit / 64bit
osv = OS版本
osbd = OS构建版本
ossp = service pack
tvrv = TeamViewer版本
uname =用户名
cname =计算机名称
vpn =有TeamViewer vpn
avr =防病毒解决方案
当我们在网络浏览器中打开C&C服务器时,我们看到一个登录页面
受感染的计算机是通过TeamViewer控制的。网络罪犯可以连接到远程计算机(他们知道TeamViewer的ID和密码),或者他们可以通过TeamViewer聊天发送命令,以便基本上在受感染的机器上做任何事情。经由的TeamViewer聊天通信允许要执行的基本功能后门:APPLIST,WCMD,版本,操作系统,VPN,语言环境,时间,网络摄像头,genid,配置。在TeamSpy代码中,这些命令与它们的crc32校验和进行比较,所以碰撞很容易发生。因为crc32(wcmd)= 07B182EB = crc32(aacvqdz),
使用TeamViewer的合法VPN加密流量,使其与合法的TeamViewer流量无法区分。一旦机器受到感染,犯罪分子就可以完全访问计算机。他们可以窃取和渗透敏感数据,下载和执行任意程序等等。
滥用合法应用程序是一个聪明的技术,因为并不是每个用户都会检查所有DLL库在同一目录的是否正确。检查主可执行文件的签名没有显示任何可疑的内容,可能让受害者认为一切都是正常的。请参阅下面的main_w32.exe文件的数字签名。这个文件不是恶意的。
重要的是要记住,有更多的恶意软件在滥用TeamViewer,而不仅仅是TeamSpy。这个博客只是描述其中的一个。然而,其他恶意软件的规则也是类似的。
*参考来源:avast,