导语:无文件攻击特别危险,因为没有可识别的恶意软件文件或可以位于硬盘驱动器上的恶意工具。 但是,我们有一些技术可以检测它们。

·了解两种形式的无文件攻击及其工作方式

·了解如何检测内存中的攻击

·发现确定管理工具是否被攻击者使用的技术

·实例样本分析

最近黑客使用Fileless Attack(也称为非恶意软件(non-malware)或零指纹攻击( zero- footprint attacks))定向攻击目标系统的频率越来越高。 无文件攻击特别危险,因为没有可识别的恶意软件文件或可以位于硬盘驱动器上的恶意工具。 但是,我们有一些技术可以检测它们。

0x00、两种无文件攻击的形式

1.使用已存在于主机上的工具和应用程序

通常,这些是管理工具或操作系统功能,不幸的是,这些功能通常比攻击者可能自行构建的任何自定义恶意软件更强大。

一个非常流行的例子是PowerShell。 PowerShell既是一种内置于Windows的语言和管理框架。 它向攻击者暴露了数百个名为cmdlet的命令。 像WMI一样,它扩展了Windows系统程序的所有内置功能,以允许攻击者枚举,稍后移动,坚持并执行。 这些活动和其他活动可以通过简单的脚本或使用PowerShell控制台执行

2.不带文件系统组件的驻留内存的恶意软件

某些PowerShell方法允许攻击者从Internet位置获取脚本的内容并在内存中执行它 – 而不会将脚本的内容保存到受害者系统。 从这个意义上讲,这项技术既是通过本地PowerShell框架以脚本的形式在内存中执行恶意软件。

这种行为并不是那么不寻常。 有很多内置工具可以用这种方式解释脚本。 例如,Windows脚本宿主(WSH)可执行文件wscript.exe和cscript.exe解释Jscript或VBScript; HTA脚本(JavaScript)可以由mshta.exe二进制文件加载PowerShell并不是唯一可能被黑客利用的工具。 任何允许任意代码执行的本地应用程序或软件都有被黑客发现和利用的危险。 诸如Sysinternals BgInfo之类的良性工具可能会被威胁演员滥用,以执行恶意VBScript,这些工具旨在将系统信息打印到桌面背景作为墙纸。 在寻找这些类型的技术时,请记住可能会出现本机工具作为可信赖的人,为了找到邪恶,你需要看看他们正在解释的事情。

0x01、内存中的恶意软件

1.内存中的恶意软件

另一种类型的无文件攻击表示“无文件”的更为直接的定义:内存驻留恶意软件。 攻击者将恶意负载注入已经运行的应用程序中。此技术可用于逃避某些应用程序白名单和防病毒解决方案等控件,因为攻击者的代码在已获得组织批准的应用程序中执行。内存中攻击的使用增长如此之快的部分原因在于,它们不再是单纯攻击者的组成部分。 Internet上免费提供的现成的攻击性框架支持整个类别的这类攻击。 这些框架大大降低了所有经验级别的威胁参与者进入的障碍。

2.检测军备竞赛

为什么攻击者使用无文件技术? 这很简单:因为它们躲过了许多现有的网络安全工具的检测,这些工具试图通过发现恶意软件来识别攻击。 许多反恶意软件产品,企业和开放源代码公司一直努力保持在这场军备竞赛的最前沿,因为对手能够找到迂回的方式来躲避它们。可以检查下载的PowerShell脚本的产品,例如,可能无法检查严重混淆的一个,或者存储在注册表项中并通过管道输入到正在运行的进程。幸运的是,即使是无文件的攻击也会产生痕迹,从而为攻击者提供技术证据。

3.内存中的攻击剖析

3.1 初始感染

内存中无文件攻击的初始阶段与传统的恶意攻击阶段没有太大差别。 无文件攻击通常利用鱼叉式网络钓鱼和驱动式下载来妥协受害者并在网络上立足。

3.2 malicious payloads

在讨论恶意软件时,从业人员通常使用术语“Stagers”,“cradles”和“droppers”来指代恶意负载。我们可以将它们统称为一类用于引入额外文件的恶意文件或脚本。

    3.2.1 Stagers

其中恶意有效载荷被嵌入在另一种文件类型(例如DLL)中,并且在受害者系统正在执行

    3.2.2 cradles

下载shellcode并在内存中执行它

    3.2.3 droppers

可能是一个简单包含下载其他恶意软件或脚本的请求的脚本

3.3 在内存中执行

最终,恶意负载将被执行。 内存中的攻击可能采用进程注入,进程挖空或侧面加载的形式。

进程注入(代码注入)

在进程注入的情况下,恶意软件创建或分配进程内存中的一些空间,然后在合法进程内的一段内存中创建一个远程线程。

API调用路径:

1、CreateToolhelp32Snapshot, Process32First, and Process32Next. CreateToolhelp32Snapshot

2、VirtualAllocEx

3、WriteProcessMemory

4、CreateRemoteThread, NtCreateThreadEx, or RtlCreateUserThread.

3.4 进程挖空

当恶意软件从目标进程的内存取消映射(挖空)合法代码并用恶意可执行文件覆盖目标进程的内存空间(例如,svchost.exe)时,会发生进程挖空。

它涉及创建一个挂起的进程,从进程中取消映射(挖空)原始可执行文件,为进程分配和写入新的有效负载,使用SetThreadContext将原始线程的执行重定向到新的有效负载,最后调用ResumeThread来完成。 更多隐形变体使用Create / Map部分API来避免WriteProcessMemory。 其他人使用跳转而不是使用SetThreadContext来修改入口点。DarkComet是使用进程挖空技术的许多恶意软件家族之一。 可以使用几种工件来检测过程空鼓。 此活动的一个失败的赠品是使用CREATE_SUSPENDED标志生成的进程

API调用路径:

1、CreateProcess(CREATE_SUSPENDED)

2、SetThreadContext

3、ResumeThread

3.5 PE文件注入(反射式DLL注入)

Metasploit的Meterperter有效载荷是首次将该技术完全武器化的尝试之一,但今天许多恶意软件家族都在使用它。 反射式DLL注入是通过创建一个在执行时将自身映射到内存中的DLL来实现的,而不是依靠Window的加载器。 注入过程与shellcode注入相同,除了shellcode被自映射DLL替换。 添加到DLL中的自映射组件负责解析导入地址,修复重定位并调用DllMain函数。 攻击者可以使用C / C ++等高级语言而不是汇编语言进行编码。

0x02 寻找无文件攻击的方法

1.隔离内存取证

查找内存中攻击的一种方法是检查系统内存的捕获。 有很多工具可用于辅助对记忆进行取证分析。 例如,您可以使用Volatility等工具,它附带一套内置插件,以查找驻留在合法应用程序中的注入代码。

当您在企业级工作时,像收集完整内存捕获这样的积极方法是不切实际的,因为他们可能需要从每个工作站收集多达16GB的数据,而从每台服务器收集128GB

2.Threat hunting in memory

有一些开源工具可以帮助您检查内存以查找恶意行为的证据。 一个是PowerShell库Get-InjectedThreads。 在相对低噪声的方法中,此工具扫描系统上的活动线程以查找可能指示已发生进程注入的可疑启动地址

例如,攻击者可能会调用VirtualAllocEx为恶意代码分配空间来执行,然后利用CreateRemoteThread或其他API调用在另一个应用程序中执行恶意代码。 Get-InjectedThreads将检索每个活动线程的起始地址,然后确定关联的节属性。 如果在本节中有一个观察到的可执行文件运行,则认为它已被注入。 但请记住,一些合法的应用程序会执行进程注入(并且您可能还会遇到注入的线程和警报)。

3.时序分析大法

本指南中的一个主题是如何利用时间来帮助您进行狩猎,或者更确切地说,确定一系列事件是否可以指向恶意活动。在无文件的情况下,攻击者想要启动本地管理工具来执行恶意命令。但是,尽管这个工具可能没有什么特别之处,比如PowerShell,它的启动方式可能表明恶意的意图。如果您检查PowerShell或其他管理工具的父进程沿袭,您可能会发现一些有趣的工件。

例如,在收到电子邮件几分钟后,您可能会观察到一个本地管理工具正在作为电子邮件应用程序的子项执行。这是可疑的一个很好的指标,可能是鱼叉式网络钓鱼攻击的一部分。

另一个例子是看到许多枚举命令(如ipconfig,net *,whoami,systeminfo或netstat)在很短的时间内运行。这种行为与攻击者试图通过手动或脚本运行这些命令来快速发现网络更多的行为是一致的。系统管理员使用相同的命令,但不是全部,而不是几秒钟之内。

4.寻找意图

正如我们前面提到的,攻击者可能会尝试在网络中看起来像管理员,但他们做了不同的事情。 您可以查找正在展示非管理员行为的正在运行的管理员应用程序。

看看你能否找到不寻常的命令行参数。 例如,您可能会使用编码参数,隐藏窗口或其他异常执行参数(如“-e *”,“-en *”和“-ep *”)来执行PowerShell。

您还可以搜索允许执行代码的本机Windows应用程序,例如installUtil.exe,regsvr32,regasm.exe甚至是rundll32.exe。 查找正在执行的这些签名和受信任的应用程序,并仔细检查分配的内存段的命令行参数和内容。

最后,您可以搜索与本地工具相关的可疑网络活动。 如果您看到来自专为内部系统维护而设计的工具的大量出站连接,则可能不是合法系统管理员的工作。

0x03、无文件样本案例

无文件攻击技术可以以漏洞利用和代码注入的形式直接在内存中执行恶意代码,将脚本存储在注册表中,并通过合法工具执行命令。仅在2017年,这些技术可以以漏洞利用和代码注入的形式直接在内存中执行恶意代码,将脚本存储在注册表中,并通过合法工具执行命令。仅在2017年,收集的恶意软件中有13%使用PowerShell来危害系统。使用PowerShell来危害系统。合法的系统工具(如PowerShell和Windows Management Instrumentation)正在滥用于恶意活动,因为这些都是在Windows操作系统中运行的内置工具。使用PowerShell下载和执行恶意文件的一个已知恶意软件系列是Emotet下载程序。

无文件攻击系统组成

a. CREATOR脚本(powershell脚本)

负责生成解码器脚本

b. DECODER脚本(powershell脚本)

解密Hi6kI7hcxZwU的内容并执行它

c. INJECTOR脚本(powershell脚本)

解码后的脚本将生成注入器脚本,该脚本将shellcode注入PowerShell.exe

这个注入的shellcode将创建一个到远程服务器的反向TCP连接

1、通过感染技术,它将在%temp%文件夹中创建一个文件,文件名为Hi6kI7hcxZwUI

2、CreateProcessA调用到PowerShell脚本,我们将第一个脚本命名为CREATOR Script

image.png

3、PowerShell脚本是一个加密脚本,使用PowerShell的加入,拆分和转换功能,该代码将被解密为脚本。

4、执行代码注入的通用API,特定的API:VirtualAlloc,CreateThread和memset

5、建立443反弹连接

调用WSASocketA /Connect  /Recv  /VirtualAlloc  它将尝试建立与服务器的连接:18 . x31.1×1 .xx5 :443(当时为的分析)

自创建反向TCP连接的Metasploit框架。在反向TCP连接中,受感染的机器将打开服务器将连接的端口。这主要由后门恶意软件使用,因为它绕过了开放端口上的防火墙限制。

受到后门恶意软件的感染,并且查看可用于危害系统的上述几条命令无疑是可怕的。它可以对受感染的机器,文件,熟悉系统和感染其网络做任何事情。

image.png

hunting自动化预防

其实可以使用EDR Agent监控相关API调用,然后通过关联分析其Windows API调用逻辑判断为可疑行为。

源链接

Hacking more

...