20212904 2021-2022-2 《网络攻防实践》实践八报告

20212904 2021-2022-2 《网络攻防实践》实践八报告

1.实践内容

(1)动手实践任务一:分析恶意代码样本

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

  • 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
  • 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
  • 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁。

(2)动手实践任务二:分析Crackme程序

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

(3)分析实践任务一:

任务:分析恶意代码样本rada,并撰写报告,回答以下问题:

  • 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
  • 找出并解释这个二进制文件的目的;
  • 识别并说明这个二进制文件所具有的不同特性;
  • 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
  • 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
  • 给出过去已有的具有相似功能的其他工具;
  • 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

(4)分析实践任务二:

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

  • IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
  • 僵尸网络是什么?僵尸网络通常用于什么?
  • 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
  • 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
  • 那些IP地址被用于攻击蜜罐主机?
  • 攻击者尝试攻击了那些安全漏洞?
  • 那些攻击成功了?是如何成功的?

2.知识梳理

(1)恶意代码类型

  • 后门:恶意代码将自身安装到一台计算机来允许攻击者访问。后门程序通常让攻击者只需很少的认证甚至无须认证,便可连接到远程计算机上,并可以在本地系统执行命令。
  • 僵尸网络:与后门类似,也允许攻击者访问系统。但是所有被同一个僵尸网络感染的计算机将会从一台控制命令服务器接收到相同的命令。
  • 下载器:这是一类只是用来下载其他恶意代码的恶意代码。下载器通常是在攻击者获得系统的访问时首先进行安装的。下载器程序会下载和安装其他的恶意代码。
  • 间谍软件:这是一类从受害者计算机上收集信息并发送给攻击者的恶意代码。比如嗅探器、密码哈希采集器、键盘记录器等。这类恶意代码通常用来获取E-mail、在线网银等账号的访问信息。
  • 启动器:用来启动其他恶意程序的恶意代码。
  • 内核套件:设计用来隐藏其他恶意代码的恶意代码。内核套件通常是与其他恶意代码(如后门)组合工具套装,来允许为攻击者提供远程访问,并且使代码很难被受害者发现。
  • 勒索软件:设计成吓唬受感染的用户,来勒索他们购买某些东西的恶意代码。
  • 发送垃圾邮件的恶意代码:这类恶意代码在感染用户计算机之后,便会使用系统与网络资源来发送大量的垃圾邮件。
  • 蠕虫或计算机病毒:可以自我复制和感染其他计算机的恶意代码。

(4)恶意代码分析

  • 静态分析
    静态分析基础技术:包括检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让你能够生成简单的网络特征码。
    静态分析高级技术:主要对恶意代码内部机制的逆向工程,通过将可执行文件装载到反汇编器中,查看程序指令,来发现恶意代码到底做什么。这些指令时被CPU执行的,所以静态分析高级技术能够告诉你程序具体做了哪些事情。需要掌握汇编语言、代码结构、windows操作系统概念等专业知识。

  • 动态分析
    动态分析基础技术:涉及运行恶意代码并观察系统的行为,以移除感染,产生有效的检测特征码,或者两者。然而,在可以安全运行恶意代码之前,必须建立一个安全的环境,能够让你在避免对你的系统与网络带来的风险的前提下,研究运行的恶意代码。
    动态分析高级技术:用调试器来检查一个恶意可执行程序运行时刻的内部状态。动态分析高级技术提供了从可执行文件中抽取详细信息的另一个路径。

3.实践过程

(1)动手实践任务一:分析恶意代码样本

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

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

  • 打开WinXP Attacker,进入所提供的rada.exe目录,输入file rada.exe,查看rada的文件类型为32-bit操作系统下的PE文件,并且有GUI界面。

  • 使用PEiD工具,查看rada的基本信息。可以看到文件的入口点为0000FD20、文件偏移为00004120、EP段为JDR1,加壳类型为UPX壳。

  • 输入strings RaDa.exe查看RaDa.exe中可打印字符串,发现都是乱码。

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

  • 用超级巡警工具对RaDa.exe文件进行脱壳。

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

  • 输入命令strings RaDa_unpacked.exe,查看脱壳后的rada.exe中可打印的字符串,发现有大量的函数调用名。

  • 打开监控软件process explorer,运行RaDa_unpacked.exe,查看程序属性,可以看到作者名字为:Raul siles&David Perze,写于2004年。

(2)动手实践任务二:分析Crackme程序

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

1)使用file命令分析该恶意程序的大致信息。

  • 首先进入所提供的恶意程序crackme1.exe和crackme2.exe所在目录,分别执行命令file crackme1.exe和file crackme2.exe查看两个文件信息,可以看到这两个文件均为windows系统下运行的32-bit可执行程序,是命令行程序,没有图形界面。

2)对 crackme1.exe 进行分析。

  • 在cmd中输入crackme1.exe,尝试运行该程序,试探其输入格式。

  • 使用IDA pro Free工具打开crackme1.exe进行分析,选择文件类型为PE。在Strings页面可以看到该程序中出现的明文字符串,发现了刚刚没测试得到的另外两个字符串“I know the secret”和“You know how to speak to programs, Mr.Reverse-Engineer”,初步猜测前者是我们需要的口令,后者是口输入令正确时的程序反馈信息。

  • 输入crackme1.exe “I know the secret”验证刚刚口令为“I know the secret”的猜想,得到了程序反馈信息“You know how to speak to programs, Mr.Reverse-Engineer”,猜想正确。

  • view--graphs--function calls,打开function call,sub_401280为关键程序段,stump为c语言编写,使用字符串匹配密码。发现输出函数fprintf和printf即为程序输出,则sub_401280即为核心函数。

  • view--graph--Flow chart,打开sub_401280函数的流程图,可以看到该函数首先判断参数个数是否为2,若参数个数不为2,也就是我们前面尝试直接运行程序时,在crackme1.exe及crackme1.exe 1 2时,都会输出“I think you are missing something”,若参数个数为2,则将第二个参数与字符串“I know the secret”作比较,若正确,则输出“You know how to programs”,与前面的猜想一致。

3)对 crackme1.exe 进行分析

  • 使用IDA pro工具来打开crackme1.exe文件,查看函数调用情况。

  • 程序关键的部分为sub_401280,查看sub_401280流程图。

  • “cmp [ebp+arg_0],2”判断参数是否为两个,判断完参数后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和crackmeplease.exe进行判断:

  • 通过程序名判断后,用户输入的口令与“I know the secret”判断。通过口令判断后,通过一定规则输出通过测试的信息。具体是unk_403080中的字符串分别与0x42h进行异或运算。

  • 输入copy crackme2.exe crackmeplease.exe 和crackmeplease.exe “I know secret”进行测试:

(3)分析实践任务一:

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

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

  • 输入命令md5sum Rada.exe,得到md5摘要为“caaa6985a43225a0b3add54f44a0d4c7”

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

  • 对文件脱壳处理后,打开proceed监听,运行RaDa.exe文件。分析可以发现下载了一个文件保存到C:\RaDa\tmp,主机的注册表也进行了修改和删除的操作,说明该二进制文件的目的是下载后门到目标主机,发动拒绝服务攻击,从而远程与目标主机通信。

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

  • 该二进制文件所具有的不同特性在于访问了http://10.10.10.10/RaDa,下载RaDa_Commend.html并获得指令。

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

  • 用wireshark打开该文件,可以发现受害机与10.10.10.10的主机发送信息。

  • 打开IDA对脱壳后的RaDa进行静态分析,在设置中先把字符串类型改为unicode,查看字符串。

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

  • 分析过程中未发现该恶意代码具有传播和感染的性质,该恶意代码的主要功能是远程获得指令并在靶机上进行相应操作,应该是一个后门程序。

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

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

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

  • 字符串信息中包含作者的信息:Raul siles和David Perze,2004年。

(4)分析实践任务二:

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

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

  • IRC是Internet Relay Chat 的英文缩写,中文一般称为互联网中继聊天。IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
  • 当IRC客户端申请加入一个IRC网络时要发送口令、昵称和用户信息:USER 、PASS 、NICK
  • IRC服务器通常在TCP6667端口监听,ssl加密时用6697端口,也会使用6660—6669端口。

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

  • 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
  • 僵尸网络通常用于折叠拒绝服务攻击、发送垃圾邮件、窃取秘密、滥用资源、僵尸网络挖矿。

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

  • 由于IRC协议使用的是TCP连接,因此可以利用建立TCP连接的三次握手过程找出与蜜罐主机通信的IRC服务器。

  • 在WireShark中打开botnet_pcap_file.dat对日志进行分析,发现除了6667外,其他端口上没有数据包,因此这里所有的IRC数据传输都使用的是6667端口。用ip.src == 172.16.134.191 and tcp.dstport == 6667 and tcp.flags.syn == 1过滤,共过滤得到21个TCP包,发现蜜罐主机与5台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为服务器的僵尸网络?

  • 可以通过查找这段观察期间不同昵称的出现个数来判断。进入botnet_pcap_file.dat目录,输入命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667",查看一共产生了五个文件,因为我们要找的是访问 209.196.44.172的主机,所以后面着重看第一个文件。

  • 输入命令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,可以发现共有3461个不同的主机访问了以209.196.44.172为服务器的僵尸网络。

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

  • 输入命令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 > 2.txt;wc -l 2.txt
    reading from file botnet_pcap_file.dat, link-type EN10MB (Ethernet), snapshot length 65535
    165 2.txt,查到有165个被攻击的端口。

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

  • 输入命令snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii,查看网络流分布情况,发现主要是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。

  • 输入命令tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq,查看UDP响应的端口为137,所以访问这个端口是 NetBIOS 网络查点。

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

  • 对于端口80,用wireshark输入tcp.dstport==80 && ip.dst == 172.16.134.191进行筛选,发现24.197.194.106与蜜罐的有交互连接数最多,有883次,使用snort对该部分数据包进行扫描,发现大部分报警信息都为WEB-IIS、WEB-CGI、WEBFRONTPAGE、WEB-MISC,不成功。

  • 对于端口4899,用wireshark输入tcp.dstport==4899进行筛选,4899端口是一个远程控制软件radmin,攻击者通过上传radmin成功控制靶机。

  • 对于端口135和25,用wireshark输入tcp.port == 135 || tcp.port == 25进行筛选,发现只有连接,无数据传输,可能是攻击者对端口135和25进行了 connect 扫描。

  • 对于端口139,用wireshark输入tcp.port==139进行筛选,发现有很多主机与139建立连接,且有很多空会话,同样也没有成功。

  • 对于端口445,输入tcp.port == 445 && ip.dst == 172.16.134.191进行过滤,发现很多samr,srvsvc字符串,查询字符串,发现PSEXESVC.EXE字符串是由61.111.101.78发起的,通过搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫通过IRC进行通信,并且发现每个IP地址的连接都有响应,且攻击者获得了权限,因此攻击成功。

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

  • 问题1:执行命令file crackme1.exe时出错。
  • 问题1解决方案:原因是没有进入到文件所在目录下执行命令,输入cd 目录名主机进入目录。

5.实践总结

这次实验我学到了很多新知识,但也遇到了一些难题,在以后的实验中要勤于思考,遇到不懂的知识要多学多问。

posted @ 2022-05-06 21:26  z小kk  阅读(83)  评论(0编辑  收藏  举报