使用开源网络分析工具 FakeNet-NG 改进动态恶意软件分析

Andrew2020-09-09 11:31:03

在2016年,FLARE推出了一款用Python编写的开源网络分析工具FakeNet-NG。FakeNet-NG允许安全分析人员在单个Windows主机上使用标准或自定义协议来观察网络应用程序并与其进行交互,这对恶意软件分析和逆向工程特别有用。自从FakeNet-NG的推出以来,FLARE又对其进行了一些升级,比如增加了对附加协议的支持。 FakeNet-NG现在具有DNS,HTTP(包括BITS),FTP,TFTP,IRC,SMTP,POP,TCP和UDP以及SSL的即用支持。

最近更新了FakeNet-NG,其中包括我们最需要的功能之一:HTTP和二进制协议的自定义响应。

这篇博客文章提供了七个“阶段”来帮助您掌握不同的FakeNet-NG策略。我们根据分析恶意软件时遇到的常见情况来介绍它们。随时跳到与您当前分析相关的部分,和/或使它们适合您的个人需求。这些阶段介绍如下:

  1. 自定义文件响应
  2. 自定义二进制协议
  3. 自定义HTTP响应
  4. 手动自定义响应
  5. 黑名单处理
  6. 在连接事件上执行命令
  7. 解密SSL流量

准备阶段:配置FakeNet-NG

这是FakeNet-NG配置和日志数据位置的快速参考。

  1. 配置文件位于fakenet \ configs中。您可以修改default.ini或将其复制到新文件,然后使用-c将FakeNet-NG指向备用配置。例如:fakenet.py -c custom.ini。
  2. 默认文件位于fakenet \ defaultFiles,监听器实现位于fakenet \ listeners。
  3. 该fakenet \ CONFIGS \ Default.ini中默认配置包括全局配置设置和个人监听器的配置。
  4. 自定义响应配置示例包含在文件CustomProviderExample.py,sample_custom_response.ini和sample_raw_response.txt文件中的fakenet \ configs目录中。
  5. FARENet-NG在FLARE VM中的安装位置为C:\ Python27 \ lib \ site-packages \ fakenet。您将在此目录中找到包含defaultFiles,configs和listeners的子目录。
  6. 在FLARE VM中,可以在桌面上的fakenet_logs目录中找到FakeNet-NG数据包捕获文件和HTTP请求。

阶段1:自定义文件响应

您可能已经注意到,FakeNet-NG不仅限于提供HTML页面。根据请求的文件类型,FakeNet-NG可以提供PE文件,ELF文件,JPG,GIF等。FakeNet-NG配置有几种常见类型的默认文件,也可以配置为提供自定义文件。该defaultFiles目录中包含多种类型的标准响应文件。例如,如果恶意软件发送对evil.exe的FTP GET请求,则FakeNet-NG将以文件defaultFiles \ FakeNetMini.exe进行响应。(.exe请求的默认响应)。此文件是有效的可移植可执行文件,显示一个消息框。通过提供实际的PE文件,我们可以在恶意软件尝试下载并执行恶意有效负载时对其进行观察。图1显示了一个FTP会话示例以及下载的默认文件的后续执行。


图1:使用FTP下载FakeNet-NG的默认可执行响应

该系统已充分处理了大多数请求。但是,恶意软件有时会期望使用特定格式的文件,例如带有嵌入式PowerShell脚本的图像,或带有哈希值的可执行文件,该可执行文件将附加到文件中以进行完整性检查。在这种情况下,您可以将一个默认文件替换为符合恶意软件期望的文件。每个相关的监听器(实现网络协议的模块)配置中也都有一个选项可以修改defaultFiles路径。这使FakeNet-NG可以在不覆盖或修改默认数据的情况下提供不同的文件。图2显示了一个自定义的FakeNet.html文件。


图2:修改默认的FakeNet.html文件以自定义响应

阶段2:自定义二进制协议

许多恶意软件样本实现了需要特定字节序列的自定义二进制协议。例如,GH0ST家族中的恶意软件可能要求每条消息都以诸如“ GH0ST”之类的签名开头。默认的FakeNet-NG RawListener通过回显响应未知请求,也就是说,它发送的数据与接收到的相同。这种行为通常就足够了。但是,在需要自定义响应的情况下,您仍然可以发送恶意软件期望的数据。

FakeNet-NG现在可以自定义TCP和UDP响应,假设有一个恶意软件样本,它将字符串“Hello”发送到它的命令与控制(C2)服务器,并等待一个以“FLARE”开头,然后是一个数字命令(0-9)的响应包。现在,我们将演示FakeNet-NG处理此场景的几种有趣方法。

静态自定义响应

您可以配置TCP和/或UDP原始监听器如何响应流量。在此示例中,我们告诉FakeNet-NG如何响应任何TCP原始请求(未检测到协议)。首先,取消注释fakenet / configs / default.ini的RawTCPListener部分中的Custom配置选项,如图3所示。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图3:激活自定义TCP响应

接下来,如图4所示,在fakenet \ configs \ sample_custom_response.ini中配置TcpRawFile自定义响应。确保注释掉或替换默认的RawTCPListener实例。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图4:TCP静态自定义响应规范

创建内容为FLARE0的文件fakenet \ configs \ flare_command.txt。现在将根据文件的内容生成TCP响应。

动态自定义响应

也许您想动态发布命令,而不是提交flare_command.txt中的特定命令。这可以通过编程实现。如图5所示,在fakenet \ configs \ sample_custom_response.ini中配置TcpDynamic定制响应。请确保注释掉或替换现有的RawTCPListener实例。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图5:TCP动态定制响应规范

可以将文件fakenet \ configs \ CustomProviderExample.py用作我们的动态响应文件flare_command.py的模板。我们修改HandleTcp()函数并生成新文件fakenet \ configs \ flare_command.py,如图6所示。现在,您可以在恶意软件执行时选择每个命令。图7演示了使用此配置动态发布命令。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图6:TCP动态响应脚本


图7:发出TCP动态命令

阶段3:自定义HTTP响应

恶意软件经常在流行的HTTP协议上实现自己的加密方案。例如,您的示例可能会发送一个HTTP GET请求到/comm.php?nonce=<random>并期望C2服务器响应使用nonce值进行RC4加密。这个过程如图8所示。我们如何能轻易地迫使恶意软件执行它的关键代码路径来观察或调试它的行为?


图8:恶意软件示例期望基于信标数据的特定密钥

对于此类情况,我们最近引入了对HTTP自定义响应的支持。与TCP自定义响应一样,HTTPListener也具有名为Custom的新设置,该设置可启用动态HTTP响应。此设置还允许FakeNet-NG选择与特定主机或URI匹配的适当响应。使用此功能,我们现在可以根据我们的恶意软件样本快速编写一个小的Python脚本来动态处理HTTP流量。

首先取消注释HTTPListener80部分中的Custom配置选项,如图9所示。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图9:HTTP监听器配置

接下来,如图10所示,在fakenet \ configs \ sample_custom_response.ini中配置HttpDynamic定制响应。确保注释掉或替换默认的HttpDynamic实例。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图10:HttpDynamic配置

可以将文件fakenet \ configs \ CustomProviderExample.py用作我们的动态响应文件http_example.py的模板。我们修改HandleRequest()函数,如图11所示。FakeNet-NG现在将使用随机数动态加密响应。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图11:动态HTTP请求处理程序

阶段4:手动自定义响应

为了获得更大的灵活性,可以使用功能强大的网络实用程序netcat替代FakeNet-NG监听器。例如,您可能希望使用netcat充当C2服务器,并在端口80上的执行期间动态发出命令。在启动FakeNet-NG之前启动netcat侦听器,目的地为相应端口的流量将被转移到netcat监听器。然后,您可以使用netcat界面动态发出命令,如图12所示。


图12:使用ncat.exe手动处理流量

FakeNet-NG的自定义响应功能多种多样。

阶段5:列入黑名单流程

一些分析师更喜欢从单独的系统调试恶意软件。这样做有很多原因。最常见的是在恶意软件不可避免地破坏环境时保留IDA数据库和其他保存的数据。该过程通常涉及在仅主机的网络上配置两个虚拟机。在此设置中,FakeNet-NG拦截了两台计算机之间的网络流量,这使得远程调试变得不可能。为了克服这一障碍,我们可以通过指示FakeNet-NG忽略调试服务器进程中的流量,将调试服务器列入黑名单。

使用IDA Pro进行远程调试时,用于32位可移植可执行文件的标准调试服务器进程是win32_remote.exe(对于WinDbg,则为dbgsrv.exe)。您所需要做的就是将流程名称添加到ProcessBlackList配置中,如图13所示。然后,调试服务器仍可以与IDA Pro自由通信,而所有其他网络流量都由FakeNet-NG捕获和重定向。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图13:修改后的configs / default.ini以允许使用IDA Pro进行远程调试

将黑名单用于从污染Fakenet-NG捕获的网络流量中筛选出嘈杂的进程也很有用。示例包括尝试更新Windows系统或其他恶意软件分析工具的过程。

其他设置可用于将端口和主机列入黑名单。

阶段6:在连接事件上执行命令

可以将Fakenet-NG配置为在与侦听器建立连接时执行命令。例如,此选项可用于在尝试进行连接时将调试器附加到正在运行的样本。想象一个场景,我们分析了来自实用恶意软件分析实验室的名为Lab18-01.exe的打包样本。使用动态分析,我们可以看到恶意软件使用HTTP协议通过TCP端口80将信标发送到C2服务器,如图14所示。


图14:通过TCP端口80到其C2服务器的恶意软件信标

建立连接后,如果我们可以将调试器神奇地附加到Lab18-01.exe,这不是很好吗?我们可以加快样本运行速度,并绕过整个拆箱存根以及样本可能采用的任何潜在的反调试技巧。

要将Fakenet-NG配置为启动调试器并将其附加到任何进程,请修改fakenet \ configs \ default.ini中的[ HTTPListener80 ]部分以包括ExecuteCmd选项。图15显示了完整的[ HTTPListener80 ]部分的示例。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图15:执行命令选项以运行并附加x32dbg

在此示例中,我们在端口80上配置HTTPListener以执行调试器x32dbg.exe,该调试器将附加到正在运行的进程,该进程的进程ID在运行时确定。与HTTPListener建立连接时,FakeNet-NG会自动将字符串{pid}替换为建立连接的进程的进程ID。

重新启动Fakenet-NG并再次运行示例后,我们看到x32dbg启动并自动附加到Lab18-01.exe。现在,我们可以使用内存转储工具(例如Scylla或OllyDumpEx插件)转储可执行文件并进行静态分析。如图16和图17所示。


图16:使用FakeNet-NG将x32dbg附加到示例(动画)


图17:Fakenet-NG在连接至Practicalmalwareanalysis.com后执行x32dbg

阶段7:解密SSL流量

恶意软件通常使用SSL进行网络通信,由于对数据包数据进行了加密,因此极大地阻碍了流量分析。使用Fakenet-NG的ProxyListener,可以创建具有解密流量的数据包捕获。这可以使用协议检测功能来完成。

代理可以检测SSL,并使用Python的OpenSSL库在SSL中“中间人”使用套接字。然后,它与恶意软件以及与HTTP侦听器保持全双工连接,而双方都不知道对方。因此,在代理和HTTP监听器之间存在明文HTTP通信流,如图18所示。


图18:Fakenet-NG组件之间的明文流

为了使FakeNet-NG尽可能简单,FakeNet-NG的当前默认设置没有代理在端口443上拦截HTTPS通信并创建解密的流。为了代理数据,您需要将HTTPListener443 Hidden属性设置为True,如图19所示。这告诉代理拦截数据包并根据数据包内容检测协议。

FakeNet Genie:使用FakeNet-NG的作弊代码改进动态恶意软件分析

图19:隐藏监听器,以便代理流量

现在,我们可以检查Fakenet-NG产生的数据包捕获。明文可以在TCP流在localhost临时端口(之间找到ProxyListener)和在本地主机端口80(HTTPListener)。如图20所示。


图20:HTTPListener和代理侦听器之间的明文流量

结论(New Game+)

Fakenet-NG是用于恶意软件分析的事实上的标准网络仿真工具。它无需安装即可运行,并且包含在FLARE VM中。除了经过验证的默认设置外,Fakenet还提供了无数功能和配置选项。在此博客文章中,我们介绍了一些技巧来处理常见的分析场景。要下载最新版本,查看所有配置选项的完整列表或对Fakenet-NG有所贡献,请参阅我们的Github存储库。

软件网络命令
本作品采用《CC 协议》,转载必须注明作者和本文链接
通过分析其多个平台上的数万亿个数据点,网络安全服务商Akamai Technologies公司的研究团队通过流行的网络攻击流量和技术发现了有关威胁行为者行为的新发现。这三份报告指出了最突出的安全趋势,并描绘了当前网络攻击格局的准确地图。 对勒索软件攻击趋势的最新分析突出了风险并提出了缓解措施,而对Web应用程序和API攻击趋势的分析提供了对勒索软件运营商和其他人使用的传播媒介的全新认识。对
美国司法部在1月26日宣布了针对Hive勒索软件组织的长达数月的破坏活动,该组织针对全球80多个国家的1,500多名受害者,包括医院,学校,金融公司和关键基础设施。自 2022 年 7 月渗透到 Hive 网络以来,联邦调查局已向受到攻击的 Hive 受害者提供了 300 多个解密密钥。最后,该部门今天宣布,与德国执法部门和荷兰国家高科技犯罪部门协调,它已经控制了Hive用来与其成员通信的服务器和网站,破坏了Hive攻击和勒索受害者的能力。
随着网络犯罪分子改变策略,利用当前事件和易受攻击的目标,通过新渠道推进其活动,某些类型的攻击已经升级。近期,微软发布了第二份年度数字防御报告,指出俄罗斯黑客在2020年7月到2021年6月间不仅攻击频率提高,成功入侵比例也从前一年的2成增加到3成,并且渗透政府组织搜集情报的行为也更加频繁,报告同时还将矛头指向朝鲜、伊朗和中国等。此外,报告还重点关注最新颖和与社区相关的威胁。
根据Akamai最新发布的DNS数据报告,2022年10%到16%的企业产生过C2流量,指向僵尸网络和恶意软件的命令和控制服务器。QSnatch于2014年首次出现,至今仍保持活跃。根据CISA的公告,截至2020年年中,全球有超过6.2万台受感染的QNAP设备。
HW:证据收集
2022-07-26 09:25:00
网络取证是指捕获、记录和分析网络事件以发现安全攻击或其他的问题事件的来源。
五大恶意软件家族在2023年仍将兴风作浪,对企业网络安全构成严重威胁
微软的Defender团队,FS-ISAC,ESET,Lumen’s Black Lotus Labs,NTT和 Broadcom的网络安全部门Symantec联合起来,并于昨天宣布协同努力,摧毁臭名昭著的TrickBot僵尸网络的指挥和控制基础设施。安全公司已经收集了超过125,000个TrickBot恶意软件样本,并绘制了命令和控制基础结构图。TrickBot僵尸网络被安全专家认为是最大的僵尸网络之一。根据参与行动的安全公司的说法,TrickBot僵尸网络在被拿下时已经感染了100多万台设备。Trickbot自2016年以来一直活跃,当时作者设计它是为了窃取银行凭证。
网络犯罪网络网络犯罪即服务预计到 2022 年,攻击者的攻击前侦察和武器化将会增加。FortiGuard Labs 团队在 2022 年上半年记录了 10,666 个新的勒索软件变体,而 2021 年下半年仅为 5,400 个。国际刑警组织、FortiGuard Labs 和其他国际刑警组织私人合作伙伴之间的合作促成了 Cyber Surge 行动的成功,并将情报传播给了非洲地区的几个执法组织。
Andrew
暂无描述