20211912 2021-2022-2 《网络攻防实践》第八周作业
20211912 2021-2022-2 《网络攻防实践》第八周作业
1 知识点梳理与总结
1.1 恶意代码
-
恶意代码是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件
-
恶意代码具有的特征:恶意的目的、本身是计算机程序、通过执行发生作用
-
恶意代码造成的影响:默认主页被修改,默认的微软主页被修改,主页设置被屏蔽锁定,搜索引擎被修改,被添加非法信息,非法信息破坏,非法网站链接,菜单功能被禁用失常,非法添加按钮
1.2 计算机病毒
-
计算机病毒指编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机正常使用并且能够自我复制的一组计算机指令或程序代码
-
计算机病毒具有的特征:隐蔽性、破坏性、传染性、寄生性、可执行性、可触发性、攻击的主动性、病毒的针对性
-
计算机病毒中毒的主要症状:莫名其妙死机,突然重新启动或无法启动,程序不能运行,磁盘坏簇莫名其妙地增多,系统启动变慢,数据和程序丢失,正常的外设使用异常,如打印出现问题,异常要求用户输入口令
1.3 网络蠕虫
-
网络蠕虫是一种智能化、自动化,综合网络攻击、密码学和计算机病毒技术,无须计算机使用者干预即可运行的攻击程序或代码,它会扫描和攻击网络上存在系统漏洞的节点主机,通过局域网或者国际互联网从一个节点传播到另外一个节点
-
网络蠕虫具有的特征:具有独立性,利用系统漏洞主动攻击,传播速度更快更广
1.4 后门
-
后门是指绕过安全控制而获取对程序或系统访问权的方法。后门的最主要目的就是方便以后再次秘密进入或者控制系统
-
大多数入侵者的后门实现以下目的:即使管理员通过改变所有密码之类的方法来提高安全性,仍然能再次侵入,使再次侵入被发现的可能性减至最低;大多数后门设法躲过日志,大多数情况下即使入侵者正在使用系统也无法显示他已在线
1.5 特洛伊木马
-
特洛伊木马是指寄宿在计算机里的一种非授权的远程控制程序,它以隐蔽的方式进入到目标机器,对目标机器中的私密信息进行收集和破坏,再通过互联网,把收集到的私密信息反馈给攻击者,从而实现其目的的一种新型病毒
-
特洛伊木马具有的特征:隐蔽性、自动运行性、欺骗性、顽固性、易植入性
-
特洛伊木马的危害:窃取用户文件,接受木马释放者的指令,篡改文件和数据,删除文件和数据,施放病毒,使系统自毁
1.6 僵尸网络
-
僵尸网咯是指采用一种或多种传播手段,将大量主机感染僵尸程序病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
-
僵尸网络的危害:拒绝服务攻击,发送垃圾邮件,窃取秘密,滥用资源,僵尸网络挖矿
1.7 Rootkit
-
Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用
-
Rootkit的危害:Rootkit的目的在于隐藏自己以及不被其他软件发现;它可以通过阻止用户识别和删除攻击者的软件来达到这个目的;Rootkit几乎可以隐藏任何软件,包括文件服务器、键盘记录器、Botnet和Remailer;许多Rootkit甚至可以隐藏大型的文件集合并允许攻击者在您的计算机上保存许多文件,而你无法看到这些文件
1.8 防范措施
- 安装最新的杀毒软件,定期升级杀毒软件病毒库并进行病毒查杀;不要执行从网络下载后未经杀毒处理的软件;用Windows Update功能打全系统补丁;不要轻易去点击陌生的站点;不随意查看陌生邮件
1.9 恶意代码静态分析
-
恶意代码静态分析是指通过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测
-
恶意代码静态分析方法列表
分析方法 | 目的 | 使用工具 | 难度 |
---|---|---|---|
反病毒软件扫描 | 识别已知恶意代码类型 | 反病毒引擎,VirusTotal | 低 |
文件格式识别 | 确定攻击平台和类型 | file,peid,FileAnalyzer | 低 |
字符串提取 | 寻找恶意代码分析线索 | strings | 低 |
二进制结构分析 | 初步了解二进制文件结构 | binutils (nm, objdump) | 中 |
反汇编 | 将二进制代码解析翻译为汇编代码 | IDA Pro,GDB,VC | 中高 |
反编译 | 将汇编代码进一步尝试翻译为高级语言 | REC,DCC,JAD | 中高 |
代码结构与逻辑分析 | 分析二进制代码组,理解二进制代码逻辑结构 | IDA Pro,Ollydbg | 高 |
加壳识别和代码脱壳 | 识别是否加壳及类型、对抗代码混淆恢复原始代码 | UPX,VMUnpacker,手工 | 高 |
1.10 恶意代码动态分析
-
恶意代码动态分析是指通过在受控环境中执行目标代码,以获取目标代码的行为及运行结果
-
恶意代码动态分析方法列表
分析方法 | 目的 | 使用工具 | 难度 |
---|---|---|---|
快照比对 | 获取恶意代码行为结果 | FileSnap,RegSnap,完美卸载 | 低 |
动态行为监控 | 实时监控恶意代码动态行为轨迹 | Filemon,Regmon,Process Explorer,lsof | 中 |
网络监控 | 分析恶意代码网络监听端口及发起网络会话 | Fport, lsof,TDImon,ifconfig,tcpdump | 中 |
沙盒 | 在受控环境下进行完整的恶意代码动态行为监控与分析 | Norman Sandbox,CWSandbox,FVM Sandbox | 中高 |
动态跟踪调试 | 单步调试恶意代码程序,理解程序结构和逻辑 | Ollydbg,IDAPro,gdb,SoftICE,systrace | 高 |
1.11 实践内容
2 恶意代码分析
-
首先在命令提示符中进入恶意程序所在位置,使用file RaDa.exe命令查看文件信息,可以看到这是一个Windows下的32位可执行程序,并且带有图形用户界面(GUI)
-
使用PEiD工具查看该文件这个是一个版本为0.89.6的UPX壳
-
使用strings RaDa.exe命令查看该文件中可打印字符串,可以发现都是乱码,这就验证了该文件是一个加壳文件
-
使用超级巡警工具对文件进行脱壳
-
再用strings RaDa_unpacked.exe命令查看脱壳后的文件,可以看到很多的函数调用名及字符串,但是没有看到编写作者的信息
-
打开监视工具process explorer,同时运行恶意文件,这时就可以在进程监控中查看该文件的信息,可以看到编写作者是Raul siles和David Perze
3 分析Crackme程序
-
首先在命令提示符中进入恶意程序所在位置,分别使用file crackme1.exe和file crackme2.exe命令来查看文件信息,可以看到这两个文件都是Windows下的32位可执行程序,同时是命令行程序
-
执行crackme1.exe,猜测参数执行,可以发现输入一个参数和两个参数时输出结果不同,因此猜测该文件的输入是一个参数
-
接着使用IDA pro工具对其进行分析,在Strings窗口中可以看到我们试出来的两种字符串,剩下的我们没有试出来,猜测其中一个是输入的口令,另一个是口令正确时的反馈
-
接着查看函数调用图,可以发现字符串比较函数strcmp和输出函数fprintf、printf,那么sub_401280函数就十分重要,下面具体分析
-
查看sub_401280函数的流程图,首先是入栈,然后经过一系列操作,最后cmp进行比较输入参数是否有两个,如果有两个,文件进行下一步的判断,同时文件还会对输入的字符串与I know the secret进行比较
-
接着使用IDA pro工具对crackme2.exe进行分析,在Strings窗口中可以看到我们试出来的两种字符串,剩下的我们没有试出来
-
接着查看函数调用图,同样是sub_401280函数十分重要,下面具体分析
-
查看sub_401280函数的流程图,首先是入栈,然后经过一系列操作,最后cmp进行比较输入参数是否有两个,如果有两个,文件再对程序名和crackmeplease.exe进行判断,当正确时文件再对用户输入的参数与字符串I know the secret进行判断,当正确时文件会将unk_403080中的字符串逐个与0x42进行异或运算
-
进行验证
4 分析一个自制恶意代码样本
-
使用md5sum Rada.exe命令查看文件的摘要信息
-
使用file RaDa.exe命令查看文件信息,可以看到这是一个Windows下的32位可执行程序,并且带有图形用户界面(GUI)
-
接着同样是获取壳类型并脱壳
-
打开process explorer和wireshark,同时运行恶意文件,可以看到文件通过HTTP协议请求连接到10.10.10.10主机下的一个名为RaDa_commands的网页,并且还下载和上传文件到路径C:/RaDa/tmp,还可以看到文件将RaDa.exe复制到了C:\RaDa\bin路径下,并添加了自启动,并从页面获取并解析命令,所以猜测这是一个后门程序,
-
往下还可以看到文件对注册表进行了操作,甚至对主机进行了一些操作,如休眠、截屏
-
在wireshark中可以看到主机向10.10.10.10发送了大量的数据包
-
接着再使用IDA Pro进行分析,在Strings窗口中查看unicode类型的字符串
-
点击字符串可以找到调用的函数,如--visible指的是决定在获取html文件时,IE窗口是否可见
-
在字符串中发现了有Vmware Tools,猜测文件对虚拟机进行了检测,定位发现其调用的函数是sub_404FB0
-
这个字符串被复制到了dword_40C070中,同时搜索到其对应的函数是sub_40AAA0
-
查看函数sub_40AAA0流程图,发现函数先会查询网卡配置信息,再确认dword_40C070对应的字符串是否存在,并判断Vmware Tools是不是在注册表里面
-
我们可以看到--author对应的函数是sub_40B010,查看其流程图,调用了sub_40AAA0,也就是上面虚拟机对应的处理函数,如果是虚拟机就输出Unknow argument,如果不是就输出作者信息
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
- MD5摘要值:caaa6985a43225a0b3add54f44a0d4c7;32位PE GUI可执行文件,加壳方式UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
- 找出并解释这个二进制文件的目的
- 用户上网后,该文件就会连接到指定主机,从而得到攻击者的指令,攻击者可以对其进行控制,所以这应该是一个后门程序
- 识别并说明这个二进制文件所具有的不同特性
- 启动后将自己复制到C盘目录下,并且会尝试与10.10.10.10建立连接并添加自启动,并从指定页面获取并解析命令
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
- 使用了UPX加壳工具以及通过查看网卡信息判断是否是在虚拟机上运行
- 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
- 不具有自主传播模块同时也没有进行伪装,所以可能是一个后门程序
- 给出过去已有的具有相似功能的其他工具
- Worm.Bobax.m:复制自身到系统目录,并添加启动项;发作时生成一个临时病毒文件,注入到explorer.exe进程;它会关闭一些安全服务;从网上下载其他病毒;搜索本地邮件地址,发送邮件进行传播;给用户植入后门,使用户信息安全得不到保障
- 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下
- Raul siles和David Perze在2004年写的
5 Windows 2000系统被攻破并加入僵尸网络
- IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
- IRC是Internet Relay Chat的简写,一般称为互联网中继聊天;IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可
- 注册时发送的消息有三种,分别是口令(PASS)、昵称(NICK)、用户信息(USER),注册完成后使用JOIN信息加入频道
- 通常在6667端口监听,也会用6660——6669端口
- 僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络指的是采用一种或多种传播手段,将大量主机感染僵尸程序病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
- 僵尸网络往往被黑客利,如拒绝服务攻击、发送垃圾邮件、滥用资源、僵尸网络挖矿
- 蜜罐主机(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为服务器的僵尸网络?
- 使用tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"命令进行分流,使用export LC_COLLATE='C'和export LC_CTYPE='C'命令避免出现字符编码问题,最后使用cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^: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命令搜索有多少主机连接(其中grep表示搜索获取昵称输出行,sed表示去除前缀,g表示表示全局,tr表示将空格转换为换行,tr -d表示删除,grep -v表示去除空行,sort -u表示排序并去除重复,wc -l表示输出行数),得到结果:3458
- 那些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 >exp.txt; wc -l exp.txt命令查找端口并输出到exp.txt中(其中tcpdump -nn表示将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示,grep -v表示去除空行,cut -d '.' -f 10表示取出以'.'为分隔符的第10列,uniq表示检查及删除文本文件中重复出现的行列,wc -l表示输出行数),得到结果:148
- 再使用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 > exp2.txt;wc -l exp2.txt命令将连接的IP地址输出到exp2.txt中,得到结果:165
- 攻击者尝试攻击了那些安全漏洞?
- 使用tcpdump命令找出攻击者扫描且蜜罐有响应的端口,TCP端口有:135、139、25、445、4899、80,UDP端口有:137
- 那些攻击成功了?是如何成功的?
-
对于UDP 137号端口:137端口是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态,所以访问这个端口肯定就是NetBIOS查点
-
对于TCP 135号和25号端口:这两个端口连接了但没有数据传输,所以访问这两个端口可能是进行了connect扫描
-
对于TCP 139号端口:虽然有大量的连接,但大部分都是空会话,所以应该是SMB查点
-
对于TCP 445端口:在该端口连接中可以看到许多字符串,查询后发现一个PSEXESVC.EXE字符串,由61.111.101.78发起的,通过搜索知道这是一种Dv1dr32蠕虫,这种蠕虫会通过IRC进行通信
-
查询出口流量,发现返回信息中含有\PIPE\ntsvcs,通过搜索知道这是一个远程调用,所以攻击者此时攻击成功并获得了主机权限
-
对于TCP 4899端口:只有210.22.204.101进行过访问,同时搜索知道4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能,这里应该是攻击者攻击成功后用于控制
-
对于TCP 80端口:可以看到连接最多的是24.197.194.106,它不停地用脚本攻击IIS服务器的漏洞,从而获取系统权限
-
对于210.22.204.101,攻击者是想通过缓冲区溢出攻击来获取命令行
-
对于218.25.147.83,这里发现c:\notworm,说明这是一个蠕虫攻击
-
其余IP都是正常访问,再搜索通过80号端口向外的流量,发现蜜罐主机的数据包均指向一个IIS服务器的默认页面,所以80号端口的攻击失败了
6 学习中遇到的问题及解决
- 问题1:不了解汇编语言,导致分析的不够全面
- 问题1解决方案:上网查找资料进行学习
7 学习感悟、思考
- 本次实践内容很丰富,但很多都是有关汇编语言的,需要自己上网查找资料学习,收获颇丰
8 参考资料
- Linux常用命令
- [网络攻防技术与实践(诸葛建伟编著)]