7

如何量身打造恶意软件分析环境(下篇)

 3 years ago
source link: http://netsecurity.51cto.com/art/202101/643053.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

对于每个恶意软件研究人员来说,通常首先要做的事情就是搭建得心应手的恶意软件分析环境。当所有的系统配置和软件安装完成后,就可以正确地分析和研究恶意软件了。上一篇文章中,我们为读者介绍了如何安装配置虚拟机,接下来,我们继续为读者演示如何收集网络流量等精彩内容。

接上文:《 如何量身打造恶意软件分析环境(上篇)

收集网络流量

在分析恶意软件时,最好在受控环境下运行恶意软件,因为这样可以使恶意软件的操作和C2进入活跃状态。分析网络流量,是一个非常繁琐的过程,需要在实时网络流量中检测恶意软件调用。本节将帮助大家配置自己的虚拟机,以动态捕获被测试的恶意软件的网络流量,除此之外,大家也可以静态地单步调试代码,这样也可以手动考察当前的潜在威胁。

首先必须配置的是MSEdge Windows 10和REMnux之间的虚拟专用网络通信。

在Windows 10虚拟机上,选择自定义的vmnet2网络(Virtual Machine->Network Adapter->Custom (vmnet2))。

在Windows 10虚拟机上,右键单击任务栏中的网络适配器,然后选择“Open Network & Internet settings”。

选择以太网并单击“Change adapter options”。

右键单击Ethernet0并选择“Properties”。

双击“Internet Protocol Version 4 (TCP/IPv4)”。

通过单选按钮,选择“Use the following IP address:”,然后添加IP地址、子网掩码、默认网关和首选DNS服务器,具体如下所示:

  • IP地址:10.1.2.100
  • 子网掩码:255.255.255.0
  • 默认网关:10.1.2.1。
  • 通过单选按钮,选择“Use the following DNS server address:”并添加:
  • 首选DNS服务器: 10.1.2.1

单击 “OK”按钮,完成网络设置的配置。

QNbQJbu.jpg!mobile

现在,我们已经配置好了虚拟专用网络的REMnux适配器。

虚拟机已经联网,也就是说,它们可以相互通信了,因此,现在可以在REMnux虚拟机上配置一些工具来捕获流量了。

实际上,REMnux上已经安装了多种工具,它们都可以用来捕获网络流量。在这里,我们将使用Burp Suite和INetSim。Burp Suite通常用于测试Web应用程序防火墙,但在本例中,我们希望进行相应的配置,以便当Windows 10运行恶意软件时,它将尝试建立到相关域名或C2的连接。这些流量有可能使用HTTPS通过Burp Suite,而Burp Suite将绑定到INetSim。INetSim是一个软件套件,可以模拟实验室环境的常见服务,以帮助分析恶意软件的网络行为。

配置Burp Suite

Burp Suite的设置很简单,但在开始使用之前,我们必须先进行相应的配置:

打开命令提示符,键入命令:$ sudo Burp Suite。

选择临时项目,然后点击“Next”,再选择“Start Burp”选项。

选择Proxy选项卡,然后选择“Options”选项。在Proxy Listeners下,选择默认接口,然后点击Edit按钮。

在Binding选项卡下,将“Bind to address”设置为Specific address: 10.1.2.1 ,并点击“OK”按钮。

vemuiaV.jpg!mobile

重要步骤:

  • 返回MSEDGE Windows 10虚拟机,打开Edge浏览器。
  • 在地址栏中输入:http://10.1.2.1:8080。这时应该会看到 "Burp Suite Community Edition"。
  • 下载页面右上方的CA证书。
  • 打开文件所在目录,双击证书文件。
  • 选择“Install Certificate...”。
  • 选择“Current User”作为存储位置,点击“Next”按钮。
  • 选择“Automatically select the certificate store based on the type of certificate”。点击"Next"按钮,然后点击“Finish”按钮。

进入EDGE浏览器的设置步骤,并禁用所有安全功能;这将有助于在下一节测试与INetSim的连接。

务必建立一个快照。

32IZZrz.jpg!mobile

返回REMnux虚拟机。现在,您应该仍然在“Burp Suite Proxy”选项卡中,下面开始编辑代理监听器选项:

在“Request handling”选项卡下,将“Redirect to host”设置为localhost,将“Redirect to port”设置为4443。选中“support for invisible proxying”选项。

现在进入“Intercept”选项卡,确保“intercept”选项处于关闭状态。

在“Proxy Listeners”下,选择默认值,然后单击“Edit”。

在“Binding”选项卡下,选中“Bind to address: Specific address: 10.1.2.1”,但将“Bind”改为443端口。

点击“Request handling”选项卡,将“Redirect to host”选项设置为localhost,将“Redirect to port”设置为4443。

选择“Support invisible proxying (enable only if needed.)”选项,然后单击“OK”按钮。

VBRNBv.jpg!mobile

配置INetSim

由于REMnux已经预装了INetSim,因此,我们可以直接使用自己喜欢的文本编辑器,打开位于/etc/inetsim/目录中的inetsim.conf文件。按照以下步骤配置INetSim:

VBVVZ3A.jpg!mobile

小贴士:要注意,恶意软件有可能通过检查这个文件中的所有内容是否都被取消注释来检测它是否在虚拟环境中运行。我还没有遇到过这种情况,但意识到这种可能性是一件好事。当然,您也可以采取更保守的方法,只取消对打算使用的服务的注释。

下一步是在inetsim.conf文件中绑定REMnux网络适配器的IP。服务菜单后的下一部分是service_bind_address。取消#号,将默认的IP地址从10.10.10.1改为0.0.0.0。

向下滚动到dns_default_ip部分,取消#并将IP地址从10.10.10.1改为10.1.2.1。

最后要做的是绑定HTTPS端口,这样Burp Suite就可以将流量路由到4443端口。向下滚动到https_bind_port部分,取消#字符并将443替换为4443。

保存所有修改,并退出编辑器。

FNV7JjM.jpg!mobile

下一步是运行下面的命令——注意,这些命令非常重要,必须执行,否则INetSim将无法正常工作。Ubuntu提供了一个处理系统解析的系统服务,它为本地应用程序提供网络名称解析。但是,这与INetSim冲突,所以我们需要禁用该服务。

我们必须禁用system-resolve,并对其进行屏蔽,这样它就不会在重启时自动启动。最后,我们需停止该服务。

$ sudo systemctl disable systemd-resolved 
$ sudo systemctl mask systemd-resolved 
$ sudo systemctl stop systemd-resolved 
MNRFBb.jpg!mobile

最后一步,是运行INetSim:

$ sudo inetsim 
QNNvIvN.jpg!mobile

要从Windows 10虚拟机测试网络连接,请打开命令提示符并输入ping 10.1.2.1,然后打开Edge浏览器并键入10.1.2.1。您应该看到以下信息:“This is the default HTML page for INetSim HTTP server fake mode.”。

最后一项测试是确保DNS正常工作,并能为相应的请求提供服务。对于本例来说,我为此在搜索栏中键入了https://www.mymaliciousdomain.com/malwaretrojan.exe。如果一切正常,应该看到一个网页警告,指出请求的网站并不安全。

bmu2qqq.jpg!mobile

我还喜欢在调查恶意软件时使用Wireshark捕获数据包来分析pcaps。

在REMnux的终端中打开一个新的窗口,并键入$ wireshark。

应用程序打开后,点击工具栏最左边的鲨鱼鳍图标,开始捕获数据包。

rUFZNza.jpg!mobile

“引爆”恶意软件

当恶意软件被执行时,它通常会向某个域名或IP地址发出一些请求。INetSim通过伪造正在等待响应的恶意软件的响应来帮助解决这个问题。一个例子是,如果恶意软件被执行并连接到一个域,除非满足条件(也就是收到响应),否则不会在没有响应的情况下继续运行后续恶意操作。如果恶意软件没有收到响应,就会终止,不会继续其恶意行为。这正是实时环境的用武之地:响应恶意软件的“呼叫”,并捕捉网络流量。

作为实验室环境设置的最后一步,我们将“引爆”一个臭名昭著的二进制木马(或任何您自己选择的恶意软件)来测试配置是否能够正常工作。

我们将通过二进制恶意软件Trickbot(SHA256:49d95cae096f7f73b3539568b450076227b4ca42c0240044a7588ddc1f1b6985)进行测试。在这里,已经打开了Process Explorer和TCPView来监控Trickbot这个变种的执行情况。

YfAfIbA.jpg!mobile
y6FB3uf.jpg!mobile

在深入展开逆向分析之前,“引爆”恶意软件可以节省很多时间,因为因为这样可以收集关键信息,从而做出一个无偏见的假设。在这个例子中,当我们引爆这个trickbot样本时,有三个“callout”很显眼。

这些callout是为了从微软更新站点获取文件;获取这些cab文件的是一个没有可信证书的自动更新器。证书信任列表是一个由受信任实体签名的预定义项目列表。这些被请求的cab文件是用来更新和扩展现有的功能,方法是使用证书信任列表将已知不受信任的证书添加到不受信任的证书存储区。

3mQfymv.jpg!mobile

尽管Trickbot是当今分支最多的恶意软件之一,并且其callout也更为复杂,但如果您正处于研究的开始阶段并且从未遇到过这种二进制文件,那么Trickbot是一个很好的起点。

我已经成功使用该实验室配置很多年了。早在2016年,当我临危受命处理一起突发事件时,该实验室的搭建方法就派上用场了。当时,我没有时间对二进制文件进行初步分类,因为当时在参加一个电话会议,由调查组负责人做简要汇报。我立即通过快照启动了这两个虚拟机,并在了解事件最新情况的同时引爆了二进制文件。在5分钟内,我通知了调查负责人有关该二进制文件所呼叫的IP的信息,这足以使威胁猎人迈出重要的一步。结束电话会议之后,我开始对该恶意软件进行逆向分析,并提取了其他IOC和TTP。

小结

在不同的恶意软件分析情形下,实验室环境的搭建和配置会有所不同。分析恶意软件时,您需要使用不同的工具进行剖析和深入分析。我希望本文介绍的SentinelLabs RevCore Tools和相关配置能够为您提供帮助,但有时您可能需要分析一些不同的内容,并且可能需要其他工具来对二进制文件进行反汇编处理。逆向分析恶意软件的过程是一场马拉松,而不是短跑;我们的目标应该是提高自身的技能,并从分析的每种恶意软件中学习新的知识和技能。

参考资料:

  • https://support.microsoft.com/en-us/help/2677070/an-automatic-updater-of-untrusted-certificates-is-available-for-window
  • https://askubuntu.com/questions/191226/dnsmasq-failed-to-create-listening-socket-for-port-53-address-already-in-use
  • https://gallery.technet.microsoft.com/scriptcenter/Change-the-Desktop-b5b2141c
  • https://gist.github.com/trietptm/b84ccad9db01f459ac7

本文翻译自:https://labs.sentinelone.com/building-a-custom-malware-analysis-lab-environment/

【责任编辑:赵宁宁 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK