说明:整个分析花费了我很长的时间,每一个点基本都详细分析了,篇幅较长。php
本次做业属于哪一个课程 | 网络攻防实践 |
---|---|
这个做业要求在哪里 | 恶意代码基础知识和分析方法 |
我在这个课程的目标是 | 学习网络攻防相关技术和原理 |
这个做业在哪一个具体方面帮助我实现目标 | 学习恶意代码安全攻防的相关知识 |
第九章的内容比较复杂,结构性不强,我主要从两个方面介绍,恶意代码基础知识和恶意代码分析技术。其中分不少小点,如恶意代码基础知识分为计算机病毒、蠕虫、RootKit等,而恶意代码分析技术分为分析环境、分析方法、反汇编等知识。html
- 恶意代码基础知识
恶意代码简单介绍
计算机病毒
网络蠕虫
后门与木马
僵尸程序与僵尸网络
Rootkit- 恶意代码分析技术
恶意代码分析基础
恶意代码分析环境
恶意代码静态分析
恶意代码动态分析
定义:Malware is a set of instructions that run on your computer and make your system do something that an attacker wants it to do.linux
指令集合:二进制执行文件、脚本语言代码、宏代码、寄生在文件或者启动扇区的指令流。ios
目的:炫耀、远程控制被攻击主机、知足施跳板攻击或进一步传播恶意代码、窃取私人信息或机密信息、窃取计算存储带宽资源、拒绝服务等。web
类型:分为计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸程序、Rootkit等。这里就不具体讲各个的定义或者是什么了,下面具体分开具体讲。给出一个恶意代码的分类依据。算法
类别 | 实例 |
---|---|
不感染的依附性恶意代码 | 特洛伊木马、逻辑炸弹 |
不感染的独立性恶意代码 | 点滴器、繁殖器 |
可感染的依附性恶意代码 | 病毒 |
可感染的独立性恶意代码 | 蠕虫 |
感染可执行文件(最为广泛的方式):前缀感染机制(病毒将自身复制到宿主程序的始端)、后缀感染机制(病毒将自身复制到宿主程序的末端)、插入感染机制(病毒在感染宿主程序时,病毒代码放在宿主程序的中间)。
shell
感染引导扇区:经过BIOS定位磁盘的主引导区,运行存储的主引导记录,接着从分区表中找到第一个活动分区,读取并执行这个活动分区的分区引导记录,而分区引导记录负责装载操做系统。windows
感染数据文件(支持宏的数据文件):将自身以宏指令的方式复制到数据文件中,当被感染的数据文件被应用程序打开时,将自动执行宏病毒体,完成病毒的引导。安全
inittab
、rc.d/init.d
文件。定义:隐藏性恶意代码形态,经过修改现有的操做系统软件,使攻击者得到访问权并隐藏在计算机中。换句话说,就是root权限的kit工具包。服务器
用户模式Rootkit:恶意修改操做系统在用户模式下的程序/代码,达到隐藏目的(木马化操做系统用户模式应用程序)。主要分为五种类型:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、一些零散工具如网络嗅探器、安装脚本。
内核模式Rootkit:恶意修改操做系统内核,从而达到更深的隐藏和更强的隐蔽性(对内核组件的恶意修改和木马化)。主要有以下方式:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。
Linux内核Rootkit:参考Linux Rootkit Learning,这篇博文讲的很好!。下图所示是利用LKM机制实现Linux内核模式Rootkit,LKM就是可装载内核模块。下图主要是经过insmod命令插入恶意内核模块,而后进行系统调用表的修改。
采用虚拟化技术构建恶意代码分析环境:这是通常状况下咱们使用的环境,其实也没什么好说的,以前的博客都已经详细说明了。主要重点是在进行恶意代码分析时,必定要保证主机和虚拟机的隔离,防止主机收到伤害,同时最好让你的整个主机也隔离网络链接,不要玩火,人人有责!!!
用于研究的恶意代码自动分析环境:专业人员使用的,分为静态分析机、动态分析机、网络分析机和综合分析机。
分析方法 | 目的 | 使用工具 | 难度 |
---|---|---|---|
反病毒软件扫描 | 标识已知恶意代码 | 反病毒引擎,VirusTotal | 低 |
文件格式识别 | 肯定攻击平台和类型 | file,peid,FileAnalyzer | 低 |
字符串提取 | 寻找恶意代码分析线索 | strings | 低 |
二进制结构分析 | 初步了解二进制文件结构 | binutils (nm, objdump) | 中 |
反汇编 | 二进制代码->汇编代码 | IDA Pro,GDB,VC | 中高 |
反编译 | 汇编代码->高级语言 | REC,DCC,JAD | 中高 |
代码结构与逻辑分析 | 分析二进制代码组,理解二进制代码逻辑结构 | IDA Pro,Ollydbg | 高 |
加壳识别和代码脱壳 | 识别是否加壳及类型、对抗代码混淆恢复原始代码 | UPX,VMUnpacker,手工 | 高 |
nm
指令在可执行文件中查找symbols
重要元素。objdump
主要功能有从可执行文件中限制不一样类型的信息、编译器类型、代码段数据段位置、反汇编。分析方法 | 目的 | 使用工具 | 难度 |
---|---|---|---|
快照比对 | 获取恶意代码行为结果 | FileSnap,RegSnap,完美卸载 | 低 |
动态行为监控 | 实时监控恶意代码动态行为轨迹 | Filemon,Regmon,Process Explorer,lsof | 中 |
网络监控 | 分析恶意代码网络监听端口及发起网络会话 | Fport, lsof,TDImon,ifconfig,tcpdump | 中 |
沙盒 | 在受控环境下进行完整的恶意代码动态行为监控与分析 | Norman Sandbox,CWSandbox,FVM Sandbox | 中高 |
动态跟踪调试 | 单步调试恶意代码程序,理解程序结构和逻辑 | Ollydbg,IDAPro,gdb,SoftICE,systrace | 高 |
任务:对提供的rada恶意代码样本(U盘或FTP/materials/course9下载),在WinXP_Attacker虚拟机中进行文件类型识别,脱壳与字符串提取,以得到rada恶意代码的编写做者。
Solution
重要说明:在进行静态分析的时候,请务必断开与物理机的网络链接,最好也断开物理机与外部网络的链接,即便rada恶意代码并无恶意行为。
实验环境:WinXP Attacker虚拟机(安装有cygwin以及基本的脱壳软件和字符串提取工具)。
首先利用file RaDa.exe
命令查看RaDa.exe
的文件类型,可知这是一个32位Windows PE可执行文件,而且有图形化窗口。
下面来看看有没有加壳,下面使用PEiD工具(查壳)来查看加壳的类型。在这里咱们能够看到这个是一个版本为0.89.6的UPX壳(压缩壳,更多内容参考UPX壳分析)。还能够看到文件的入口点、EP段、偏移、文件类型等信息。
下面用strings RaDa.exe
查看RaDa.exe中可打印字符串,发现都是乱码,这也验证了这是一个加壳程序,因此下一步是咱们要进行脱壳。
咱们用超级巡警这个软件进行脱壳,这里也识别出了是一个UPX壳,这个压缩壳仍是比较容易脱,脱完以后输出为RaDa_unpacked.exe
。自动脱壳实在是无聊,我简直是工具人,那么找个帖子手动脱壳吧,掌握ESP定律,参考这个帖子新手脱壳必看基础教程,做业写不完了,先不拓展了,继续。
脱壳结束,咱们就能够进行分析啦!打开IDA Pro Free
选择脱壳以后的文件,一直next就行,能够看到以下信息。首先是做者的信息DataRescue sa/nv
,甚至是邮箱都一目了然。同时这个程序是由MSVB编写的。继续往下是一些函数调用,甚至汇编代码都一目了然。到这里本次实验结束,结束以后就把内容打包,文件删除吧。
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其可以输出成功信息。
实验环境:装有IDA Pro的WinXP Attacker虚拟机。下面两个程序都是静态分析(利用IDA进行动态分析我不会啊)。
首先分析crackme1.exe
。对crackme1.exe
进行执行,猜想参数执行,能够发现一个参数输入与其余的参数输入获得的输出明显不同,因此能够猜想这个程序的输入是一个参数。
接下来利用IDA Pro打开这个程序分析,咱们打开经过Strings窗口能够查看该程序中出现的字符串,咱们发现了前面的两种反馈信息,I think you are missing something.
和Pardon? What did you say?
,这两个咱们以前已经见过了,很容易猜想,第一个是参数不对的返回状况,第二个是给的参数数量对了,可是具体的内容不对。还有两个咱们不知道啥意思,因此咱们要继续进行分析。同时,在这里咱们应该要有一种敏感,就是看到字符串,那么字符串操做函数就要回想在你脑子里。
接下来看函数调用图(Function Call),上面说了,要找字符串操做相关的函数,以及输出函数,由于咱们测试程序的时候明显是有输出的。若是你能理解,那么你确定找的是下图部分,能够看到字符串比较函数strcmp
和输出函数fprintf
和printf
。那么显而易见,sub_401280
这个函数就显得相当重要了。
下面咱们就看这个函数的汇编代码了,其实汇编我也不大会,不过不打紧,能看懂基本操做就好了。打开这个函数,你就能够看到push
、sub
、move
等操做,这些都是基本的汇编操做,想补如下就去网上稍微看看,我就不展开了,直入主题,首先push
了ebp入栈,而后比较最后一个cmp
比较函数参数是否是2(这里为何是2?去学C吧)。
下面就是比较了,很容易看到左边就是函数参数不为2的状况(不为2输出的字符串也明显与咱们以前猜想的内容一致),右边就是参数为2的状况。
进入右边,发现又调用了一个字符串匹配函数strcmp
,也就是讲咱们输入的字符串与I know the secret
进行比较,若是不匹配就输出Pardon? What did you say?
(这个咱们以前已经见过啦)。那么正确,就输出You know how to speak to programs, Mr. Reverse-Engineer
。
根据上面的分析,咱们去实验吧,很明显,咱们获得了正确的结果。
接下来分析crackme2.exe
。下面我就主要用IDA Pro进行分析,不猜想了。首先仍是看明文字符串,有五个,本身先有个印象就好,下面咱们仍是要寻找字符串操做函数
咱们首先仍是打开call function,咱们能够看到字符串比较函数strcmp
和输出函数fprintf
以及输入函数等。那么此时应该寻找,sub_401280
这个函数了。
和上面同样,找到这个函数的汇编代码,一样的,下面有判断参数是否为2,若是不是,就返回I think you are missing something
。这个不重要,下面咱们着重看若是参数对了是什么样子。
下面的就是参数的个数对了的状况,这是啥?难道匹配这个字符串?千万不要这样子觉得,注意这里比较的是什么?是ebp+arg_4
,不是上面的ebp+arg_0
了。那就是说咱们这里匹配的不是执行参数了,那应该是什么呢?看arg_4
和arg_0
相差了4(变量定义的时候dword ptr 8
和dword ptr 0C
),那么arg_0
表明的是第一个参数,其实arg_4
表明的就是第0个参数,也就是程序名(这里可能又有人要问为何是4,32位平台堆栈指针每次4字节变化)。其实下面是能够验证的,由于在下面进行第一个参数匹配的时候先执行了add eax, 4
指令,也就是地址变回去了。
下面就是判断失败的输出了。判断成功的输出,咱们能够看到对第一个参数进行了匹配,那么这个应该就是咱们的第1个参数应该输入的值了。同时下面还给出了输入第一个参数不对的状况。
分析了这么多,好像是分析完了,因而咱们就去测试,首先呢copy crackme2.exe crackmeplease.exe
给程序改个名字,而后输入crackmeplease.exe "I know the secret"
发现输出了一个字符串We have a little secret: Chocolate
,但是这个咱们没见过这个明文字符串啊。好吧,那咱们继续看看是怎么回事吧。
咱们继续往下看,又是一个判断,并且这仍是一个循环,左边这个很明显是跳出循环的条件。看右边的,有个操做是xor eax 42h
,这个指令是将eax
与0x42
异或,网上看有个指令是add eax,offset unk_403080
。那么就很简单了,后面的操做就是将unk_403080
中的字符逐个与0x42
进行异或运算。能够验证0x15 xor 0x42
对应的ascii码是W
。至此分析恶意代码样本实验结束。
任务:如今你做为一名安全事件处理者的任务(若是你接受的话)就是深刻分析这个二进制文件,并得到尽量多的信息,包括它是如何工做的,它的目的以及具备的能力,最为重要的,请展现你获取全部信息所采起的恶意代码分析技术。
拿到一个程序第一步咱们应该是干吗,固然是打开他,在打开他以前,那这是一个恶意软件,打开以前咱们至少要打开监控工具吧。这也就是咱们一般说的动态分析。
首先打开Filemon(文件),Regmon(注册表),Wireshark(网络)三个软件进行监测。这个时候能够启动这个恶意软件了。(软件在网上找的,古老)
观察Filemon咱们能够看到程序文件RaDa.exe
复制到了C:\RaDa\bin
目录下,而且新建了temp
目录。
继续观察Regmon,咱们能够看到进行了不少注册表的操做,其中其中有一个时在自启动项里面加入了RaDa: C:\RaDa\bin\RaDa.exe
。
继续看Wireshark给咱们的结果,时不时的访问10.10.10.10
,并且是80端口,估计是访问某个html页面,这个我也没看懂,可是这个恶意软件确定是和网络有关的无疑了。动态分析给咱们的信息是在太少了,只能静态分析了。
下面就是静态分析了。首先准备工做一鼓作气:摘要
、file
、strings
,脱壳
。
利用md5sum RaDa.exe
指令获得其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
。利用file RaDa.exe
识别出这是32位PE文件,而且仍是个GUI文件,当时打开怎么没反应,难道是要参数?同时这是一个加壳文件,能够用strings RaDa.exe
输出看是否是所有乱码。
下面咱们超级巡警进行脱壳,这是一个UPX壳,而且成功脱壳。
脱壳以后就是利用IDA Pro进行分析了。那么按照以前静态分析的套路,咱们首先就应该看字符串。
首先你应该把Type改为unicode
类型,不出意外你确定会看到下列这些字符串。看下面几种字符串,首先第一张图明显就是命令行参数了,能够本身逐个试一下,看看都有什么含义。第二张图咱们看到是一个版本做者的字符串。第三张图能够看到是一个注册表的字符串,可是这里有两个,还有一个VMware tools
值得咱们注意。最后一张图的字符串时RaDa_commands.html
,很明显,这个应该就是咱们以前进行访问的那个html网页了。看明文字符串能带给咱们不少信息,筛选重要的字符串对于咱们分析来讲相当重要。
字符串看完下一步咱们就看汇编代码逻辑了。首先咱们仍是看命令行参数的代码逻辑。咱们能够看到命令行参数都在sub_405E40
这个函数中,这个函数应该就是处理命令行参数的。最下面给出每一个命令行参数的详细解释,我也没有一个一个分析。
参数 | 做用 |
---|---|
--verbose |
显示Starting DDoS Smurf remote attack |
--visible |
决定在获取html文件时,IE窗口是否可见 |
--server |
指定命令文件控制服务器的ip地址、访问协议及目录等,默认是http://.10/RaDa |
--commands |
指定命令文件,默认是RaDa_commands.html |
--cgipath |
指定服务器上cgi文件的根目录,默认是cgi-bin |
--cgiget |
指定负责文件上传的cgi脚本,默认是upload.cgi |
--cgiput |
指定负责文件下载的cgi脚本,默认是download.cgi |
--tmpdir |
指定临时文件夹的位置,默认是C:\RaDa\tmp |
--period |
指定两次向服务器请求命令文件的时间间隔,默认是60秒 |
--cycles |
指定多少次向服务器请求命令文件后退出,默认是0(没有限制) |
--help |
输出版权信息 |
--gui |
使用该参数会使样本出现一个GUI窗口 |
--installdir |
指定样本的安装路径,默认是C:\RaDa\bin |
--noinstall |
使用该参数,样本将不会安装、也不会添加注册表 |
--uninstall |
卸载样本 |
--authors |
若是确认不是在VMware的虚拟机中运行,则显示样本的做者;不然显示参数不存在 |
继续根据线索分析,咱们知道RaDa_commands.html
这个字符串极其重要,由于咱们看到有网络访问,那么咱们就去寻找这个字符串对应的函数了。首先咱们确定很简单的能寻找到这个字符串对应的函数是sub_404FB0
,咱们进入这个函数,看黄色部分的汇编代码,很容易知道他是被拷贝到dword_40C030
这个变量中了。还能看到不少其余的字符串拷贝(这些字符串就是默认的一些值)。
那么咱们确定也很是容易找到这个dword_40C030
变量对应的函数了(鼠标放在上面就有了),也就是函数sub_4052C0
,找到这个函数,而且打开其Call Graph方便查看。这里咱们看到判断了三个网段分别为192.168.
、172.16.
、10.
,很明显,这是三个私有网段,也就是说确保服务器在私有网段中,而后到服务器去取命令文件。
有命令文件就必定有命令,那么下面就是一些具体的命令以及其功能。其实sleep应该是咱们以前在作动态分析的时候最能感知的。
命令 | 功能 |
---|---|
exe |
在宿主主机中执行指定的命令 |
put |
将宿主主机中的指定文件上传到服务器 |
get |
将服务器中的指定文件下载到宿主主机中 |
screenshot |
截取宿主主机的屏幕并保存到tmp文件夹 |
sleep |
中止活动一段时间 |
最后一部分分析,就是关于咱们找到的字符串中有Vmware Tools
,因此咱们猜想这个程序是否是对虚拟机有所检测(仍是要说一下字符串对咱们的分析来讲相当重要)。
首先咱们找到该字符串对应的函数sub_404FB0
,在这个函数中,这个字符串被拷贝到变量dword_40C070
,继续寻找这个变量对应的函数,找到是sub_40AAA0
。接下来咱们主要看看这个函数干吗了以及哪里调用了这个函数。
咱们看到这个函数进行了网卡配置信息的查询(Select),而后进行了右边就确认dword_40C070
对应的字符是否存在,并进行了Mac地址查询,注册表的查看等操做(Wscript.shell)。也就是判断vmware tools
是否是在注册表里面。
咱们注意观察当--authors
在咱们的虚拟机上输出的是Unknow argument
,但是咱们确实也能在明文字符串信息中找到做者的信息。这个时候咱们观察到--authors
参数对应的处理函数是sub_40B010
,找到以后,咱们打开Call Graph进行观察,结果就显而易见意见了,这里调用了sub_40AAA0
函数,也就是上面虚拟机对应的处理函数,咱们发现,这里的处理是若是是虚拟机就输出Unknow argument
,若是不是,就输出正确的做者信息。到此,咱们的分析部分也就结束了。
分析部分其实已经讲了很是透彻了,下面简要梳理答案。
问题一:md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
。32位PE GUI可执行程序,同时这是一个UPX加壳文件。
问题二:经过上面的分析,咱们知道用户上网,就获得了攻击者的指令,而且攻击者能够彻底控制该系统(指令),因此这应该是一个后门程序或者僵尸程序。
问题三:RaDa.exe
被执行时,它会将自身安装到系统C盘中,并经过修改注册表的方式使得每次系统启动,启动后主要就是如下过程:
问题四:防分析技术以下:
—-authors
参数时将不会输出做者信息。问题五:首先这个样本不具备传播和感染的性质,因此它不属于病毒和蠕虫。而后它也没有将本身假装成有用的程序以欺骗用户运行,因此他也 不属于木马。因此我认为他是一个后门程序或者僵尸程序。
问题六:Bobax,2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,而后解析并执行其中的指令。还有特洛伊木马Setiri。
问题七:很简单了,做者在上面的分析中给出了是Raul siles和David Perze于2004年编写的。
任务:数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其余敏感信息被混淆。回答下列问题
IP:172.16.134.191
)与哪些IRC服务器进行了通讯?209.196.44.172
为服务器的僵尸网络。USER <username> <hostname> <servername> <realname>
、PASS <password>
、NICK <nickname>
。注册完成后,客户端就使用JOIN信息来加 入频道,格式以下:JOIN <channel>
。6667
端口监听,也会使用6660—6669
端口。SSL加密传输在6697
端口。USER/NICK
)。IP:172.16.134.191
)与哪些IRC服务器进行了通讯?使用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
209.196.44.172
为服务器的僵尸网络。说明:这里先不要用kali尝试了,在kali下tcpflow输出的文件用grep
命令有点问题(grep不到所有的字符串),这里坑了我好久,因此我就直接用在macOS上作了。估计是文件编码的问题,若是有谁知道麻烦告知,谢谢。
这里仍是主要参考答案方法3的思路。首先咱们用tcpflow进行分流,指令为tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667"
,这条指令的含义就是读取文件,筛选host和端口6667
后进行分流。生成了一个report文件和两个分流的文件,固然咱们主要看的就是209.
开头的文件。从这个文件中找到有多少个主机访问了209.196.44.172
。
下一步,因为macOS字符编码的问题,参考RE error: illegal byte sequence on Mac OS X。因此使用sed命令可能致使illegal byte sequence问题。因此限先执行如下两条指令export LC_COLLATE='C'
和export LC_CTYPE='C'
。同时下面会用到不少Linux指令,建议你们参考Linux菜鸟教程查看相关的教程。
下面咱们输入以下指令进行搜索有多少主机链接。下面讲解这个指令:首先这个指令确定是管道链接的,第一条是cat
命令,链接209.
输出文件。第二条grep
搜索获取昵称输出行。第三条sed
去除前缀,最后的g
是全局的意思。第三条tr
将空格转换为换行。第四条tr -d
删除\r
。第五条grep -v
就是NOT
指令,去除空行。第六条sort -u
排序并去除重复。最后一条wc -l
输出行数。因此看到输出咱们就知道总共有3457个主机访问了以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
cut -d
是指定字段的分隔符,uniq命令用于检查及删除文本文件中重复出现的行列,通常与sort命令结合使用。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
awk -F
就是指定分隔符,可指定一个或多个,print
后面作字符串的拼接。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
攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用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扫描。
而后看TCP 80
端口,首先利用Wireshark进行筛选tcp.dstport==80 && ip.dst == 172.16.134.191
,首先链接最多的就是24.197.194.106
这个IP,他的行为就是不停的用脚本在攻击IIS服务器的漏洞,从而获取系统权限,正是由于用的脚本,因此才会有这么多记录。
接下来是68.169.174.108
访问的80
端口,好吧,都是正常的HTTP访问,并没有异常。同时,最后还有一个192.130.71.66
也是一个正常的访问,就再也不叙述了。
210.22.204.101
访问的80
端口,这么多C
是什么状况,看来攻击者是想经过缓冲区溢出攻击来得到一个命令行了。最后一个访问80
端口的是218.25.147.83
,看到这么多N
我还觉得是缓冲区溢出攻击呢,可是继续往下看,你会看到c:\notworm
,稍微百度下你就会发现这是一个红色代码蠕虫攻击。
最后就是看80
端口有没有攻击成功了,咱们经过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机作的几回回应均为一个iis服务器的默认页面,因此80
端口的这些攻击均失败。
接下来是TCP 139
号端口。这个也比较简单,虽然有不少链接到这个端口的,可是基本都是同样的,大部分都是链接,而后不少空会话,一样这个也没有成功,这个应该是个SMB查点。
下面分析与139端口关系极其密切的TCP 445
端口。这个端口链接很是多,同时咱们也能看到许多\samr
, \srvsvc
,这些都是基本的查点,这里确实很差找,建议用strings查询相关的字符串进行分析,或者就像我同样硬看,查询字符串后很容易发现一个PSEXESVC.EXE
字符串,同时你在Wireshark中也能找到,是由61.111.101.78
发起的,经过对这种字符串的搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是经过IRC进行通讯。那么咱们怎么判断是否是攻击成功了呢?咱们一样找出口流量,发现每一个IP地址连入的链接都有响应的回应,而且返回信息中含有\PIPE\ntsvcs
,经过搜索可知,这是一个远程调用,因此攻击者确定是得到了权限,所以这个攻击成功的。
最后还剩一个TCP 4899
端口。只有一个IP访问过,即210.22.204.101
。能够查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制。到此,咱们的分析就结束啦。