20199133 2019-2020-2 《网络攻防实践》第九周作业
这个作业属于哪个课程 | 《网络攻防实践》 |
---|---|
这个作业的要求在哪里 | 网络攻防第九周作业 |
我在这个课程的目标是 | 学习和了解恶意代码的基础技术和,学习计算机病毒、网络蠕虫、后门、木马与僵尸程序与Rookti等常见的代码实现机理 |
这个作业在哪个具体方面帮助我实现目标 | 在虚拟机中分析一些代码样本,学会识别恶意代码和学习防护措施。 |
作业正文 | 见作业 |
其他参考文献 | 见文末 |
一.实践内容
(一)基础知识:
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等。
二.实践过程
实践一:对提供的rada恶意代码样本进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的格式文件、运行平台和加壳工具。
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意样本代码进行脱壳处理。
(3)使用字符串提取工具,对脱壳后的rada恶意代码进行分析,从中发现作者是谁。
-
因为Windowsattacker中自带许多分析软件,我们选择他来做分析机;将给的rada.exe文件拷贝到虚拟机中,在虚拟机中安装cygwin程序,以构造对Linux的命令行的模拟环境。但是我下载的cygwin安装不了。。GnuWin下载地址,安装这个软件也可以使用,
-
输入
file RaDa.exe
查看文件类型,为32位操作系统下的PE文件,有图形化界面。
-
输入```strings RaDa.exe``查看文件的的字符串,发现是乱码的。
-
使用PEiD工具查看Rada.exe的基本信息,可以看到加壳类型为UPX。
-
使用超级巡警软件对文件进行脱壳
-
脱壳后保存为文件RaDa_unpacked.exe,因为装不了cygwin,这里就不能查看脱壳后的字符串了。>>>>>>多次尝试后安装好了软件,输入
strings RaDa_unpacked.exe
,发现脱壳后字符串都出来了。
实践二:分析Crack程序:使用IDA Pro动态或静态分析crackme1.exe与crackme2.exe,寻找特定的输入,使其能输出成功的信息。
-
使用file命令查看crackme1.exe的文件类型,可以看出其是32位Windows下的PE文件,没有图形界面,是命令行文件。
-
首先对crackme1.exe进行执行,猜测参数执行,查看输出可以发现只一个参数的输出和其他参数都不一样,所以只带了一个参数。
-
使用IDA工具打开文件,尝试阅读其汇编语言,验证我们的猜想。
-
查看程序中的明文字符串,前四项中有两项是刚输入过来的。猜测一个是密码,一个是成功之后的提示语,猜测
I know the secret
-
返回终端试一下,猜对了。
-
打开function call查看,
sub_401280
为关键程序段,stump
为c语言编写,使用字符串匹配密码。
-
找到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,与我们的猜想一致。
- 对crackme2.exe进行分析,前面的分析和crackme1.exe相同,直接用IDA工具打开,发现核心函数还是sub_401280。
- 第一步是判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe,若正确则判断第二个参数是否为I know the secret,若参数正确,则执行下面的操作。
- 验证一下,我们的分析是正确的。
实践三:
1.样本分析实践:分析一个资质的恶意代码样本rada
任务:作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
(2)找出并解释这个二进制文件的目的。
(3)识别并说明这个二进制文件所具有的不同特性。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
(6)给出过去已有的具有相似功能的其他工具。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
-
首先使用MD5对该恶意程序进行摘要信息分析,md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。
-
此程序被加壳了,我们像之前一样做脱壳处理后分析。打开proceed和wireshark进行监听,运行RaDa.exe文件,这里把主机的网络断开。
-
对行为进行分析,可以发现访问了```http://10.10.10.10/RaDa网址,下载了一个文件保存到C:\RaDa\tmp文件。
-
往下分析发现该程序可发动DDos拒绝服务攻击,
-
该恶意程序也对主机的注册表进行了修改和删除的操作。
uploading-image-344162.png(最后两张图片没有保存下来,是断网情况下弄的,就是类似于倒数第三张那样的分析,就不重截图了吧。) -
然后打开wireshark,看一下监测的数据,可以发现受害机与
10.10.10.10
的主机发送信息,我这里虚拟机和主机的网都是断了的,为什么还能监听到网络收发情况?
uploading-image-235499.png -
对问题的回答
-
(1)这个二进制文件摘要信息:
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7(参考别的同学的操作)
PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中
使用了UPX加壳工具进行了加壳处理 -
(2)这个二进制文件的目的是下载后门到目标主机,发动拒绝服务攻击,可远程与目标主机通信。
-
(3)不同特性?我没见过多少后门代码,只是在主机上刚解压出这个文件时就发现安全软件开始报警,说c盘下发现木马程序,然后前前后后大概删了三四个文件,说明这个恶意程序只要拷贝到目标主机上就会自动在相应位置建文件而不被发现,隐蔽性非常好。另外文件运行时还自动与其他主机通信。
-
(4)如实践一所示,文件是被加壳处理的,如果不脱壳的话字符串等信息都是乱码的。
-
(5)虽然安全软件说是木马程序,但通过对他的分析,发现并没有伪装成有用的软件,不符合木马的特征,也没有自己复制然后发送到网络,不是蠕虫,猜测是后门程序,并且修改了自己的操作痕迹,让人难以发觉。
-
(6)海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接
-
(7)Raul siles和David Perze,2004年。
-
2.取证分析实践:Windows2000被攻破并加入僵尸网络
(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服务器进行了通信?
- 用wireshark打开老师所给的文件,输入
ip.src == 172.16.134.191 && tcp.dstport == 6667
进行筛选
观察到共五个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为服务器的僵尸网络。
-
在kali虚拟机中使用
tcpflow -r botnet.pcap "host 209.196.44.172 and port 6667
指令进行tcpflow进行分流,意思是读取文件,筛选host和端口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
指令查看访问了多少服务器。不知道为什么,我的显示结果是两个,正确应该是3457.
(5)哪些IP地址被用于攻击蜜罐主机?(参考同学的博客)
- 由于蜜罐特殊性,所有进入蜜罐的流量都被视为可疑流量;由于IP地址数过多,wireshark等GUI工具不能胜任。使用tcpdump命令查找端口并输出到1.txt中,可以看出查找到148个被攻击的端口。使用指令
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
找到可能连接的地址。
尝试了所有可能的文件名,但是真的打不开啊。。。
换成kali也不行,本来就有这个文件,但是完成不了。
(6)攻击者尝试了哪些安全漏洞?
- 我的kali是之前就装不了snort软件,SEED虚拟机里也说找不到这个文件。。。感觉下面的作业做不了。这样下去也学不到东西,希望这周好好听老师和同学讲课吧。
(7)哪些攻击成功了?是如何成功的?
- 通过上面的分析可知,成功的攻击发起者是
210.22.204.101
和61.111.101.78
,分别是 Dv1dr32 蠕虫和 LAN Manager 口令猜测
三.学习中遇到的问题及解决
- 问题1:在WindowsXPattacker上安装不了cygwin
- 问题1解决方案:尝试换了安装的地点,也可能是复制到虚拟机的文件是只读模式,至今还未解决,导致第一个实践没继续下去。>>>>>后来下载了另一个软件,命令都能实现了。
- 问题2:第二个实践也用不了
file
等命令,实践三的MD5分析也做不了。 - 问题2解决方案:XXXXXX - 把恶意代码文件换到了Linux系统中,可能恶意代码只能针对Windows系统吧,分析指令都无效。还有一个办法就是在主机上操作,应该可以装好软件,但是对系统有风险,为了以后的学习还是不了吧。
四.实践总结
- 本次实践卡在了一个cygwin上,很多分析没有搞。好像这么多次实践作业都会有这种看似与作业无关的小问题,但就是很致命,唉,不知道怎么办。。。。
- 对这些分析啊,感觉是真的头大啊,不过了解到这些实践的难度也有好的方面,知道自己还有很多不足,不知道的知识还有很多,今后学习就会有了目标。