猫头鹰
信安舆情早知道

FAKENET-NG:下一代动态网络分析工具

作者:Peter Kacherginsky(FireEye Labs逆向工程师)

翻译:小王子/棱安全团队

审校:小王子/棱安全团队

0x01 前言


本文作者为FLARE(FireEye Labs Advanced Reverse Engineering)火眼实验室高级逆向工程团队的逆向工程师,经常需要动态分析恶意软件样本,而作者的目标是在一个安全的环境中运行可执行文件,快速分析可执行文件的运行特征。在动态分析过程中,重要的一项就是模拟网络环境,进而欺骗恶意软件误以为是已经联网。如果操作正确,恶意软件就会暴露其网络特征,如命令、控制(C2)域名、用户代理字符串、查询URL等。

在动态分析恶意软件过程中,用到的工具是FLARE团队自己编写的FakeNet-NG,本文将介绍FakeNet-NG及其对恶意软件分析的基本方法。FakeNet-NG的一些新功能,如过程记录、高等操作和主机流量过滤引擎,支持第三方工具(例如 debuggers、HTTP proxies等),并支持Windows Vista及更高的版本。

本文涵盖了FakeNet-NG基本的安装和最常用的运行脚本,其他运行方式和说明可以从这里获得。

0x02 获取和安装FakeNet-NG


FakeNet-NG可以从FLARE的官方Github获取。

在发行页面,可以获取最新的预编译压缩包,将发行版本的压缩包下载后解压到需要分析恶意软件的虚拟机内,并放到易于访问的位置。

0x03 运行FakeNet-NG


在Windows中,运行FakeNet-NG最简单的方式是双击FakeNet-NG的可执行文件,对于64位系统和32位系统分别是fakenet64.exe和fakenet32.exe,如图1所示。

Fig1

图1 运行FakeNet-NG

FakeNet-NG运行需要管理员权限,所以在打开时会有UAC确认提示,启动之后会看到类似图2的控制台窗口。

Fig2

图2 FakeNet-NG启动

默认情况下,FakeNet-NG的默认配置会启动几个最常用的服务:

  • DNS监听器,使用53端口监听UDP
  • HTTP监听器,使用80端口监听TCP
  • SMTP监听器,使用23端口监听TCP
  • Raw监听器,使用1337端口监听TCP和UDP,这个服务也是默认的监听器,用来处理所有的通信请求。默认监听器的解释在下文给出。

现在,你应该准备好了需要运行的恶意软件样本,并准备观察它的行为。图3给出了恶意软件样本与C2服务器间的通信。

Fig3

图3 恶意软件样本通信状态

在日志输出中,看上去有非常多的东西,现在让我们将它们拆分并一一分析。

恶意软件一旦启动,就会试图通过查询配置的4.2.2.2DNS服务器,对C2的域名evil.mandiant.com进行解析。图4给出了FakeNet-NG如何从4.2.2.2转移流量到本机IP地址172.16.163.131。

Fig4

图4 转移DNS流量

在同一主机上运行FakeNet-NG和恶意软件的好处是,可以在恶意软件运行时进行其他分析,如使用FakeNet-NG可以准确定位到产生流量的可执行文件的名称和PID等。在当前情况下,我们可以看到level1_payload.exe产生了上述DNS流量。

继续我们的分析,图5给出了FakeNet-NG的DNS监听器对恶意软件的查询提供一个假响应,并指向虚假的C2服务器IP地址192.0.2.123。

Fig5

图5 虚假的DNS响应

恶意软件成功解析域名后,会继续与C2域名通信,如图6所示。

Fig6

图6 虚假的C2通信

FakeNet-NG实现了一些流行的网络监听器,并且有利于现在的分析。恶意软件通过80端口进行HTTP通信,而前面的输出给我们提供了一些良好的网络指标,如在通信中使用准确的URL请求和User-Agent,包含未加密主机名称的payload等,所有的这些迹象都可以用来作为监测这种恶意软件样本的签名。

默认情况下,FakeNet-NG将捕获的流量保存在PCAP文件中,所以可以对PCAP进行其它分析。例如可以通过Wireshark来打开FakeNet-NG保存的PCAP文件,如图7,显示了原始的和转移后的DNS解析和对C2服务器的HTTP POST请求。

Fig7

图 7Wireshark PCAP

捕获的文件保存在FakeNet-NG可执行文件目录下,同时日志记录作为一个额外的功能,FakeNet-NG会将完整的HTTP payload保存在不同的文本文件中,并且存储在可执行文件运行的目录下。

0x04 配置FakeNet-NG


默认情况下,FakeNet-NG配置的分析方案,针对绝大多数恶意软件的分析是绰绰有余的。当然,如果遇到一个更复杂的恶意软件样本,可以通过修改configs目录下的配置,轻松的对FakeNet-NG进行调整。默认情况下,FakeNet-NG会加载default.ini的默认配置,可以修改该配置文件或创建一个新的配置文件,通过命令行下的-c参数指定FakeNet-NG加载的配置文件。而在当前样本分析中,恶意软件通过4444端口的二进制协议进行通信。图8给出了一个监听器的配置示例。

Fig8

图8 自定义监听器配置

在上述的配置中,关键是端口、协议和监听器。通过端口和协议的属性定义的端口和协议来建立双方的监听服务,并确定转移流量的规则。监听器属性被用来定义一个特定的监听器类。在目前情况下,Raw监听器被用来处理任意二进制协议。

另外,如果需要创建一个监听器来处理HTTP或HTTPS流量,那么就会用到HTTP监听器,其他支持的监听器列表和可用的完整选项可以参考Github中的文档。

将上述配置追加到配置文件中后,我们现在可以监听通过4444端口的TCP流量,如图9所示。

Fig9

图9 分流到自定义监听器

上述场景是相对单一的,因为恶意软件的通信端口是已知的。而现实是,在大多数情况下,但是很难通过静态或动态分析,来判断恶意软件进行通信的准确端口。这时,我们就可以用另一个强大的功能,通过编辑配置文件中的[Diverter]部分,来配置默认监听器实现这个功能,因此,可以通过默认监听器处理任何端口的任何流量,如图10所示。

Fig10

图10 默认监听配置

自定义配置之后,即使相同的恶意软件样本采用另一个端口进行通信(如5555),仍然会被自定义的监听器在4444端口拦截。

Fig11

图11 分流到默认监听器

图11所示的流量通过未知的5555端口,被分流到自定义的4444端口监听器。需要注意的是,任何明确定义的监听器都会优先于默认监听器。所以,如果分别在53端口和80端口自定义DNS监听器或者HTTP监听器,会使用自定义的监听器取代默认监听器进行监听。

0x05 全新的代码库


FakeNet-NG完全基于Python开发,所以可以轻易的实现新的服务和功能,并且不再像FakeNet使用过时的LSP(WinSock Layered Service Provider)驱动来实现。相反,由于PyDivert\WinDivert出色的代码库(基于WFP (Windows Filtering Platform) 驱动),FakeNet-NG能够重定向所有流量。

0x06 结论


本文分享的一些技巧,能够对恶意软件进行快速的动态分析,并提取良好的网络指标。FakeNet-NG是一个功能强大和可高度配置的工具,可以用来执行更高级的任务,如过程和流量过滤、恶意软件自动拆包、thick-client(胖客户端)安全评估还有其它等。

下一次当你需要分析恶意软件、安全评估、简单的转移网络流量或者网络虚假响应时,都可以尝试使用FakeNet-NG,希望小伙伴们能够喜欢FLARE的FakeNet-NG,请继续关注后续更新的文章,MottoIN将演示这个工具的全部功能。

来源:FireEye

【文章属于MottoIN原创编辑翻译,未经许可禁止转载】

转载请注明来自MottoIN,未经允许不得转载!MottoIN » FAKENET-NG:下一代动态网络分析工具

分享到:更多 ()

评论 4

评论前必须登录!

 

  1. #1

    good

    The little prince6个月前 (08-05)
  2. #2

    文章写的很好。深入的进行了解析。

    nainailwkk5个月前 (08-07)

MottoIN 换一个角度看安全

寻求报道联系我们