一款基于Python编写的开源网络分析工具FakeNet-NG。

简介

FLARE在2016年推出了一款基于Python编写的,开源网络分析工具FakeNet-NG。FakeNet-NG允许安全分析人员在单独的Windows主机上,使用标准或自定义协议来观察网络应用程序并与其进行交互。这对恶意软件分析和逆向工程来讲,都是非常实用的功能。自FakeNet-NG推出以来,FLARE又先后为其增加了更多的协议支持。目前FakeNet-NG支持的协议有DNS,HTTP(包括BITS),FTP,TFTP,IRC,SMTP,POP,TCP和UDP以及SSL,可谓种类齐全繁多。

在这个项目的基础上,FLARE现在已将FakeNet-NG成功引入到了Linux上。这意味着分析人员可以在单独的Linux主机上执行基本动态分析工作,或者和INetSim一样可以使用独立的专用机器。INetSim为安全社区作出了巨大的贡献,并且目前仍是许多分析师的首选工具。现在,FakeNet-NG为分析师提供了一个用于恶意软件分析的跨平台工具,并且可以直接集成所有基于Python的优秀信息工具。

在Linux上获取和安装FakeNet-NG

如果你当前使用的Linux发行版是REMnux那么你将可以省去安装过程,因为REMnux已经为我们集成安装了FakeNet-NG。你可以通过update-remnux命令来获取它。

对于其他Linux的发行版,设置和使用FakeNet-NG将需要安装Python pip包管理器,net-tools包以及OpenSSL,libffi和libnetfilterqueue的开发文件。我们可以通过以下命令快速获取:

Debian 和 Ubuntu:

sudo apt-get install python-pip python-dev libssl-dev libffi-dev libnetfilter-queue-dev net-tools

Fedora 25 和 CentOS 7:

yum -y update;
yum -y install epel-release; # <-- If CentOS
yum -y install redhat-rpm-config; # <-- If Fedora
yum -y groupinstall 'Development Tools'; yum -y install python-pip python-devel openssl-devel libffi-devel libnetfilter_queue-devel net-tools

在完成了以上必备条件的安装,下面我们就可以下载最新版的FakeNet-NG,并使用setup.py install进行安装。

模式支持

在Linux上,FakeNet-NG可以在专用于网络仿真的单独主机上以MultiHost模式部署,也可以在实验中使用SingleHost模式进行本地软件分析。Windows仅支持SingleHost模式。FakeNet-NG网络模式在默认情况下被配置为:自动,这意味着它将在Windows上自动选择SingleHost模式,或在Linux上选择MultiHost模式。表1列出了操作系统当前支持的网络模式设置。

SingleHost MultiHost
Windows 默认(自动) 不支持
Linux 测试阶段 默认(自动)

FakeNet-NG对Linux上SingleHost模式的支持目前还存在一定的局限性。

首先,FakeNet-NG还不支持在Linux上对特定进程,主机或端口进行重定向。这意味着像ProcessWhiteList(进程白名单列表)这样的设置将无法正常工作。我们计划在以后的版本中,添加对这些设置的支持。同时,SingleHost模式支持将所有Internet绑定的流量重定向到本地监听器,这是恶意软件分析人员的主要用例。

其次,python-netfilterqueue库被硬编码,以处理长度不超过4,012个八位字节的数据报。环回接口通常将最大传输单位(MTU)值配置的非常的高,允许某些应用程序超过此硬编码限制,从而导致一些意想不到的网络行为。例如一个通过FTP传输的大型文件,就可能导致出现问题。解决方法是重新编译具有较大缓冲区的python-netfilterqueue或将环回接口(即,lo)的MTU降到4,012或更小。

在Linux上配置FakeNet-NG

除了新的网络模式设置外,FakeNet-NG在Linux上也引入了以下Linux特定的配置项:

  • LinuxRedirectNonlocal:对于MultiHost模式设置,其网络接口列表都以逗号分隔,并会将所有流量重定向到本地主机,以便FakeNet-NG能够对其进行回复。FakeNet-NG默认配置为*,表示FakeNet-NG可以重定向到任意接口。
  • LinuxFlushIptables:在添加FakeNet-NG规则之前清除所有iptables规则。原始规则被作为FakeNet-NG关闭序列的一部分进行恢复,当你按Ctrl+C时它将被触发。这样可以减少出现意外终止的冲突,错误或重复规则的可能性,FakeNet-NG的配置中已经默认启用该功能。
  • LinuxFlushDnsCommand:指定刷新DNS解析器缓存的命令。当在Linux上以SingleHost模式使用FakeNet-NG时,这样可以确保将名称解析请求转发到DNS服务,如FakeNet-NG DNS侦听器,而不是使用缓存的信息。这里需要说明的是该设置目前并不适用于所有的Linux发行版。

在Linux上启动FakeNet-NG

在正式启动FakeNet-NG之前请务必确保你所使用的FakeNet-NG侦听器端口,没有与当前系统运行的其它服务端口起冲突。你可以通过netstat命令来进行查看,如果存在冲突你可以参考对应的Linux发行版文档来禁用相关服务。

你可以通过root权限调用fakeet启动FakeNet-NG,如图1所示。

Fig1.png

你可以通过直接编辑FakeNet-NG显示在第一行的文件来修改配置,或者使用-c命令来创建副本并指定其位置来更改FakeNet-NG的配置。

总结

FakeNet-NG对于跨平台的支持,极大的方便了分析师的工作,使他们可以轻松地在不同平台上测试和分析软件。再加上FakeNet-NG是基于Python开发的开源项目,这意味着分析人员可以将自己的一些工具使用习惯或想法整合到FakeNet-NG中。除了REMnux中已经集成了FakeNet-NG,其他Linux发行版的用户可以使用标准的软件包管理工具进行下载和安装

*参考来源:fireeye,FB小编 secist 编译