20212820 2021-2022-2 《网络攻防实践》第八周作业
1.实践内容
(一)基础知识:
1.恶意代码的分类
- 恶意代码定义:指计算机按照攻击者意图执行以达到恶意攻击的目的。
- 恶意代码的类型有
- 计算机病毒:一种能自我复制的代码,通过将自身嵌入其他程序进行感染,感染过程通常需要人工干预完成。
- 蠕虫:蠕虫通过修改操作系统相关配置,使其在系统启动时能运行,是自主运行的代码。
- 恶意移动代码:是指可以从远程主机下载并在本地执行的轻量级程序。
- 后门:是指能够绕开正常的安全控制机制,从而为攻击者提供正常访问途径的一类恶意代码。可以用此对目标主机进行完全的控制。
- 特洛伊木马:是一类伪装成有用的软件,但隐藏其恶意目标的恶意代码,特征在于其伪装性。
- 僵尸网络:是指攻击者传播僵尸程序控制大量的主机,并通过一对多的命令和控制信道所组成的攻击网络。
- 内核套件(Rootkit):是在用户态通过替换或修改系统关键可执行文件,或在内核态通过控制操作系统内核,用以获取最高的控制权。
2.恶意代码发展趋势
- 恶意代码的复杂度和破坏力不断增强;
- 恶意代码技术的创新越来越平凡;
- 关注重点从计算机病毒转移到蠕虫和内核级的攻击工具。
3.计算机病毒
-
基本特性:感染性、潜伏性、可触发性、破坏性、衍生性
-
感染及引导机制:潜在的感染目标可分为三类
(1)可执行文件:是计算机病毒最普遍的感染目标,因为以可执行文件作为宿主程序,当其被用户运行时,依附在上面的病毒就可以被激活取得控制权。
-
(2)引导扇区:通过BIOS定位到磁盘的主引导区,运行存储在那的主引导记录,接着找到第一个活动分区,分区引导记录负责装载操作系统。
(3)支持宏指令的数据文件:在数据文件中包含可执行指令称为宏指令,宏病毒将自身以宏指令的方式复制到数据文件中,因此当被感染的数据文件被打开时,将自动执行宏病毒载体,完成病毒引导。 -
病毒传播机制:传播渠道包括移动存储、电子邮件及下载、共享目录等。通过U盘、SD卡等
4.网络蠕虫
- 计算机病毒与蠕虫的对比:
- 组成结构:
- 弹头:为了侵占一个系统,蠕虫必须首先获得计算机访问权,用一些渗透攻击的代码作为弹头。
- 传播引擎:在获得目标访问权之后,蠕虫必须复制自身样本到目标系统上。
- 扫描引擎:一旦蠕虫在受害机上运行,目标扫描算法开始寻找新的攻击目标,然后利用扫描引擎扫描每一个由目标扫描算法所确定的地址,确定是否可攻击。
- 有效载荷:就是附加的攻击代码,为攻击者在目标机子上执行一些特殊操作,通常包括后门、拒绝服务攻击代理和组件僵尸网络。
5.后门与木马
-
后门工具能为攻击者提供不同类型的访问渠道:本地特权提升和本地账号;单个命令的远程执行;远程命令行解释器访问;后门工具几乎都用了自启动功能。
- Windows平台中,自启动文件夹一般在C:\Documents and Setting[username]\Start Menu\Program\Startup目录下,一旦后门工具被添加至此文件夹,Windows启动时就会启动后门工具。
- 可以通过msconfig和autoruns工具来检查出恶意后门工具注册的非法启动项。
-
特洛伊木马:攻击者设计出无数的木马欺骗和伪装技术的方法,将恶意功能隐藏在木马程序中,并植入到目标计算机系统。
6.僵尸程序与网络
- 演化过程
- 功能结构:分为主体功能模块和辅助功能模块
- 主体模块中的命令与控制模块是僵尸程序的核心,
- 僵尸网络的基本特性是使用一对多的命令与控制机制,主流的包括基于IRC协议的、基于HTTP协议的和基于P2P三大类
7.Rootkit:
-
用户模式和内核模式的对比:
-
用户模式的工具有
- 类UNIX:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、安装脚本等。
- Windows:利用一些开发接口、使WFP功能失效、使用DLL注入和API挂钩。三种技术如图所示:
-
内核模式的实现机制
- Linux系统中:LKM机制支持在内核中注入新代码,利用LKM机制实现的内核模式有Adore、Adore-ng、KIS等。
- Windows:利用恶意设备驱动程序、修改内存中当前运行的内核、覆盖硬盘上的内核镜像等。
(二)恶意代码分析程序
1.分析环境分析恶意代码的关键点在于建立受控环境,与良性代码的区别如下:
- 一般构建虚拟化的分析环境,将宿主计算机的网卡与虚拟机镜像进行逻辑隔离,如将宿主计算机的网卡设置为虚拟机无法访问的IP段;另外在恶意代码分析时,一定要保证这台宿主计算机不连接互联网。
2.恶意代码静态分析技术:需要引入一系列额外的对抗措施才能恢复代码的原貌,使进一步分析变得可行。
- 静态分析技术包括:
- 反病毒软件扫描:识别已知恶意代码类型/家族,只需要让反病毒软件在目标文件扫描即可。
- 文件格式识别:寻找攻击平台和类型;恶意代码通常是以二进制文件存储的,了解样本格式便可知道恶意代码所期望的运行平台,Windows上二进制可执行文件EXE和DLL都是以PE文件格式组织的,Linux平台上文件格式则是ELF。恶意代码会设置虚假的文件扩展名,采用具有迷惑效果的图标,面对这些恶意代码我们要使用file、PEiD专业的发、工具进行分析。
- 字符串提取分析:寻找恶意代码分析线索,可能获取的信息包括恶意代码实例名、帮助或命令行选项、用户会话、后门口令、包含库文件和函数调用等。
- 二进制结构分析:初步了解二进制文件结构。
- 反汇编:将二进制代码翻译为汇编语言。
- 反编译:将汇编语言进一步翻译为高级语言。
- 代码结构与逻辑分析:分析二进制代码结构,理解二进制代码逻辑。
- 加壳识别与代码脱壳:识别是否加壳、加壳类型;加壳有压缩壳、多态壳、加密壳、变形壳和伪装壳等;对抗代码混淆,恢复原始代码。虚拟机脱壳软件有超级巡警脱壳器VMUnpacker。
3.动态分析技术
-
恶意代码动态分析的实验环境要与互联网断开,在分析完之后尽快恢复恶意代码运行平台,以清除对文件的影响。搭建环境如图所示:
-
主要技术手段有:
- 快照对比:类似于在攻击之前给房间拍一张照片,在攻击之后五分钟拍一张照片,对比发生了什么变化,比如新建或删除了哪些文件等等。缺点是无法监控和分析代码的中间行为。可用软件有RegSnap、完美卸载等。
- 系统动态行为监控方法:针对恶意代码对文件系统、运行进程列表、注册表、本地网络栈等方面进行的行为,进行实时的监视、记录和显示。软件包括文件行为监控软件、进程行为、注册表和本地网络监控软件。
-
网络协议监控方法:在本地网络内的另一台主机上进行扫描,看恶意代码是否开放一些端口和后门。
-
沙箱技术:提供了受限制的执行环境,在沙箱中的程序不能运行本地的可执行程序、不能在本地文件系统中写或读任何信息。
-
动态调试技术:能一行接着一行执行恶意代码、一个函数调用接着一个函数调用的执行,来进行行为分析的过程。Windows下的Ollydbg软件,windbg等,类Unix平台下的gdb、systrace等。
2.实践过程
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
i.因为Windowsattacker中自带许多分析软件,我们选择他来做分析机;将给的rada.exe文件拷贝到虚拟机中.输入file RaDa.exe
查看文件类型,为32位操作系统下的PE文件,有图形化界面。
ii.输入```strings RaDa.exe``查看文件的的字符串,发现是乱码的。
iii.使用PEiD工具查看Rada.exe的基本信息,可以看到加壳类型为UPX。
iv.使用超级巡警软件对文件进行脱壳
v.使用strings命令查看脱壳后的rada.exe中可打印的字符串,可以发现有大量的函数调用名
vi.行rada程序,并使用软件process explorer
进行监控,查看程序属性,发现作者名字Raul siles&David Perze
,写于2004年。
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
i.使用file命令查看crackme1.exe的文件类型,可以看出其是32位Windows下的PE文件,没有图形界面,是命令行文件。
ii.首先对crackme1.exe进行执行,猜测参数执行,查看输出可以发现只一个参数的输出和其他参数都不一样,所以只带了一个参数。
iii.使用IDA工具打开文件,尝试阅读其汇编语言,验证我们的猜想。
iv.首先直接查看程序中的明文字符串,发现了两个测试程序时没有出现过的字符串I know the secret
、You know how to speak to programs,Mr Reverse Engineer
。猜测前者为我们需要的口令,后者为口令成功输入的反馈。
v.验证猜想,正确。
vi.首先看函数调用图,view——graphs——function calls
。根据上面的尝试,发现输出函数fprintf
和printf
即为程序输出,则sub_401280
即为核心函数。
vii.找到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
,与我们的猜想一致。
viii.对crackme2.exe进行分析,前面的分析和crackme1.exe相同,直接用IDA工具打开,发现核心函数还是sub_401280。
viiii.第一步是判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe,若正确则判断第二个参数是否为I know the secret,若参数正确,则执行下面的操作。
验证一下,分析是正确的。
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
i.使用md5sum
命令查看摘要信息, md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
。
ii.打开process explorer
软件进行监测,启动恶意软件rada。右键查看其属性,可以发现rada启动后有如下行为:
1)通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html
2)将文件RaDa.exe
复制到了C:\RaDa\bin
目录下
3)修改注册表,将rada
设置为开机启动。 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
即为控制计算机启动项的注册表信息, RaDa: C:\RaDa\bin\RaDa.exe
iii.上述行为结束后,该程序对主机实行了DDOS拒绝服务攻击(后来发现实际上它没有提供任何用以发动DDos攻击的子程序),可以看出该恶意代码将其自我复制到主机系统盘,并激活了自启动,还试图从一个HTML页面获取并解析命令,故猜测这应该是一个后门程序.接下来该程序对注册表进行了读写和删除操作,打开注册表查看,的确没有该程序留下的痕迹,故下图圈出来的地方应该删除注册表信息
iv.rada一直在后台运行,不会弹出任何窗口,它可以支持exe、put、get、screenshot、sleep等指令。exe:在宿主主机中执行指定的命令 put:将宿主主机中的指定文件上传到服务器 get:将服务器中的指定文件下载到宿主主机中 screenshot:截取宿主主机的屏幕并保存到tmp文件夹 sleep:停止活动一段时间
总结回答:
(1)这个二进制文件摘要信息:
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中
使用了UPX加壳工具进行了加壳处理
(2)这个二进制文件的目的是下载后门到目标主机,发动拒绝服务攻击,可远程与目标主机通信。
(3)这个恶意程序只要拷贝到目标主机上就会自动在相应位置建文件而不被发现,隐蔽性非常好。另外文件运行时还自动与其他主机通信。
(4)如实践一所示,文件是被加壳处理的,如果不脱壳的话字符串等信息都是乱码的。
(5)猜测是后门程序,并且修改了自己的操作痕迹,让人难以发觉。
(6)海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接
(7)Raul siles和David Perze,2004年。
分析实践任务二:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
是一种互联网上中继聊天的协议,IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
申请加入的时候要发送口令、昵称和用户信息:USER <username> <hostname> <servername> <realname>
、PASS <password>
、NICK <nickname>
。
明文传输时使用tcp6667端口,ssl加密时用6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
僵尸网络的基本特性是使用一对多的命令与控制机制,主流的包括基于IRC协议的、基于HTTP协议的和基于P2P三大类。
攻击者可以发动DDos攻击的;利用Botnet发送大量的垃圾邮件;可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等;可以从事各种耗费资源的活动,对网络的性能产生影响。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
由于IRC服务器通常在6667端口监听,故只需知道蜜罐主机发出的尝试连接6667端口的数据包即可,连接时使用的是TCP三次握手。用wireshark打开老师所给的文件.使用过滤规则进行查找,发现蜜罐主机与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为服务器的僵尸网络?
总共三个解决办法:
1)当前在线数current_global_users (4752)
2)IRC广播加入和离开服务器的不同主机数
3)观察期间不同昵称出现个数
此处选择第三种方法
i.首先使用tcpflow分流(筛选指定host与端口),命令tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667"
,产生了三个文件,209.196.044.172.06667-172.016.134.191.01152
、172.016.134.191.01152-209.196.044.172.06667
、report.xml
。因为我们要找的是访问 209.196.44.172
的主机,故此处着重看第一个文件。
ii.使用管道命令进行筛选,得到的结果是0,但正确结果应该是3457,此处应该是由于字符编码导致没有grep到全部的字符串,还未找到解决办法
5、那些IP地址被用于攻击蜜罐主机?
由于蜜罐特殊性,所有进入蜜罐的流量都被视为可疑流量,由于IP地址数过多,wireshark等GUI工具不能胜任。
i.使用tcpdump命令查找端口并输出到1.txt中,可以看出查找到148个被攻击的端口。
ii.接下来找出所有的可能连接的主机的IP地址,将其输出到2.txt中,可以看出总共有165个主机可能被用于入侵蜜罐。
6、攻击者尝试攻击了那些安全漏洞?7、那些攻击成功了?是如何成功的?
i. 分为TCP端口和UDP端口分别处理,使用tcpdump命令找到攻击者扫描且蜜罐有响应的端口。得到的TCP端口有135(rpc)、 139(netbios-ssn)、 25(smtp)、 445(smb)、 4899(radmin)、 80(http)
;udp端口有137(netbios-ns)
137端口在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是NetBIOS查点了。事实上这里攻击者还扫描了udp 1434
及udp 28431
端口,但由于蜜罐没有响应,故显然攻击是失败的。
ii.tcp 135、25
端口,发现攻击者只是进行了连接,并没有数据传输,故只是对两个端口进行了connect扫描。
iii.tcp 80
端口,在waireshark中筛选tcp.dstport==80 && ip.dst == 172.16.134.191
,发现24.197.194.106
与蜜罐的有交互连接数最多,有883次,使用snort对该部分数据包进行扫描,发现大部分报警信息都为WEB-IIS、WEB-CGI、 WEBFRONTPAGE、WEB-MISC。故可以知道24.197.194.106
利用IIS漏洞对蜜罐主机进行 了疯狂的Web探测,但是没有成功
iv.tcp 4899
端口,4899端口是一个被广泛破解和使用的商业远程控制软件radmin,攻击者通过上传radmin可以实现对靶机的控制。成功
3.学习中遇到的问题及解决
问题:tcpflow分流后生成的文件存在编码问题。
解决:暂未解决
问题:使用tcpdump命令时提示尚未找到该文件
解决:ls命令后显示该文件名字,将其复制粘贴在命令行 就不会出现此问题了
4.学习感想和体会
这次实验照着视频完成,整体很顺利,但在分析部分还是感觉较为困难,并且感觉学好网络攻防真的需要去学习海量的知识,学海无涯!自勉!!