当您需要远程IT支持时,TeamViewer是一个非常方便的远程控制程序。不幸的是,TeamSpy背后的网络犯罪分子也发现这个工具非常有用,可以用来进行恶意活动。

TeamSpy通过欺骗人们下载恶意附件并启用宏来感染计算机。之后,恶意软件秘密安装TeamViewer,让网络犯罪分子完全控制受感染的计算机。TeamSpy首先在2013年出现,当时CrySyS Lab卡巴斯基实验室发布了有关其操作的白皮书。Heimdal Security最近报道,已经重新出现了一个有针对性的垃圾邮件发送的恶意软件。

隐藏命令

感染设备后,大多数恶意软件与命令和控制(C&C)服务器通信。顾名思义,C&C服务器是发送恶意软件执行命令的控制中心。C&C服务器也是恶意软件发回它收集的数据的地方。对于此通信,恶意软件作者通常会实现一个自定义协议,可以很容易地区别于其他流量,从而阻止防病毒解决方案。为了使防病毒解决方案更加难以检测,一些恶意软件作者使用流行的远程控制程序(如TeamViewer),而不是利用其VPN网络来更好地掩盖其恶意软件和C&C服务器之间的通信。

TeamSpy如何感染

TeamSpy通过垃圾邮件传播,旨在诱骗人们打开附件。附件是一个带有宏的Excel文件。打开附件后,将出现以下屏幕:

01-Capturee_xls

当目标人员启用宏时,感染过程开始,在后台完全运行,因此受害者不会发现任何内容。如果我们查看恶意宏,我们可以看到稍微混淆的字符串,通常会分割成一个或多个子串,这些子串后来被连接起来。最重要的信息以红色下方圈出,并且是一个链接,从中下载某些东西以及稍后使用的密码

02-Capturee_xls2

该链接disk.karelia.pro是用于上传和共享文件的合法的俄罗斯服务商。虽然下载的附件是PNG,但它实际上是一个EXE文件,更具体地说,它是一个受密码保护的Inno安装程序安装程序

03-Capturf_installer

innounp实用程序的帮助下,我们可以轻松地从恶意软件使用的Inno Setup安装程序列出或提取文件。如下列所示,大多数文件是常规的,数字签名的TeamViewer二进制文件,但两个文件 – msimg32.dlltvr.cfg除外。Tvr.cfg是TeamSpy的配置文件,稍后将介绍,msimg32.dll是恶意软件本身。Msimg32.dll是一个DLL库,它是Windows操作系统的一部分。但是,在这种情况下,TeamSpy会滥用DLL搜索顺序,从而将当前目录中的假msimg32.dll加载到进程中,而不是从Windows/System32目录调用原始的msimg32.dll 。恶意软件本身就在假的msimg32.dll库中。

04-Captureg_innounp

TeamSpy的隐形窗体

通常当您安装TeamViewer时,您将看到一个带有ID和密码的GUI窗口,另一方需要知道ID和密码才能远程连接到您的计算机。

05-Capture8_pwu_superpass

如果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阻止应用程序访问某些特定资源,例如,如果RegCreateKeyRegOpenKey尝试访问Software\TeamViewer注册表项,则会返回错误代码:ERROR_BADKEY

06-hook_regcreatekeyexw

调用GetCommandLine使得TeamViewer认为它是以预定义的密码开始的(而不是随机生成的密码,TeamViewer用户通常可以通过添加命令行参数将此密码设置为任意值)

07-hook_commandline

Hooking SetWindowLayeredAttributes将TeamViewer窗口不透明度设置为0(指令PUSH 0),根据MSDN文档,该视图的含义如下:“当bAlpha为0时,窗口是完全透明的。当bAlpha为255时,窗口是不透明的。

08-hook_setlayeredwindowattributes

挂钩CreateDialogParam阻止一些恶意软件不需要显示的对话框。这些对话可以在文件中查找TeamViewer_Resource_en.dll,见下图。

09-hook_createdialogparamw

ShowWindow的情况下,它定义了它自己的nCmdShow参数4d2h10e1h。如果其他值超过这些值,则不会发生任何事情。

10-hook_showwindow

可能最有趣的是挂钩CreateWindowEx API。通过一系列类名检查,它标识属于TeamViewer聊天窗口的窗口和其他窗口控件。在WinSpy ++等工具的帮助下,我们可以看到属于特定进程的所有窗口(即使它们被隐藏)。从下图可以看出,有一个ControlWin窗口,它有几个TVWidgets。 是一个简易的聊天组件。聊天窗口无法正常显示,因为恶意软件在后台运行,但是可以修复恶意软件,从而不会发生隐藏窗口。

11-Capture4_tvwidget_chatwindow

下面的代码片段显示恶意软件如何获取这些窗口控件的句柄。GetWindowLongCallWindowProcSetWindowLongnIndex = GWL_PROC用自定义窗口过程替换聊天历史文本编辑的窗口过程的旧地址。

12-get_windowcontrols

自定义窗口过程监听传入消息并且基于窗口消息id,它发送新消息或等待来自C&C服务器的回复(EM_SETCHARFORMAT消息到达)。

下图显示了如何发送新消息。恶意软件首先设置焦点与新的消息文本编辑WM_SETFOCUS,然后通过设置新的消息文本WM_SETTEXT,最后通过发送点击“发送”按钮BM_CLICK

13-send_message

上述50个API中的大多数应用了类似的修改。一些补丁很简单,只有几个指令,而一些补丁是非常复杂的,如CreateWindowEx。我们不会在这里列出所有这些,但是最终的效果是明确的 – TeamViewer的窗口不会显示给受害者。他们在系统中默默存在,就是这样。

配置文件

TeamSpy的配置存储在tvr.cfg文件中。它使用简单的自定义加密算法,可以在下面看到。它读取输入的文件并使用密码“TeamViewer”。该算法运行两个计数器,CNT1(以字节为单位的0..number tvr.cfg)和CNT2(密码的0..length)。它需要一个来自密码的字节,加上乘法cnt1 * cnt2的结果。这是为每个字符的密码完成的。这些结果都是异或,产生一个字符,并且在循环结束时,它与来自配置文件的相应字节进行异或。配置文件中的所有字节都重复这些步骤。

14-tvr_config

解密的配置文件可以在下面看到。参数的名称大多是标准的。对我们来说最重要的是密码(受感染的机器具有密码“superpass”)和server1,其中感染的机器ID被过滤。

15-tvr_config_decrypted

“打电话回家”

受感染机器和C&C服务器之间的通信在感染过程开始后立即建立。定期发送以下请求。大多数参数的名称可以被清楚地推断出来。

16-c2_communication

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聊天通信允许要执行的基本功能后门:APPLISTWCMD版本操作系统VPN语言环境时间网络摄像头genid,配置。在TeamSpy代码中,这些命令与它们的crc32校验和进行比较,所以碰撞很容易发生。因为crc32(wcmd)= 07B182EB = crc32(aacvqdz),

17-Captureb_tv_chat_applist

18-Capturec_tv_chat_control

使用TeamViewer的合法VPN加密流量,使其与合法的TeamViewer流量无法区分。一旦机器受到感染,犯罪分子就可以完全访问计算机。他们可以窃取和渗透敏感数据,下载和执行任意程序等等。

滥用合法应用程序是一个聪明的技术,因为并不是每个用户都会检查所有DLL库在同一目录的是否正确。检查主可执行文件的签名没有显示任何可疑的内容,可能让受害者认为一切都是正常的。请参阅下面的main_w32.exe文件的数字签名。这个文件不是恶意的。

19-update_w32_signature

重要的是要记住,有更多的恶意软件在滥用TeamViewer,而不仅仅是TeamSpy。这个博客只是描述其中的一个。然而,其他恶意软件的规则也是类似的。

 

*参考来源:avast

源链接

Hacking more

...