投票失败:让我们让特斯拉特工接触干净的水。 第1部分

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
最近,一家欧洲电气安装设备制造商联系了 Group-IB,其员工收到了一封可疑信件,其中包含恶意附件。 伊利亚·波梅兰采夫CERT Group-IB 的恶意软件分析专家对此文件进行了详细分析,发现了其中的 AgentTesla 间谍软件,并讲述了此类恶意软件的预期结果及其危险性。

通过这篇文章,我们将推出一系列关于如何分析此类潜在危险文件的文章,我们正在等待 5 月 XNUMX 日最好奇的人参加有关该主题的免费交互式网络研讨会 《恶意软件分析:真实案例分析》。所有的细节都在切割之下。

分配机制

我们知道恶意软件通过网络钓鱼电子邮件到达受害者的计算机。这封信的收件人可能已被密件抄送。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
对标头的分析表明,信件的发件人受到了欺骗。事实上,这封信留下了 vps56[.]oneworldhosting[.]com.

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
电子邮件附件包含 WinRar 存档 qoute_jpeg56a.r15 带有恶意可执行文件 QOUTE_JPEG56A.exe 里面。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分

恶意软件生态系统

现在让我们看看所研究的恶意软件的生态系统是什么样的。下图显示了其结构和组件交互的方向。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
现在让我们更详细地了解每个恶意软件组件。

装载机

原始文件 QOUTE_JPEG56A.exe 是一个已编译的 AutoIt v3 脚本。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
为了混淆原始脚本,使用类似的混淆器 PELock AutoIT 混淆器 特点。
反混淆分三个阶段进行:

  1. 消除混淆 对于-如果

    第一步是恢复脚本的控制流。控制流扁平化是保护应用程序二进制代码免遭分析的最常见方法之一。令人困惑的转换极大地增加了提取和识别算法和数据结构的复杂性。

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  2. 行恢复

    有两个函数用于加密字符串:

    • gdorizabegkvfca - 执行类似 Base64 的解码

      投票失败:让我们让特斯拉特工接触干净的水。 第1部分

    • xgacyukcyzxz - 第一个字符串与第二个字符串的长度的简单字节异或

      投票失败:让我们让特斯拉特工接触干净的水。 第1部分

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  3. 消除混淆 二进制转字符串 и 执行

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

主要负载以划分形式存放在目录中 字体 文件的资源部分。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
涂胶顺序如下: 铁EQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, 奥奇克罗威斯克沃, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, 和王家豪, AVZOUMVFRDWFLWU.

WinAPI函数用于解密提取的数据 地穴解密,并根据该值生成会话密钥作为密钥 fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

解密后的可执行文件被发送到函数输入 运行PE进行 进程注入 в RegAsm.exe 使用内置的 外壳代码 (也称为 运行PE外壳代码)。作者权属于西班牙语论坛的用户 不可检测物[.]网 绰号“Wardow”。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
投票失败:让我们让特斯拉特工接触干净的水。 第1部分
还值得注意的是,在该论坛的一个主题中,有一个混淆器 AutoIt的 具有在样品分析过程中发现的类似特性。

他自己 外壳代码 非常简单且吸引人的注意力,只是从黑客组织 AnunakCarbanak 借来的。 API调用哈希函数。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
投票失败:让我们让特斯拉特工接触干净的水。 第1部分

我们也了解用例 法语 Shellcode 不同的版本。
除了所描述的功能之外,我们还确定了不活动的功能:

  • 阻止任务管理器中的手动进程终止

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 子进程终止时重新启动它

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 绕过UAC

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 将有效负载保存到文件中

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 模态窗口演示

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 等待鼠标光标位置改变

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 反虚拟机和反沙箱

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 自我毁灭

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  • 从网络中泵送有效负载

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

我们知道这种功能是保护器的典型功能 赛弗IT,显然,这就是有问题的引导加载程序。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分

软件主要模块

接下来,我们将简要描述该恶意软件的主要模块,并在第二篇文章中更详细地考虑它。在本例中,它是一个应用程序 。NET.

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
在分析过程中,我们发现使用了混淆器 混淆者EX.

投票失败:让我们让特斯拉特工接触干净的水。 第1部分

IE库.dll

该库作为主模块资源存储,是一个众所周知的插件 代理特斯拉,它提供从 Internet Explorer 和 Edge 浏览器提取各种信息的功能。

Agent Tesla 是一款模块化间谍软件,以合法的键盘记录产品为幌子,使用恶意软件即服务模型进行分发。 Agent Tesla 能够从浏览器、电子邮件客户端和 FTP 客户端提取用户凭据并将其传输到服务器给攻击者,记录剪贴板数据并捕获设备屏幕。截至分析时,开发商的官方网站无法访问。

入口点是函数 获取已保存的密码 InternetExplorer 类。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分
一般来说,代码执行是线性的,并且不包含任何针对分析的保护。只有未实现的功能才值得关注 获取已保存的Cookie。显然,该插件的功能应该得到扩展,但这从未实现。

投票失败:让我们让特斯拉特工接触干净的水。 第1部分

将引导加载程序附加到系统

让我们研究一下引导加载程序是如何连接到系统的。所研究的样本不会锚定,但在类似事件中,它会根据以下方案发生:

  1. 在文件夹中 C:用户公共 脚本已创建 Visual Basic中

    脚本示例:

    投票失败:让我们让特斯拉特工接触干净的水。 第1部分

  2. 加载器文件的内容用空字符填充并保存到文件夹中 %Temp%
  3. 在注册表中为脚本文件创建自动运行键 HKCUSoftwareMicrosoftWindowsCurrentVersionRun

因此,根据第一部分分析的结果,我们能够确定所研究的恶意软件所有组件的家族名称,分析感染模式,并获取用于写入签名的对象。我们将在下一篇文章中继续分析该对象,其中我们将更详细地查看主模块 代理特斯拉. 千万不要错过!

顺便说一句,5 月 XNUMX 日,我们邀请所有读者参加主题为“恶意软件分析:真实案例分析”的免费互动网络研讨会,本文作者(CERT-GIB 专家)将在线展示恶意软件分析的第一阶段恶意软件分析——以实践中的三个真实迷你案例为例,对样本进行半自动解包,您可以参与分析。该网络研讨会适合具有分析恶意文件经验的专家。注册严格通过公司电子邮件进行: 立即注册。等着你!

Yara

rule AgentTesla_clean{
meta:
    author = "Group-IB"
    file = "78566E3FC49C291CB117C3D955FA34B9A9F3EEFEFAE3DE3D0212432EB18D2EAD"
    scoring = 5
    family = "AgentTesla"
strings:
    $string_format_AT = {74 00 79 00 70 00 65 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 68 00 77 00 69 00 64 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 74 00 69 00 6D 00 65 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 63 00 6E 00 61 00 6D 00 65 00 3D 00 7B 00 33 00 7D 00 0D 00 0A 00 6C 00 6F 00 67 00 64 00 61 00 74 00 61 00 3D 00 7B 00 34 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 3D 00 7B 00 35 00 7D 00 0D 00 0A 00 69 00 70 00 61 00 64 00 64 00 3D 00 7B 00 36 00 7D 00 0D 00 0A 00 77 00 65 00 62 00 63 00 61 00 6D 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 37 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 38 00 7D 00 0D 00 0A 00 5B 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 73 00 5D 00}
    $web_panel_format_string = {63 00 6C 00 69 00 65 00 6E 00 74 00 5B 00 5D 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 6C 00 69 00 6E 00 6B 00 5B 00 5D 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 75 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 5B 00 5D 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 5B 00 5D 00 3D 00 7B 00 33 00 7D 00 00 15 55 00 52 00 4C 00 3A 00 20 00 20 00 20 00 20 00 20 00 20 00 00 15 55 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 3A 00 20 00 00 15 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 3A 00}
condition:
     all of them
}

rule  AgentTesla_obfuscated {
meta:
    author = "Group-IB"
    file = "41DC0D5459F25E2FDCF8797948A7B315D3CB075398D808D1772CACCC726AF6E9"
    scoring = 5
    family = "AgentTesla"
strings:
    $first_names = {61 66 6B 00 61 66 6D 00 61 66 6F 00 61 66 76 00 61 66 79 00 61 66 78 00 61 66 77 00 61 67 6A 00 61 67 6B 00 61 67 6C 00 61 67 70 00 61 67 72 00 61 67 73 00 61 67 75 00}
    $second_names = "IELibrary.resources"
condition:
     all of them
}

rule AgentTesla_module_for_IE{
meta:
    author = "Group-IB"
    file = "D55800A825792F55999ABDAD199DFA54F3184417215A298910F2C12CD9CC31EE"
    scoring = 5
    family = "AgentTesla_module_for_IE"
strings:
    $s0 = "ByteArrayToStructure" 
    $s1 = "CryptAcquireContext" 
    $s2 = "CryptCreateHash" 
    $s3 = "CryptDestroyHash" 
    $s4 = "CryptGetHashParam" 
    $s5 = "CryptHashData"
    $s6 = "CryptReleaseContext" 
    $s7 = "DecryptIePassword" 
    $s8 = "DoesURLMatchWithHash" 
    $s9 = "GetSavedCookies" 
    $s10 = "GetSavedPasswords" 
    $s11 = "GetURLHashString"  
condition:
     all of them
}

rule RunPE_shellcode {
meta:
    author = "Group-IB"
    file = "37A1961361073BEA6C6EACE6A8601F646C5B6ECD9D625E049AD02075BA996918"
    scoring = 5
    family = "RunPE_shellcode"
strings:
    $malcode = {
      C7 [2-5] EE 38 83 0C // mov     dword ptr [ebp-0A0h], 0C8338EEh
      C7 [2-5] 57 64 E1 01 // mov     dword ptr [ebp-9Ch], 1E16457h
      C7 [2-5] 18 E4 CA 08 // mov     dword ptr [ebp-98h], 8CAE418h
      C7 [2-5] E3 CA D8 03 // mov     dword ptr [ebp-94h], 3D8CAE3h
      C7 [2-5] 99 B0 48 06 // mov     dword ptr [ebp-90h], 648B099h
      C7 [2-5] 93 BA 94 03 // mov     dword ptr [ebp-8Ch], 394BA93h
      C7 [2-5] E4 C7 B9 04 // mov     dword ptr [ebp-88h], 4B9C7E4h
      C7 [2-5] E4 87 B8 04 // mov     dword ptr [ebp-84h], 4B887E4h
      C7 [2-5] A9 2D D7 01 // mov     dword ptr [ebp-80h], 1D72DA9h
      C7 [2-5] 05 D1 3D 0B // mov     dword ptr [ebp-7Ch], 0B3DD105h
      C7 [2-5] 44 27 23 0F // mov     dword ptr [ebp-78h], 0F232744h
      C7 [2-5] E8 6F 18 0D // mov     dword ptr [ebp-74h], 0D186FE8h
      }
condition:
    $malcode 
}

rule AgentTesla_AutoIT_module{
meta:
    author = "Group-IB"
    file = "49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08C05B5E3BD36FD52668D196AF"
    scoring = 5
    family = "AgentTesla"
strings:                                    
    $packedexeau = {55 ED F5 9F 92 03 04 44 7E 16 6D 1F 8C D7 38 E6 29 E4 C8 CF DA 2C C4 E1 F3 65 48 25 B8 93 9D 66 A4 AD 3C 39 50 00 B9 60 66 19 8D FC 20 0A A0 56 52 8B 9F 15 D7 62 30 0D 5C C3 24 FE F8 FC 39 08 DF 87 2A B2 1C E9 F7 06 A8 53 B2 69 C3 3C D4 5E D4 74 91 6E 9D 9A A0 96 FD DB 1F 5E 09 D7 0F 25 FB 46 4E 74 15 BB AB DB 17 EE E7 64 33 D6 79 02 E4 85 79 14 6B 59 F9 43 3C 81 68 A8 B5 32 BC E6}
condition:
     all of them
}

哈希

名字 qoute_jpeg56a.r15
MD5 53BE8F9B978062D4411F71010F49209E
SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

890E643316E9276156EDC8A

Type 存档 WinRAR
尺寸 823014
名字 QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Type PE(编译的 AutoIt 脚本)
尺寸 1327616
原名 不明
日期戳 15.07.2019
链接 微软链接器(12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Type 外壳代码
尺寸 1474

来源: habr.com

添加评论