QUESTION 1
What are this malware’s imports and strings?
通过 PEiD
这个软件分析这个病毒:
发现这个病毒使用了 PEncrypt 3.1
加壳了。所以我们并不知道它实际的导入函数。
于是我们通过 strings
命令分析里面的可见字符串:
|
|
可见加壳后还有一些注册表位置、域名等字符串。
QUESTION 2
What are the malware’s host-based indicators?
下面将通过动态技术分析这个病毒的网络状态,因此我们需要将虚拟机的网络设置为主机模式:
在主机中扫描局域网,可以看到虚拟机的网络号:
|
|
先使用 Process Explorer
这个工具分析这个病毒。分析这个病毒导入的 dll
中,我们发现了与网络相关的动态链接库 mswsock.dll
:
我们恢复虚拟机快照,重启虚拟机再在虚拟机中打开 Procmon
,添加 Process Name - is - lab03-01.exe
的过滤器,然后运行这个病毒,我们可以在 Procmon
中检测到病毒的行为特征:
可见在 Operation
一栏中,在 Procmon
记录了从 Process Start
开始病毒调用的所有 API 函数。分析这一栏调用的 API 函数,发现这个病毒大量地调用了 CreateFile
函数和 RegOpenKey
这两个 API 函数。并没有发现与网络请求相关的函数调用。
所以被感染的主机会有以上分析出的不寻常文件的创建、以上注册表项的更改、可能与 www.practicalmalwareanalysis.com
建立了连接这些特征。
QUESTION 3
Are there any useful network-based signatures for this malware? If so, what are they?
ApateDNS
为了分析这个病毒的网络请求,使用 ApateDNS
这个工具,可以用于劫持本地的所有 DNS 请求,下载以及介绍地址。
但是这个工具似乎并不可以在 Windows XP 虚拟机上运行(年代久远的系统还有很多网络不兼容的问题),于是我在南开大学正版软件上下载了 Windows 7
的镜像。然后在虚拟机上运行 ApateDNS
劫持本地的所有 DNS 请求,打开浏览器测试:
但是这个病毒竟然无法在 Windows 7
上运行。
于是我决定同时打开 Windows XP
和 Windows 7
系统,使用 vmware
中的 NAT 中,使得两个虚拟机位于同一局域网中,关闭 Windows 7
的防火墙,让 Windows XP
的 DNS
流量流向 Windos 7
。同时,为了处理病毒可能会请求的 HTTP
流量,我们打开 Kali Linux
,也用同样的方式至于局域网中。我们先通过 nmap & ipconfig
查看 DHCP
服务器分配给三个虚拟机的 IP
:
|
|
这其中 192.168.32.128
是 Windows XP
的局域网 IP、192.168.32.129
是 Windows 7
的局域网 IP
。我们保持 Windows 7
的 ApateDNS
处于运行状态,并且设置 Windows XP
的 DNS
地址:
使用 nslookup
以确定我们已经正确地设置了 DNS
地址:
|
|
很显然这个 127.0.0.1
的应答是我们的 Win7
系统给出的。为了避免病毒直接通过 IP 访问,我们简单地把主机的网络切断。至此我们已经设置好了 DNS
的环境,于是我们可以愉快地分析病毒了。
运行病毒,我们再 Windows 7
上发现,这个病毒尝试解析 www.practicalmalwareanalysis.com
这个域名:
Python HTTP&HTTPS
接着我们在 Kali Linux
搭建一个简单的 WEB 服务器:
|
|
然后我们呢在 Win7
中,把 DNS
解析的结果指向 Kali
,然后再在 XP
中运行病毒:我们发现 Win7
中有 DNS
的解析结果,但是 Kali
中却没有来自病毒的访问记录。
于是开始怀疑病毒访问的不是标准端口,因为 Kali
是默认安装了 wireshark
的,我们使用下面的过滤器直接使用 wireshark
抓包:
|
|
如上图,我们发现它竟然访问的是 443
端口,于是我们先尝试把 HTTP
服务部署在 443
端口:
发现这个病毒是真实使用的 HTTPS
服务进行访问。我们再搭建一个简单的 HTTPS
服务:
|
|
再用 wireshark
抓包,发现服务器拒绝了病毒的连接申请:
这说明病毒访问的根本不是真正的 HTTPS
服务,但是 HTTP
同样也无法处理这个请求。
INetSim
我们也可以用 INetSim
这个工具在 Kali Linux
中部署一个 WEB 服务(这个工具在 Kali 是默认安装的)。因为这个工具默认开启在本地端口,因此需要更改 /etc/inetsim/inetsim.conf
这个配置文件,加入下面的配置:
|
|
然后运行以下命令:
|
|
在日志文件 /usr/share/inetsim/log/service.log
中可以查看访问的所有访问的日志记录。
结论
病毒运行之后首先会请求解析 www.practicalmalwareanalysis.com
的 IP,与目标主机建立了 TCP
连接之后,以一个非 HTTPS & HTTP
协议访问目标服务器的 443 端口。