20199134 2019-2020-2《网络攻防实践》第9周作业
20199134 赵兴波 《网络攻防实践》第9周作业
1.实践内容
1.1恶意代码基础知识
- 定义
恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集。 - 类型
- 计算机病毒
- 定义:一种能够自我复制的代码,通过将自 身嵌入其他程序进行感染,而感染过程通常需要人 工干预才能完成 。
- 基本特性:感染性、潜伏性、可触发性、破坏性、衍生性
- 蠕虫
- 定义:一种通过网络自主传播、自我复制的独立恶意代码。
- 传播机制:主动攻击网络服务漏洞、通过网络共享目录、通过邮件传播。
- 后门
- 允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供通道。
- 木马
- 木马是看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
- 僵尸程序与僵尸网络
- 僵尸网络是攻击者传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。 僵尸程序是攻击者用于一对多控制目标主机的恶意代码 。
- 僵尸网络命令与控制机制包括:(1)基于IRC协议的命令与控制机制(2)基于HTTP协议的命令与控制机制(3)基于P2P协议的命令与控制机制
- Rootkit
- 隐藏性恶意代码形态,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。
- 类型: 用户模式、内核模式。二者对比如下图:
- 计算机病毒
1.2恶意代码分析方法
- 分类:
-
静态分析
- 定义:通过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。
- 静态分析技术如下图:
-
动态分析
- 定义:通过在受控环境中执行目标代码,以获取目标代码的行为及运行结果。
- 技术手段:快照比对、动态行为监控、网络监控、沙盒、动态跟踪调试。
-
- 分析环境
- 分析恶意代码的关键点在于建立受控环境,恶性代码与良性代码的区别如下图:
- 分析恶意代码的关键点在于建立受控环境,恶性代码与良性代码的区别如下图:
2.实践过程
2.1动手实践:恶意代码文件类型识别、脱壳与字符串提取
- 题目:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,获得rada恶意代码的编写作者。
- 实践步骤:
- 使用文件格式和类型识别工具,给出rada恶意代码样本的格式文件、运行平台和加壳工具。
- 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
- 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,确定rada恶意代码的编写作者。
- 过程
-
使用
file
命令查看rada的文件类型为32位操作系统下的PE文件,有GUI界面。
-
使用
PEiD
工具查看rada的基本信息。可以看到文件的入口点、偏移、EP段及加壳类型(UPX壳)
-
下面用
strings RaDa.exe
查看RaDa.exe
中可打印字符串,发现都是乱码
-
使用超级巡警工具对文件进行脱壳
-
使用
strings
命令查看脱壳后的ada.exe
中可打印的字符串,可以发现有大量的函数调用名
-
使用
IDA Pro Free
反编译软件打开脱壳之后的.exe文件,可以看到作者身份和邮箱地址
-
2.2动手实践:分析crackme程序
-
题目:给定的两个
crackme
,通过使用 IDA pro 工具或者其他调试工具,猜测出其口令,通过其测试 -
过程
-
使用
file
命令查看文件类型,看到均为windows系统下运行的32位可执行程序,且没有图形界面,仅使用控制台操作
-
在
cmd
中直接运行该程序查看输出,当输入一个参数和两个参数时,得到了两种不同的反馈。
-
使用
IDA pro
工具来打开文件。在Strings
页面可以查看到该程序中出现的明文字符串,推测“You know how to speak to programs, Mr. Reverse-Engineer”
就是输入口令正确时程序的反馈信息
-
验证猜想,正确
-
打开
function call
查看,sub_401280
为关键程序段,stump
为c语言编写,使用字符串匹配密码。
-
找到
sub_401280
函数的流程图,发现该函数首先判断参数个数是否为2,若参数个数不为2时都输出I think you are missing something
,若参数个数为2,则将第二个参数与字符串I know the secret
作比较,正确则输出You know how to programs
。
-
接下来对
crackme2.exe
进行破解。使用IDA pro
工具来打开文件,查看函数调用情况,程序关键的部分在sub_401280
-
还是来看
sub_401280
的流程图,第一步同crackme1.exe
相同,也是判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe
,若是则判断第二个参数是否为I know the secret
,若参数正确,此时的操作与上一个文件不太相同。
-
着重看一下两个参数都正确了之后的输出操作, 首先对一个临时变量设置了初始值
mov [ebp+var_4], 0
,接下来[ebp+var_4]
与21h进行比较 , 不大于则执行_putchar
输出 。判断时采用的是一个循环, 将unk_403080
中的字符逐个与0x42
进行异或运算 。
-
尝试一下
-
2.3实践作业:样本分析
- 题目:深入分析rada,回答以下问题:
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
- 找出并解释这个二进制文件的目的。
- 识别并说明这个二进制文件所具有的不同特性。
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
- 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
- 给出过去已有的具有相似功能的其他工具。
- 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
- 过程
-
使用MD5对该恶意程序进行摘要信息分析,md5摘要值为
caaa6985a43225a0b3add54f44a0d4c7
。
-
如之前一样做脱壳处理后分析。打开
proceed
和wireshark
进行监听,运行RaDa.exe
文件。 -
进行分析,可以发现访问了
http://10.10.10.10/RaDa
网址,下载了一个文件保存到C:\RaDa\tmp
文件。也对主机的注册表进行了修改和删除的操作
-
打开
wireshark
,可以发现受害机与10.10.10.10
的主机发送信息。
-
用
IDA
打开进行静态分析,查看全部字符串之前先把类型改为unicode
-
在明文字符串信息中找到作者的信息。
-
回答问题:
- 二进制文件摘要信息:MD5摘要信息:
caaa6985a43225a0b3add54f44a0d4c7
。PE格式:运行在Windows 2000,XP and 2003
及以上版的操作系统中。使用了UPX加壳工具进行了加壳处理 - 目的:下载后门到目标主机,发动拒绝服务攻击,可远程与目标主机通信。
- 不同特性:启动后会自动访问
10.10.10.10
,下载得到RaDa.Commend.html
并获得指令 - 防分析技术:加壳技术
- 对恶意代码样本进行分类:分析过程中未发现该恶意代码具有传播和感染的性质,该恶意代码的主要功能是远程获得指令并在靶机上进行相应操作,应该是一个后门程序
- Bobax,2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。还有特洛伊木马Setiri。
- Raul siles和David Perze,2004年。
- 二进制文件摘要信息:MD5摘要信息:
-
2.4实践作业:取证分析
- 题目:一个未设置管理员密码的Windows 2000蜜罐主机,被攻击后加入了一个僵尸网络,在蜜罐主机运营期间,共发现了15164个不同主机加入了这个僵尸网络。用Snort工具收集的该蜜罐主机5天的网络流日志,并通过编辑去除了一些不相关的流量并将其 组合到了单独的一个二进制网络日志文件中,同时IP地址和一些 其他的特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。分析这个日志文件并回答以下给出的问题。
- IRC是什么? 当IRC客户端申请加入一个IRC网络时将发送哪个消息? IRC一般使用哪些TCP端口?
- 僵尸网络是什么? 僵尸网络通常用于什么?
- 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通讯?
- 在这段观察期间,多少不同的主机访问了以 209.196.44.172为服务器的僵尸网络?
- 哪些IP地址被用于攻击蜜罐主机?
- 攻击者尝试攻击了哪些安全漏洞?
- 哪些攻击成功了?是如何成功的?
1.IRC是什么? 当IRC客户端申请加入一个IRC网络时将发送哪个消息? IRC一般使用哪些TCP端口?
- 是一种互联网上中继聊天的协议,IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
- 申请加入的时候要发送口令、昵称和用户信息:
USER <username> <hostname> <servername> <realname>
、PASS <password>
、NICK <nickname>
。 - 明文传输时使用
tcp6667
端口,ssl加密时用6697
端口。
2.僵尸网络是什么? 僵尸网络通常用于什么?
- 僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
- 僵尸网络,是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”
3.蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通讯?
-
用wireshark打开所给的文件,输入
ip.src == 172.16.134.191 && tcp.dstport == 6667
进行筛选
-
发现蜜罐主机与5台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为服务器的僵尸网络?
-
首先用指令
tcpflow -r botnet.pcap "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
进行搜索
-
可以发现共有3457个
5.哪些IP地址被用于攻击蜜罐主机?
-
使用指令
tcpdump -n -nn -r botnet.pcap '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个被攻击的端口
6.攻击者尝试攻击了哪些安全漏洞?哪些攻击成功了?是如何成功的?
-
使用snort -r botnet.pcap -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况,发现主要是TCP包
-
然后使用指令
tcpdump -r botnet.pcap -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
,查看一下TCP响应过的端口
-
响应的端口分别为:
135、139、25、445、4899、80
-
用wireshark筛选出经过每个端口的数据包
-
筛选通过
80端口
的数据包,tcp.dstport==80 && ip.dst == 172.16.134.191
-
发现
24.197.194.106
与蜜罐的有交互连接数最多,有883次,使用snort
对该部分数据包进行扫描,发现大部分报警信息都为WEB-IIS
、WEB-CGI
、WEBFRONTPAGE
、WEB-MISC
,不成功。 -
tcp 4899
端口,4899端口是一个被广泛破解和使用的商业远程控制软件radmin,攻击者通过上传radmin可以实现对靶机的控制。成功。
-
筛选通过```445端口``的数据包,看到了一个奇怪的后缀,查询后知道这是蠕虫病毒的一个工具(PSEXEC工具原理是通过ipc$连接,然后释放psexesvc.exe到目标机器)
3.学习中遇到的问题及解决
- 问题1:tcpflow安装更新失败,kali连不上网
- 问题1解决方案:这是个"老大难"问题,感觉自己的实践就是跟网络的斗争,根据以往经验没有解决问题,就是连不上,啊啊啊啊
最后移除,重新安装。试了太多方法,我也不知道哪个好使了,反正就是能用了。
4.实践总结
碰见需要分析的题就莫名的头大,花了很长时间也没有多少进展(网络还不给面子,总是出问题)
查看资料,查看同学微博,还能做的快一些。