20199120 2019-2020-2 《网络攻防实践》第9周作业
20199120 2019-2020-2 《网络攻防实践》第9周作业
前言
作业 | 答案 |
---|---|
这个作业属于哪个课程 | 网络攻防实践 |
这个作业的要求在哪里 | 第九次作业 恶意代码基础知识和分析方法 |
我在这个课程的目标是 | 学习、提高网络攻防的本领 |
1.本章知识点总结
知识点——思维导图
2.实践过程
2.1 动手实践:恶意代码文件类型识别、脱壳与字符串提取
实践任务:对提供的rada恶意代码样本进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下① 使用文件格式和类型识别工具,给出rada恶意代码样本的格式文件、运行平台和加壳工具。
② 使用超级巡警脱壳机等脱壳软件,对rada恶意样本代码进行脱壳处理。
③ 使用字符串提取工具,对脱壳后的rada恶意代码进行分析,从中发现作者是谁
实验环境:WinXP Attacker虚拟机
步骤1:
- 首先利用file RaDa.exe命令查看RaDa.exe的文件类型,可知这是一个32位Windows PE可执行文件,并且有图形化窗口。
步骤2:
- 使用PEiD工具(查壳)来查看加壳的类型。在这里我们可以看到这个是一个版本为0.89.6的UPX壳,还可以看到文件的入口点、EP段、偏移、文件类型等信息
步骤3:
- 用strings RaDa.exe查看RaDa.exe中可打印字符串,发现都是乱码,这也验证了这是一个加壳程序,所以下一步是我们要进行脱壳
步骤4:
- 用超级巡警这个软件进行脱壳,这里也识别出了是一个UPX壳,脱完之后输出为RaDa_unpacked.exe
步骤5:
- 运行rada程序,并使用软件process explorer进行监控,查看程序属性,发现作者名字Raul siles&David Perze。
2.2 动手挑战:分析crackme程序
实践挑战:使用IDA Pro动态或静态分析crackme1.exe与crackme2.exe,寻找特定的输入,使其能输出成功的信息。分析crackme1.exe
步骤1:
- 对crackme1.exe进行执行,猜测参数执行,可以发现一个参数输入与其他的参数输入得到的输出明显不一样,所以可以猜测这个程序的输入是一个参数。
步骤2:
- 用IDA 工具来打开文件,尝试阅读其汇编语言,通过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”这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的反馈信息。
步骤3:
- 打开
function call
查看,发现输出函数fprintf
和printf
即为程序输出,则sub_401280
即为核心函数。
步骤4:
- 找到
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
步骤5:
- 尝试输入口令I know the secret,可以通过程序的测试。
分析crackme2.exe
步骤1:
- 通过Strings页面可以查看到该程序中出现的明文字符串
- crackme2.exe的分析同crackme1.exe,还是来看函数调用图,发现核心函数还是sub_401280。
步骤2:
- 看sub_401280的流程图,第一步同crackme1.exe相同,也是判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe,若是则判断第二个参数是否为I know the secret,若参数正确,此时的操作与上一个文件不太相同。
- 通过参数个数的判断后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和“crackmeplease.exe”进行判断
- 通过程序名判断后,用户输入的口令与”I know the secret”判断
步骤3:
- 测试:
copy crackme2.exe crackmeplease.exe
给程序改个名字,然后输入crackmeplease.exe "I know the secret"
2.2 样本分析实践:分析一个资质的恶意代码样本rada
回答以下问题:1.提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
2.找出并解释这个二进制文件的目的。
3.识别并说明这个二进制文件所具有的不同特性。
4.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
5.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
6.给出过去已有的具有相似功能的其他工具。
7.可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
- 使用MD5对该恶意程序进行摘要信息分析
步骤2:
- 执行
file RaDa.exe
分析该恶意程序的运行环境,结果为win32位程序,有图形界面
步骤3:
- 打开之前用过的监视工具
process explorer
和wireshark开启监听,点击运行恶意程序RaDa_uppacked.exe
,然后首先分析其程序运行详细信息如下:该恶意程序使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands
的网页上,然后分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹C:/RaDa/tmp
来保存其下载的文件,往下分析发现该恶意程序中可执行DDos拒绝服务攻击
步骤4:
- 继续分析,发现该恶意程序对主机注册表进行了读写和删除操作
步骤5:
- 往下分析发现了一些看似指令的字符,其中就认识几个,
put,get,sleep,screenshot
猜想其指令意思分别是上传,下载,休眠,屏幕截图
步骤6:
- 发现了一条和数据库查询语句相关的信息
步骤7:
- 用wireshark监听的数据分析一下,可以看到受害主机向目标主机10.10.10.10发送了大量的数据包
问题答案
1.用MD5: md5sum
计算 caaa6985a43225a0b3add54f44a0d4c7
,PE文件格式,运行在Windows 2000, XP and 2003及以上 版的操作系统中,UPX加壳并进行了壳伪装处理,UPX段改名为JDR,版本号从1.25改为0.99
2.后门工具 -> HTTP Bot?,能够使远程的攻击者完全地控制系统,它采用的通信方式使得只要系统能够通过浏览器上网,就能够获得来自攻击者的指令。
3.RaDa.exe被执行时,它会将自身安装到系统C盘中,并通过修改注册表的方式使得每次系统启动,启动后主要就是以下过程:
从指定的web服务器请求指定的web页面。
解析获得的web页面,获取其中的指令。
执行解析出来的指令,主要的指令上面给出。
等待一段时间后继续按照这个循环执行。
4.通过HTTP协议进行通信,RaDa通过调用隐藏的IE实例向web服务器发送请求,获取命令。
5
- 这个二进制文件使用UPX加壳之后又做了手工修改,使得难以脱壳,而不脱壳又会影响反汇编。
- 脱壳之后,可以在文件中找到字符串
Starting DDoS Smurf remote attack
这会使分析者误以为样本可以发动DDos攻击,而实际上它没有提供任何用以发动DDos攻击的子程序。 - 提供了—help参数,但是使用这个参数之后,除了输出版权信息外并没有提供其他有用的信息。--verbose参数也没有什么用处, GUI窗口中的
Show config
及Show usage
也显示与— help参数相同的信息。 - 通过查看网卡的MAC地址以及查看VMware Tools的注册表项来判断操作系统是否运行在VMware虚拟机上,如果是,则使用— authors参数时将不会输出作者信息。
6.海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接
7. 第一个实验已经做过,是Raul siles和David Perze于2004年编写的
2.3 取证分析实践:Windows 2000 系统被攻陷并加入僵尸网络
回答以下问题:1.IRC是什么? 当IRC客户端申请加入一个IRC网络时将发送哪个消息? IRC一般使用哪些TCP端口?
2.僵尸网络是什么? 僵尸网络通常用于什么?
3.蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通讯?
4.在这段观察期间,多少不同的主机访问了以 209.196.44.172为服务器的僵尸网络?
5.哪些IP地址被用于攻击蜜罐主机?
6.攻击者尝试攻击了哪些安全漏洞?
7.哪些攻击成功了?是如何成功的?
问题一
IRC是Internet Relay Chat的缩写,意思是互联网中继聊天,是一种透过网络的即时聊天方式,IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流。使用IRC服务器有两种方式:一种是快速开始,不需注册,只要填写昵称、服务器、频道,然后使用命令join[频道]
加入该频道;另一种是注册方式,填写昵称、用户信息、口令,再使用join加入频道。IRC 服务器明文传输通常在 6667 端口监听、 SSL 加密传输在 6697 端口等。
问题二
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的。利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息。Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。攻击者利用Botnet从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失
问题三
- 用wireshark打开botnet_pcap_file.dat,执行命令
ip.src == 172.16.134.191 && tcp.dstport == 6667
筛选源地址为蜜罐主机,目的端口为6667的包 - 观察到共5个IRC服务器,分别为
209.126.161.29
、66.33.65.58
、63.241.174.144
、217.199.175.10
、209.196.44.172
问题四
- 执行命令
tcpflow -r botnet.pcap "host 209.196.44.172 and port 6667"
,筛选host和端口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
,grep获取昵称输出,sed去除前缀,tr将空格转换为新行,tr -d去除\r,grep -v "^$"去除空行,sort -u排序并去重,wc计算行数。共3462台主机
问题五
- 执行命令
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
发现共有165个主机
问题六 七
- 先用
snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii
分析一下,发现绝大部分都是TCP和UDP包 - 执行命令
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端口 - 执行命令
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端口
- 响应的端口分别为: 135、 139 、 25 、 445 、 4899 、 80 、 137
- 用wireshark筛选出经过每个端口的数据包,筛选通过80端口的数据包
- 看到24.197.194.106向蜜罐发送了很多的A,可能在进行缓冲区溢出攻击
- 218.25.147.83进行了蠕虫攻击
3.实践总结
最后两个实践,分析题,感觉无从下手,在参考同学博客下才能完成,差距很大,好难,需要继续努力。