20211919 《网络攻防实践》第八次作业
1.实践内容
1.1 恶意代码基础知识
1.1.1 恶意代码定义与分类
恶意代码定义:恶意代码指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。
恶意代码类型:根据执行方式、传播方式和对攻击目标的影响分为计算机病毒、蠕虫、恶意移动代码、特洛伊木马、后门、僵尸程序、内核程序等。
计算机病毒:一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
蠕虫:自我复制机制与计算机病毒类似,是一类自主运行的恶意代码,并不需要将自身嵌入到其他宿主程序中。
恶意移动代码:属于移动代码范畴,移动代码是指可以从远程主机下载并在本地执行的轻量级程序,不需要或仅需要极少的人为干预。
后门:指一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。
特洛伊木马:一类伪装成有用的软件,但隐藏其恶意目标的恶意代码。
僵尸网络:攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的攻击网络。僵尸程序:用于构建僵尸网络以形成一对多控制攻击平台的恶意代码形态。
内核套件:在用户态通过替换或修改系统关键可执行文件,或者在内核态通过控制操作系统内核,用以获取并保持最高控制权的一类恶意代码,分为用户态Rootkit和内核Rootkit两种。
恶意代码的命名规则与分类体系
反病毒业界普遍采用”三元组命名“规则来对所发现的恶意代码新样本进行命名。
”三元组“:恶意代码类型、家族名称和变种号
形式:[恶意代码类型.]恶意代码家族名称[.变种号]
恶意代码类型上,有采用恶意代码发作的操作系统平台和应用程序;有采用对恶意代码的技术类别;有采用恶意代码编写的语言,同时在前缀恶意代码类型中经常混用多种分类维度
恶意代码家族名称上,不同反病毒厂商为争夺命名权,提升自己的影响力,经常对同一恶意代码样本进行各自命名
变种号:由反病毒厂商内部以比较随意的方式给定,通常是以”a,b,c“等小写字母来编写,也有少数厂商以阿拉伯数字进行编码区分
基于多维度标签的恶意代码技术形态分类方法:在恶意代码工作机理中最为核心的传播、控制、隐藏和攻击这些关键技术环节中,有着一些具有特异性的特性,可以通过为恶意代码样本添加技术环节维度上的分类标签,从而识别出该样本所具有的一种或多种特性。
1.1.2 恶意代码发展趋势
(1)恶意代码的复杂度和破坏力逐渐增强
(2)恶意代码技术的创新越来越频繁
(3)关注重点从计算机病毒转移到
1.1.3 计算机病毒
1.1.4 网络蠕虫
1.1.5 后门与木马
后门为供给者提供多种不同类型的访问通道:本地权限提升和本地账号、单个命令的远程执行、远程命令行解释器访问、远程控制GUI和无端口后门等等。
特洛伊木马程序可以用于以下目的:欺骗用户或者管理员安装木马程序;隐藏在计算机的正常程序之中,通过与后门程序结合形成木马后门。
1.1.6 僵尸程序与僵尸网络
僵尸网络:攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
僵尸网络的功能结构
僵尸程序的命令与控制机制:基于IRC协议的命令与控制机制、基于HTTP协议的命令与控制机制和基于P2P协议的命令与控制机制.
1.1.7 Rootkit
Rootkit定义:一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。
应用程序级木马后门、用户模式Rootkit和内核模式Rootkit位置对比。
1.2 恶意代码分析方法
恶意代码分析与针对良性代码和软件的程序分析技术,都可以采用通用的代码分析技术来作为基础,主要包括静态分析和动态分析方法,来对代码进行逆向工程(Reverse Engineering)来确定其功能。
(1)恶意代码分析环境
- 恶意代码发烧友的分析环境
- 基于虚拟化构建恶意代码分析环境
(2)恶意代码静态分析技术 - 反病毒扫描
- 文件格式识别
- 字符串提取分析
- 恶意代码实例名
- 帮助或命令行选项
- 用户会话
- 后门口令
- 相关URL信息、Email地址
- 包含库文件和函数调用
- 二进制结构分析
- 反汇编与反编译
- 代码结构与逻辑分析
- 加壳识别与代码脱壳
(3)恶意代码动态分析技术 - 基于快照对比的分析方法和工具
- 系统动态行为监控方法:文件行为监控软件、进程行为监控软件、注册表监控软件、本地网络栈行为监控软件
- 网络协议栈监控方法
- 沙箱技术
- 动态调试技术
2.实践过程
2.1 动手实践任务一
解压下载的压缩文件,将RaDa放入虚拟机Windows attck的桌面,同时打开终端,先cd 桌面
进入桌面后输入file RaDa.exe
,查看该文件类型,这是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。
接着使用PEiD工具查看文件加壳类型。加壳的目的是为了增加逆向难度。可以看到这个是一个版本为0.89.6的UPX壳(压缩壳)
输入strings RaDa.exe
,查看 RaDa.exe中可打印字符串,发现全是乱码,这说明被加壳了
接下来使用超级巡警进行脱壳,选择相应的路径,发现支持脱壳。
按下给我脱,脱壳成功,发现生成了一个新文件RaDa_unpacked.exe(脱壳文件)
查看桌面,果然可以看到这个文件。
再用 strings 查看脱壳后的RaDa_unpacked.exe,发现了脱壳后的恶意程序的可打印字符串。
这时候用 IDA Pro Free 打开这个文件,查看详细信息,可以找到作者为DataRescue sa/nv,邮箱为ida@datarescue.com。
2.2 动手实践任务二:分析Crackme程序
首先检查一下两个文件的完整性,计算其 md5 值.
使用file命令查看其文件类型,可以看到这两个文件都是32位windows下PE文件.
对crackme1.exe进行分析,试探输入格式。在接受一个参数的时候输出信息与其他不同,猜测该程序接受一个参数。
接下来利用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”这两个字符串。由此我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的输出信息。
接下来看函数调用图(Function Call)可以发现:关键的部分在sub_401280这里,程序是使用strcmp函数来输入的,然后利用print和fprint函数输出。
下面来看sub_401280流程图,看到cmp [ebp+arg_0],2
,其用来判断程序是否有两个参数(第二张图倒数第三行)。
继续分析,可以看到其他几条口令。
猜测正确的口令应该是"I know the secret",输入命令运行改口令,可以得到这样一条回复"You know how to speak to programs,Mr.Reverse-Engineer"。成功。
程序crackme2.exe的分析过程与之类似,先打开Function call(函数调用图),发现关键的部分在sub_401280这里。
下面来看sub_401280,内容与上一个文件基本一致,大致可以判断出关键口令为I know the secret,只是从下图可以看到,代码逻辑中的程序名称改变了,变成了:crackmelpease.exe.因此需要对程序名称进行修改。
输入copy crackme2.exe crackmeplease.exe
将程序复制并命名为crackmeplease.exe,输入crackmeplease.exe "I know the secret",得到的反馈信息为We have a little secret: Chocolate.成功。
2.3 分析一个自制恶意代码样本rada
查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要。利用file RaDa.exe识别出这是32位GUI文件.
接下来打开监听工具process explorer对RaDa.exe进行检测,如图发现该程序用http连接到目标为10.10.10.10的主机下名为RaDa——commands的网页上,创建文件夹C:\RaDa\tmp保存下载文件,进行DDOS拒绝服务攻击,将RaDa.exe复制到C:\RaDa\bin。该程序还依次读、写和删除注册表,打开注册表查看发现没有信息,则表示已删除。接下来执行exe(执行指定命令)、put(将宿主主机中的指定文件上传到服务器)、get(将服务器中的指定文件下载到宿主主机中)、screenshot(截取宿主主机的屏幕并保存到tmp文件夹)、sleep(停止活动一段时间)
接下来使用IDA对RaDa_unpacked.exe进行分析(该程序在第一个实践中已经被脱壳了),进入Strings对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode。
在Strings里查看参数,可以看到作者信息。
在strings中点击IP地址: http://10.10.10.10/RaDa,
定位到相应位置后,由上述分析,用http连接到目标为10.10.10.10的主机下名为RaDa——commands.html,对应的函数为sub_404FB0,点击进入此函数,得到汇编代码如图,这个字符串被拷贝到dword_40C030变量中.
下面依次回答提出的问题。
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
答:文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件,同时也是一个UPX加壳文件。
2、找出并解释这个二进制文件的目的;
答:这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统,并且只要用户上网,就可以得到到攻击者的攻击指令。
3、识别并说明这个二进制文件所具有的不同特性;
答:该程序运行的时候建立远程连接并修改注册表,将下载的文件存储到C:\RaDa\tmp,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
答:UPX 加壳技术。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
答:不具有传播和感染的性质,故不属于病毒和蠕虫,同时也未将自己伪装成良性程序以,不是特洛伊木马,排除各种可能后这应该是一个后门程序。
6、给出过去已有的具有相似功能的其他工具;
答:Bobax、Setiri、Rootkit等。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
2004年,由Raul siles和David Perze二人编写
2.4 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
答:
- IRC是因特网中继聊天(Internet Relay Chat)的简称。
- 申请加入时需要发送的消息有三种,分别是口令,昵称和用户信息。注册完成后,客户端就可以使用JOIN 信息来加入频道。
- IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
答:
- 僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
- 僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
答:首先通过Wireshark打开数据文件botnet_pcap_file.dat,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 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为服务器的僵尸网络?
答: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.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml,report.xml
5、那些IP地址被用于攻击蜜罐主机?
答:输入tcpdump -n -nn -r botnet.pcap '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文件,找到148个被攻击的端口存储在1.txt中。
其中tcpdump -nn: 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;uniq命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数。
6、攻击者尝试攻击了那些安全漏洞?
答:使用指令筛选出蜜罐主机相应的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
可以看到有135、139、25、445、4899、80。
用wireshark打开文件botnet.pcap,分析个端口,wireshark中使用条件tcp.dstport==80 && ip.dst == 172.16.134.191
进行筛选,这些是目标地址为172.16.134.191、目标端口为80的数据包。
在80端口上,发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,可能正在输入什么命令获得蜜罐的机密消息。
再使用tcp.dstport==445 && ip.dst == 172.16.134.191
来看TCP 445号端口,发现一个PSEXESVC.EXE字符串,是由61.111.101.78发起的,这似乎是一个类似于telnet的远程控制程序,某些反病毒扫描程序会报告其中的一个或多个工具感染了“远程管理”病毒。
再看,通过字符串信息可以知道主机210.22.204.101对蜜罐使用了LAN Manager口令猜测,并且成功攻击。
7、那些攻击成功了?是如何成功的?
答:见上问。
3.学习中遇到的问题及解决
1、开始无法将RaDa拖拽到虚拟机里面,后查阅资料发现是VMware Tools工具出错,重新安装以后可以使用。
2、在实验四中,使用tcpflow -r botnet_pcap_file.dat'host 209.196.44.172 and port 6667'时,输入错botnet_pcap_file的地址,导致错误。一定要注意自己在哪,再去定地址。
4.实践总结
这次的实验后两个实践太难了,分析无从下手,都是参考其他人做的,要学的东西还有很多。