这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695 |
我在这个课程的目标是 | |
这个作业在哪个具体方面帮助我实现目标 | 熟悉了解Linux系统攻防技术 |
作业正文 | 1.实践内容、2.实践过程、3.学习中遇到的问题及解决、4.实践总结 |
其他参考文献 | 见正文最后部分 |
1.实践内容
1.1 恶意代码基础支持
- 恶意代码的定义与分类
- 计算机病毒:一种能够自我复制的代码,通过嵌入其他程序进行感染,需要人工干预传播
- 蠕虫:与计算机病毒相比,不需要嵌入其他宿主程序中,可以自主运行
- 恶意移动代码:可以自动从远程主机下载并在本地执行的轻量级程序,常在web端实现
- 后门:可以绕开正常的安全控制机制,为攻击者提供访问的代码
- 特洛伊木马:伪装成有用软件,但是内含恶意目标的恶意代码
- 僵尸网络:使用僵尸程序构建的执行一对多命令的攻击网络。
- 内核套件:用以获取并保持最高控制权的一类恶意代码。
- 恶意代码发展史
- 恶意代码发展史:上世纪60年代起源,80年代传入中国。
- 恶意代码发展趋势:1.恶意代码的复杂度和破坏力逐渐增强;2.恶意代码技术的创新越来越频繁;3.关注重点从计算机病毒转移到蠕虫和内核级攻击工具
- 计算机病毒
-
计算机病毒基本特性:1.感染性;2.潜伏性;3.可触发性;4.破坏性;5.衍生性。
-
计算机病毒的感染和引导机制:1.感染可执行文件,分为三种感染方式:
前缀感染机制
、后缀感染机制
和中间插入感染机制
。其中,前缀感染机制
是病毒将自身复制到宿主程序的开始;后缀感染机制
是病毒将自身复制到宿主程序的结尾;中间插入感染机制
是将病毒代码放置到宿主程序中间,这样使得病毒更加隐蔽但是编写难度较大。具体情况如下图所示2.引导扇区感染机制,在系统启动的过程中,BIOS初始化数据,拉取磁盘主引导区的数据,主引导区拉取分区引导纪录,最后从引导分区中获得操作系统的地址,启动操作系统。将病毒植入引导区,就可以在系统启动之前获取系统控制权。3.支持宏指令的数据文件,现行的一些数据文件允许在读取的时候进行一些数据的修改指令,由此数据文件也具有代码的执行权限,可作为被感染的文件。
-
-
计算机病毒的传播机制:主要分为两种,基于硬件的和基于网络的。基于硬件的包括软盘、U盘、SD卡等物理介质;基于网络的主要包含电子邮件、SMB共享文件等等。
-
网络蠕虫
-
网络蠕虫的基本特性:1.可以通过网络进行自主传播,一般来说不需要用户交互;2.不需要寄生宿主,自己就是一个可执行的程序;3.直接通过网络传播,包括内网传播和互联网传播;
-
网络蠕虫的组成结构:1.弹头主要用于进行渗透攻击,主要包含:缓冲区溢出攻击、共享文件攻击、利用电子邮件传播和其他普遍配置错误等等方式;2.传播引擎主要是获取到目标系统的访问权限之后,蠕虫自身进行传输到目标系统的工具;3.目标选择算法和扫描引擎主要用于找寻新的攻击目标,确定是否可以被攻击,主要包括:电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务和通过特定规则任意选择目标IP。4.有效载荷主要是在攻击成功之后,进行一些特殊的操作,例如:植入后门、安装分布式拒绝服务攻击服务器和组建僵尸网络。
-
-
后门和木马
- 后门:后门是用于为攻击者提供多种不同类型的访问通道的工具,主要包含:本地权限提升和本地账号、单个命令的远程执行、远程命令行解释器访问、远程控制GUI和无端口后门等等。
- 木马:主要是用于以下目的的程序:欺骗用户或者管理员安装木马程序;隐藏在计算机的正常程序之中,通过与后门程序结合形成木马后门。
-
僵尸程序和僵尸网络
- 僵尸网络的功能结构:1.僵尸程序的功能主要分为两类:
主体功能
和辅助功能
。主题功能
包括命令与控制模块、传播模块;辅助功能
包含信息窃取模块、主机控制模块、下载更新模块和防分析检测模块。2.僵尸网络的工作机制主要包含如下七步:渗透攻击、加入控制服务器、动态影射至IRC服务器、加入IRC信道、监听命令、接收命令、执行攻击。
- 僵尸网络的功能结构:1.僵尸程序的功能主要分为两类:
-
僵尸网络的命令和控制机构:命令和控制机构主要分为三大类
基于IRC协议的命令和控制机构
、基于HTTP协议的命令和控制机构
、基于P2P协议的命令与控制机构
。 -
Rookit
-
Rookit分类:Rookit是一种具有替换或修改现有操作系统软件进行隐藏的特性的程序。主要分为:
应用程序级木马后门
、用户模式Rookit
、内核模式Rookit
和虚拟机模式Rookit
。 -
用户模式Rookit::
linux系统下主要包含:提供后门的二进制程序
、隐藏攻击者的二进制程序
、用于隐藏但不替换的二进制程序
和安装脚本
等。windows下主要包含:程序和代码之间注入恶意代码
、关闭文件保护机制重写文件
和利用DLL注入机制操纵正在进行的进程
。 -
内核模式Rookit:
linux系统下利用LKM
可装载内核模块的内核扩展机制注入新的代码。windows与windows下整体思路相同但是是通过insmod
进行注入。
-
1.2 恶意代码分析方法
-
恶意代码分析技术主要问题
- 不能事先知道恶意代码的目的是什么
- 恶意代码具有恶意的攻击目的
- 恶意代码在绝大多数时候不会具有原代码
- 恶意代码会引入大量的对抗分析技术
-
恶意代码静态分析技术
-
反病毒扫描:通过匹配现有的已知的病毒进行判断病毒的种类、家族和变种信息。
-
文件格式识别:获得恶意软件执行的平台等信息
-
字符串提取:
获取恶意代码实例名
、帮助或命令行选项
、用户会话
、后门口令
、相关URL、E-mail信息
和包含库文件和函数调用
。 -
二进制结构分析:获取程序的
头部摘要信息
、目标文件运行架构
、重定位入口
、符号表入口
、不同的代码段
、编译代码时使用的程序
等。 -
反汇编与反编译:将二进制程序,转化成汇编代码和高级语言代码。
-
代码结构与逻辑分析:获取
函数调用关系图
和程序控制流图
。 -
加壳识别与代码脱壳:对代码进行加密、多样性、多态和变形的机制。
-
-
恶意代码动态分析技术
- 基于快照对比的方法和工具
- 系统动态行为监控方法
- 网络协议栈监控方法
- 沙箱技术
- 动态调试技术
2.实践过程
2.1动手实践:恶意代码文件类型识别、脱壳与字符串提取
题目:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,获得rada恶意代码的编写作者。
实践步骤:
使用文件格式和类型识别工具,给出rada恶意代码样本的格式文件、运行平台和加壳工具。
使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,确定rada恶意代码的编写作者。
实践过程
使用file命令查看rada的文件类型为32位操作系统下的PE文件,有图形化界面。
使用PEiD工具查看rada的基本信息。注:PEiD是用来查看Windows PE文件基本信息的工具。
可以看到文件的入口点、偏移、EP段及加壳类型(UPX壳)。
使用超级巡警工具对文件进行脱壳,该工具有这个壳的样本库,故可以实现自动脱壳。
使用strings命令查看脱壳后的rada.exe中可打印的字符串,可以发现有大量的函数调用名,若查看脱壳之前的,则是一些乱码。
运行rada程序,并使用软件process explorer进行监控,查看程序属性,发现作者名字Raul siles&David Perze
2.2实践二:分析Crackme程序
实践挑战:使用IDA Pro静态或动态分析crackmel.exe 与crackme2.exe,寻找特定的输入,使其能够输出成功信息。
实践过程
(1)在windowsXP下的cmd中直接运行crackme1.exe,尝试输入参数,如下:
可以确定该程序仅带有一个参数。
(2)使用IDA pro工具打开crackme1.exe
首先查看程序中的明文字符串,发现了两个在(1)中测试时没有出现过的字符串:I know the secret、You know how to speak to programs,Mr Reverse Engineer。猜测前者为密码,后者为成功的提示语。
(3)接下来进行分析。首先看函数调用图,view——graphs——function calls。
可以看到strcmp,还有printf和fprintf,即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。
(4)在windowsXP下的cmd中直接运行crackme2.exe,尝试输入参数,如下:
(5)使用IDA pro工具打开crackme2.exe
(6)进入分析阶段。首先看函数调用图发现关键函数:
发现关键函数还是sub_401280。
分析sub_401280,找到sub_401280函数的流程图,如下:
验证一下,我们的分析是正确的。
实践三:
1.样本分析实践:分析一个资质的恶意代码样本rada
任务:作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
(2)找出并解释这个二进制文件的目的。
(3)识别并说明这个二进制文件所具有的不同特性。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
(6)给出过去已有的具有相似功能的其他工具。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
首先使用MD5对该恶意程序进行摘要信息分析,md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。
此程序被加壳了,我们像之前一样做脱壳处理后分析。打开proceed和wireshark进行监听,运行RaDa.exe文件,这里把主机的网络断开。
对行为进行分析,可以发现访问了```http://10.10.10.10/RaDa网址,下载了一个文件保存到C:RaDa mp文件。
往下分析发现该程序可发动DDos拒绝服务攻击
该恶意程序也对主机的注册表进行了修改和删除的操作。
然后打开wireshark,看一下监测的数据,可以发现受害机与10.10.10.10的主机发送信息
-
对问题的回答
-(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
明文传输时使用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
在这段观察期间,多少不同的主机访问了以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 ' ' '
' | 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
尝试了所有可能的文件名,但是真的打不开
(6)攻击者尝试了哪些安全漏洞?
我的kali是之前就装不了snort软件,SEED虚拟机里也说找不到这个文件。。。感觉下面的作业做不了。这样下去也学不到东西,希望这周好好听老师和同学讲课吧。
(7)哪些攻击成功了?是如何成功的?
通过上面的分析可知,成功的攻击发起者是210.22.204.101和61.111.101.78,分别是 Dv1dr32 蠕虫和 LAN Manager 口令猜测
三.学习中遇到的问题及解决
问题1:在WindowsXPattacker上安装不了cygwin
问题1解决方案:尝试换了安装的地点,也可能是复制到虚拟机的文件是只读模式,至今还未解决,导致第一个实践没继续下去。
四.实践总结
本次实验难度非常大,但是学到了很多,希望自己能坚持下去