学号20192411何张榕 网络与系统攻防技术》实验4实验报告

学号20192411何张榕 网络与系统攻防技术》实验4实验报告

目录

1.实验内容

一、恶意代码文件类型标识、脱壳与字符串提取

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

三、分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

(2)找出并解释这个二进制文件的目的;

(3)识别并说明这个二进制文件所具有的不同特性;

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

(6)给出过去已有的具有相似功能的其他工具;

(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

四、取证分析实践

Windows 2000系统被攻破并加入僵尸网络

问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

(2)僵尸网络是什么?僵尸网络通常用于什么?

(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

(5)哪些IP地址被用于攻击蜜罐主机?

(6)攻击者尝试攻击了那些安全漏洞?

(7)那些攻击成功了?是如何成功的?

2.实验过程

2.1 恶意代码文件类型标识、脱壳与字符串提取

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

  • 首先用file指令对RaDa.exe文件进行简单的分析:

    file RaDa.exe
    

    可以看到分析得到结果中有四部分的内容:PE32表示这是一个32位的文件;(GUI)则表示这个文件有图形界面;Intel 80386表示处理器;for MS Windows表示该文件运行在windows系统上。

  • 接着用PEiD进一步了解RaDa.exe,将其用PEiD打开:

    可以看到文件的入口点、文件偏移等信息,同时也可以看到一行信息:

    UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
    

    这样就知道了文件的加壳类型,即UPX壳。

    到这我们就知道了rada.exe的文件格式为32位的PE文件,运行平台为windows系统,加壳工具为UPX,即压缩壳。

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

  • 先用string指令查找RaDa.exe文件中的可打印的字符串:

    可以看到有很多乱码,也说明了该文件是加了壳的。接下来对其进行脱壳操作。

    用脱壳工具对其进行脱壳,然后生成了脱壳后的文件RaDa_unpacked.exe:

    接着再用刚刚的strings指令对脱壳后的文件进行查看,这次可以发现可打印字符串不全是乱码了:

    可见我们成功对RaDa.exe文件脱壳了。

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

  • 虽然我们成功对RaDa.exe文件脱壳了,但是脱壳后看见的这些字符串也只有一些函数名和dll文件名,还不能发现该恶意代码的编写作者是谁。

  • 既然如此,我们就要利用其他的工具——Process Explorer。打开Process Explorer,运行RaDa_unpacked.exe文件,然后在Process Explorer中找到RaDa_unpacked.exe:

  • 找到后右键目标程序,然后选择Properties查看其属性,接着选择strings:

    这样就可以看到可打印的字符串,而其中选中的那句Copyright (C) 2004 Raul Siles & David Perez就有我们要找的信息,这表示这是Raul Siles和David Perez在2004年编写的。

2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

  • 先用file命令查看crackme1.exe与crakeme2.exe的文件类型:

    可以看出这两个文件都是在windows下运行的32位可执行文件,且没有图形界面。

  • 接着我们尝试运行crackme1.exe,以及随便带点输入参数,会发现如下情况:

    可以看见当我们不带参数或者带了超过1个的输入参数的时候,会提示I think you are missing something.而当我们只带一个输入参数的时候,则会提示Pardon? What did you say?由此我们可以推测需要的输入参数个数为1个。

  • 知道个数后,我们就需要用IDA pro来分析crackme1.exe。打开IDA pro,选择PE exe,然后打开crackme1.exe,接着打开strings界面查看字符串,可以看到除了刚刚的I think you are missing something.Pardon? What did you say?之外,还有另外两条提示信息I know the secretYou know how to speak to programs, Mr. Reverse-Engineer

    我们尝试以I know the secret作为输入参数,结果输出恰巧为You know how to speak to programs, Mr. Reverse-Engineer

    所以初步猜测I know the secret为程序的特定输入。

  • 接着继续用IDA pro,切换到IDA viewA界面,然后用快捷键Ctrl+F12打开crackme1.exe的函数调用图:

    从图中可以看到,在程序段sub_401280中调用了strcmp函数来比较输入,可以推断出程序段sub_401280是关键程序段。于是打开sub_401280的流程图:

    也可以在IDA viewA界面按下F5进行反汇编,打开其源代码界面:

    很明显可以看出I know the secret即为程序的正确输入。

  • 然后分析crackme2.exe,还是一样在IDA viewA界面按下F5进行反汇编,打开其源代码界面:

    和crackme1.exe不一样的是,crackme2.exe还比较了文件名,也就是说我们需要把文件名改成crackmeplease.exe,才有可能获得正确的结果。把文件名改成crackmeplease.exe后,还是I know the secret作为输入参数运行,就得到了正确的结果We have a little secret: Chocolate

2.3 分析一个自制恶意代码样本rada

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息

  • 首先用md5sum RaDa.exe查看恶意代码样本的摘要:

  • 文件类型在前面就已经获取过:

    PE32表示这是一个32位的文件;(GUI)则表示这个文件有图形界面;Intel 80386表示处理器;for MS Windows表示该文件运行在windows系统上。

(2)找出并解释这个二进制文件的目的

  • 接着用process explorer对前面脱壳生成的RaDa_unpacked.exe进行分析,然后打开strings界面:

    可以看到http://10.10.10.10/RaDa开始的这几条字符串,表示http连接到ip为10.10.10.10的主机下的一个网页,网页名为RaDa_commands,并且会上传、下载,然后保存到C盘对应地址的位置C:\Rada\bin。

    在下面还有注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\HKLM\Software\VMware, Inc.\VMware Tools\InstallPath,以及对注册表的操作RegWriteRegReadRegDelete,即写、读、删除。在第二个注册表下还有一个Starting DDoS Smurf remote attack...,可以看出程序还能发起DDoS远程攻击。

    由此可以推断出这个程序是一个后门程序,一旦打开程序就会连接10.10.10.10/RaDa,从而进行控制。

(3)识别并说明这个二进制文件所具有的不同特性

  • 在程序启动后,程序会自动复制到C:\Rada\bin,并且会访问10.10.10.10/RaDa的RaDa_commands.html获取其中的指令,然后根据相应指令进行DDoS攻击。

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术

  • 通过反弹连接的方式进行攻击,从而避开了防火墙的过滤。

  • 刚才分析的是我们脱壳后的文件,在这之前这个二进制文件采用了压缩壳的方式来保护自己的内容。

(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由

  • 很明显这是一个后门程序。首先它没有将自己隐藏在正常程序中,说明它不是木马;其次它没有病毒、蠕虫的传播、感染、隐藏的性质,说明它也不属于病毒或蠕虫。

(6)给出过去已有的具有相似功能的其他工具

  • Bobax
  • Setiri

(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

  • 第一种方法就是刚刚的脱壳后查看其字符串

  • 第二种就是利用输入参数--authors查看:

四、取证分析实践

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

  • 因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。

  • 申请加入时发送JOIN信息

  • 明文传输时一般使用6667端口,加密传输则使用6697端口。

(2)僵尸网络是什么?僵尸网络通常用于什么?

  • 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
  • 通常用来发动DDoS攻击、发送大量垃圾邮件等大规模网络攻击。可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。

(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

  • 用wireshark打开botnet_pcap_file.dat进行分析,过滤条件为:

    ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697
    
  • 然后打开统计→IPv4 Statistics→Destinations and Ports,把刚刚的过滤条件加进去并应用,可以看到:

  • 根据统计结果可以看出蜜罐主机跟209.126.161.29、66.3 3.65.58、63.241.174.144、217.199.175.10、209.196.44.172五个IRC服务器进行了通信。

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

  • 先在kali中安装tcpflow:

    apt-get install tcpflow
    
  • 安装完后利用tcpflow进行抓包:

    tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
    

    然后就生成了3个文件:

  • 接着用管道命令筛选出符合条件的主机个数:

    cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
    

(5)哪些IP地址被用于攻击蜜罐主机?

  • 利用tcpdump筛选攻击蜜罐主机的ip输出保存到20192411.txt:

    tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 20192411.txt;wc -l 20192411.txt
    

(6)攻击者尝试攻击了那些安全漏洞?

  • 利用tcpdump筛选TCP端口:

    tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
    

    可以看到TCP端口有135、139、25、445、4899、80

  • 获取端口后,就可以利用wireshark查看TCP的端口。先是135端口,过滤条件tcp.dstport==135 && ip.dst==172.16.134.191,发现只进行了TCP连接:

  • 然后是139端口,过滤条件tcp.dstport==139 && ip.dst==172.16.134.191,可以发现有NBSS包和SMB包以及TCP包:

  • 然后是25端口,跟135端口一样只进行了TCP连接,过滤条件tcp.dstport==25 && ip.dst==172.16.134.191

  • 接着是445端口,过滤条件tcp.dstport445 && ip.dst172.16.134.191:

    可以发现有一个可执行文件:PSEXESVC.EXE。当客户端执行该可执行文件后,攻击方就可以远程控制执行文件的主机,然后获取权限。

  • 然后是80端口,过滤条件tcp.dstport==80 && ip.dst==172.16.134.191

    可以看到选取的这个包中有c:\notworm,即蠕虫攻击。

(7)那些攻击成功了?是如何成功的?

  • 根据(6)中的分析可知218.25.147.83发起的攻击是成功的,它通过蠕虫病毒实现。

3.问题及解决方案

  • 问题:一开始在winxp中进行实验,但是用到的一些命令或者一些程序在winxp下不好使。
  • 解决方案:一些Linux的命令就切到kali中进行实验,不好使的程序就用win10中的程序进行实验。

4.学习感悟、思考等

这次实验的内容相比前三次多了很多,整个实验做下来还是对恶意代码的相关知识和分析方法有了初步的认识。同时这次实验在分析程序时,虽然可以找到其源代码查看,从而方便了进行分析,但也让我认识到我的汇编语言方面的知识还有所欠缺,需要我去针对学习。

参考资料

posted @ 2022-04-17 19:25  20192411  阅读(74)  评论(0编辑  收藏  举报