在2016年,FLARE推出了一款用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的兴起,分析师又多了一个用于恶意软件分析的跨平台工具,FakeNet-NG可以直接与所有在安全领域不断出现的基于Python的信息工具进行集成。
在Linux上下载和安装FakeNet-NG
如果你正在运行REMnux,那么就可以直接安装FakeNet-NG了,现有用户可以通过运行update-remnux命令来获取它。
而对于其他Linux版本来说,设置和使用FakeNet-NG将需要Python pip包管理器,net-tools包以及OpenSSL,libffi和libnetfilterqueue的开发文件。至于如何快速获得几个常见的Linux发行版的相应先决条件,我们提供了以下两大方法:
1. 在Debian和Ubuntu上,运行sudo apt-get install python-pip python-dev libssl-dev libffi-dev libnetfilter-queue-dev net-tools命令
2. 在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进行安装。
Windows和Linux下的FakeNet-NG支持
在Linux上,FakeNet-NG可以在专用于网络仿真的单独主机上以MultiHost模式部署,也可以在实验中使用SingleHost模式进行本地分析软件。 Windows仅支持SingleHost模式,默认情况下,FakeNet-NG配置运行在NetworkMode:Auto中,它将在Windows上自动选择Windows或MultiHost模式下的SingleHost模式。下表列出了操作系统当前支持的NetworkMode设置。
FakeNet-NG对Linux上SingleHost模式的支持目前存在局限性。
首先,FakeNet-NG还不支持在Linux上对特定进程,主机或端口进行条件重定向,这意味着像ProcessWhiteList这样的设置将无法正常运行,所以开发人员计划在以后的版本中添加对这些设置的支持。同时,SingleHost模式支持将所有互联网绑定的流量重定向到本地监控器,这也是恶意软件分析人员的主要用例。
其次,python-netfilterqueue库被硬编码,以处理长度不超过4012个八位字节的数据报。环回接口通常配置有最大传输单元(MTU)设置,以允许某些应用程序超过此硬编码限制,从而导致意外的网络行为。可能由此引起异常的网络应用程序的示例将通过FTP的大型文件传输,因而对这个问题的解决方法就是重新编译具有较大缓冲区大小的python-netfilterqueue或将环回接口即lo的MTU降低到4012或更小。
在Linux上配置FakeNet-NG
除了新的NetworkMode设置外,对FakeNet-NG的Linux支持还引入了以下Linux特定的配置项:
1.LinuxRedirectNonlocal,对于MultiHost模式来说,此设置指定以逗号分隔的网络接口列表,将所有流量重定向到本地主机,以便FakeNet-NG能够对其进行回复。 FakeNet-NG的默认配置设置为*,它将FakeNet-NG配置为在所有接口上重定向。
2.LinuxFlushIptables,在为FakeNet-NG添加规则之前,LinuxFlushIptables配置项会删除所有的iptables规则。原始规则作为FakeNet-NG关闭序列的一部分进行恢复,当你按Ctrl + C时,它就会被触发。这样可以减少出现意外终止的冲突,错误或重复规则的可能性,并在FakeNet-NG的默认配置中启用。
3.LinuxFlushDnsCommand,该配置项会指定刷新DNS解析器缓存的命令。当在Linux上以SingleHost模式使用FakeNet-NG时,可以确保将名称解析请求转发到DNS服务,如FakeNet-NG DNS监控器,而不是使用缓存的回复。不过LinuxFlushDnsCommand配置项不适用于所有Linux版本,但在默认情况下可以使用Ubuntu Linux的正确命令填充。
在Linux上启动FakeNet-NG
在使用FakeNet-NG之前,请确保禁用那些可能绑定到你计划使用的FakeNet-NG监控器对应端口的任何服务,比如Ubuntu使用本地dnsmasq服务。你可以使用netstat来查找这些服务,并且应该参考你当下使用的Linux版所发行的文档来确定如何禁用它们。
你可以通过使用root权限调用fakeet启动FakeNet-NG,如下图所示。
你可以通过直接编辑FakeNet-NG输出第一行显示的文件,或者使用-c命令行选项创建副本并指定其位置来更改FakeNet-NG的配置。
总结
FakeNet-NG现在为Linux提供了一种基于Python的恶意软件动态网络分析工具,同时也支持FakeNet-NG 在 Windows上使用监控器。 REMnux的用户可以直接使用FakeNet-NG,而其他Linu的用户可以使用标准的软件包管理工具进行下载和安装。