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

一、实践内容

1、恶意代码基础知识

(1)恶意代码定义

  恶意代码:恶意代码(Unwanted Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。

(2)恶意代码分类

  • 计算机病毒:是编制者在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码

  • 蠕虫:蠕虫病毒是一种常见的计算机病毒。它是利用网络进行复制和传播,传染途径是通过网络和电子邮件。它能传播它自身功能的拷贝或它的某些部分到其他的计算机系统中(通常是经过网络连接)。与一般病毒不同,蠕虫不需要将其自身附着到宿主程序,蠕虫病毒一般是通过1434端口漏洞传播

  • 恶意移动代码:恶意移动代码是一段计算机程序,能够在计算机或网络之间传播,未经授权、故意修改计算机系统。一般来说,公认的恶意移动代码的变异型可以分为3类:病毒类、蠕虫类和木马程序

  • 后门:后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击

  • 特洛伊木马:如今黑客程序借用其名,有“一经潜入,后患无穷”之意,特洛伊木马没有复制能力,它的特点是伪装成一个实用工具,诱使用户将其安装在PC端,从而秘密获取信息

  • 僵尸程序:僵尸程序通过聊天室,文件共享网络感染存在漏洞的计算机。这些被感染的计算机所保存的 信息都可被黑客随意取用

  • 内核套件:用以获取并保持最高控制权的一类恶意代码

2、恶意代码发展趋势

(1)传播方式多样化

  • 通过文件传播
  • 通过电子邮件传播
  • 通过“挂马”方式传播
  • 通过移动存储设备
  • 通过网络共享
  • 通过网络劫持传播
  • 通过网络下载传播
  • 通过即时通讯工具传播
  • 通过P2P软件传播
  • 利用系统安全漏洞

(2)自我保护机制加强、与安全软件对抗

  • 关闭安全软件监控进程
  • IFEO映像劫持
  • 修改Hosts文件
  • 修改系统时间

(3)启动方式多样化

(4)隐蔽性增强

  • 隐藏文件夹的正常显示
  • 隐藏服务
  • 采用进程注入技术

(5)难以清除

(6)破坏性增强

3、恶意代码防治策略

  • 正确安装使用安全软件
  • 修改系统配置、增强系统自身安全性
  • 修补系统漏洞、加强预警
  • 提高防范意识
  • 定期安全检查

4、计算机病毒

  计算机病毒是一种能够自我复制的代码,通过将自身嵌入到其他程序进行感染,而感染过程通常需要人工干预才能完成。

(1)计算机病毒基本特性
  • 感染性:最本质的特性

  • 潜伏性:感染后并非立即开始行动

  • 可触发性:满足特定条件触发破坏机制

  • 破坏性:目的有二,一种为炫耀技术,另一种为删除文件、格式化磁盘的真实破坏

  • 衍生性:一种病毒可衍生为多种病毒

(2)计算机病毒传染目标

  • 可执行文件

  • 引导扇区

  • 支持宏指令的数据文件

(3)计算机病毒传播机制

  计算机病毒被触发后,就会寻找宿主程序并开始复制(这个过程跟人类感染病毒是类似的,病毒疯狂复制RNA),病毒一般寄生在上述三个位置:即可执行文件、引导扇区、支持宏指令的数据文件,同时它的传播需要借助人类,而不是自动从一台电脑到另一台电脑

5、网络蠕虫

  蠕虫病毒由两部分组成:一个主程序和另一个是引导程序。主程序一旦在计算机中得到建立,就可以去收集与当前机器联网的其他机器的信息,它能通过读取公共配置文件并检测当前机器的联网状态信息,尝试利用系统的缺陷在远程机器上建立引导程序。就是这个一般被称作是引导程序的小程序,把蠕虫病毒带入了其他的机器中。如果细分主要是五个部分:弹头、传播引擎、目标选择算法、扫描引擎、有效载荷。

6、僵尸程序

(1)僵尸网络定义

  僵尸网络是网络蠕虫、后门程序、特洛伊木马等传统恶意代码形态的基础上发展融合而成的新型攻击方式,其攻击者出于恶意目的,传播僵尸程序控制大量主机它区别于其他攻击方式的特性是一对多的命令与控制机制。

(2)僵尸程序功能组成结构

  其主要分为主体功能模块和辅助功能模块,其中主体功能模块主要包括命令与控制模块传播模块,辅助功能模块主要包括信息窃取模块主机控制模块下载更新模块防分析检测模块。

(3)僵尸程序工作机制

  • 渗透攻击

  • 加入服务器

  • 动态影射至IRC服务器

  • 加入IRC信道

  • 监听命令

  • 接收命令

  • 执行攻击

7、恶意代码分析方法

  恶意代码分析与针对良性代码和软件的程序分析技术,都可以采用通用的代码分析技术来作为基础,主要包括静态分析和动态分析方法,来对代码进行逆向工程(Reverse Engineering)来确定其功能。

(1)恶意代码分析环境

  • 恶意代码发烧友的分析环境

  • 基于虚拟化构建恶意代码分析环境

(2)恶意代码静态分析技术

  • 反病毒扫描

  • 文件格式识别

  • 字符串提取分析

  • 恶意代码实例名

  • 帮助或命令行选项

  • 用户会话

  • 后门口令

  • 相关URL信息、Email地址

  • 包含库文件和函数调用

  • 二进制结构分析

  • 反汇编与反编译

  • 代码结构与逻辑分析

  • 加壳识别与代码脱壳

(3)恶意代码动态分析技术

  • 基于快照对比的分析方法和工具

  • 系统动态行为监控方法:文件行为监控软件、进程行为监控软件、注册表监控软件、本地网络栈行为监控软件

  • 网络协议栈监控方法

  • 沙箱技术

  • 动态调试技术

二、实践过程

动手实践任务一

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

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

  在自己的电脑解压下载的压缩文件,然后将RaDa复制粘贴放入虚拟机WinXpattacker的C盘中。

 

  打开终端,输入file RaDa.exe,查看该文件类型,这是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。

 

   使用 PEiD 工具查看文件加壳类型。加壳的目的是为了增加逆向难度。

  可以看到这个是一个版本为 0.89.6 的 UPX 壳(压缩壳)。

  输入strings RaDa.exe,查看 RaDa.exe 中可打印字符串,发现全是乱码,这说明被加壳了。

 

   使用超级巡警进行脱壳,选择相应的路径,发现支持脱壳。

 

  点击“给我脱”,显示脱壳成功,并显示脱壳之后的文件RaDa_unpacked.exe的存储路径。

  打开C:\Documents and Settings\Administrator文件夹,可以看到这个文件。

  再用 strings RaDa_unpacked.exe查看脱壳后的RaDa_unpacked.exe,发现了脱壳后的恶意程序的可打印字符串

 

   使用XP自带的IDA Pro反汇编工具进行反汇编,一打开脱壳之后的文件就能看到恶意代码的程序编写的时间等信息。

 

 

   可以在字符串这一栏中看到作者为Raul Siles 和David Perze。

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

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

   在自己电脑下载crackme的两个文件,然后放入新建的文件夹,将文件夹复制粘贴到WinXPattacker的文件夹C:\Documents and Settings\Administrator中

 

   进入crackme文件夹

 

  使用命令:md5sum 文件名,检查一下两个文件的完整性,计算其 md5 值。

 

  使用命令:file 文件名,查看其文件类型,可以看到这两个文件都是32位 windows 下 PE 文件

 

  对 crackme1.exe 进行分析,可以发现,在一个参数6时,程序的输出为“Pardon? What did you just say?”,在输入的参数个数大于1时,输出的都是“I think you are missing something.”。所以我们猜测该程序的输入为一个数。

 

   接下来利用 IDA Pro 打开这个程序分析,打开我们打开通过 Strings 窗口可以查看该程序中出现的字符串。通过 Strings 窗口可以查看到该程序中出现的明文字符串,可以看到前面的两种输出信息,“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的输出信息。

 

   接下来我们分析代码逻辑,在IDA Pro中调出对话框IDA View-A和Hex View-A,可以看到左边是汇编代码右边是二进制代码,红色框处实际是可以看到代码的函数调用关系,但这并不是特别清楚。

 

  接下来看函数调用图(Function Call)可以发现:关键的部分在sub_401280这里,程序是使用strcmp函数来输入的,然后利用print和fprint函数输出

 

 

 

  接下来分析关键程序段sub_401280;点击Flow chart查看关键程序段的程序控制流图;从程序控制流图中可以对应着命令行中输入参数的情况和函数调用的实际情况;从函数strcmp所在的程序段中找到它的启动调用参数"I know the secret",猜测这是答案。

 

 

  在命令行中输入crackeme1 "I know the secret"进行验证,输出的结果正是“You know how to speak to program, Mr. Reverse-Engineer”。

 

   接下来分析crackme2.exe

  和carckme1.exe类似,在一个参数6时,程序的输出为“I have an identity problem.”,在输入的参数个数大于1时,输出的都是“I think you are missing something.”。所以我们猜测该程序的输入为一个数。

 

  通过 Strings 窗口可以查看到该程序中出现的明文字符串,可以看到“I think you are missing something.” ,“I have an identity problem.”,“I know the secret”和“Pardon? What did you say?”,还有一个“crackmeplease.exe”。

 

   打开函数调用图(Function Call)可以发现:strcmp函数位于sub_401280程序段中,和crackme1.exe是一致的。

 

 

   回到sub_401280程序段中进行分析,发现strcmp函数位于两个程序段中。接着分析两个含有strcmp函数的程序段发现俩有一条命令不一样,add eax,4。猜测如果“I know the secret”是第1个参数那么回退到程序调用的上一段减4就是第0个参数,也就是程序名(从主调用程序段中可知ebp+arg_4为程序名)。

 

 

  我复制crackme2.exe并将复制的版本命名为crackmeplease.exe。

 

  执行命令crackmeplease.exe,crackmeplease.exe 1crackmeplease.exe 1 2根据提示信息可知已经执行过了第一个strcmp函数所在的程序段即已经过了loc_4012D5程序段(crackmeplease.exe所在程序段)在命令行中使用命令crackmeplease.exe “I know the secret”验证通过;至此两个恶意代码分析结束。

 

分析实践任务一:

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

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

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

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

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

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

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

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

  查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要。

 

   输入命令file RaDa.exe识别出这是32位GUI文件。

  用IDA对RaDa.exe的脱壳程序RaDa_unpacked.exe进行分析,进入 Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode。

  在Strings windows查看命令行参数:可以看到作者

 

   在Strings windows查看命令行参数还可以看到一个网址和RaDa_commands.html

 

   打开IDA View-A窗口,通过分析可得函数sub_404FB0执行时会访问网站:http://10.10.10.10/RaDa,然后得到RaDa_commands.html。至于它访问网站之后的后续操作,我们后面继续分析。

 

  进入函数函数sub_404FB0,可以看到其被参数40C030替换,找到该位置,看到该参数对应的函数是sub_4052C0。

   现在打开RaDa.exe,并打开process explorer

 

   右键process explorer中的RaDa.exe,并选择properties

 

 

   点击memory之后,可以看见网站:http://10.10.10.10/RaDa,和RaDa_commands.html。可以发现链接到这个局域网后,会下载一些东西,然后保存在文件夹里。

 

   文件夹如下如示,是程序自己创建的。

 

 

   往下拉同样可以看见作者。

 

 问题回答:

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

  文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件,同时也是一个UPX加壳文件。

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

  这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统。

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

  它会自动安装到C盘中,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,它会在实验主机的C盘下创建一个RaDa目录,并创建一个bin文件夹,一个tmp文件夹,tmp文件夹用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,bin文件夹中安装了一个RaDa.exe可执行文件。

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

  该二进制文件使用了加壳技术,需要脱壳处理才能进行反编译分析的。

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

  不具有传播和感染的性质,故不属于病毒和蠕虫,同时也未将自己伪装成良性程序以,不是特洛伊木马,排除各种可能后这应该是一个后门程序。

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

  木马Bobax、海阳顶端、木马Setiri等。

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

   2004年,由Raul siles和David Perze二人编写。

分析实践任务二:

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

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

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

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

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

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

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

 

 问题回答:

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

  • 因特网中继聊天(Internet Relay Chat),简称 IRC。IRC 的工作原理非常简单,只需要在自己的 PC 上运行客户端软件,然后通过因特网以IRC 协议连接到一台 IRC 服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流。

  • IRC客户端申请加入一个IRC网络时即需要注册,注册时需要发送的消息有三种,分别是口令,昵称和用户信息。

  • IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。SSL 加密传输在 6697 端口。

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

  • 僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
  • 僵尸网络主要用于:发动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.5863.241.174.144217.199.175.10209.196.44.172

 

 

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

  首先安装使用命令sudo apt-get install tcpflow在kali攻击机中安装tcpflow

  输入命令tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'

  输入命令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' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt”查找端口并输出到1.txt 中(tcpdump -nn: 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;uniq命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数),总共148个端口

 

  打开1.txt,如下图:

 

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

  输入snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii查看一下网络流分布情况。

 

  大部分都是TCP包,所以我们首先应该筛选出响应的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端口。下图可知TCP相应端口为135,139,25,445,4899,80。

 

  同时筛选出UDP端口,命令为“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。

 

   139端口的作用主要为通过这个端口进入的连接试图获得NetBIOS/SMB服务。如下图所示139端口有多个IP地址与蜜罐主机建立了连接。

 

  445端口为一个共享的SMB端口。在查看记录中信息时发现有一种蠕虫病毒执行文件PSEXESVC.EXE,当该蜜罐主机打开此文件时,攻击机可以控制靶机。

 

  若想知道是否攻击靶机成功,使用ip.dst==61.111.101.78查看信息。 

 

  信息中心含有远程调用PIPE tsvcs,所以应该是攻击机已获取控制权限,攻击成功。

  再看4899端口,使用命令ip.dst==172.16.134.191 and tcp.dstport==4899进行过滤。可以发现此ip地址只有210.22.204.101一个ip地址访问过,4899端口是一个远程控制软件(remote administrator)服务端监听的端口,具有远程控制功能。

 

  再看80端口,使用指令ip.dst==172.16.134.191 and tcp.dstport==80 and http过滤。发现210.22.204.101地址向靶机发送多个C,应该是尝试利用缓冲区溢出攻击。  

  攻击方24.197.194.106尝试运用多个IIS服务器漏洞进行攻击。

  设置筛选条件ip.src ==218.25.147.83,可以看到218.25.147.83也用蠕虫病毒攻击过蜜罐靶机。

 

   使用命令ip.dst == 172.16.134.191 and udp.port == 137过滤,查看UDP中的137端口由下图可知,发送信息均为KAAAAAA...在网上查询137udp端口的信息,发现其提供的netbios-ns服务, 要是非法入侵者知道目标主机的IP地址,并向该地址的137端口发送一个连接请求时,就可能获得目标主机的相关名称信息。例如目标主机的计算机名称,注册该目标主机的用户信息,目标主机本次开机、关机时间等。此处137端口这些报文应该为在进行NetBIOS查点,查询蜜罐靶机信息。

 

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

  • 通过上面的分析可知,成功的攻击发起者是218.25.147.83,判断应为蠕虫攻击。
  • 通过向对TCP445端口发送含有PSEXESVC.EXE的数据包,且将PSEXESVC.EXE地址改到系统目录下攻击成功的。攻击成功后通过利用SVCCTL漏洞获取目标主机服务。

三、学习中遇到的问题及解决

问题:在分析2中输入指令tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'后,提示:tcpflow: botnet_pcap_file.dat: No such file or directory,如图:

 

解决:将botnet_pcap_file.dat文件复制粘贴到当前目录下(\home\kali)就可以了。

 

问题:在分析2中输入指令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后,出啊显得结果与想象中不一样,如图:

解决:发现指令中有个笑脸,应该是输入法自动将“./”变成了表情,重新输入命令“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”就可以了。

四、实践总结

  这次实验内容比较多,花费了较长的时间才完成,比较考验人的耐心。并涉及到一些之前不知道的知识点,比如对恶意代码的脱壳与字符提取,对恶意代码进行分析等,也使用到了一些新的工具,例如PEiD、IDA、process explorer等等,拓宽了我网络攻防的知识面,提高了我动手操作的能力。对恶意代码的分析促使我学习了更多知识,也让我对知识的掌握更加牢固与透彻。

posted @ 2022-05-08 20:26  蔡蔡文姬  阅读(152)  评论(0编辑  收藏  举报