20199118 2019-2020-2 《网络攻防实践》第九周作业
学号:20199118 2019-2020-2 《网络攻防实践》第九周作业
1.知识点梳理与总结
在第九章的课程中学习了恶意代安全攻防的重要内容:
① 恶意代码定义和分类 |
- 恶意代码:指的是使计算机按照攻击者意图执行以达到恶意目标的指令集。分类:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸网络、内核套件。
② 恶意代码的发展趋势 |
- 恶意代码的复杂度和破坏力不断增强,从早期简单感染DOS操作系统的Brain病毒到复杂的内核级后门工具和破坏力强大的蠕虫,恶意代码在快速传播、隐蔽性、破坏力和对抗性上都在不断地发展。
- 恶意代码技术的创新越来越频繁,特别是在近几年,大量的新概念被不断提出,同时验证这些新概念和新技术的恶意代码也频繁地公布于众。
- 关注重点从计算机病毒转移到蠕虫和内核级的攻击工具,在20世纪80-90年代,恶意代码的关注重心在于感染可执行程序的计算机病毒,但从最近几年的发展趋势来看,更多的关注焦点已经转移到对整个互联网造成严重危害的僵尸网络、网页木马、以及内核级的高级攻击技术。
③ 计算机病毒 |
-
计算机病毒概念:计算机病毒是一种能够自我复制的代码,通过将自身嵌入到其他程序进行感染,而感染过程通常需要人工干预才能完成。
-
计算机病毒基本特性
- 感染性
- 潜伏性
- 可触发性
- 破坏性
- 衍生性
-
计算机病毒的感染及引导机制:
计算机病毒需要将自身嵌入到一个宿主程序上才能运行,而感染的方式也决定了计算机病毒如何从宿主程序上被引导运行的方式,因此计算机病毒的感染和引导机制是紧密相关的。计算机病毒潜在的感染目标可分为可执行文件、引导扇区和支持宏指令的数据文件三大类。计算机病毒的传播主要依赖移动存储介质、电子邮件及下载、共享目录等。
④ 网络蠕虫 |
-
网络蠕虫:一种通过网络自主传播的恶意代码,它的出现相对于传统计算机病毒和木马、后门来说比较晚,但无论是从传播速度、传播范围还是破坏程度上来说,都是以往的恶意代码所无法比拟的,从定义本质上讲,网络蠕虫是一种可以自我复制的代码,并且通过网络传播,通常无须人为干预就能传播。当蠕虫感染了一台计算机,并且在完全控制以后,就会将这台计算机作为传播源,进而扫描并感染其他的脆弱系统。
-
网络蠕虫的基本特征:
- 自我复制
- 通过网络自主传播
- 不需要宿主,独立程序
- 直接通过网络传播,包括内网和互联网
- 不需要人为干预
-
网络蠕虫的组成结构:
- 弹头:获取计算机的访问权限
- 传播引擎:完成蠕虫样本的复制传播
- 目标选择算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻 找新的攻击目标,然后利用扫描引擎扫描每一个由目标选择算法确定的地址,确认其是否可以被攻击。
- 有效载荷:附加的攻击代码。
⑤ 后门和木马 |
- 后门与木马定义区别: 后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;而木马作为特洛伊木马的简称,是指一类看起来具有某个有用或善意目的,但实际上掩盖着一些隐藏恶意功能的程序;只有后门工具伪装成良性程序,这才具备真正的木马特征。
⑥ 僵尸程序与僵尸网络 |
-
僵尸网络: 是在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展融合而产生的一种新型攻击方式。僵尸程序为了隐藏自身在受害主机上的存在,会采用一些伪装和欺骗机制,此时也具有特洛伊木马特性,但这并非僵尸程序必有的特征,与后门工具相似,僵尸程序也会为攻击者提供对受害主机的远程控制。
-
僵尸程序和僵尸网络的演化过程
-
僵尸网络的功能结构: 最早出现的IRC僵尸网络由僵尸网络控制器和僵尸程序两部分组成。下图显示了僵尸程序的功能组成结构,可以分为主体模块和辅助功能模块。
- 僵尸网络的命令与控制机制
- 基于IRC协议的命令与控制机制
- 基于HTTP协议的命令与控制机制
- 基于P2P协议的命令与控制机制
⑦ Rootkit |
-
Rootkit定义: 一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权限并隐藏在计算机中。根据操作系统的分层,Rootkit可以运行在两个不同的层次上,即用户模式和内核模式。用户模式
-
Rootkit修改的是操作系统用户态中用户和管理员所使用的一些内建程序和库文件,而内核模式Rootkit则直接攻击操作系统最核心的内核,修改内核从而隐藏自身
- 用户模式Rootkit
- UNIX用户模式Rootkit:提供后门访问的二进制替换程序;隐藏攻击者的二进制替换程序;用于隐藏但不替换的二进制程序;安装脚本;另一些零散的工具如嗅探器,shell监听器等。
- Windows用户模式Rootkit:通过API将自身恶意功能逻辑插入到windows函数;修改文件保护,破坏WFP机制;DDL注入和API挂钩,将恶意代码加入程序运行内存
- 内核模式Rootkit: 利用对内核的操作,内核模式Rootkit可以修改内核,彻底地隐藏攻击者在计算机上的活动,大多数内核模式Rootkit采用如下技术手段:
- 文件和目录隐藏
- 进程隐藏
- 网络端口隐藏
- 混杂模式隐藏
- 改变执行方向
- 设备截取和控制
⑧ 恶意代码分析方法 |
- 恶意代码分析:是按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序的结构、数据流程和程序行为的处理过程。程序分析技术在程序理解、程序测试、程序优化和程序重构等方面都有着重要的应用。
-
恶意代码分析环境
- 恶意代码发烧友的分析环境
- 基于虚拟化构建恶意代码分析环境
-
恶意代码静态分析技术
- 反病毒扫描
- 文件格式识别
- 字符串提取分析
- 恶意代码实例名
- 帮助或命令行选项
- 用户会话
- 后门口令
- 相关URL信息、Email地址
- 包含库文件和函数调用
- 二进制结构分析
- 反汇编与反编译
- 代码结构与逻辑分析
- 加壳识别与代码脱壳
-
基于快照对比的分析方法和工具
- 系统动态行为监控方法
- 文件行为监控软件
- 进程行为监控软件
- 注册表监控软件
- 本地网络栈行为监控软件
- 网络协议栈监控方法
- 沙箱技术
- 动态调试技术
2.实践过程
实践一:恶意代码文件的类型识别、脱壳与字符串提取
-
选择WINXP当作操作环境,首先将云班课里的含有
rada
的资料解压到C盘,然后再在cmd
里面查看,cd rada
,然后进入file RaDa.exe
-
可以看出看到该程序是一个32位的运行在windows操作系统上的程序,GUI表示这个程序是一个有图形界面的程序,intel 80386表示处理器架构。
-
下面来看看有没有加壳,下面使用PEiD工具(查壳)来查看加壳的类型。在这里我们可以看到这个是一个版本为0.89.6的UPX壳。还可以看到文件的入口点、EP段、偏移、文件类型等信息。
-
下面用
strings RaDa.exe
查看RaDa.exe中可打印字符串,发现都是乱码,这也验证了这是一个加壳程序,所以下一步是我们要进行脱壳。
-
用超级巡警这个软件进行脱壳,这里也识别出了是一个UPX壳。
-
脱壳结束,然后进行分析,打开
IDA Pro Free
选择脱壳之后的文件,一直next就行,可以看到如下信息。作者的信息DataRescue sa/nv
,同时这个程序是由MSVB编写的。继续往下是一些函数调用,甚至汇编代码都一目了然。到这里本次实验结束。
实践二:分析Crackme程序
-
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
-
使用WinXP Attacker虚拟机
-
首先分析crackme1.exe。对crackme1.exe进行执行,猜测参数执行,可以发现一个参数输入与其他的参数输入得到的输出明显不一样,所以可以猜测这个程序的输入是一个参数。
-
接下来利用IDA Pro打开这个程序分析,我们打开通过Strings窗可以查看该程序中出现的字符串,我们发现了前面的两种反馈信息,
I think you are missing something.
和Pardon? What did you say?
也可以看到有“GCC”,说明该恶意程序是用C语言编写的。
实践三:分析一个自制恶意代码样本rada,并撰写分析报告
-
首先打开Filemon(文件),Regmon(注册表),Wireshark(网络)三个软件进行监测。这个时候可以启动这个恶意软件了。
-
观察Filemon我们可以看到程序文件
RaDa.exe
复制到了C:\RaDa\bin
目录下,并且新建了temp
目录。
-
继续观察Regmon,我们可以看到进行了很多注册表的操作,其中其中有一个时在自启动项里面加入了
RaDa: C:\RaDa\bin\RaDa.exe
-
利用md5sum RaDa.exe指令得到其md5摘要值为
caaa6985a43225a0b3add54f44a0d4c7
。利用file RaDa.exe
识别出这是32位PE文件,并且还是个GUI文件,当时打开怎么没反应,难道是要参数?同时这是一个加壳文件,可以用strings RaDa.exe
输出看是不是全部乱码。接着我们用超级巡警进行脱壳,这是一个UPX壳,并且成功脱壳。 -
通过上面的分析,我们知道用户上网,就得到了攻击者的指令,并且攻击者可以完全控制该系统(指令),所以这应该是一个后门程序或者僵尸程序。
实践四:取证分析,Windows 2000系统被攻破并加入僵尸网络。分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
2)僵尸网络是什么?僵尸网络通常用于干什么?
3)蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?
4)在这段观察期间,多少不同的主机访问了以209.196.44.172
为服务器的僵尸网络。
5)哪些IP地址被用于攻击蜜罐主机?
6)攻击者尝试了哪些安全漏洞?
7)哪些攻击成功了?是如何成功的?
-
1):
- 因特网中继聊天(Internet Relay Chat),简称IRC。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC特点是通过服务器中继与其他连接到这一服务器上的用户交流。
- 注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:
USER <username> <hostname> <servername> <realname>
、PASS <password>
、NICK <nickname>
。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN <channel>
。 - IRC服务器明文传输通常在
6667
端口监听,也会使用6660—6669
端口。SSL加密传输在6697
端口。
-
2):
- 僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
- 僵尸网络,是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
-
3):
- 使用Wireshark打开数据文件,并设置过滤条件
ip.src == 172.16.134.191 && tcp.dstport == 6667
,因为我们上面的分析知道IRC通过6667
端口,筛选之后,我们可以找到五个IRC服务器,分别为:
- 使用Wireshark打开数据文件,并设置过滤条件
-
4):
- 首先我们用tcpflow进行分流,指令为
tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667"
,这条指令的含义就是读取文件,筛选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
- 首先我们用tcpflow进行分流,指令为
-
5):
- 使用下面的指令找出所有的可能连接的主机的IP地址
tcpdump -n -nn -r botnet_pcap_file.dat '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个主机
- 使用下面的指令找出所有的可能连接的主机的IP地址
-
6)7):
- 使用
snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii
指令先查一下网络流分布情况。我们发现大部分都是TCP包,有一部分UDP包,所以我们首先应该筛选出响应的TCP端口和UDP端口。
利用下面的指令筛选出蜜罐主机相应的TCP端口,指令上面都讲过了,差不多,多了一个筛选条件就是响应0x12
。输出可以看到TCP响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
。同样的,将指令协议部分改成udp就可以查询udp端口响应,我们能查到仅有137(netbios-ns)号端口响应。
tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
- 使用
-
对上面几个端口进行逐个分析,先说明udp 137号端口,这个是个在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是
NetBIOS
查点了。接下来我们看tcp 135
号端口和25
号端口,我们看到只是进行了连接,但是是没有数据的交互的,所以这攻击者可能是对这两个端口进行了connect
扫描。
3.学习中遇到的问题及解决
- 问题①:云班课的资料下载后却不能访问。
- 问题①的解决方案:自己摸索尝试、询问同学,最后发现是一点小问题。
- 问题②:作业难度较大,进度受阻
- 问题②的解决方案:借鉴同学博客,一点点推进。
4.学习感悟、思考等
- 加深了对网络攻防技术的认识,理论与实践相结合,提高了自己对使用网络攻防技术的能力。
- 培养了实践学习的能力,对网络攻防的实际运用产生了极大的兴趣。
参考资料
- 《网络攻防技术与实践》诸葛建伟 著
- 《加壳与脱壳的原理》