20212917于欣月 2021-2022-2 《网络攻防实践》第八周作业

20212917于欣月 2021-2022-2 《网络攻防实践》第八周作业

目录



1.实验要求及过程

动手实践任务一:

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

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

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

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

具体过程:
  • (1)-①利用file RaDa.exe命令查看RaDa.exe的文件类型,可知这是一个32位Windows PE可执行文件,并且有图形化窗口
  • (1)-②使用PEiD工具(查壳)来查看加壳的类型。可以看到是一个版本为0.89.6的UPX壳(压缩壳,更多内容参考UPX壳分析)。
  • (1)-③用strings RaDa.exe查看RaDa.exe中可打印字符串,发现都是乱码,也验证了这是一个加壳程序。
  • (2)-①用超级巡警脱壳,这里也识别出了是一个UPX壳,脱完之后输出为RaDa_unpacked.exe,这个脱壳比较简单。
  • (2)-②使用strings Rada_dump_.exe发现不是乱码,说明脱壳成功。
  • (3)-①使用IDA Pro Free打开Rada_dump_.exe(一直next),可以看到如下信息。作者是DataRescue sa/nv,邮箱是ida@datarescue.com

分析Crackme程序:

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

具体过程:

crackme1.exe

  • (1)-① 先对crackme1.exe进行猜测参数的执行。可以很容易猜测,第一个是给的参数数量对了,但是内容不对。第二个是参数数量都不对的返回情况。
  • (1)-② 利用IDA Pro打开crackme1.exe,通过Strings窗口可以查看该程序中出现的字符串,发现了前面的两种反馈信息,Pardon? What did you say?I think you are missing something.
  • (1)-③接下来看Call Flow,找到字符串比较函数strcmp和输出函数fprintf和printf。发现sub_401280这个函数很重要。
  • (1)-④进入函数的汇编部分,进行比较。左边就是函数参数数量不对的情况,右边就是参数数量正确的情况。再进行分析,如果参数不为I know the secret则是错误的,输出Pardon? What did you say?,与猜测过程中的情况一致。显而易见,正确的参数为I know the secret
  • (1)-⑤进行验证

crackme2.exe

  • (2)-①使用IDA pro工具打开crackme2.exe,通过Strings窗口查看该程序中出现的字符串。
  • (2)-②同理查看Call Flow,发现关键的部分在sub_401280这里。
  • (2)-③进入函数汇编部分,用图表展示,进行判断。首先判断参数是否为2个,如果是2个则输出I think you are missing something.,否则对程序名进行判断,如果不是crackmeplease.exe,则输出I have an identity problem。,否则再对参数进行判读,如果不为I know the secret则是错误的,输出Pardon? What did you say?
  • (3)-④根据分析情况,尝试输入以下命令:copy crackme2.exe crackmeplease.execrackmeplease.exe "I know the secret"

分析实践任务一:

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

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

  • 答:md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。32位PE GUI可执行程序,同时这是一个UPX加壳文件。

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

  • 答:用户上网,就得到了攻击者的指令,并且攻击者可以完全控制该系统(指令),所以这应该是一个后门程序或者僵尸程序。

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

  • 答:RaDa.exe被执行时,它会将自身安装到系统C盘中,并通过修改注册表的方式使得每次系统启动,启动后主要就是以下过程:(1)从指定的web服务器请求指定的web页面;(2)解析获得的web页面,获取其中的指令;(3)执行解析出来的指令,主要的指令上面给出;(4)等待一段时间后继续按照这个循环执行。

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

  • 答:UPX加壳;通过查看网卡的MAC地址以及查看VMware Tools的注册表项来判断操作系统是否运行在VMware虚拟机上,如果是,则使用—-authors参数时将不会输出作者信息;Starting DDoS Smurf remote attack字符串可能让别人联想这是DDos攻击。

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

  • 答:首先这个样本不具有传播和感染的性质,所以它不属于病毒和蠕虫。然后它也没有将自己伪装成有用的程序以欺骗用户运行,所以他也 不属于木马。所以我认为他是一个后门程序或者僵尸程序。

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

  • 答:Bobax,2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。还有特洛伊木马Setiri

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

  • 答:是Raul siles和David Perze于2004年编写的。

具体过程:

  • (1)打开Filemon(文件),Regmon(注册表),Wireshark(网络)三个软件进行监测,然后在cmd窗口运行RaDa.exe。观察Filemon我们可以看到程序文件RaDa.exe复制到了C:\RaDa\bin目录下,并且新建了temp目录。
  • (2)继续观察Regmon,我们可以看到进行了很多注册表的操作,其中有一个在自启动项里面加入了RaDa: C:\RaDa\bin\RaDa.exe
  • (3)然后打开wireshark,使用过滤器ip.src == 10.10.10.10 or ip.dst == 10.10.10.10进行过滤。我们可以看到尝试进行http登录,估计是要访问html网页。
  • (4)利用md5sum RaDa.exe指令得到其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。利用file RaDa.exe识别出这是32位PE文件,并且还是个GUI文件。
  • (5)然后跟任务一步骤一样脱壳,直接到利用IDA Pro进行分析。首先把Type改成unicode类型,看到下面几种字符串。第一张图是命令行参数了,第二张图是一个版本作者。第三张图是一个注册表,但是这里有两个,还有一个VMware tools值得我们注意。最后一张图RaDa_commands.html是之前进行访问的那个html网页了。
  • (6)字符串看完下一步就看汇编代码逻辑了。首先我们还是看命令行参数的代码逻辑。可以看到命令行参数都在sub_405E40这个函数中,这个函数应该就是处理命令行参数的。RaDa_commands.html这个应该就是我们之前进行访问的那个html网页。寻找这个字符串对应的函数sub_404FB0,进入函数,看黄色部分的汇编代码,很容易知道他是被拷贝到dword_40C030这个变量中了。还能看到很多其他的字符串拷贝(这些字符串就是默认的一些值)。
  • (7)找到这个dword_40C030变量对应的函数sub_4052C0,找到它并且打开Call Graph查看。看到判断了三个网段分别为192.168.、172.16.、10.,很明显,这是三个私有网段,也就是说确保服务器在私有网段中,然后到服务器去取命令文件。
  • (8)最后找到Vmware Tools对应的函数sub_404FB0,在这个函数中,这个字符串被拷贝到变量dword_40C070,继续寻找这个变量对应的函数,找到是sub_40AAA0。这个函数进行了网卡配置信息的查询(Select),然后进行了右边就确认dword_40C070对应的字符是否存在,并进行了Mac地址查询,注册表的查看等操作(Wscript.shell)。也就是判断vmware tools是不是在注册表里面。
  • (9)观察到--authors参数对应的处理函数是sub_40B010,打开Call Graph发现,这里的处理是如果是虚拟机就输出Unknow argument,如果不是,就输出正确的作者信息。

分析实践任务二:

Windows 2000系统被攻破并加入僵尸网络。
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

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

  • 答:因特网中继聊天(Internet Relay Chat),简称IRC。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC特点是通过服务器中继与其他连接到这一服务器上的用户交流。注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN 。IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。注意:攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,那么基于端口识别服务不再可靠,要进行基于应用协议特征进行识别(如USER/NICK)。

  • 2、僵尸网络是什么?僵尸网络通常用于什么?

  • 答:僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络,是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

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

  • 答:使用Wireshark打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667,因为我们上面的分析知道IRC通过6667端口,筛选之后,我们可以找到五个IRC服务器,分别为:209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172

  • 4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
  • 答:使用命令tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 6667'(读取文件,筛选host和端口6667后进行分流),执行之后我们将获得三个文件:172.016.134.191.01152-209.196.044.172.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml。接着执行export LC_COLLATE='C'export LC_CTYPE='C'避免出现字符编码问题
    然后进行搜索(grep搜索获取昵称输出行sed去除前缀,g表示全局,tr将空格转换为换行,tr -d删除\r,grep -v就是NOT指令,去除空行,sort -u排序并去除重复,wc -l输出行数)
  • 5、那些IP地址被用于攻击蜜罐主机?
  • 答:cut -d是指定字段的分隔符,uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用.使用下面的指令查找端口并输出到2.txt中。使用tcpdump -n -nn -r botnet.pcap 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
  • 6、攻击者尝试攻击了哪些安全漏洞?哪些攻击成功了?是如何成功的?
  • 答:(1)使用snort -r botnet.pcap -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况,发现大部分都是TCP包,有一部分UDP包,利用tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq指令筛选出蜜罐主机相应的TCP端口。

(2)输出可以看到TCP响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)。同样的,将指令协议部分改成udp就可以查询udp端口响应,我们能查到仅有137(netbios-ns)号端口响应。同样的,将指令协议部分改成UDP就可以查询UDP端口响应。查到仅有137(netbios-ns)号端口响应。

(3)wireshark打开pcap文件,首先查看TCP的135和25端口,设定筛选条件tcp.port135 || tcp.port25。发现这俩端口只是用来进行连接,没有发生数据的交互。

(4)接下来分析445端口,445端口是SMB端口,设置过滤条件ip.dst172.16.134.191 and tcp.dstport445。在61.111.101.78发起的请求中发现了PSEXESVC.EXE,这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。

(5)判断是否成功,查找从蜜罐发往61.111.101.78的信息ip.dst==61.111.101.78。发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,所以攻击者肯定是获得了权限,攻击是成功的。

(6)然后看80端口,设置筛选条件ip.dst172.16.134.191 and tcp.dstport80 and http。看到210.22.204.101向蜜罐发送了很多的C,可能在进行缓冲区溢出攻击。此外,24.197.194.106发起了很多次连接,这是不停地使用脚本在攻击IIS服务器的漏洞,从而获取系统权限。218.25.147.83也访问了80端口,下方信息中发现了C:\notworm,这是一个红色代码蠕虫攻击。

(7)最后是4899端口,ip.dst172.16.134.191 and tcp.dstport4899。这个端口只有210.22.204.101访问过,可以查得4899端口是一个远程控制软件radmin服务端监听端口。

(8)接下来分析UDP的137端口,这个端口是NetBIOS相关协议,ip.dst == 172.16.134.191 and udp.port == 137。可以看到这里的所有IP地址进行访问的负载都是相同的,都是KAAAAA....AA的形式,这里推测应该是在进行NetBIOS查点

2.学习中遇到的问题及解决

  • 问题1:
  • 答:应当是文件名是crackmeplease.exe才可使用,不能单纯的给原本的crackme2.exe文件赋予新名称参数。所以要使用copy命令将crackme2.exe复制并将复制文件改名。

3.学习感想和体会

  • 分析能力还是很弱哦,如果没有视频的话,自己分析肯定分析不出来啥!
posted @ 2022-05-06 23:24  雲深不知处  阅读(78)  评论(0编辑  收藏  举报