《网络攻防实践》10.0
20199110 2019-2020-2 《网络攻防实践》第九周作业
友情提醒:部分题图可能存在模糊,建议右键打开新标签页进行查看。
1.实践内容
第9章是恶意代码安全攻防,属于第三部分系统安全攻防技术与实践。主要包括恶意代码基础知识和恶意代码分析方法两部分。
1.1 恶意代码基础知识
这部分包括恶意代码定义与分类、恶意代码发展史、计算机病毒、网络蠕虫、后门与木马、僵尸程序与僵尸网络、Rootkit。
恶意代码(Malware,或Malicious Code)指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。恶意代码根据执行方式、传播方式和对攻击目标的影响分为计算机病毒(Computer Virus)、蠕虫(Worm)、恶意移动代码(Malicious Mobile Code)、后门(Backdoor)、特洛伊木马(Trojan Horse)、僵尸网络(Botnet)、僵尸程序(Bot)、内核套件(Rootkit)等。反病毒业界通常采用“三元组命名”规则来命名恶意代码。
在1983年计算机病毒定义正式出现之后,恶意代码在近30年发展过程中重要和著名的案例有Brian病毒、Concept病毒等。恶意代码的发展趋势:恶意代码的复杂度和破坏力不断增强、恶意代码技术的创新越来越频繁、关注重点从计算机病毒转到蠕虫和内核级的攻击工具等。
1.1.1 计算机病毒
计算机病毒在1983年由Fred Cohen首次提出。1994年我国的《中华人名共和国计算机安全保护条例》给出了我国对计算机病毒的具有法规效力的定义。计算机病毒的基本特性:感染性、潜伏性、可触发性、破坏性、衍生性等。计算机病毒潜在的感染目标可分为可执行文件、引导扇区和支持宏指令的数据文件三大类。计算机病毒的传播渠道包括移动存储、电子邮件及下载、共享目录等。
1.1.2 网络蠕虫
网络蠕虫是一种通过网络自主传播的恶意代码,可以进行自我复制。蠕虫的内部组成结构有弹头、传播引擎、目标选择算法、扫描引擎和有效载荷。
-
蠕虫获取目标系统访问权常用的技术有缓冲区溢出攻击、文件共享攻击、利用电子邮件传播、利用其它普遍的错误配置等;
-
传播引擎通常利用的网络传输机制包括文件传输协议FTP、小文件传输协议TFTP、超文本传输协议HTTP、服务信息块协议SMB以及原始SOCKET套接字等;
-
蠕虫可选择的目标有电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务、通过特定规则任意选择IP目标地址等;
-
蠕虫的有效载荷有附加的攻击代码、植入后门、安装分布式拒绝服务攻击代理、组件僵尸网络、执行一个复杂的计算等。
1.1.3 后门与木马
后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;木马(特洛伊木马)是指一类看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
后门工具能够为攻击者提供多种不同类型的访问通道,包括本地权限提升和本地账号、单个命令的远程执行、远程命令行解释器访问、远程控制GUI、无端口后门等。对于UNIX平台,后门工具则也可以利用inittab系统初始化脚本、inetd网络服务配置、与用户登录或程序激活相关的用户启动脚本、Crond后台程序计划任务来配置自启动等。
特洛伊木马程序的目的有欺骗用户或系统管理员安装特洛伊木马程序、隐藏在计算机的正常程序中等。
1.1.4 僵尸网络与僵尸程序
僵尸网络是在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展融合而产生的一种新型攻击方式。僵尸网络是指攻击者处于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络具有恶意性和网络传播性。最早出现的IRC僵尸网络由僵尸网络控制器(botnet controller)和僵尸程序两部分组成。
僵尸程序分为主体功能模块和辅助功能模块,主体功能模块包括命令与控制模块和传播模块,辅助功能模块包括信息窃取模块、主机控制模块、下载更新模块和防分析检测模块。当前主流的僵尸网络命令与控制机制有基于IRC协议的命令控制机制、基于HTTP协议的命令与控制机制和基于P2P协议的命令与控制机制三大类。
1.1.5 Rootkit
Rootkit属于特洛伊木马的范畴。根据操作系统的分层,Rootkit可以运行在用户模式和内核模式两个不同的层次上。除了这两种传统模式Rootkit之外,还有虚拟机模式Rootkit。针对类UNIX平台的用户模式Rootkit是Rootkit的最初模式,实现用户模式Rootkit主要有使用现有接口在现有Windows函数之间注入恶意代码、关闭Windows文件保护机制后覆盖硬盘上的文件、利用DLL注入和API挂钩操纵正在内存中运行的进程三种技术。
大多数内核模式Rootkit采用如下技术:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制等。Linux操作系统中利用LKM机制来实现内核模式Rootkit有Adore、Adore-ng、KIS(Kernel Intrusion System)等,目前实现的Windows内核模式Rootkit有NT Rootkit、Fu Rootkit等。
1.2 恶意代码分析方法
这部分包括恶意代码分析技术概述、恶意代码分析环境、恶意代码静态分析技术、恶意代码动态分析技术。
1.2.1 代码分析技术概述
代码分析或称程序分析,是按需求使用一定规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。恶意代码分析的关键点在于构造受控的分析环境。恶意代码分析的技术方法主要包括静态分析和动态分析两大类。
1.2.2 恶意代码分析环境
恶意代码分析环境有恶意代码发烧友的分析环境、基于虚拟化构建恶意代码分析环境、用于研究的恶意代码自动分析环境。
1.2.3 恶意代码静态分析技术
恶意代码静态分析主要技术手段有反病毒软件扫描、文件格式识别、字符串取分析、二进制结构分析、反汇编、反编译、代码结构与逻辑分析、加壳识别与代码脱壳等。
1.2.4 恶意代码动态分析技术
恶意代码动态分析主要技术手段有快照对比、系统动态行为监控、网络协议栈监控、沙箱、动态调试等。其中,系统动态行为监控软件包括文件行为监控软件、进程行为监控软件、注册表监控软件、本地网络栈行为监控软件等。目前常用的动态调试器软件包括Windows平台下的开源Ollydbg软件、微软推出的免费软件windbg商业软件IDA Pro和SoftICE等,以及类UNIX平台下的gdb、systrace、ElfShell等。
2.实践过程
2.1 任务一
动手实践:恶意代码文件类型识别、脱壳与字符串提取
实践任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具休操作如下。
(1)使用文件格式和类型识别工具, 给出rada恶意代码样本的文件格式、运行平台和加壳工具。
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析, 从中发现rada恶意代码的编写作者是谁?
解答
操作平台为WinXPattacker
,平台上相关分析工具完备。
(1)使用file
命令查看RaDa.exe
的文件类型,看到RaDa.exe
是一个Windows PE
可执行文件,并且有图形化窗口。
(2)使用PEiD
工具查看RaDa.exe
的基本信息,这里可以看到文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型。
(3)使用strings
命令查看RaDa.exe
中可打印字符串,发现可打印字符串出现乱码。乱码的原因是因为文件被加壳,正常字符无法显示。
(4)使用超级巡警之虚拟机自动脱壳器对RaDa.exe
进行脱壳。尽管是经过修改的UPX壳,但是该自动化脱壳工具显然有这个壳的样本库,能够自动脱
壳,省去了手工脱壳的麻烦。
(5)再用strings
查看脱壳后的RaDa.exe(RaDa_unpacked.exe)
,脱壳之后出现正常的字符串,再从中寻找有用信息。
(6)使用IDA Pro Free
打开脱壳后文件RaDa_unpacked.exe
,我们可以看到作者的信息DataRescue sa/nv
,甚至是邮箱都一目了然。
2.2 任务二
动手实践:分析Crackme程序
实践挑战:使用IDA Pro静态或动态分析crackme1.exe与crackme2.exe,寻找特定的输入,使其能够输出成功信息。
解答
操作平台仍为WinXPattacker
,平台上相关分析工具完备。
使用file
命令查看Crackme1.exe
和Crackme2.exe
的文件类型,可以知道这两个crackme
都是32位windows PE
文件,没有图形界面,是命令行程序。
针对Crackme1.exe
,有
(1)首先,我们先对crackme1.exe
进行破解。一开始是尝试运行该程序,试探其输入格式。我们可以发现,在接受1个参数时,程序的反馈与众不同,所以我们猜测该程序接受一个参数。目前为止,我们已经发现了程序的两种反馈信息。一种是“I think you are missing something.”
,这个猜测是参数数目不对的提示;另一种是“Pardon? What did you say?”
,对于这种反馈信息,我们猜测是参数错误的提示。
(2)接着我们使用IDA pro
工具来打开文件,尝试阅读其汇编语言,验证我们的猜想。通过Strings
页面可以查看到该程序中出现的明文字符串,我们发现了前面的两种反馈信息,“I think you are missing something.” “Pardon? What did you say?”
,还发现了“I know the secret”
和“You know how to speak to programs
,Mr. Reverse-Engineer”
这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的反馈信息。
(3)通过查看整个程序的call flow
,我们可以得出结论,程序是用C语言写的,程序估计是使用strcmp
函数来比较口令的,关键的部分在sub_401280
这里。
(4)接下来我们开始查看sub_401280
的汇编代码。倒数第二行cmp [ebo+arg_0],2
为判断程序是否有两个参数。在c语言中,main函数通常为int main(int argc,const char **argv)
,即第一个参数argc
对应argv
的大小,第二个参数对应命令行的格式。如在命令行输入crackme1.exe 1
,那么参数对应的值为argc=2,argv={”crackme1.exe”,”1”}
。
(5)如果argc=2
,那么进行下一步判断。call strcmp
中,程序用“I know the secret”
对应的字符串和[eax]
对应的字符串(用户输入的口令)相比较,通过比较的结果反馈口令是否正确。尝试输入口令I know the secret
,我们可以通过程序的测试。
针对Crackme2.exe
,有
(1)首先使用IDA pro
工具来打开文件,尝试阅读其汇编语言,验证我们的猜想。通过Strings
页面可以查看到该程序中出现的明文字符串,明文字符串有“I know the secret”
和“crackmeplease.exe”
。
(2)查看程序的call flow
,我们发现关键的部分在sub_401280
这里。
(3)进入Function call
,主要查看sub_401280
。倒数第二行,cmp [ebp+arg_0],2
判断程序参数是否为两个。通过参数个数的判断后,接着用strcmp
函数对argc
里面的第一个字符串,即程序名,和“crackmeplease.exe”
进行判断。
(4)通过程序名判断后,用户输入的口令与”I know the secret”
判断。
(5)通过口令判断后,通过一定规则输出通过测试的信息。具体是unk_403080
中的字符串分别与0x42h
进行异或运算。
(6)尝试输入口令I know the secret
,我们可以通过程序的测试。通过测试得到的反馈信息如下。
2.3 任务三
样本分析实践:分析一个自制恶意代码样本rada,并撰写分析报告
本次实践作业的任务是分析一个自制的恶意代码样本,以提高对恶意代码逆向工程分析技术的认识,并提高逆向工程分析的方法、 工具和技术。
关于这个二进制文件,我们创建它的目的是为了提高安全业界对恶意代码样本的认识,并指出为对抗现在的恶意代码威胁发展更多防御技术的必要性。你作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。
待分析二进制文件位置:rada.zip, *警告* 这个二进制文件是一个恶意代码,因此你必须采用一些预防措施来保证业务系统不被感染,建议在一个封闭受控的系统或网络中处理这个未知的实验品。
回答问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
(2)找出并解释这个二进制文件的目的。
(3)识别并说明这个二进制文件所具有的不同特性。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
(6)给出过去已有的具有相似功能的其他工具。
奖励问题:
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
解答
首先把相关答案给出:
(1)md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
。32位PE GUI可执行程序,同时这是一个UPX加壳文件。
(2)通过上面的分析,我们知道用户上网,就得到了攻击者的指令,并且攻击者可以完全控制该系统(指令),所以这应该是一个后门程序或者僵尸程序。
(3)RaDa.exe
被执行时,它会将自身安装到系统C盘中,并通过修改注册表的方式使得每次系统启动,启动后主要就是以下过程:
- 从指定的web服务器请求指定的web页面;
- 解析获得的web页面,获取其中的指令;
- 执行解析出来的指令,主要的指令上面给出;
- 等待一段时间后继续按照这个循环执行。
(4)防分析技术如下:
- UPX加壳;
- 通过查看网卡的`MAC`地址以及查看`VMware Tools`的注册表项来判断操作系统是否运行在VMware虚拟机上,如果是,则使用`—-authors`参数时将不会输出作者信息;
- `Starting DDoS Smurf remote attack`字符串可能让别人联想这是DDos攻击。
(5)首先这个样本不具有传播和感染的性质,所以它不属于病毒和蠕虫。然后它也没有将自己伪装成有用的程序以欺骗用户运行,所以他也 不属于木马。所以我认为他是一个后门程序或者僵尸程序。
(6)Bobax
,2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。还有特洛伊木马Setiri
。
(7)作者在上面的分析中给出了是Raul siles
和David Perze
于2004年编写的。
动态分析
(I)首先打开Filemon(文件),Regmon(注册表),Wireshark(网络)三个软件进行监测(Filemon和Regmon可以百度搜索下载),然后在cmd
窗口运行RaDa.exe
。观察Filemon
我们可以看到程序文件RaDa.exe
复制到了C:\RaDa\bin
目录下,并且新建了temp目录。
(II)继续观察Regmon
,我们可以看到进行了很多注册表的操作。
依次按照“开始”---“运行”---输入“regedit”---回车
打开注册表编辑器,然后依次打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
查看自启动项,可以看到加入了RaDa: C:\RaDa\bin\RaDa.exe
。
(III)然后打开wireshark
,使用过滤器ip.src == 10.10.10.10 or ip.dst == 10.10.10.10
进行过滤。我们可以看到尝试进行http
登录,估计是要访问html
网页。
静态分析
(I)利用md5sum RaDa.exe
指令得到其md5
摘要值为caaa6985a43225a0b3add54f44a0d4c7
。利用file RaDa.exe
识别出这是32位PE文件,并且还是个GUI文件。
下面我们使用超级巡警进行脱壳,这是一个UPX壳,并且成功脱壳。脱壳详细描述可参考任务一。
(II)脱壳之后就是利用IDA Pro
进行分析,首先就应该看字符串。在Type
下筛选unicode
类型,我们可以看到下列这些字符串:命令行参数、版本作者的字符串、注册表的字符串以及VMware tools
。
很明显,RaDa_commands.html
这个应该就是我们之前进行访问的那个html
网页。
(III)查看汇编代码逻辑,首先我们还是看命令行参数的代码逻辑。我们可以看到命令行参数都在sub_405E40
这个函数中,这个函数应该就是处理命令行参数的。
(IV)继续根据线索分析,我们知道RaDa_commands.html
这个字符串极其重要,因为我们看到有网络访问,那么我们就去寻找这个字符串对应的函数了。首先我们肯定很简单的能寻找到这个字符串对应的函数是sub_404FB0
,我们进入这个函数,看黄色部分的汇编代码,很容易知道他是被拷贝到dword_40C030
这个变量中了。还能看到很多其他的字符串拷贝(这些字符串就是默认的一些值)。
(V)然后我们很快找到这个dword_40C030
变量对应的函数sub_4052C0
,找到它并且打开Call Graph
查看。这里我们看到判断了三个网段分别为192.168.、172.16.、10.
,很明显,这是三个私有网段,也就是说确保服务器在私有网段中,然后到服务器去取命令文件。
(VI)有命令文件就一定有命令,那么下面就是一些具体的命令以及其功能。其实sleep应该是我们之前在做动态分析的时候最能感知的。
(VII)最后一部分分析字符串中的Vmware Tools
,所以我们猜测这个程序是不是对虚拟机有所检测。首先我们找到该字符串对应的函数sub_404FB0
,在这个函数中,这个字符串被拷贝到变量dword_40C070
,继续寻找这个变量对应的函数,找到是sub_40AAA0
。接下来我们主要看看这个函数干嘛了以及哪里调用了这个函数。
(VIII)我们看到这个函数进行了网卡配置信息的查询(Select
),然后进行了右边就确认dword_40C070
对应的字符是否存在,并进行了Mac
地址查询,注册表的查看等操作(Wscript.shell
)。也就是判断vmware tools
是不是在注册表里面。
(IX)我们注意观察当--authors
在我们的虚拟机上输出的是Unknow argument
,可是我们确实也能在明文字符串信息中找到作者的信息。这个时候我们观察到--authors
参数对应的处理函数是sub_40B010
,找到之后,我们打开Call Graph
进行观察,结果就显而易见意见了,这里调用了sub_40AAA0
函数,也就是上面虚拟机对应的处理函数,我们发现,这里的处理是如果是虚拟机就输出Unknow argument
,如果不是,就输出正确的作者信息。
2.4 任务四
取证分析实践:Windows 2000系统被攻陷并加入僵尸网络
难度等级:中级,案例分析挑战内容:
在2003年3月初,Azusa Pacific大学蜜网项目组部署了一个未打任何补丁的Windows2000蜜罐主机,并且设置了一个空的管理员密码。在运营的第一个星期内,这台蜜罐主机就频繁地被攻击者和蠕虫通过利用几个不同的安全漏洞攻陷。在一次成功的攻击之后,蜜罐主机加入到一个庞大的僵尸网络中,在蜜罐主机运营期间,共发现了15164个不同主机加入了这个僵尸网络。这次案例分析的数据源是用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),有
-
IRC(INTERNET RELAY CHAT,英特网继传聊天)通过特殊的协议(IRC协议),大家连到一台或者多台IRC服务器上进行聊天。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC特点是通过服务器中继与其他连接到这一服务器上的用户交流,通过IRC简介了解IRC的相关内容。
-
在一台新的被僵尸程序控制的靶机申请加入的时候首先要发送口令、昵称和用户信息。消息格式如下:
USER <username> <hostname> <servername> <realname>、 PASS <password> 和 NICK <nickname>
。对于曾经注册过的靶机,直接通过JOIN指令加入对应的频道,指令如下:JOIN <channel>
。 -
IRC
通常使用6660 - 6669
端口进行监听,其中6667
是明文端口,此外额外占用一个端口6697
进行SSL
加密传输。由于此处的端口号并不唯一,这就导致难以通过端口号进行检测,这里使用协议过滤的相关内容,对NICK、JOIN
等IRC
指令进行过滤。
针对(2),有
-
僵尸网络是可被攻击者远程控制的被攻陷主机所组成的网络。僵尸网络是控制者(称为Botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
-
僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、监听用户敏感信息、记录键盘输入信息、扩散新的恶意软件和伪造点击量,骗取奖金或操控网上投票和游戏等。
针对(3),有
使用Wireshark
打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
,因为我们上面的分析知道IRC
通过6667
端口。筛选之后,我们可以找到五个IRC服务器,分别为:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
针对(4),有
(I)使用命令tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 6667'
(读取文件,筛选host
和端口6667
后进行分流),执行之后我们将获得三个文件:172.016.134.191.01152-209.196.044.172.06667
、209.196.044.172.06667-172.016.134.191.01152
和report.xml
。我们先看一下report.xml
这里提到了这两个文件的相关信息,可以看到如下图的内容,包括上述双方的ip地址,端口,mac地址,通信时间等等。
(II)查看209.196.044.172.06667-172.016.134.191.01152
文件,找到访问209.196.44.172
的主机数。相关指令有:
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
# 指令注释
首先这个指令肯定是管道连接的。
第一条是cat命令,连接209.输出文件;
第二条grep搜索获取昵称输出行;
第三条sed去除前缀,最后的g是全局的意思;
第四条tr将空格转换为换行;
第五条tr -d删除\r;
第六条grep -v就是NOT指令,去除空行;
第七条sort -u排序并去除重复;
最后一条wc -l输出行数。
看到输出,只统计出了5次结果,这个就很有问题了。通过与别人博客对比,正确的结果应该是有3457个主机访问了以209.196.44.172
为服务器的僵尸网络。此处问题暂未解决,需要再行搜索。
针对(5),有
(I)使用下面的指令查找端口并输出到1.txt
中,如图所示,查找到148个被攻击的端口。
tcpdump -n -nn -r botnet_pcap_file 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt
# 指令注释
cut -d是指定字段的分隔符;
uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用。
(II)下面我们使用下面的指令找出所有的可能连接的主机的IP地址。这个指令的作用就是将连接IP地址输出到2.txt
中,我们看到总共有165个主机可能被用于入侵蜜罐。
tcpdump -n -nn -r botnet_pcap_file 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
# 指令注释
awk -F就是指定分隔符,可指定一个或多个,print后面做字符串的拼接。
针对(6)和(7),有
(I)攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii
指令先查一下网络流分布情况。我们发现大部分都是TCP
包,有一部分UDP
包,所以我们首先应该筛选出响应的TCP
端口和UDP
端口。
(II)利用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
指令筛选出蜜罐主机相应的TCP
端口。输出可以看到TCP响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
。同样的,将指令协议部分改成udp
就可以查询udp
端口响应,我们能查到仅有137(netbios-ns)
号端口响应。
接下来对上述端口进行分析,udp 137
号端口是个在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是NetBIOS
查点。
(III)使用tcp.port == 25 && tcp.port == 135
查看135
号端口和25
号端口,我们看到只是进行了连接,但是是没有数据的交互的,所以这攻击者可能是对这两个端口进行了connect
扫描。
(IV)接下来查看80端口,首先筛选tcp.dstport==80 && ip.dst == 172.16.134.191
。第一个,首先连接最多的就是24.197.194.106
,他的行为就是不停的用脚本在攻击IIS服务器的漏洞,从而获取系统权限,正是因为用的脚本,所以才会有这么多记录。
第二个,是68.169.174.108
访问的80端口,属于正常的HTTP访问。最后还有一个192.130.71.66
也是一个正常的访问。
第三个,是210.22.204.101
访问的80端口,大量“C”表明攻击者是想通过缓冲区溢出攻击来获得一个命令行。
第四个,是218.25.147.83
访问的80端口,大量“N”的出现,初步怀疑是缓冲区溢出攻击。但是继续往下看,你会看到c:\notworm
,百度后发现是红色代码蠕虫攻击。
最后,查看80端口有没有攻击成功了,我们通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis
服务器的默认页面,所以80端口的这些攻击均失败。
(V)接下来是TCP 139号端口,大部分都是连接的,但是很多空会话。同样这个也没有成功,这个应该是个SMB查点。
(VI)下面分析与139端口关系极其密切的TCP 445端口。这个端口连接非常多,同时我们也能看到许多\samr
, \srvsvc
,查询字符串后很容易发现一个PSEXESVC.EXE
字符串。同时你在Wireshark
中也能找到,是由61.111.101.78
发起的,通过对这种字符串的搜索,发现这是一种Dv1dr32
蠕虫,这种蠕虫正是通过IRC
进行通信。
那么我们怎么判断是不是攻击成功了呢?我们同样找出口流量,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs
,通过搜索可知,这是一个远程调用,所以攻击者肯定是获得了权限,因此这个攻击成功的。
(VII)最后还剩一个TCP 4899端口。只有一个IP访问过,即210.22.204.101
。可以查得4899端口是一个远程控制软件radmin
服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制。
3.学习中遇到的问题及解决
-
问题1:注册表编辑器和自启动项位置未知。
-
问题1解决方案:通过百度XP系统的注册表编辑器位置和自启动项的打开方式,问题解决。
-
问题2:snort无法安装,显示无法定位到snort。
-
问题2解决方案:目前已经试过换源和update两种方案,仍未解决。但是kali同系统的备用机却毫无问题???黑人问号脸。薛定谔的kali和它的sonrt。
-
问题3:在统计访问主机数时,没有显示正确结果。
-
问题3解决方案:暂时无解。
4.实践总结
前两个实验在参考实验指导书的情况下完成,基本没有遇到问题;后两个实验在参考解建国同学的博客下完成,也基本完成实践任务。有部分问题一直未得到根本性解决,主要通过换机来解决。这点还需要后面的学习去不断补充和提高。
总体而言,本次实践全部为文件分析实践,不涉及攻击活动,但是不涉及攻击活动并不意味着实践任务就会简单。本次实践使用工具繁多,这反映了网络攻防技术的工具化,但是集成化仍有待提高。