FakeNet-NG是一款专为恶意软件分析人员以及渗透测试专家设计的下一代动态网络分析工具。FakeNet-NG是一款开源工具,并且支持最新版本的Windows以及Linux平台。
该工具可以在模拟合法网络服务的过程中拦截/重定向所有的或特定的网络流量。在FakeNet-NG的帮助下,恶意软件分析专家可以迅速识别恶意软件的功能并捕捉到网络签名。而FakeNet-NG可配置的拦截引擎将允许渗透测试人员以及Bug Hunter非常方便地测试应用程序的特定功能并设计出PoC原型。
工具安装
你可以采用以下几种不同的方法来安装FakeNet-NG。
单独的可执行文件
最简单的安装方法就是从release页面下载并安装已编译版本:
https://github.com/fireeye/flare-fakenet-ng/releases
然后通过双击’fakenet.exe’来运行FakeNet-NG。
这种方法适用于Windows平台,而且整个过程不需要你安装额外模块,对于一台恶意软件分析设备来说这就非常方便了。
安装模块
当然了,你也可以使用pip将FakeNet-NG当作一个Python模块来进行安装:
pip install https://github.com/fireeye/flare-fakenet-ng/zipball/master
或者你也可以获取FakeNet-NG的最新源码并进行手动安装:
git clone https://github.com/fireeye/flare-fakenet-ng/
项目克隆完成后切换到flare-fakenet-ng/目录,然后运行下列命令:
python setup.py install
在Windows上使用FakeNet-NG需要下列组件:
-MicrosoftVisual C++ Compiler for Python 2.7
在Linux上使用FakeNet-NG需要下列组件:
-Python pip包管理器(例如Ubuntu:python-pip)
-Python开发文件(例如Ubuntu:python-dev)
-OpenSSL开发文件(例如Ubuntu:libssl-dev )
-libffi开发文件(例如Ubuntu:libffi-dev)
-libnetfilterqueue开发文件(例如Ubuntu:libnetfilter-queue-dev)
绿色版
如果你想使用FakeNet-NG,但又不想进行安装的话,你可以选择这种方式。你需要获取FakeNet-NG的源码,并安装以下依赖组件:
1. 安装64位或32位的Python 2.7.x(根据Windows版本选择);
2. 安装Python依赖:
pip install pydivert dnslib dpkt pyopensslpyftpdlib netifaces
2b)可选项,你可以安装下列模块作测试用:
pip install requests
3. 下载FakeNety-NG源码:
git clone https://github.com/fireeye/flare-fakenet-ng
在特权Shell窗口中使用Python解释器运行FakeNet-NG:
python fakenet.py
工具使用
使用FakeNet-NG最简单的方法就是以管理员权限执行它,你可以使用–help获取所有可用的命令行参数:
简单运行
我们可以使用下列命令运行默认配置的FakeNet-NG:
C:\tools\fakenet-ng>fakenet.exe
下面给出的是拦截DNS请求和HTTP连接的输出样例:
请注意上面的每一行日志都标有FakeNet-NG当前所运行的模块。比如说,如果程序在对流量进行分流的话,日志前缀将被标记为“Diverter”:
与此同时,每当监听器处理分流流量时,日志记录都会用配置文件中定义的名字进行标记:
用户可以通过按下组合键CTRL+C来终止FakeNet-NG的运行,结束运行后将会自动生成PCAP文件:
工具配置
为了充分发挥FakeNet-NG的功能,我们需要了解其配置文件的结构。下面给出的是一份配置文件样本:
###############################################################################
# Fakenet Configuration
[FakeNet]
DivertTraffic: Yes
###############################################################################
# Diverter Configuration
[Diverter]
NetworkMode: Auto
LinuxRedirectNonlocal: *
LinuxFlushIptables: Yes
LinuxFlushDNSCommand: service dns-clean restart
DumpPackets: Yes
DumpPacketsFilePrefix: packets
ModifyLocalDNS: No
StopDNSService: Yes
RedirectAllTraffic: Yes
DefaultTCPListener: RawTCPListener
DefaultUDPListener: RawUDPListener
###############################################################################