20199305 2019-2020-2 《网络攻防实践》第九周作业

20199305 2019-2020-2 《网络攻防实践》第九周作业

一、前言

问题 回答
作业属于 https://edu.cnblogs.com/campus/besti/19attackdefense
作业要求 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553
课程目标 学习教材第九章,完成课后实践

二、知识梳理

1、恶意代码基础知识

(1)恶意代码定类和分类

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

恶意代码的类别:

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

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

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

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

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

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

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

2、恶意代码发展趋势

  • (1)恶意代码的复杂度和破坏力逐渐增强

  • (2)恶意代码技术的创新越来越频繁

  • (3)关注重点从计算机病毒转移到蠕虫和内核级攻击工具

3、计算机病毒

(1)计算机病毒基本特性

  • 感染性:最本质的特性

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

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

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

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

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

  • 可执行文件

  • 引导扇区

  • 支持宏指令的数据文件

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

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

(4)计算机病毒传播渠道

  • 计算机病毒的传播渠道主要是移动存储、电子邮件下载、共享目录等

4、网络蠕虫

(1)网络蠕虫的特性

网络蠕虫起步晚,但破坏性远超前几代,且无需借助人类外力即可自动复制传播,且网络蠕虫的传播必须借助网络,下图为网络蠕虫与计算机病毒的区别

网络蠕虫 计算机病毒
特性 通过网络自动传播 感染宿主文件/扇区
宿主 无需宿主 需要宿主
传播是否需要借助人类帮助 无需帮助 需要帮助

(2)网络蠕虫组成结构

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

5、后门与木马

(1)两者异同

  • 单论定义而言,后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法,而木马则是一种隐藏恶意功能“装好人”的软件。将提供对受害计算机远程控制的程序均视为木马是错误的,他们应该被视为后门,在我看来,木马属于一个更小的概念,即将后门工具伪装成良性程序,才应该是木马。

6、僵尸程序

(1)什么是僵尸网络?

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

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

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

(3)僵尸程序工作机制

  • 渗透攻击

  • 加入服务器

  • 动态影射至IRC服务器

  • 加入IRC信道

  • 监听命令

  • 接收命令

  • 执行攻击

7、内核模式Rookit

(1)什么是Rookit?

  • Root账户是至高无上的跟用户,因此也是攻击者永远的追求目标,而维持一个被攻击主机的Root权限就是骇客们开发的这款恶意程序的目的。这是一款特洛伊木马后门工具,通过修改现有的操作系统软件,是攻击者获得访问权并隐藏在计算机中。

(2)内核模式

  • 内核模式Rootkit的攻击目标直接面向操作系统的控制核心——内核,能更加有效地破坏计算机,大多数内核模式的Rootkit采用以下几种技术手段:

  • 文件和目标隐藏

  • 进程隐藏

  • 网络端口隐藏

  • 混杂模式隐藏

  • 改变执行方向

  • 设备截取和控制

8、恶意代码分析方法

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

区别项目 恶意代码分析 良性代码分析
目的公开性 目的未知 目的公开明确
目的恶意性 恶意目的,需要受控环境 良性,无需受控环境
是否存在源码 绝大多数情况无源码,二进制分析 开源软件存在源码,闭源软件二进制分析

(1)恶意代码分析环境

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

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

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

  • 反病毒扫描

  • 文件格式识别

  • 字符串提取分析

  • 恶意代码实例名

  • 帮助或命令行选项

  • 用户会话

  • 后门口令

  • 相关URL信息、Email地址

  • 包含库文件和函数调用

  • 二进制结构分析

  • 反汇编与反编译

  • 代码结构与逻辑分析

  • 加壳识别与代码脱壳

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

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

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

  • 网络协议栈监控方法

  • 沙箱技术

  • 动态调试技术

三、动手实践

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

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

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

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

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

(1)解压下载的压缩文件,将RaDa放入虚拟机Windows attck的C盘中,同时打开终端,输入file RaDa.exe,查看该文件类型,这是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序

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

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

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

(4)接下来使用超级巡警进行脱壳,选择相应的路径,发现支持脱壳

按下给我脱,脱壳成功,发现生成了一个新文件RaDa_unpacked.exe(脱壳文件)

打开RaDa文件夹,果然可以看到这个文件

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

(6)这时候用 IDA Pro Free 打开这个文件,查看详细信息,可以在字符串这一栏中看到作者为Raul Siles David Perze


2、分析 Crackme 程序

(1)首先检查一下两个文件的完整性,计算其 md5 值

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

(3)对 crackme1.exe 进行分析,可以发现,在接受一个参数6时,程序的输出为不好意思,能再说一遍吗?,其他的都是您是不是遗漏了什么?,所以我们猜测该程序的输入为一个数。

(4)接下来利用 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”这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的输出信息。

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


(6)下面来看sub_401280,cmp [ebp+arg_0],2为判断程序是否有两个参数。在 C 语言中,主函数通常为int main(int argc,const char **argv),即第一个参数argc对应argv的大小,第二个参数对应命令行的格式。如在命令行输入crackme1.exe 1,那么参数对应的值为argc=2,argv={”crackme1.exe”,”1”}


(7)再往下看,可以看到其他几条口令

(8)猜测正确的口令应该是I know the secret,输入命令运行改口令,可以得到这样一条回复您知道如何与项目对话,逆向工程师先生,成功

(9)程序 crackme2.exe 的分析过程与之类似,先打开Function call(函数调用图),发现关键的部分在sub_401280这里

(10)下面来看sub_401280,内容与上一个文件基本一致,大致可以判断出关键口令为I know the secret,只是从下图可以看到,代码逻辑中的程序名称改变了,因此需要对程序名称进行修改

(11)修改完后运行文件,输入crackmeplease.exe "I know the secret",发现回复为我有一个小小的秘密:巧克力,成功

四、实践分析

1、样本分析,分析一个自制恶意代码样本

实践任务:现在你作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术:

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

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

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

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

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

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

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

(1)查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要。利用file RaDa.exe识别出这是32位GUI文件

(2)接下来使用 IDA 对RaDa_unpacked.exe进行分析(该程序在第一个实践中已经被脱壳了),进入 Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode。

(3)查看命令行参数:可以看到作者

(4)找到一个 IP 地址,一些大佬们用wireshark发现该程序被执行后访问了这个地址,得到RaDa_commands.html,可以从上图中画红色圈圈的地方看到其对应的函数为sub_404FB0

(5)进入这个函数,看黄色部分的汇编代码,可以看到其被参数40C030替换,找到该位置,看到该参数对应的函数是sub_4052C0

(6)我们搜索4052C0,打开其Call Graph查看。这里我们看到三个私有网段分别为192.168.、172.16.、10.先确保服务器在私有网段中,然后到服务器去取命令文件

问答

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

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

Q:找出并解释这个二进制文件的目的。

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

Q:识别并说明这个二进制文件所具有的不同特性。

  • A:它会自动安装到C盘中,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令。

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

  • A:UPX 加壳技术

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

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

Q:给出过去已有的具有相似功能的其他工具。

  • A:木马Bobax、海阳顶端、木马Setiri等

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

  • A:2004年,由Raul siles和David Perze二人编写

2、取证分析,Windows 2000系统被攻破并加入僵尸网络

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

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

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

  • 蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?

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

  • 哪些IP地址被用于攻击蜜罐主机?

  • 攻击者尝试了哪些安全漏洞?

  • 哪些攻击成功了?是如何成功的?

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

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

  • 注册时需要发送的消息有三种,分别是口令,昵称和用户信息

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

Q:僵尸网络是什么?僵尸网络通常用于干什么?

  • 僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。

  • 僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

Q:蜜罐主机(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

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

  • 这里一般需要装一下sudo apt-get install tcpflow,然后输入命令tcpflow -r botnet_pcap_file.dat'host 209.196.44.172 and port 6667'获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,得三个文件,172.016.134.191.01152-209.196.044.172.06667209.196.044.172.06667-172.016.134.191.01152report.xml,report.xml


Q:哪些IP地址被用于攻击蜜罐主机?

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

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

Q:攻击者尝试了哪些安全漏洞?

  • 输入snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii查看一下网络流分布情况。大部分都是TCP包,所以我们首先应该筛选出响应的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

  • 顺便筛选出UDP端口

  • 用wireshark打开文件botnet.pcap,分析个端口,wireshark中使用条件tcp.dstport==80 && ip.dst == 172.16.134.191进行筛选,这些是目标地址为172.16.134.191、目标端口为80的数据包。个人未发现攻击现象(大神们说IIS服务器的漏洞被攻击,但我不知道在哪儿)

  • 再看80端口下一个ip地址218.25.147.83,在tcp流中看到c:\notworm(蠕虫攻击)

  • 输入tcp.dstport==139 && ip.dst == 172.16.134.191查看139号端口。可以看到有很多主机连接到这个端口的,但是基本都是一样的,大部分都是连接,个人未察觉到异常

  • tcp.dstport==445 && ip.dst == 172.16.134.191来看TCP 445号端口,发现一个PSEXESVC.EXE字符串,是由61.111.101.78发起的,我搜索了一下这个字符串,感觉和大神们的描述不太一样,这似乎是一个类似于telnet的远程控制程序,某些反病毒扫描程序会报告其中的一个或多个工具感染了“远程管理”病毒。这些 PsTools 都不带病毒,但是如果病毒使用了这些工具,则它们可能触发病毒通知。

  • 再看,通过字符串信息可以知道主机210.22.204.101对蜜罐使用了LAN Manager口令猜测,并且成功攻击

  • 而接下来的135``25``137端口经过检查均未发现养鸡场

Q:哪些攻击成功了?是如何成功的?

  • 通过上面的分析可知,成功的攻击发起者是218.25.147.83(蠕虫攻击)和 61.111.101.78( LAN Manager 口令猜测)

五、总结与反思

本章作业知识点涉及面广,但具有逻辑上的先后顺序,不难理解,前两个实践内容难度是适中,但后两个实践的分析较难,许多内容不是因为时间太久已经遗忘就是未曾学习过,而且题量很大,所以花费了较长时间,对于我而言,每次实验都是一场挑战

六、问题与解决

1、在统计UDP端口数时,显示没有此类文件按,发现是因为文件名少加了.dat

七、参考资料

1、psexec

2、什么是病毒、木马、蠕虫?蠕虫病毒和木马有什么区别?

3、IRC操作

posted @ 2020-04-28 14:24  20199305易子晗  阅读(1491)  评论(0编辑  收藏  举报