202111911 2021-2022-2 《网络攻防实践》实践八报告
1.实践内容
恶意代码基础知识
恶意代码定义:使计算机按照攻击者的意图执行以达到恶意目标的指令集
恶意代码类型:根据其执行方式、传播方式和对攻击目标的影响分为计算机病毒、蠕虫、恶意移动代码、特洛伊木马、后门、僵尸程序、内核套件或者以上混合的融合型恶意代码等。
计算机病毒
计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。这里必须记住:计算机病毒是借助人类帮助从一台计算机传至另一台计算机,这也是其传播机制。
网络蠕虫
蠕虫:一种通过网络自主传播、自我复制的独立恶意代码。(从这里就可以看出病毒和蠕虫的区别)
后门与木马
后门:允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供通道。
木马:看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
僵尸程序与僵尸网络
僵尸程序定义:攻击者用于一对多控制目标主机的恶意代码。
僵尸网络定义:攻击者传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。(注意仔细品味几种恶意程序的定义的黑体字,体会不同)
僵尸网络功能结构:主体功能分为命令控制模块和传播模块,辅助功能分为信息窃取模块、主机控制模块、下载更新模块、防分析检测模块。
僵尸网络类型:IRC僵尸网络(基于IRC互联网实时聊天协议构建)、HTTP僵尸网络(Web网站方式构建)、P2P僵尸网络(P2P协议构建)。
2.实践过程
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.使用Windows xp attack虚拟机,使用指令file RaDa.exe查看文件类型,可以得知这是一个带图形化窗口的32位PE文件
2.使用PEiD工具(从网页上下载的v0.95版本)来查壳的类型,可以看到PEiD显示的是一个版本为0.89.6的UPX壳
3.接着用指令strings RaDa.exe,可以发现显示的是乱码,所以我们需要进行一个脱壳的操作
4.接下来完成脱壳操作,使用Windowsxp自带的超级巡警之虚拟机自动脱壳器v1.3软件进行脱壳。
这里也识别出了是一个版本为0.89.6的UPX壳,脱完之后输出为RaDa_unpacked.exe
5.打开IDA Pro Free选择脱壳之后的文件RaDa_unpacked.exe,可以得到作者的信息2004 Raul Siles & David Perez
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
1.首先分析crackme1.exe,在cmd下执行crackme1.exe,发现有不同的响应
2.使用IDA Pro打开crackme1.exe,在string窗口中可以看到有两张反馈是上面我们得到的
3.接下来在view中打开Function Call,可以看到sub_401280函数下的输出,所以重点关注该函数
4.还是在view中打开flow chart,可以找到sub_401280函数,放大后看汇编代码
5.可以看到cmp指令是比较,jmp指令是跳转,如果是FALSE则返回“I THINK U ARE MISSING SOMETHING”,如果是TRUE则接着判断
6.接着是strcmp指令与字符串"I KNOW THE SECRET"相比较,jz跳转。
如果是FALSE就返回"Pardon? What did you say?"如果正确则返回"You know how to speak to programs, Mr.。。。"
7.所以直接输入字符串"I KNOW THE SECRET"即可
8.然后分析crackme2.exe,直接尝试上一个输入,发现不得行
9.同样使用IDA Pro打开crackme2.exe,在string窗口中可以看到有反馈是上面我们得到的
10.接下来还是在view中打开Function Call,可以看到sub_401280函数下的输出,所以还是重点关注该函数
11.还是在view中打开flow chart,可以找到sub_401280函数,放大后看汇编代码
12.可以看到cmp指令是比较,jz指令是跳转,如果是FALSE则返回“I THINK U ARE MISSING SOMETHING”,如果是TRUE则接着判断
13.接着是strcmp指令与程序名相比较,jz指令跳转。
如果是FALSE就返回"I HAVE AN IDENTITY PROBLEM"如果正确则继续
14.test指令将输入与"I KNOW THE SECRET"对比,如果正常则jz指令跳转
15.测试一下,发现返回为“WE HAVE A LITTLE SECRET:CHOCOLATE”
16.返回IDA Pro,可以看到xor指令代表0x42和unk_403080进行异或
17.可以查到403080的数据,与0x42异或后得出ascll码,查询为"WE HAVE A LITTLE SECRET:CHOCOLATE"
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
1.首先使用MD5对该恶意程序进行摘要信息分析,md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。
2.此程序被加壳了,我们像之前一样做脱壳处理,生成RaDa_unpacked.exe
3.打开proceed和wireshark进行监听,运行RaDa_unpacked.exe文件
4.双击RaDa_unpacked.exe,可以看到访问了http://10.10.10.10/RaDa网址,下载了一个文件保存到C:\RaDa\tmp文件
5.还可以看到该程序可发动DDos拒绝服务攻击
6.在C:\RaDa\bin创建了RaDa.exe,在此之前在开机运行的注册表里加入了RaDa
7.在C:\RaDa\bin可以看到
8.使用shell进行了注册表写、读、删除操作
9.还写了RaDa使用文件,RaDa正确配置文件
10.还写SQL查询语句,查询后得知是基于类Win32_NetworkAdapterConfiguration实现Windows的网络配置
回答:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中
使用了UPX加壳工具进行了加壳处理,upx0.89.6-1.02/1.22
2、找出并解释这个二进制文件的目的;
这个二进制文件的目的是下载所需的文件到目标主机,建立后门,并发动拒绝服务攻击,可远程与目标主机通信。
3、识别并说明这个二进制文件所具有的不同特性;
修改注册表,下载文件至C盘,并暗中时建立远程连接并一直维持连接
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用超级巡警之虚拟机自动加壳器
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
猜测是后门程序,因为不具有病毒和蠕虫的传播性,又不是像木马一样具有隐藏性。
6、给出过去已有的具有相似功能的其他工具;
海阳顶端、Bobax – 2004、devil5等
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
使用软件process explorer进行监控,得到作者信息2004 Raul Siles & David Perez
分析实践任务二:
Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
是一种互联网上中继聊天的协议,IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。
它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
当一个IRC客户端申请加入一个IRC网络的时候将发送口令、昵称和用户信息:USER 、PASS 、NICK 。
明文传输时使用tcp6667端口,ssl加密时用6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络;其通常用来发动大规模网络攻击。
僵尸网络的基本特性是使用一对多的命令与控制机制,主流的包括基于IRC协议的、基于HTTP协议的和基于P2P三大类。
攻击者可以发动DDos攻击的;利用Botnet发送大量的垃圾邮件;可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等;可以从事各种耗费资源的活动,对网络的性能产生影响。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
与五个IRC服务器进行了通信:209.126.161.29、66.33.65.58、63.241.174.144、209.196.44.172、217.199.175.10。
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
先安装tcpflow指令
使用指令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"筛选出以6667端口访问了目标的主机
使用指令cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^: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、那些IP地址被用于攻击蜜罐主机?
使用指令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 >20211911.txt; wc -l 20211911.txt
查找端口并输出到20211911.txt中
使用指令tcpdump -n -nn -r botnet_pcap_file 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 1911.txt;wc -l 1911.txt
找出所有的可能连接的主机的IP地址
6、攻击者尝试攻击了那些安全漏洞?
使用指令snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况
使用指令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响应端口
先看tcp 135号端口和25号端口,可以看出只是进行了连接,但是是没有数据的交互的,所以这攻击者可能是对这两个端口进行了connect扫描。
然后看TCP 80端口,连接最多的就是24.197.194.106这个IP,他的行为就是不停的用脚本在攻击IIS服务器的漏洞,从而获取系统权限,正是因为用的脚本,所以才会有这么多记录。
接下来是ip 68.169.174.108和ip 213.23.49.158访问的80端口,都是正常访问
接下来是ip 210.22.204.101访问的80端口,这么多次访问记录,看来攻击者是想通过缓冲区溢出攻击来获得一个命令行了。
最后一个ip 218.25.147.83访问80端口,看到c:\notworm,百度之后发现这是一个红色代码蠕虫攻击
我们通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面,所以80端口的这些攻击均失败。
接下来是TCP 139号端口。这个也比较简单,虽然有很多连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样这个也没有成功,这个应该是个SMB查点。
下面分析TCP 445端口,可以看到有使用到\system32\psexesvc.exe,百度一下可以得知这是一种远程连接工具
找出回应信息,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,通过搜索可知,这是一个远程调用,所以攻击者肯定是获得了权限,因此这个攻击成功的。
最后只有TCP 4899端口还没有分析,可以发现只有一个IP访问过,即210.22.204.101。
可以查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制。
看UDP中的137端口,使用ip.dst == 172.16.134.191 and udp.port == 137指令进行过滤,这个是个在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是NetBIOS查点了
7、那些攻击成功了?是如何成功的?
来自210.22.204.101的Dv1dr32蠕虫攻击攻击成功。
具体攻击过程为通过向对TCP的445端口发送含有PSEXESVC.EXE的数据包,且将PSEXESVC.EXE地址改到系统目录下攻击成功的。攻击成功后通过利用SVCCTL漏洞获取目标主机服务。
3.学习中遇到的问题及解决
-
问题1:tcpdump permission denied报错
-
问题1解决方案:解决方案如下:
先查看当前的tcpdump的模式:grep tcpdump /sys/kernel/security/apparmor/profiles
显示是enforce模式,所以有这个问题,把它改成complain模式:
aa-complain /usr/sbin/tcpdump ------ This will change it to complain
再次使用tcpdump 并写文件的时候就没问题了。 -
问题2:tcpflow安装失败
-
问题2解决方案:换源安装就行
4.实践总结
这次实验内容较多,用到的软件也很多,有点乱并且很难,需要花时间梳理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构