深入了解恶意软件如何滥用TeamViewer?
liebian365 2024-10-21 08:51 28 浏览 0 评论
TeamViewer,远程支持、远程访问、在线协作和会议,用于实现远程支持、远程访问、远程管理、家庭办公及在线协作和会议功能的软件。支持Windows、Mac、Linux、Chrome OS、iOS、Android、Windows Mobile和BlackBerry平台。
不幸的是,恶意软件 TeamSpy也发现这个工具非常有利于用来进行恶意活动。恶意软件 TeamSpy 是由远程访问工具 TeamViewer 和键盘记录器等组件组成。攻击者利用社会工程学诱骗受害者安装TeamSpy,并通过 DLL 劫持技术进行隐藏,然后利用合法的远程访问工具 TeamViewer 执行未经授权的操作,从而从受害者的设备中窃取机密文档和加密密钥。
TeamSpy 早在 2013 年就被发现了,当时匈牙利 CrySyS 实验室的研究人员和卡巴斯基实验室发布了有关其操作的白皮书。 来自Heimdal Security的安全专家最近发现了TeamSpy出现了新的攻击方式,该攻击方式采用了一个有针对性的垃圾邮件活动,通过恶意程序来获得目标计算机的完整控制权。
隐藏命令
在感染设备后,大多数恶意软件会与命令和控制(C&C)服务器进行通信,因为,C&C服务器是发送恶意软件执行命令的控制中心。 C&C服务器也是恶意软件收集数据的地方,在和C&C服务器进行通信时,恶意软件的开发者通常会实现一个自定义协议,但这样,杀毒软件就可以很容易地发现它与其他流量的不同,从而进行阻止。
于是,为了使杀毒软件更加难以检测到恶意行为,一些恶意软件的开发者便想到利用流行的远程控制程序(如TeamViewer),而不是利用其VPN网络,这样就能起到更好地掩盖其恶意软件和C&C服务器之间通信的作用。
TeamSpy如何进行感染
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库中:
TeamSpy的隐藏过程
通常当你安装TeamViewer时,会看到一个带有ID和密码的GUI窗口,但对于攻击者来说,他们需要知道是否要远程连接到攻击目标的计算机:
如果TeamSpy成功感染了用户,则不会显示任何内容,因为所有操作都是在后台运行的,因此攻击目标不会注意到安装了TeamViewer。这是通过挂接许多API函数并改变其行为来实现的。 TeamSpy挂接了以下近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
其中有一些挂接会阻止应用程序访问某些特定资源,例如如果RegCreateKey或RegOpenKey尝试访问Software TeamViewer注册表项,则会返回错误代码ERROR_BADKEY:
挂接GetCommandLine使得TeamViewer认为它是以预定义的密码开始的,而不是随机生成的密码,TeamViewer用户通常可以通过添加命令行参数将此密码设置为任意值:
挂接 SetWindowLayeredAttributes将TeamViewer窗口的不透明度设置为0(指令PUSH 0),根据MSDN文档,该视图的含义如下:“当bAlpha为0时,窗口是完全透明的。当bAlpha为255时,窗口是不透明的:
挂钩CreateDialogParam会阻止一些恶意软件创建不需要的对话框,用户可以在文件TeamViewer_Resource_en.dll中查找这些对话框,它们以10075的数字引用,如下图所示:
在ShowWindow的情况下,它定义了它自己的nCmdShow参数范围4d2h-10e1h。如果其他值超过这个范围,则不会发生任何进程:
其中最有趣的挂钩便是CreateWindowEx API。通过一系列类名检查,我发现它属于TeamViewer聊天窗口的窗口和其他窗口控件。在WinSpy ++等工具的帮助下,即使特定进程的所有窗口被隐藏,我们还是可以看到这些窗口的。从下图可以看出,有一个ControlWin窗口,它有几个TVWidgets。TvWidget是一个TV常用效果控件,包括焦点、边框处理等, 它有两个ATL:????????文本编辑,一个用于聊天消息历史,一个用于新的聊天消息,还有一个组合框,具有聊天参与者的下拉列表和按钮发送。 “消息01”代表聊天中收到的消息,“消息02”代表在点击“发送”按钮后发送的消息。聊天窗口无法正常显示,因为恶意软件在后台运行,但是可以修复恶意软件,从而不会发生隐藏窗口:
下面的代码片段显示了恶意软件是如何获取这些窗口控件的句柄的, GetWindowLong,CallWindowProc,SetWindowLong与nIndex = GWL_PROC用自定义窗口过程替换了聊天历史文本编辑窗口过程的旧地址:
自定义窗口过程会监听传入消息,并且基于窗口消息id,它会发送新消息或等待来自C&C服务器的回复,直到EM_SETCHARFORMAT消息的出现。
下图显示了恶意软件是如何发送新消息,恶意软件首先将重点放在使用WM_SETFOCUS的新消息文本编辑中,然后通过WM_SETTEXT设置新消息编辑文本,最后通过发送BM_CLICK点击“发送”按钮:
上述50个API中的大多数都使用了类似的修改,其中有一些补丁很简单,只有几个指令,单还有一些补丁是非常复杂的,如CreateWindowEx。我不会在这里一一列举,但是最终的结果表明,TeamViewer的窗口是绝不会让受害者看见的,它只存在与系统的后台。
TeamSpy的配置文件
TeamSpy的配置存储在tvr.cfg文件中,它使用简单的自定义加密算法,可以在下图中看到。它读取输入文件并使用密码“TeamViewer”,该算法运行两个计数器,cnt1(0.v.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,ver,os,vpn,locale,time,webcam,genid。在TeamSpy代码中,这些命令与它们的crc32校验和进行比较,所以很容易发生冲突。因为crc32(wcmd)= 07B182EB = crc32(aacvqdz),这两个命令都是可互换的:
攻击者使用TeamViewer的合法VPN加密流量,使其与合法的TeamViewer流量无法区分。一旦设备受到感染,他们就可以完全访问计算机。他们可以窃取和渗透敏感数据,下载和执行任意程序等等。
不得不说,滥用合法应用程序是一个聪明的技术,因为并不是每个用户都会检查所有DLL库在同一目录的合法性。检查主可执行文件的签名没有显示任何可疑的内容,可能让受害者认为一切都是正常的。详细情况,请参考下面的main_w32.exe文件的数字签名,这个文件就不是恶意的。
安全专家发现,目前除了TeamSpy外,已有越来越多的恶意软件类开始滥用TeamViewer。
本文翻译自:blog.avast.com/a-deeper-look-into-malware-abusing-teamviewer ,如若转载,请注明来源于嘶吼: www.4hou.com/technology/4417.html 更多内容请关注嘶吼专业版——pro4hou
相关推荐
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
-
明天,酒馆战棋就将迎来大更新,也聊了很多天战棋相关的内容了,趁此机会,给兄弟们穿插一篇构筑模式的卡组推荐!老规矩,我们先来看10职业胜率。目前10职业胜率排名与一周前基本类似,没有太多的变化。平衡补丁...
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
-
首先,程序中头文件的选择,要选择头文件,在文件中是没有对M_PI的定义的。选择:项目——>”XXX属性"——>配置属性——>C/C++——>预处理器——>预处理器定义,...
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
-
齐鲁网·闪电新闻5月24日讯酒后驾驶是对自己和他人生命安全极不负责的行为,为守护大家的平安出行路,东营交警一直将酒驾作为重点打击对象。5月23日,东营交警公布最新一批饮酒、醉酒名单。对以下驾驶人醉酒...
- Qt界面——搭配QCustomPlot(qt platform)
-
这是我第一个使用QCustomPlot控件的上位机,通过串口精确的5ms发送一次数据,再将读取的数据绘制到图表中。界面方面,尝试卡片式设计,外加QSS简单的配了个色。QCustomPlot官网:Qt...
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
-
老友相聚,仗剑江湖!《大话西游2》2021全民PK季4月激燃打响,各PK玩法鏖战齐开,零门槛参与热情高涨。PK季期间,不仅各种玩法奖励丰厚,参与PK趣闻录活动,投稿自己在PK季遇到的趣事,还有机会带走...
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
-
用ClaudeSonnet3.7的天气测试编码,让谷歌VSCodeAI编程插件GeminiCodeAssist自动编程。生成的文件在浏览器中的效果如下:(附源代码)VSCode...
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
-
前段时间DNF国服推出了名为“阿拉德B计划”的系列改版计划,截至目前我们已经看到了两项实装。不过关于便利性上,国服似乎还有很多路要走。自从顾爷回归DNF以来,几乎每天都在跟我抱怨关于DNF里面各种各样...
- 掌握Visual Studio项目配置【基础篇】
-
1.前言VisualStudio是Windows上最常用的C++集成开发环境之一,简称VS。VS功能十分强大,对应的,其配置系统较为复杂。不管是对于初学者还是有一定开发经验的开发者来说,捋清楚VS...
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
-
随着LED在各个领域的不同应用需求,LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。设计必读:LED四个关键特性特性一:非线...
- Visual Studio Community 2022(VS2022)安装图文方法
-
直接上步骤:1,首先可以下载安装一个VisualStudio安装器,叫做VisualStudioinstaller。这个安装文件很小,很快就安装完成了。2,打开VisualStudioins...
- Qt添加MSVC构建套件的方法(qt添加c++11)
-
前言有些时候,在Windows下因为某些需求需要使用MSVC编译器对程序进行编译,假设我们安装Qt的时候又只是安装了MingW构建套件,那么此时我们该如何给现有的Qt添加一个MSVC构建套件呢?本文以...
- Qt为什么站稳c++GUI的top1(qt c)
-
为什么现在QT越来越成为c++界面编程的第一选择,从事QT编程多年,在这之前做C++界面都是基于MFC。当时为什么会从MFC转到QT?主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MF...
- qt开发IDE应该选择VS还是qt creator
-
如果一个公司选择了qt来开发自己的产品,在面临IDE的选择时会出现vs或者qtcreator,选择qt的IDE需要结合产品需求、部署平台、项目定位、程序猿本身和公司战略,因为大的软件产品需要明确IDE...
- Qt 5.14.2超详细安装教程,不会来打我
-
Qt简介Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序。Qt是纯C++开...
- Cygwin配置与使用(四)——VI字体和颜色的配置
-
简介:VI的操作模式,基本上VI可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
- Qt界面——搭配QCustomPlot(qt platform)
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
- 掌握Visual Studio项目配置【基础篇】
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
- Visual Studio Community 2022(VS2022)安装图文方法
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)