20199323 2019-2020-2 《网络攻防实践》第9周作业
1.实践内容
9.1恶意代码基础知识
定义
- 定义:使计算机按照攻击者的意图执行以达到恶意目标的指令集。
恶意代码类型
- 计算机病毒:能自我复制,通过自身嵌入其他程序进行感染,感染要人工干预。
- 蠕虫:复制过程和计算机病毒类似,一把通过主动扫描和攻击网络服务的漏洞进行传播。一般不需要人工干预。
- 恶意移动代码:在本地系统执行一些用户不期望的恶意动作的移动代码,移动代码通常在web端实现。
- 后门:能绕开正常的安全控制机制,为攻击者提供访问途径的一类恶意代码。
- 特洛伊木马:伪装成有用的软件,但隐藏恶意目标的恶意代码。
- 僵尸网络:攻击者处于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的攻击网络。
- 内核套件:在用户态通过替换或修改系统关键可执行文件,或者在内核态通过控制操作系统内核,用以获取最高控制权的恶意代码。
计算机病毒
- 基本特性:感染性、潜伏性、可触发性、破坏性、衍生性
- 感染及引导机制:可执行文件(感染方式包括前缀感染机制、后缀感染机制、插入感染机制)、引导扇区(感染引导区的引导记录)、支持宏指令的数据文件
- 传播机制:通过移动存储、电子邮件及下载、共享目录等传播。
网络蠕虫
- 基本特性:自我复制、感染性、通过网络自主的传播、不需要宿主、直接通过网络传播、不需要用户交互
- 组成结构:弹头(侵入系统的攻击代码包括缓冲区溢出攻击、文件共享攻击、文件共享攻击、利用电子邮件传播等)、传播引擎(常用传输机制FTP、小文件传输协议TFTP、HTTP、SMB及原始socket套接字等)
- 有效载荷:植入后门、安装分布式拒绝服务攻击代理、组建僵尸网络、执行复杂的计算
后门与木马
- 后门工具为攻击者提供不同类型的的访问通道:本体权限提升和本地帐号、单个命令的远程执行、远程命令行解释器访问、远程控制GUI、无端口后门
僵尸程序与僵尸网络
- 主流僵尸网络命令与控制机制基于IRC协议的命令和控制机构、基于HTTP协议的命令和控制机构、基于P2P协议的命令与控制机构。
Rookit
- 分类:用户模式Rookit、内核模式Rookit和虚拟机模式Rookit
- 用户模式Rookit:: linux系统下主要包含:提供后门的二进制程序、隐藏攻击者的二进制程序、用于隐藏但不替换的二进制程序和安装脚本等。windows下主要包含:通过接口在程序注入恶意代码、关闭WPF机制重写文件和利用DLL注入机制操纵正在进行的进程
- 内核模式Rookit:linux系统下利用LKM可装载内核模块的内核扩展机制,windows广泛使用利用恶意设备驱动程序和修改内存中当前运行的内核
9.2恶意代码分析方法
- 恶意代码分析技术方法主要分为静态分析和动态分析
2.实践过程
实践任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码进行脱壳处理。
(3)使用字符串提取工具,对脱壳后的rada代码进行样本分析,从中发现rada恶意代码的编写作者是谁
1、输入file RaDa.exe查看文件类型
它是一个32位的Windows PE可执行文件,并且有图形化窗口。
2、使用PEID查看RaDa.exe的基本信息
可以看到它的加壳工具UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo。
3、用strings查看RaDa.exe中的可打印字符串,发现是乱码,因为加了壳:
4、脱壳,利用超级巡警之虚拟机自动脱壳进行脱壳,输出RaDa_unpacked.exe:
脱完后打印,脱壳完成。
没有发现关于作者的内容,这里用process explorer监测到作者是
动手实践Crackme程序
实践挑战:使用IDA Pro静态或动态分析crackme1.exe与crackme2.exe,寻找特定的输入,使其能输出成功信息。
输入一个参数时与其他对比明显不一样,所以这个程序输入应该是1个参数
然后用IDA打开crackme1.exe,根据strings的反馈我们可以看出我们的猜测是正确的。
查看它的流程图
发现关键部分在sub_401280部分,
然后我们根据这个流程图发现jz后面判断正确后,有一个注释是“I know the secret”猜测是要输入的内容,输入后果然正确
crackme2.exe同理
其中的test是对比,如果正确,就jz跳转到正确的断点处,不正确,就跳转到不正确的地方,这个命令比较复杂,需要先与“crackmeplease.exe”对比,有个strcmp函数对字符串进行判断,再和用户口令“I know the secret”对比。
验证一下
结果如流程图一样输出正确。
分析一个自制恶意代码样本rada
1、使用MD5对该恶意程序摘要分析
2、我们直接分析脱壳后的程序就可以了,用process explorer监测,发现它http://10.10.10.10/RaDa网址,下载了一个文件保存到C:\RaDa\tmp文件
并且使用了DDOS攻击
打开wireshark点击程序,会检测到发送的包
问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
该文件md5值为caaa6985a43225a0b3add54f44a0d4c7
(2)找出并解释这个二进制文件的目的。
ddos 攻击
(3)识别并说明这个二进制文件所具有的不同特性。
执行后将自身复制到C:\RaDa\bin,并且恶意修改注册表
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
使用了UPX加壳因为直接访问是乱码。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
该代码没有感染性也不会自主传播,因此不是病毒和蠕虫。wireshark追踪tcp找不到任何信息,改代码没有隐藏自身为正常程序骗用户执行,因此也不是木马。该程序可能属于后门程序,因为是从服务器下载命令,个人感觉比较可能是僵尸程序。
(6)给出过去已有的具有相似功能的其他工具。
例如Zeus,Setiri及GatSlag等僵尸程序
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
这个第一个实践找出了作者
取证分析实践
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(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是因特网中继聊天(Internet Relay Chat)的简称。
申请加入前要先注册,注册时需要发三种信息:
用户信息USER
口令PASS 以及昵称NICK
注册完成后,客户端就可以使用JOIN 信息来加入频道,IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口
(2)僵尸网络是攻击者出于恶意目的,通过传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络
通常用于发动分布式拒绝服务攻击(DDoS)、发送垃圾邮件、窃取隐私信息等。
(3)打开wireshark,打开botnet_pcap_file.dat,明文通信端口6667端口,ip.src == 172.16.134.191 && tcp.dstport == 6667筛选,找到5个
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为服务器的僵尸网络。首先安装安装tcpflow工具
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"提取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,
report.xml包含了另外2个文件相关联的信息
如源IP和目的IP等信息
然后用命令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
计算访问主机的个数3462个
(5)用wireshark统计分析ip目的地址为 172.16.134.191则可以查看攻击主机的IP
(6)snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii,发现大部分都是TCP包,有一部分UDP包,所以我们首先应该筛选出响应的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端口
ip.dst == 172.16.134.191 and tcp.dstport==80筛选连接蜜罐主机80端口的包,发现24.197.194.106不断地在进行攻击,应该是在用脚本攻击IIS服务器
218.25.147.83也是异常长的数据包,在tcp流中看到c:\notworm说明这是一个蠕虫攻击,但看到最后发现大概是蠕虫
210.22.204.101攻击者发送了异常长的数据包,是想通过缓冲区溢出攻击
3.学习中遇到的问题及解决
- 问题1:最后一个实验不太理解参考了其他同学的
4.实践总结
掌握了还有好多不懂的,还要多向别人学习。