【THM】FlareVM:Arsenal of Tools(FlareVM工具库)-学习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/r/room/flarevmarsenaloftools

本文相关内容:简单了解 FlareVM 中的调查工具库。

image-20250107224230715

介绍

FlareVM ,或者说“Forensics, Logic Analysis, and Reverse Engineering-取证、逻辑分析和逆向工程”虚拟机,是一个全面且精心策划的专业工具集合,专门为满足逆向工程师、恶意软件分析师、事件响应/应急响应人员、取证调查人员和渗透测试人员的特定需求而设计。该工具包由 FireEye 的 FLARE 团队精心制作而得以产生,它可以有力地帮助我们解开数字谜团、深入了解恶意软件行为以及深入研究可执行文件中的一些复杂的细节。

image-20250112002927274

学习目标

  • 探索 FlareVM 中的工具。
  • 了解如何使用工具有效地分析潜在的恶意进程。
  • 熟悉那些可用于静态分析恶意文档和恶意二进制文件的工具。

前置学习条件

在学习本文内容之前,你最好应该熟悉与 Windows 以及进程相关的各种技术术语。如果你不熟悉这些术语,请考虑完成TryHackMe的Pre Security学习路径。

部署实验虚拟机

刚开始使用这个工具可能会非常困难,因为从头开始构建它需要很多时间,而且安装将需要几个小时!值得庆幸的是,我们已经将相关的实验机器放入了与本文相关的TryHackMe实验房间环境中。

在与本文相关的TryHackMe实验房间页面中,我们可以单击如下所示的Start Machine按钮来部署实验机器,这将会在 FlareVM 上初始化一个实例。

image-20250112002942475

我们将使用与本文内容相关的实验虚拟机内部的工具。该实验虚拟机将会以分屏视图启动。如果你想要通过远程桌面 ( RDP )来访问这台实验计算机,你可以在你的本地攻击机上使用下面的登录凭据。

  • Username:Administrator
  • Password:letmein123!
  • IP Address:MACHINE_IP

image-20250112003000841

我们将要在本文中使用的几乎所有文件都位于实验虚拟机上的C:\Users\Administrator\Desktop\Sample文件夹中。

免责声明:与本文相关的TryHackMe实验房间中所提供的 FlareVM 计算机会包含一些恶意样本文件,这些文件将作为实践练习所需的一部分,并且该实验计算机是无法访问互联网的。本文的学习者在任何情况下都不应该下载、执行(在FlareVM计算机之外)或传播这些恶意样本文件。这样做可能会损害你的计算机系统或计算机网络。请始终仅在隔离、受控且安全的计算机环境中处理此类样本文件。

image-20250524212556172

FlareVM中的工具库

在本小节中,我们将介绍一些 FlareVM 内部的工具,包括了很多专门的取证、事件响应和恶意软件调查工具。

以下是按类别进行分组的一些工具。

逆向工程&调试

逆向工程就像反向地解决一个难题:拆开成品,了解其工作原理。调试(Debugging)就是识别(找出)错误,理解错误发生的原因,并且修正代码以防止错误再次发生。

  • Ghidra - 由 NSA 开发的开源逆向工程套件。
  • x64dbg - 用于处理 x64 和 x32 格式二进制文件的开源调试器。
  • OllyDbg - 用于汇编级逆向工程的调试器。
  • Radare2 - 一个复杂的逆向工程开源平台。
  • Binary Ninja - 用于反汇编和反编译二进制文件的一个工具。
  • PEiD - 一个加壳器(Packer)、加密程序(cryptor)以及编译器检测工具。

反汇编器&反编译器

反汇编器和反编译器是恶意软件分析中至关重要的工具。它们通过将恶意软件分解成更易于理解的格式,来帮助分析人员理解恶意软件的行为、逻辑和控制流。下面提到的工具通常属于此类。

  • CFF Explorer - 用于分析和编辑可移植可执行(PE-Portable Executable)文件的一个 PE 编辑器。
  • Hopper Disassembler - 一个调试器(Debugger)、反汇编器(disassembler)以及反编译器(decompiler)。
  • RetDec - 用于分析机器代码的开源反编译器(decompiler)。

静态&动态分析

静态分析和动态分析(Static and dynamic analysis)是网络安全中用来检查恶意软件的两种关键方法。 静态分析是指在不执行代码的情况下检查代码,而动态分析则涉及到观察代码运行时的行为。下面提到的工具通常属于此类。

  • Process Hacker - 复杂的内存编辑器(memory editor)和进程观察器(process watcher)。
  • PEview - 用于文件分析的一个可移植可执行(PE-portable executable)文件查看器。
  • Dependency Walker - 用于显示一个可执行文件的DLL依赖项的一个工具。
  • DIE (Detect It Easy) - 一个加壳器(packer)、编译器(compiler)以及加密程序检测工具。

取证&事件响应

数字取证(Digital Forensics)主要涉及从计算机、网络和存储设备等各种来源收集、分析和维护数字证据。类似地,事件响应(Incident Response)主要侧重于针对网络攻击进行检测、遏制、根除和恢复。以下提到的工具通常属于此类。

  • Volatility - RAM dump analysis framework for memory forensics.用于内存取证的 RAM 转储分析框架。
  • Rekall - 事件响应中的内存取证框架。
  • FTK Imager - 用于取证用途的磁盘映像(Disc image)采集和分析工具。

网络分析

网络分析(Network Analysis)包括用于研究和分析网络的不同方法和技术,以揭示模式、优化性能并了解网络的底层结构和行为。

  • Wireshark - 用于流量记录和流量检查的网络协议分析器。
  • Nmap - 一个漏洞检测和网络映射工具。
  • Netcat - 使用这个有用的工具可以通过网络连接读取数据和写入数据。

文件分析

文件分析是一种用于检查文件是否存在潜在的安全威胁并且确保文件被分配了正确的权限的技术。

  • FileInsight - 可用于查看和编辑二进制文件的一个程序。
  • Hex Fiend - 轻巧、快速的十六进制编辑器(Hex editor)。
  • HxD - 一个十六进制编辑器,主要用于查看、编辑和分析二进制文件(如程序、磁盘镜像、内存转储等)。

脚本&自动化

脚本和自动化主要涉及使用 PowerShell 和 Python 等脚本来自动化执行重复性的任务和流程,使其更加高效且不易出现人为错误。

  • Python - 主要关注Python模块和工具的自动化。
  • PowerShell Empire - PowerShell 后渗透(post-exploitation)框架。

Sysinternals 套件

Sysinternals Suite 是一组高级系统实用程序,旨在帮助 IT 专业人员和开发人员管理、排除故障和诊断 Windows 系统。

  • Autoruns - 显示配置为在系统启动期间(boot-up)运行的可执行文件。
  • Process Explorer - 提供有关正在运行的进程的信息。
  • Process Monitor - 监控并记录实时的进程/线程活动。

你已经查看过上述这些工具的所有类别了吗?它们的种类繁多,对吧?别担心,我们现在不会一一列举所有这些工具——这可能需要几个月才能完成!我们在此只想向你介绍一个概念:一个盒子里装满了具备各种用途的工具,而我们需要了解哪些工具最适合用来执行特定的任务。

在下一个小节中,我们将讨论一些用于调查的标准工具。

答题

哪个工具是可以用于分析 x64 和 x32 格式的二进制文件的开源调试器(debugger )?

x64dbg

什么工具可用于分析和编辑可移植可执行(PE-Portable Executable)文件?

CFF Explorer

哪个工具被认为是复杂的内存编辑器(memory editor)和进程观察器(process watcher)?

Process Hacker

哪种工具可用于取证用途的磁盘映像(Disc image)采集和分析?

FTK Imager

什么工具可以用来查看和编辑二进制文件?

HxD

image-20250524110449340

常用的调查工具:概述

让我们来看看本文将重点介绍的那些调查工具,这些工具是用于进行初步调查的基本工具,请参阅下面的列表。

Tool-工具 Investigative Value-对于调查的价值
Procmon 这是一个用于跟踪系统活动的有用工具,尤其适用于恶意软件研究、故障排除和取证调查
Process Explorer 允许你查看父子关系的进程、已经加载的 DLL 及其路径
HxD 可以通过十六进制编辑器来检查或更改恶意文件
Wireshark 观察和调查网络流量以查找异常活动
CFF Explorer 可以生成文件哈希值以进行完整性验证,验证系统文件的来源并验证其有效性
PEStudio 进行静态分析或者研究可执行文件的属性而不实际运行文件
FLOSS 使用先进的静态分析技术从恶意软件程序中提取并反混淆所有字符串

你可以按照上表来逐一打开 FlareVM 上的工具和文件,同时我们将讨论其中一些工具的使用概述。

Process Monitor (Procmon)

Process Monitor是一款功能强大的 Windows 工具,旨在帮助你记录系统上的应用程序的问题,它允许你实时查看、记录和跟踪系统以及Windows文件的活动。总体而言,Process Monitor有助于我们跟踪系统活动,尤其是在恶意软件研究、故障排除和取证调查方面,它可以实时监控文件系统、注册表以及线程/进程活动。

以下是如何有效地利用它来进行调查的示例。

image-20250112195028470

根据上图中的日志条目,与本地安全认证子系统服务 (LSASS - Local Security Authority Subsystem Service) 相关的进程 lsass.exe 已经成功读取了一个文件。LSASS负责处理身份验证,并且会频繁地与关键系统文件进行通信,例如lsasrv.dll(本地安全认证服务器服务-Local Security Authority Server Service)等。

虽然上图示例是一个标准的系统进程,但如果你想检查日志以查找恶意活动的迹象,那么 LSASS 也可能会成为凭据转储攻击的目标,在这类攻击中 Mimikatz 和其他工具经常会尝试访问 LSASS 内存。在这种情况下,你应该注意任何其他与 LSASS 相关的可疑活动,例如奇怪的访问模式或者读取/写入 lsass.exe 的进程。

别担心——上面的示例没有显示任何恶意软件存在的迹象!

Process Explorer (Procexp)

Process Explorer可以帮助我们深入了解计算机上正在运行的活动进程,它允许我们深入了解系统的内部工作原理,并能提供关于当前正在运行的进程及其关联的用户帐户的一个完整列表。如果你想知道哪个程序正在访问特定的文件或文件夹,那么 Process Explorer 可以为你提供这些信息。

image-20250112195050494

从上图可以看出,CFF Explorer 应用程序已打开。通过使用位于实验虚拟机桌面的 Process Explorer(procexp)工具,我们识别了该进程及其父进程。当我们想要监控其他进程的生成情况时,这通常非常有用,例如从 Word 文档、 LNK 文件甚至 ISO 文件生成的进程,因为威胁行为者通常会滥用这些进程。

HxD

HxD 是一款快速灵活的十六进制编辑器,可用于编辑任何容量的文件、内存和驱动器。它可以被用于取证调查、数据恢复、调试以及精确操纵二进制数据。该工具的重要功能包括查看文件和内存内容、编辑、搜索以及比较十六进制(hex)数据。

让我们来看看这款工具是如何工作的。

image-20250112195115285

上面的 HxD 十六进制编辑器截图显示了二进制文件 possible_medusa.txt 的相关信息。上图左半边界面左侧的十六进制数据会以十六进制的形式表示文件的内容,而左半边界面的右侧则会显示文件内容的 ASCII 码解释。有趣的是,该文件以 4D 5A(Little Endian-小端) 开头,这表明它是可执行的。

上图右半边界面的Data Inspector-数据检查器允许你通过以多种数据类型(例如整数-integer、浮点数-float)显示其值来检查单个字节,从而实现更直接的数据评估。

HxD 允许我们深入检查文件的未处理的十六进制数据,通过识别文件类型、结构和可能的损坏情况来促进查询。其数据检查器(Data Inspector)功能可以深入了解特定字节值,从而为使用者提供帮助。

CFF Explorer

借助 CFF Explorer 给出的全面的文件信息,调查人员可以生成文件哈希值进行完整性验证,验证系统文件的来源,并验证其有效性(例如,通过查找异常修改情况)。在分析恶意软件时,了解这一点至关重要,因为危险代码可能会隐藏在被修改的系统文件中。

image-20250112195131820

在上面的样本中显示了 cryptominer.bin 文件的详细信息。2024 年 9 月 23 日,生成了一个 64 位可移植可执行(PE)文件。该文件的信息可以通过其哈希值(SHA-1 和 MD5)进行验证。在调查过程中,CFF Explorer工具有助于我们确认文件信息、查找并定位潜在的问题。

Wireshark

在网络流量分析方面,Wireshark是一款功能强大的工具,调查人员可以使用它来追踪可疑连接、检查协议并发现可能存在的攻击或数据泄露。在这种情况下,建议基于TLSv1.2使用安全的加密连接,以屏蔽有害活动或保护合法流量。

image-20250112195148101

如上图显示的被捕获的数据包,其中包含协议、源、目标和其他信息的详细细节。大多数数据包显示正在使用 TLSv1.2 和 TCP 进行加密传输。原始数据包数据在上述工具界面中将会以十六进制和ASCII 形式显示,其中包含了使用TLSv1.2加密的重要块(chunk)。

如果你想深入了解此工具,可以查看TryHackMe提供的Wireshark学习模块

PEStudio

静态分析(即在不运行文件的情况下研究可执行文件的属性)可以使用 PEstudio 工具来完成。此工具的功能在很多情况下都非常有用。PEstudio可以提供有关文件的各种信息,而且不会让用户面临文件执行上的风险,这有助于识别可疑或有害的可执行文件。

那么,它是如何工作的呢?让我们查看下面的图片示例。

image-20250112195208102

此示例展示了如何使用静态恶意软件分析工具 PEstudio 9.22 来检查可执行文件 PSexec.exe( 该文件不在实验虚拟机中,这里只是一个纯粹的示例 )。该文件具有双重用途——它对系统管理员来说是合法的,但可能会被黑客恶意利用以进行远程访问。

示例中文件的熵值(entropy value)为6.596 ,这表明它被加壳(packing)或加密的可能性很小,这是危险软件的典型特征。这款32位控制台应用程序的2.34版本允许其远程运行程序,这一功能常用于在攻击期间进行横向移动,该文件是使用Visual C++ 8编写的。

PsExec的双重用途特性(通常情况合法,但在受感染的环境中却很可疑)加上低到中等的威胁指标(indicators)以及中等偏高的熵值 ,使其在系统中的存在令人担忧,尤其是在不期望发生远程代码执行的情况下。PsExec在后渗透阶段的使用情况值得进一步调查,以确定其是否已经被攻击者恶意滥用。

FLOSS

FLARE 混淆字符串求解器(FLOSS,前身为 FireEye Labs 混淆字符串求解器)使用了先进的静态分析技术,能够自动提取并反混淆来自恶意软件程序中的所有字符串。与 strings.exe 类似,它可以增强对未知二进制文件的基本静态分析。FLOSS 的脚本目录中还包含了更多 Python 脚本,可用于将脚本的输出加载到其他程序中(例如 IDA Pro程序或Binary Ninja程序)。

tips:FLOSS-FLARE Obfuscated String Solver (前身为FireEye Labs Obfuscated String Solver) 。

PS C:\Users\Administrator\Desktop\Sample > floss .\cobaltstrike.exe
INFO: floss: extracting static strings
finding decoding function features: 100%|█████████████████████████████████████████████| 74/74 [00:00<00:00, 2370.15 functions/s, skipped 0 library functions]
INFO: floss.stackstrings: extracting stackstrings from 50 functions
extracting stackstrings: 100%|██████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 128.00 functions/s]
INFO: floss.tightstrings: extracting tightstrings from 4 functions...
extracting tightstrings from function 0x402e80: 100%|██████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 31.99 functions/s]
INFO: floss.string_decoder: decoding strings
emulating function 0x402e80 (call 1/1): 100%|████████████████████████████████████████████████████████████████████████| 21/21 [00:09<00:00,  2.21 functions/s]
INFO: floss: finished execution after 265.61 seconds
INFO: floss: rendering results 
............

查看结果:

FLARE FLOSS RESULTS (version v3.1.0-0-gdb9af41)

+------------------------+------------------------------------------------------------------------------------+
| file path              | cobaltstrike.exe                                                                   |
| identified language    | unknown                                                                            |
| extracted strings      |                                                                                    |
|  static strings        | 189 (2050 characters)                                                              |
|   language strings     |   0 (   0 characters)                                                              |
|  stack strings         | 0                                                                                  |
|  tight strings         | 0                                                                                  |
|  decoded strings       | 0                                                                                  |
+------------------------+------------------------------------------------------------------------------------+
 ────────────────────────────
  FLOSS STATIC STRINGS (189)
 ────────────────────────────
+-----------------------------------+
| FLOSS STATIC STRINGS: ASCII (188) |
+-----------------------------------+
!This program cannot be run in DOS mode.
.text
P`.data
.rdata
P@.pdata
0@.xdata
0@.bss
.idata
.CRT
.tls
ffffff.
ATUWVSH
T$ E
t6H9
[^_]A\
ATUWVSH
L$ < H
@[^_]A\
UWVSH
L$LA
X[^_]
UWVSH
L$LA
X[^_]
D$P\
D$He
D$@p
D$8i
D$0p
D$(\
D$ .
T$XH
fff.
D$ tv
D$(H
T$ H
L$ H
L$(H
ATUWVSH
 [^_]A\
ffff.
CCG
8[^H
T$(H
\$8H
L$ H
ATUWVSH
d$0H
l$(H
@[^_]A\
D$XH
T$XL
D$`L
L$hH
ffffff.
AUATUWVSH
[^_]A\A]
T$PH
T$ H
[^_]A\A]
T$hH
L$PM
T$8H
L$ H
T$8L
[^_]A\A]
ATWVSH
[^_A\]
D$ H
tXw!
9MZt
HcQ<H
HcA<H
WVSH
tWHc
 [^_
 [^_
tPHc
B' t\tH
ffff.
UWVSH
tSHc
([^_]
([^_]
ATUWVSH
@[^_]A\
L3d$0H
@[^_]A\
D$0H
D$(H
UWVSH
([^_]H
UWVSH
([^_]
([^_]
QPH=
mNAj
+5:
mNAj
=E,z
mUDj
mN[3\
z(8(
R^~4
?\t{\
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp
_set_invalid_parameter_handler
%c%c%c%c%c%c%c%c%cMSSE-%d-server
.pdata
Argument domain error (DOMAIN)
Argument singularity (SIGN)
Overflow range error (OVERFLOW)
Partial loss of significance (PLOSS)
Total loss of significance (TLOSS)
The result is too small to be represented (UNDERFLOW)
Unknown error
_matherr(): %s in %s(%g, %g)  (retval=%g)
Mingw-w64 runtime failure:
Address %p has no image-section
  VirtualQuery failed for %d bytes at address %p
  VirtualProtect failed with code 0x%x
  Unknown pseudo relocation protocol version %d.
  Unknown pseudo relocation bit size %d.
CloseHandle
ConnectNamedPipe
CreateFileA
CreateNamedPipeA
CreateThread
DeleteCriticalSection
EnterCriticalSection
GetCurrentProcess
GetCurrentProcessId
GetCurrentThreadId
GetLastError
GetModuleHandleA
GetProcAddress
GetStartupInfoA
GetSystemTimeAsFileTime
GetTickCount
InitializeCriticalSection
LeaveCriticalSection
LoadLibraryW
QueryPerformanceCounter
ReadFile
RtlAddFunctionTable
RtlCaptureContext
RtlLookupFunctionEntry
RtlVirtualUnwind
SetUnhandledExceptionFilter
Sleep
TerminateProcess
TlsGetValue
UnhandledExceptionFilter
VirtualAlloc
VirtualProtect
VirtualQuery
WriteFile
__C_specific_handler
__dllonexit
__getmainargs
__initenv
__iob_func
__lconv_init
__set_app_type
__setusermatherr
_acmdln
_cexit
_initterm
_onexit
abort
exit
fprintf
free
fwrite
malloc
memcpy
signal
sprintf
strlen
strncmp
vfprintf
KERNEL32.dll
msvcrt.dll
+------------------------------------+
| FLOSS STATIC STRINGS: UTF-16LE (1) |
+------------------------------------+
msvcrt.dll
 ─────────────────────────
  FLOSS STACK STRINGS (0)
 ─────────────────────────
 ─────────────────────────
  FLOSS TIGHT STRINGS (0)
 ─────────────────────────
 ───────────────────────────
  FLOSS DECODED STRINGS (0)
 ───────────────────────────

在上面的例子中,FLOSS从二进制文件中提取了189 个静态字符串 ,其中可能包含硬编码信息,例如文件路径URLs(可能用于命令和控制服务器,即C2服务器)、IP 地址API 调用错误消息注册表加密密钥配置数据 。然而,未识别任何解码的字符串,这表明FLOSS在本次分析中未检测或解码动态生成的以及被混淆的字符串。恶意软件经常会使用被混淆的字符串来掩盖其恶意行为。

答题

哪种工具以前被称为FireEye Labs Obfuscated String Solver(FireEye Labs 混淆字符串求解器)?

FLOSS 是一款从恶意软件中提取隐藏文本的工具。恶意软件通常会隐藏重要文本(例如 URL、命令或密码),以增加分析难度。FLOSS 有助于发现这些隐藏的细节。

FLOSS

哪种工具可以深入了解计算机上正在运行的活动进程?

Process Explorer (procexp)可以显示计算机上所有正在运行的程序(进程) ,包括它们的父子关系。它有助于追踪哪些进程是由其他进程启动的,对于检测可疑活动非常有用。

Process Explorer (Procexp)

通过使用Process Explorer(Procexp)工具,我们可以在哪个进程下找到 smss.exe?

tips:使用实验虚拟机进行操作,打开Process Explorer(Procexp)即可。

image-20250524212743745

Session Manager Subsystem (smss.exe) 是一个 Windows 进程,负责在你登录时启动用户会话 。在 Process Explorer 中,smss.exe 会出现在System进程下。

System

哪个强大的 Windows 工具旨在帮助你记录系统应用程序的问题?

Procmon

哪种工具可用于静态分析或研究可执行文件的属性而无需运行文件?

PEStudio

使用PEStudio工具打开实验虚拟机 Desktop\Sample 文件夹下的文件 cryptominer.bin ,该文件的 sha256 值是多少?

image-20250524212923467

E9627EBAAC562067759681DCEBA8DDE8D83B1D813AF8181948C549E342F67C0E

使用PEStudio工具打开实验虚拟机 Desktop\Sample 文件夹下的 cryptominer.bin 文件,它有多少个函数?

image-20250524213209915

102

什么工具可以生成文件哈希值以进行完整性验证、验证系统文件的来源并验证其有效性?

CFF Explorer

使用CFF Explorer工具打开实验虚拟机 Desktop\Sample 文件夹下的文件 possible_medusa.txt ,该文件的 MD5 是多少?

image-20250524213342410

646698572AFBBF24F50EC5681FEB2DB7

使用 CFF Explorer 工具打开实验虚拟机 Desktop\Sample 文件夹中的 possible_medusa.txt 文件,然后,转到 DOS Header Section,该文件的 e_magic 值是多少?

image-20250524213433755

5A4D

image-20250524215351103

image-20250524215410070

分析恶意文件-实验示例

在本小节中,我们需要亲自动手完成实验。

使用我们的 Flare 虚拟机(实验虚拟机)中的工具,我们将分析不同的可执行文件,运行它们,并查看它在特定机器上的作用!

实验场景:2024 年 9 月 24 日凌晨 3:43,一名用户下载了一个可疑的 windows.exe 文件。此次下载已被标记为潜在威胁。监控团队已向你发送了一封电子邮件,请求对其进行分析。他们已将该文件发送给你,目前该文件位于实验虚拟机上的 C:\Users\Administrator\Desktop\Sample 文件夹中。

image-20250112195507249

我们开始本次调查的初步方法是执行静态分析以从给定的二进制文件中获取初始信息。

使用PEStudio进行分析

让我们从 PEStudio 开始。我们用这个工具打开给定的二进制文件(windows.exe)。我们可以在这里查找到哪些有用的信息?

image-20250112195540966

对于经计算得到的MD59FDD4767DE5AEC8E577C1916ECC3E1D6 和SHA-1A1BC55A7931BFCD24651357829C460FD3DC4828F哈希值,建议与VirusTotal等成熟病毒数据库进行比较。如果没有已知的检测结果,则更有可能是新的或者未被发现的恶意软件活动。

尽管该文件声称其与 Windows 注册表编辑器 (REGEDIT) 相连接,这一点你可以根据description(描述)看到,但这很可能是在企图欺骗调查者并规避被发现。

tips:Windows Registry Editor-REGEDIT。

合法的 REGEDIT 工具通常会位于C:\Windows\System32目录中,而不是在用户的下载(download )目录位置。

还有什么?

image-20250112195621946

如果文件的元数据中包含("Редактор реестра" - "Registry Editor", "Операционная система Microsoft® Windows®"),则可能是存疑的,尤其是用户或组织不在俄语环境中工作的情况下。这可能会对我们的企业、组织造成深远的影响。

缺少 Rich Header 表明该文件可能经过加壳(packed)处理或混淆处理,以避免被静态分析工具检测到。这是复杂恶意软件的典型行为,它们会试图通过修改PE文件的关键部分(sections)来逃避检测。

函数选项卡会列出了已经导入的文件的API调用。这也被称为 IAT (Import Address Table-导入地址表)。点击黑名单(blacklist)选项卡后,PeStudio会将所有列入黑名单的函数移至顶部,以对 API 进行排序。这很有用,因为它使我们能够了解恶意软件在入侵主机后的行为方式。下图显示了已导入的 API 。

image-20250112195721387

以下是我们可以注意到的重要函数。

set_UseShellExecute :此函数允许进程使用操作系统的 shell 执行其他进程;这种情况常见于恶意软件中,恶意软件会生成额外的进程来执行恶意操作。

CryptoStream, RijndaelManaged, CipherMode, CreateDecryptor :这些 API 表明可执行文件使用了加密函数,具体来说是Rijndael(AES 加密)。恶意软件可能会使用加密技术来加密通信和文件,甚至实现勒索软件的功能。

使用FLOSS进行分析

在实验虚拟机上打开PowerShell并转到给定文件所在的目录,即C:\Users\Administrator\Desktop\Sample。请注意,在实验虚拟机上,我们可能需要等待一段时间才能看到 PowerShell 提示符的出现,然后我们再运行命令FLOSS.exe .\windows.exe > windows.txt 。这将运行floss.exe工具,并将其结果输出到同一目录中名为 windows.txt 的文件中。

PS C:\Users\Administrator\Desktop\Sample > FLOSS.exe .\windows.exe > windows.txt
WARNING: floss: .NET language-specific string extraction is not supported yet
WARNING: floss: FLOSS does NOT attempt to deobfuscate any strings from .NET binaries
INFO: floss: disabled string deobfuscation
INFO: floss: extracting static strings
INFO: floss: finished execution after 0.34 seconds
INFO: floss: rendering results

打开windows.txt文件并转到结果的底部

image-20250112195740323

这些内容是不是很熟悉?它们其实就是我们之前使用 PEStudio 工具时看到的函数。

使用Process Explorer和Process Monitor进行分析

在此示例中,我们将分析位于 C:\Users\Administrator\Desktop\Sample中的cobaltstrike.exe文件的网络连接情况。

我们将尝试确定该文件是否正在与任何可能的C2服务器建立网络连接。我们先运行cobaltstrike.exe ,并在实验机器的桌面或任务栏中打开Process Explorer。你也可以在Windows搜索栏中搜索它。如果你手动点击该二进制文件,那么Explorer.exe将是父进程,而cobaltstrike.exe将是子进程。让我们看看实际情况是否确实如此。

image-20250112195755813

我们可以发现确实如此,正如你从上面的截图中所看到的!请注意,这些信息至关重要,但我们接下来将继续专注于我们的目标:确定此进程是否正在建立网络连接以及会连接到哪个目标。我们发现文件的进程 ID 为 4756 (在实际实验时,这个进程ID可能有所不同)。右键单击该进程,选择Properties-属性,然后转到TCP/IP选项卡。我们应该能够确定它连接到的目标以及它发送的状态。

image-20250112195808127

另外,在进行分析时,我们还需要验证其准确性。因此,我们不会仅依赖单一工具进行分析。我们将使用另一个工具来确定得到的信息是否准确。我们停止上述进程并重新运行给定的文件。这次,我们将使用 ProcmonProces Monitor工具来进行分析。这个工具也位于实验计算机的桌面或任务栏中。

打开Procmon后,查找给定的二进制文件所对应的进程会比较困难,因为它会列出所有活动进程,我们需要做的就是过滤它,你可以使用下图所标记的过滤器图标,或者你也可以在工具界面按下 CRTL + L 组合键。

image-20250112195818486

使用上图所示的过滤器将涉及到以下几个步骤,其中包括:

  1. 选择Process Name(进程名称)
  2. 选择contains(包含)
  3. 输入任何与该进行相关的单词,在本例中,我们输入cobalt
  4. 点击include(包含)
  5. 然后Add(添加)并单击Apply(应用);
  6. 现在你应该能够看到已添加的条件。

image-20250112195832550

这应该会给我们提供更加详细的结果。

image-20250112195853473

上面的分析结果证实了给定的二进制文件cobaltstrike.exe确实正在与未知的 IP 地址 47.120.46.210 建立连接。

答题

使用 PEStudio 打开文件 windows.exe 文件,分析该文件的熵值(entropy value)是多少?

tips:C:\Users\Administrator\Desktop\Sample。

image-20250524213539138

7.999

使用 PEStudio 打开文件 windows.exe,然后转到manifest(administrator部分),requestedExecutionLevel下的值是多少?

tips:C:\Users\Administrator\Desktop\Sample。

image-20250524213703150

requireAdministrator

哪个函数允许进程使用操作系统的 shell 来执行其他进程?

set_UseShellExecute

哪个 API 以 R 开头并表示可执行文件使用了加密函数?

RijndaelManaged

cobaltstrike.exe 的 Imphash 是什么?

tips:使用 PEStudio 打开cobaltstrike.exe文件,该文件所在的文件夹为C:\Users\Administrator\Desktop\Sample。

image-20250524213932241

92EEF189FB188C541CBD83AC8BA4ACF5

进程 cobaltstrike.exe 所连接的 IP 地址是什么?(先运行cobaltstrike.exe,再使用Process Explorer和Process Monitor进行分析)

tips:你需要按特定格式提供 IP 地址,例如192[.]168[.]3[.]77,去角格式意味着用 [.] 替换.以防止意外点击或执行。

image-20250524214443376

image-20250524214532207

该 IP 地址是恶意软件正在与之通信的命令和控制 (C2) 服务器的地址

47[.]120[.]46[.]210

cobaltstrike.exe 连接到其 C2 IP 地址时所使用的目标端口号是什么?

tips:在实验虚拟机中打开Wireshark并从Sample文件夹中加载pcapng文件,使用过滤器 ip.addr == 47.120.46.210,查看destination port一栏。

image-20250524214721183

image-20250524215003411

81

在我们的分析过程中,我们发现了一个名为 cobaltstrike.exe 的进程。那么 cobaltstrike.exe 的父进程是什么呢?

tips:这是当用户亲自点击二进制文件时所对应的进程。

image-20250524215223686

父进程通常会是 Explorer.exe(Windows 文件资源管理器)

如果恶意软件是由另一个程序执行的,则父进程可能是其他进程,例如 cmd.exe、powershell.exe、winword.exe 或 rundll32.exe(表示隐藏执行)等进行。

explorer.exe

image-20250524215537158

image-20250524215551366

本文小结

在本文内容中,我们简单介绍了FlareVM ,即“取证、逻辑分析和逆向工程”虚拟机,这是一个专门为事件响应/应急响应、恶意软件逆向工程以及取证分析而设计的完整的定制计算机环境。我们审查了FlareVM中已经安装的一些工具并根据工具用途对它们进行了简单的分类,我们还讨论了在调查取证期间会被广泛使用的一些标准工具,例如 PEStudio、CFF Explorer、Process Monitor 和 Process Explorer等。最后,我们还获得了使用这些工具来分析恶意程序或恶意文件的一些实践经验。

posted @ 2025-05-24 21:59  Hekeatsll  阅读(281)  评论(0)    收藏  举报