在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索。敬请批评指正!

涉及内容:
INetSim安装及使用
ApateDNS安装及使用

1. 搭建病毒分析网络环境原因

使用虚拟机作为沙箱能把病毒与外界完全隔离开,但是很多病毒需要连接网络才能触发特定的行为,所以我们需要搭建一个尽量真实的网络环境。
  • 在断网模式下,病毒很可能保持静默或者做一些无关紧要的事来迷惑我们。
  • 在不了解病毒之前直接把病毒接入互联网是非常危险的,原因有如下几点:
    • 会将自己的主机以及网内的设备都会暴露在感染中
    • 该虚拟机可能变成黑客所操控的僵尸机来执行DDOS攻击
    • 可能让黑客知悉我们在解剖他的病毒。
  • 因此我们需要在虚拟机之间搭建一个虚假的网络环境来欺骗病毒。

2. 网络环境的配置

(1)配置目标

  • 运行恶意代码进行分析的虚拟机:WinXP
  • 启动服务器的虚拟机:Kali
  • 配置需求:虚拟机互相连接,但不与主机和外部网络连接。

(2)虚拟机的设置

  • 首先编辑网络编辑器,新增一个HOST ONLY的网络:

  • 将虚拟机的网络适配器都选用这个网络:(WinXP反应很慢,建议重启更新配置)

(3)配置虚拟服务器

  • 安装INetSim

    • kali:自带有INetSim,无需安装。环境变量中已经加入其路径,直接输入INetSim(root权限)就可运行:

    • Ubuntu中第一次安装时无法运行,会出现缺少依赖的问题,可以通过重新配置数据源并更新依赖来解决:(教程ubuntu 14.04安装INetSim模拟Internet

        - 配置数据源
        >wget -q -O - http://www.inetsim.org/inetsim.org-archive-signing-key.asc | sudo apt-key add -
        >sudo sh -c 'echo "deb http://www.inetsim.org/debian/ binary/" >> /etc/apt/sources.list.d/getdeb.list'
        
        - 添加组
        >groupadd inetsim
        
        - 更新数据源,安装依赖
        >sudo apt-get update
        >sudo apt-get install perl perl-base perl-modules libnet-server-perl libnet-dns-perl  libdigest-sha-perl  libipc-shareable-perl libio-socket-ssl-perl libiptables-ipv4-ipqueue-perl
        
        - 安装inetsim
        >sudo apt-get install inetsim
      
    • 中间出现的apt-get问题可尝试使用sudo aptitude update && install提供的不同版本兼容性解决方法(但是后来还是安不成功libiptables-ipv4-ipqueue-perl包)。但是不管怎样,至少在Ubuntu里能安装上INetSim而且可以运行起来了。

  • 配置INetSim
    编辑INetSim的配置文件(kali中工具的配置文件在/usr/share目录下, Ubuntu下载后安装的文件在/usr/bin目录下,不同版本可能会有所不同)

  • 找到inetsim.conf文件(kali在conf/中),更改下面的配置(去掉注释):

第一处更改:绑定本机IP

service_bind_address 192.168.134.129(INetSim安装的虚拟机机IP)

第二处更改:DNS解析IP,将流量重定向到本机。

dns_default_ip  192.168.134.129(INetSim安装的虚拟机机IP)

第三处更改:重定向开启

redirect_enable yes

第四处更改:连接绑定ip的tcp端口

redirect_exclude_port tcp:22

第五处更改:重定向外部地址(非注释信息,有些机器更改配置时自动更改,最好确认一下)

redirect_external_address 192.168.134.129(INetSim安装的虚拟机机IP)

(4)主机中配置网络方法一:直接更改

  • 直接在网络属性中更改

(5)主机中配置网络方法二:使用ApateDNS

在ApteDNS里设置解析后的IP为我们Ubuntu服务器的IP然后运行它。这样病毒都会去连接我们的假服务器。

下载运行ApateDNS

  • 下载ApateDNS

  • 阅读ReadMe文件:

    • apatedns是一种控制DNS响应的GUI工具。它将响应DNS请求设置为任何你指定的IP地址。
    • 可以指定一些不存在的域(NXDOMAIN)响应返回之前有效的响应发送。
    • 默认情况下,它将可以使用DNS或默认网关设置为一个IP地址用于DNS响应。在退出后,还原本地DNS设置。
  • 运行环境要求:

      Windows XP or greater
      Microsoft .NET Runtime >= 2.0
    
    • 实际上直接在XP环境运行是有问题的,win7可以运行。
    • 使用Net framework4.0版本无法运行,2.0、3.5可以运行。
  • XP中出现问题一:

  • 解决方法:安装Net framework2.0或3.0或3.5。(注意:在安装了之后需要重启)

  • 出现问题二:提示“Please set registry key HKLM\Microsoft.NET Framework\InstallRoot to point to the .NET Framework install location”

  • 原因:可能是NET Framework没有安装或是虽然安装成功但是没有在注册表中设置成功。

  • 解决方案一:如果是安装中出现提示,可以删除所有相关文件重新安装。

  • 解决方案二:如果是安装成功后提示错误,修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework

  • 如果其中有InstallRoot这一键值,则将其值修改为.NET Framework的安装路径(一般为 C:\WINDOWS\Microsoft.NET\Framework\ )。如果没有则右击.NET Framework选择新建“字符串值”,设置数值名称为 InstallRoot,数值数据为 C:\WINDOWS\Microsoft.NET\Framework\ 或其他安装路径。

  • 应该可以正常打开了。

配置ApateDNS使对任何网站访问都指向固定的网站

  • Ping一下指向的网站(以校网为例)

  • 将ApateDNS的DNS Reply IP设为123.127.3.2,开启服务。

  • 再次打开网页,所有的都显示校网的页面。

  • 在ApateDNS中可以看到,第一条是访问百度的DNS解析,后面几条是加载校网页面上的相关连接地址解析

  • 出现问题一:第一次ping校网的时候显示了一个111.13.100.2的地址,使用这个地址作为返回的DNS:

  • 访问百度,出现了校网的图标,但是无法显示出信息:

  • 出现问题二:刚开始的时候使用的百度的ip,但是无法实现这个功能,显示网页无法显示,然后我又尝试了使用ping到的hao123、扇贝网的ip,这两个页面倒是没说无法显示,但是也没有出来相应的网页,而且两者显示的不同。

  • 下图是设置为hao123的效果:

  • 下图为设置成扇贝网ip的效果:

  • 由于担心是浏览器的问题,我又尝试了IE、UC浏览器,但没有解决这个问题,还是一样的效果。

  • 经过老师的点拨,说是因为有些网站使用ip无法访问,我就回来试了一下,确实是这样的:

  • 百度了一下,这个Nginx是一个高性能的HTTP和反向代理服务器,就跟Apache差不多,对于有些ip无法访问的问题,我通过阅读资料觉得有两种解释的可能:

    • 可能性一:基于Nginx平台的服务器为了防止恶意DDOS攻击(通过IP访问)或避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,会设置IP访问限制,一般会设置成直接禁止使用ip访问或限制ip段重复访问,还可以绑定多个ip段显示不同内容。
    • 可能性二:如果服务器是把域名指向了IP,其中本身含有加载Web服务的功能,输入的ip就能够被直接重定位到对应的 Web 服务器。否则,在共享主机的服务器网络中,输入IP只能访问服务器上的一个站,无法确认去哪个目录访问对应网站的服务器主机。

3. 运行病毒程序

  • 现在配置的环境:

    • 两台虚拟机在同一个仅主机虚拟网络中。
    • kali中开启INetSim服务。
    • WinXP中运行ApateDNS或更改网络配置使重定向到INetSim虚拟服务器。
  • 在配置好的环境中运行恶意代码:

4. 小结

  • 这次实践花了大量的时间去解决软件问题,没有针对病毒进行分析。在这个过程中,通过不断地修改虚拟机的配置和对Linux系统的软件、关系依赖修改,锻炼操作能力。
  • 感觉看过的每一个教程都写得非常简单,实际上操作中会有各种问题,由于系统环境的不同问题也不同,虽然办法总比问题多,但是整个过程极为艰辛,尤其是电脑总是崩。而且一定选择适合的方法,比如这次经验教训就是对网上的解决方法要慎重使用:
    • 在尝试各种安装deb包的过程中,搜到一个解决办法是先sudo apt-get –f install修复依赖关系,结果我在kali里面运行之后,各种依赖都被解除了,重启机器了之后连开机启动图形化界面都找不到了….而且一开始忘记存快照,做Linux实践的文档还在里面找不到了…恢复了很早以前存的快照,所有的东西还要重新安装和更新,整个人极度崩溃。
    • 在做成功之后,解决别的同学出现的问题时深切地体会到:实践做得早虽然可以花更多的时间解决问题,但显然机器好更重要…有的虚拟机只要每一步都配置正确,几乎不用花什么功夫就出来了。
  • 在不知道问题所在的时候,就耐心的阅读说明吧,尽管我的英语不好,但是通过INetSim配置文件主要内容阅读,真的发现了问题所在并成功解决。

参考资料