问题 | 回答 |
---|---|
这个做业属于哪一个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个做业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695 |
我在这个课程的目标是 | 学习教材第九章,了解恶意代码的相关知识 |
这个做业在哪一个具体方面帮助我实现目标 | 相关知识点和实践任务 |
恶意代码定义:恶意代码 (Malware,或 Malicious Code) 指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。php
恶意代码类型:恶意代码能够根据其执行方式、传播方式和对攻击目标的影响分为计算机病毒、蠕虫、恶意移动代码、特洛伊木马、后门、僵尸程序、内核套件等。
html
恶意代码的命名规则与分类体系:反病毒业界广泛采用 “ 三元组命名 ” 规则来对所发现的恶意代码新样原本进行命名,这里的“ 三元组” 是指恶意代码的类型、家族名称和变种号,通常形式为:[恶意代码类型]恶意代码家族名称[变种号]
。各类形态的恶意代码在各个关键技术环节上都有帮其明确的定义特性,下图给出了一个基于多维度标签的恶意代码技术形态分类方法的示意,即在恶意代码工做机理中最为核心的传播、控制、隐藏和攻击这些关键技术环节中,有着一些具备特异性的特性,能够经过为恶意代码样本添加技术环节维度上的分类标签, 从而标识出该样本所具备的一种或多种特性。
linux
计算机病毒基本特性:感染性、潜伏性、可触发性、破坏性、衍生性。ios
计算机病毒的传播机制:计算机病毒的传播渠道包括移动存储、电子邮件及下载、共享目录等。web
-网络蠕虫的基本特性:网络蠕虫的定义特性在于经过网络的自主传播,若是一个恶意代码不经过网络传播,那么它就不是蠕虫。
算法
网络蠕虫的组成结构:蠕虫的内部组件相似于导弹这种战争武器中的一些部件 弹头用来穿透目标,传播引擎驱动导弹飞向它的目标,目标选择算法和扫描引擎很像导弹中的小型回转仪,能够引导导弹发现和指向它的目标,有效载荷仓中则携带了执行真正破坏性攻击的恶性材料。
编程
弹头:为了侵占一个目标系统,蠕虫必须首先得到计算机的访问权,它可使用一些渗透攻击代码做为 “弹头 ”,侵入目标系统。经常使用攻击技术有缓冲区溢出攻击、文件共享攻击、利用电子邮件传播、利用其余广泛的错误配置。windows
传播引擎:经过在目标系统上执行传播引擎指令,来完成蠕虫样本的传播,传播引擎一般利用的网络传输机制包括文件传输协议 FTP 、小文件传输协议 TFTP、超文本传输协议 HTTP、服务信息块协议 SMB 以及原始 SOCKET 套接字等。浏览器
目标选择算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,而后利用扫描引擎扫描每个由目标选择算法肯定的地址,肯定其是否能够被攻击。目标选择算法包括电子邮件地址、主机列表、被信任的系统、网络邻居主机等。sass
有效载荷:蠕虫的有效载荷就是附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操做。好比说植入后门、安装分布式拒绝服务攻击代理、组建僵尸网络、执行一个复杂的计算等。
从定义特性上进行分析,后门是容许攻击者绕过系统常规安全控制机制的程序,可以按照攻击者本身的意图提供访间通道; 而木马做为特洛伊木马的简称,是指一类看起来具备某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
后门:后门工具可以为攻击者提供多种不一样类型的访问通道,包括本地权限提高和本地帐号、单个命令的远程执行、远程命令行解释器访问、远程控制 GUI、无故口后门。对于后门工具而言,攻击者但愿它可以持续地在目标系统中运行,而且在系统重启之 后可以仍然随着系统进行启动,这样才可以保证他对目标系统的随时控制。 所以后门工具每每都利用了系统的自启动功能,将自身加入到系统重启机制中。
特洛伊木马:经过使本身看起来像是正常的有用的软件,特洛伊木马程序能够用于下目的:欺骗用户或系统管理员安装特洛伊木马程序,这样木马程序就经过亳无戒备的用户进入到计算机系统中;隐藏在计算机的正常程序中,将本身假装成看起来属于该系统,使得用户和管理员不会觉察到它的存在,一般与后门工具结合,成为木马后门。经常使用技术包括命名假装、使用软件包装工具、攻击软件发布站点、代码下毒。
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络。僵尸网络区别于其余攻击方式的基本特性是使用一对多的命令与控制机制,另外,僵尸网络还具备恶意性和网络传播性。
僵尸网络的功能结构:佣尸程序的功能组成结构, 能够分为主体功能模块和辅助功能模块,主体功能模块包括实现僵尸网络定义特性的命令与控制模块和实现网络传播特性的传播模块,而包含辅助功能模块(由信息窃取模块、主机控制模块、下载更新模块和防分析检测模块构成)的僵尸程序则具备更强大的攻击功能和更好的生存能力。
僵尸程序的命令与控制机制:当前主流使用的僵尸网络命令与控制机制包括: 基于 IRC 协议的命令与控制机制、基于HTTP 协议的命令与控制机制和基于 P2P 协议的命 令与控制机制这三大类。
IRC僵尸网络工做机制图:
它可以经过控制目标计算机操做系统的关键组件, 来为攻击者提供强有力的手段, 用来获取访问并隐藏在系统中。Rootkit 的定义是: “ 一类特洛伊木马后门工具,经过修改现有的操做系统软件,使攻击者得到访问权并隐藏在计算机中“。
为了得到全部这些技术特性和能力,Rookit须要由众多的功能组件所组成,包括替换操做系统软件用于隐藏自身的恶意程序,实现隐蔽性后门访问的后门程序,还有各类辅助工具,这些工具容许攻击者调整那些被替换程序的特征,包括程序大小和上次修改日期等,从而可使得这些程序看上去和原来正常程序没有任何差别。
根据操做系统的分层, Rootkit能够运行在两个不一样的层次上, 即用户模式和内核模 式。
用户模式Rootkit:大部分 UNIX 用户模式 Rootkit 中集成的工具能够被分为以下五种不一样的类型,包括提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、一些零散工具如网络嗅探器、安装脚本;在 Windows 平台上, 实现用户模式 Rootkit 主要有如三种不一样技术
内核模式 Rootkit:利用对内核的操做,内核模式 Rootkit 能够修改内核,完全地隐藏攻击者在计算机上的活动,大多数内核模式 Rootkit 采用以下技术手段:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。
Linux 内核模式 Rootkit
恶意代码分析与针对良性代码和软件的程序分析技术,均可以采用通用的代码分析技术来做为基础,主要包括静态分析和动态分析方法,来对代码进行逆向工程(Reverse Engineering)来肯定其功能。
经过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。恶意代码静态分析技术以下图所示
反病毒软件扫描:使用现成的反病毒软件来扫描待分析的样本, 以肯定反病毒软件是否可以识别该样本, 以及所识别的类型、家族、变种等信息。
文件格式识别:恶意代码一般是以二进制可执行文件格式存在的,其余的存在形式还包括脚本文件、带有宏指令的数据文件、压缩文件等。文件格式识别可以让咱们快速地了解待分析样本的文件格式。在Windows 平台上, 二进制可执行文件E XE 和DLL 都是以 PE 文件格式组织的,而在 Linux 平台上,可执行文件格式则是 ELF 。
字符串提取分析:主要提取的信息包括可能得到的有用信息、恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息和Email地址、库和函数调用。
二进制结构分析:nm 指令在可执行文件中查找 symbols 重要元素。objdump 主要功能有从可执行文件中限制不一样类型的信息、编译器类型、代码段数据段位置、反汇编
反汇编(Disassemble)与反编译(Decompile):反汇编与反编译是对二进制程序编译连接的逆过程,反汇编是把二进制程序的目标代码从二进制机器指令码转换为汇编代码的处理过程,而反编译则更进一步,指望将汇编代码再进一步还原成高级编程语言形式的源代码。
代码结构与逻辑分析:程序结构主要是了解 Call Graph,即用户函数、系统函数和函数调用关系。分析系统函数调用列表可在高层分析二进制程序的行为逻辑。程序逻辑主要是了解程序控制流图(CFG),CFG完备地反映了一个程序的执行逻辑。
加壳识别与代码脱壳:恶意代码一般使用的加壳混淆机制包括加密、多样性、多态和变形等,加密机制(Encryption)通常采用固定的代码加密器来对一进制程序进行处理,以改变代码的存在形态。
动态分析,其实是激活一个受控分析实验环境中的代码,当一个代码在实际系统中运行时,咱们可以更加迅速地了解其行为。动态分析技术以下图所示
基于快照比对的方法和工具:针对恶意代码动态分析的快照比对方法是首先对原始的“ 干净" 的系统资源列表作一个快照,而后激活恶意代码并给予充分的运行时间, 如5分钟,以后咱们再对恶意代码运行后“ 脏” 的系统资源列表进行快照,并对比两个快照之间的差别,从而获取恶意代码行为对系统所形成的影响,好比新建、删除或修改了哪些文件、哪些注册表项等。
系统动态行为监控方法:系统动态行为监控是目前恶意代码动态行为分析中最为核心和经常使用的技术步骤,针对恶意代码对文件系统、运行进程列表、注册表、本地网络栈等方面的行为动做,进行实时监视、记录和显示。系统动态行为监视一般基于行为通知(Notification)机制或者 API 劫持技术(API Hooking)实现。
网络协议栈监控方法:主要监控四个方面,包括恶意代码开放的本地端口、恶意代码发起的网络链接、控制恶意代码网络流和恶意代码流行攻击方式-ARP欺骗。
沙箱技术:沙箱技术提供了受限制的执行环境,使得在沙箱中运行的代码不可以修改用户系统,从而提供了 一个用于运行不可信程序的安全环境。
动态调试技术:动态调试器可以以单步模式来调试恶意代码,可以一行代码接着一行代码,一个函数调用接着一个函数调用地进行恶意代码行为分析的过程,这样就可以像录像机同样可以逐个镜头的分析犯罪现场录像,并也能够中断或者快进程序运行流程,观察恶意代码中发生的一切。
实践任务: 对提供的 rada 恶意代码样本,进行文件类型识别,脱壳与字符串提取,以得到 rada 恶意代码的编写做者,具体操做以下:
1. 使用文件格式和类型识别工具,给出 rada 恶意代码样本的文件格式、运行平台和加壳工具。
2. 使用超级巡警脱壳机等脱壳软件,对 rada 恶意代码样本进行脱壳处理。
3. 使用字符串提取工具,对脱壳后的 rada 恶意代码样本进行分析,从中发现 rada 恶意代码的编写做者是谁
本次实验采用Windows XP attacker,上面安装有超级巡警脱壳器等分析软件
首先使用 file 命令查看 RaDa.exe 的文件类型
能够看到 RaDa.exe 是一个 Windows PE 可执行文件,而且有图形化窗口
接下来使用 PEiD 工具查看 RaDa.exe 的基本信息(加壳类型等)
能够看到这个是一个版本为 0.89.6 的 UPX 壳(压缩壳),还能够看到文件的入口点、偏移、文件类型、EP 段、汇编程序。
而后使用strings RaDa.exe
查看 RaDa.exe 中可打印字符串
发现都是乱码,须要进行脱壳处理
使用超级巡警对 RaDa.exe 进行脱壳,脱壳后输出 RaDa_unpacked.exe
虽然是通过修改的 UPX 壳,可是该自动化脱壳工具显然有这个壳的样本库,可以自动脱壳,省去了手工脱壳的麻烦
再用 strings 查看脱壳后的RaDa.exe(RaDa_unpacked.exe)
能够看到显示了正常信息
这时候用 IDA Pro Free 打开这个文件,查看详细信息
能够在字符串中找到做者的名字,Raul Siles 和 David Perze
任务:在WinXP Attacker虚拟机中使用 IDA Pro 静态或动态分析 crackme1.exe 和 crackme2.exe ,寻找特定的输入,使其可以输出成功信息
本次实验实验 Windows XP attacker 装有 IDA Pro
首先检查一下两个文件的完整性,计算其 md5 值,验证
使用file
命令查看其文件类型
能够看到这两个文件都是32位 windows 下 PE 文件,没有图形界面,是命令行程序
接下来,尝试对 crackme1.exe 进行分析,首先运行它,能够发现,在接受1个参数时,程序的输出不同凡响,因此咱们猜想该程序的输入为一个参数。另外,能够发现程序的两种输出信息。一种是“I think you are missing something.”,这个猜想是参数数目不对的提示;另外一种是“Pardon? What did you say?”,对于这种反馈信息,猜想应该是参数错误的提示。
接下来利用 IDA Pro 打开这个程序分析,打开咱们打开经过 Strings 窗口能够查看该程序中出现的字符串。经过 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”这两个字符串。有内容咱们能够猜想,前者就是咱们须要的口令,后者就是输入口令正确时程序的输出信息。
接下来看函数调用图(Function Call),能够得出三个结论:程序估计是使用strcmp
函数来比较输入的,而后利用print
和fprint
函数输出;关键的部分在sub_401280
这里;从strcmp
函数能够推断出程序是用c语言编写的
下面来看sub_401280
这个函数(因为只是在上学期的 linux 课程里学过一点汇编语言,因此并非彻底能看懂),倒数第二行cmp [ebo+arg_0],2
为判断程序是否有两个参数(cmp指令为比较两个操做数的大小),若是不是则返回“I think you are missing something.”
在c语言中,main函数一般为int main(int argc,const char **argv)
,即第一个参数argc
对应argv
的大小,第二个参数对应命令行的格式。好比说在命令行输入crackme1.exe 1
,那么参数对应的值为argc=2,argv={”crackme1.exe”,”1”}
。
若是argc = 2
(即输入了两个参数),那么进行下一步判断
call strcmp
中,程序用“I know the secret”对应的字符串和[eax]
对应的字符串(用户输入的口令)相比较,经过比较的结果反馈口令是否正确
若是正确,则输出“You know how to speak to programs, Mr. Reverse-Engineer”
若是错误,则输出“Pardon? What did you say?”
运行程序来验证咱们的猜测
下面来分析 crackme2.exe,主要是采用 IDA Pro 进行静态分析,一样打开文件,查看 strings 窗口。
一样打开call function
查看,能够获得与分析 crackme1.exe 几乎相同的结论,一样要关注sub_401280
这个函数
一样地找到这个函数,仍是判断输入是否为两个参数,若是不是返回“I think you are missing something.”
若是是两个参数,则接着用strcmp
函数对argv
里面的第一个字符串(即程序名,由于这里是arg_4
,也就是指向1号栈空间的指针,此时这个空间用来存储argv[0]
) 和“crackmeplease.exe”进行判断
若是判断错误,则输出“I have a identity problem”
若是判断正确,则继续判断用户的输入与“I know the secret”判断
若是判断错误,则输出“Pardon? What did you say?”
若是判断正确,则进入一个循环,首先将var_4
指向的值置0,而后经过比较其与0x21
的大小来决定是否进行循环,若是大于0x21
,则跳转到loc_401381
,小于0x21
则继续执行,循环内部是经过将unk_403080
中的字符逐个与0x42
进行异或运算(add eax,offset unk_403080
,xor eax 42h
),而后输出(call putchar),unk_403080
中的值以下图所示
下面来验证咱们的猜测,首先将程序名改成“crackmeplease.exe”,而后输入“I know the secret”,查看输出
本次实践做业的任务是分析一个自制的恶意代码样本,以提升对恶意代码逆向工程分析技术的认识,并提升逆向工程分析的方法、工具和技术。
关于这个二进制文件,咱们建立它的目的是为了提升安全业界对恶意代码样本的认识,并指出为对抗如今的恶意代码威胁发展更多防护技术的必要性。你做为一名安全事件处理者的任务(若是你接受的话)就是深刻分析这个二进制文件,并得到尽量多的信息,包括它是如何工做的,它的目的以及具备的能力,最为重要的,请展现你获取全部信息所采 取的恶意代码分析技术。
待分析二进制文件位置: rada.zip, 警告这个二进制文件是一个恶意代码, 所以你必须采用 一些预防措施来保证业务系统不被感染,建议在一个封闭受控的系统或网络中处理这个未知的实验品。
回答问题:
分析过程:
先进行动态分析。首先打开监控工具 Filemon,Regmon,Wireshark 三个软件进行监测。同时使用 Regshot 记录下还未启动恶意软件时的注册表状态,这个时候能够启动这个恶意软件了。
启动后能够观察到注册表监视器和文件监视器的变化,这时用 Regshot 记录下此时注册表状态,生成比较文件。
此时咱们能够发现,对于文件的改变,建立了C:\RaDa
、C:\RaDa\tmp
和C:\RaDa\bin
目录,而后将程序文件RaDa.exe
复制到了C:\RaDa\bin
目录下
而对于注册表来讲,经过生成的两个注册表状态的比较,咱们能够发现程序在注册表启动项 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下创建键值RaDa
,并同时将 C:\RaDa\bin\RaDa.exe 添加进去
对于网络来讲,一直经过 HTTP 协议访问 ip地址为 10.10.10.10 的网站
利用动态分析咱们很难看是否有隐藏路径等信息,因此下面转入静态分析
首先使用命令md5sum
和file
得到程序的 MD5 摘要和文件类型。能够看到 RaDa.exe 是一个 Windows PE 可执行文件,而且有图形化窗口,md5值为caaa6985a43225a0b3add54f44a0d4c7
接下来使用 PEiD 工具查看 RaDa.exe 的基本信息(加壳类型等)
能够看到这个是一个版本为 0.89.6 的 UPX 壳(压缩壳),还能够看到文件的入口点、偏移、文件类型、EP 段、汇编程序。
使用超级巡警对 RaDa.exe 进行脱壳,脱壳后输出 RaDa_unpacked.exe
而后使用 IDA Pro 进行分析,首先查看字符串窗口,把类型 Type 改为 unicode 类型,首先看到的是命令行参数,其次是版本和做者,而后是注册表字符串,最后是一个网页RaDa_commands.html
,应该是以前访问的网站的网页
命令行参数的做用
参数 | 做用 |
---|---|
--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_404FB
函数分析,这个字符串被复制到了变量dword_40C030
中,搜索这个变量找到sub_4052C0
。
查看函数sub_4052C0
能够看到判断3个内网网段,分别为192.168.
、172.16.
、10.
,这里确保服务器位于这3个内网网段,而后去服务器中获取命令,解析并执行其中的命令
下面就是这些具体的命令以及其功能
命令 | 功能 |
---|---|
exe | 在宿主主机中执行指定的命令 |
put | 将宿主主机中的指定文件上传到服务器 |
get | 将服务器中的指定文件下载到宿主主机中 |
screenshot | 截取宿主主机的屏幕并保存到tmp文件夹 |
sleep | 中止活动一段时间 |
最后是来分析一下程序是否存在VMware
识别,以 HKLM\Software\VMware,Inc.\VMware Tools\InstallPath 为线索分析,找到函数sub_404FB0
(authors 命令处理函数),在这个函数中,这个字符串被复制到变量dword_40C070
,搜索这个变量对应的函数,找到是sub_40AAA0
。
sub_404FB0
获取了网卡配置信息,并检查了 mac 地址,而后确认 HKLM\Software\VMware,Inc.\VMware Tools\InstallPath 是否存在(也就是看看VMware Tools 是否是在注册表里)
(ps:--authors的做用,若是确认不是在 VMware 的虚拟机中运行,则显示样本的做者;不然显示参数不存在)
问题解答
经过以上分析过程回答这些问题
提供对这个二进制文件的摘要,包括能够帮助识别同同样本的基本信息。
程序的 MD5 摘要值为caaa6985a43225a0b3add54f44a0d4c7
,加壳方式是UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
,文件类型RaDa.exe: PE32 executable (GUI) Intel 80386, for MS Windows
,这些能够做为文件标识
找出并解释这个二进制文件的目的
这是一个后门程序,可以使得远程的攻击者彻底地控制系统,而且只要系统可以经过浏览器上网,就能得到攻击者的指令
识别并说明这个二进制文件所具备的不一样特性。
RaDa.exe被执行时,它会将自身安装到系统C盘中,并经过修改注册表的方式使得每次系统启动,启动后主要就是如下过程:从指定的web服务器请求指定的web页面;解析得到的web页面,获取其中的指令;执行解析出来的指令,主要的指令上面给出
;等待一段时间后继续按照上述步骤继续执行。
启动后,RaDa一直在后台运行,不会弹出任何窗口。并支持如下指令
命令 | 功能 |
---|---|
exe | 在宿主主机中执行指定的命令 |
put | 将宿主主机中的指定文件上传到服务器 |
get | 将服务器中的指定文件下载到宿主主机中 |
screenshot | 截取宿主主机的屏幕并保存到tmp文件夹 |
sleep | 中止活动一段时间 |
识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
--authors
参数时将不会输出做者信息Starting DDoS Smurf remote attack
,让分析者误认为是程序执行 DDoS 攻击,实际上并无对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
首先这个样本不具备传播和感染属性,因此不是病毒或者蠕虫;其次也没有将本身假装成有用的程序以欺骗用户运行,因此他也不属于木马;因此应该是一个后面程序,若是是多对一控制,还多是 HTTP Bot(僵尸程序)
给出过去已有的具备类似功能的其余工具。
从服务器下载指令并执行具有组件僵尸网络的能力;Setiri及其前辈GatSlag
可能调查出这个二进制文件的开发做者吗?若是能够,在什么样的环境和什么样的
能够经过--authors
参数获取相关做者信息Authors: Raul Siles & David Perez,2004
;环境和限定条件是不在虚拟机 VMware 中运行
难度等级:中级, 案例分析挑战内容:
在2003年3月初, Azusa Pacific大学蜜网项目组部署了一个未打任何补丁的Windows
2000蜜罐主机,而且设置了一个空的管理员密码。在运营的第一个星期内,这台蜜罐主机就频繁地被攻击者和蠕虫经过利用几个不一样的安全漏洞攻陷。在一次成功的攻击以后, 蜜罐主机加入到一个庞大的僵尸网络中,在蜜罐主机运营期间,共发现了15164个不一样主机加入了这个僵尸网络。此次案例分析的数据源是用Snort工具收集的该蜜罐主机5天的网络流日志, 并经过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和一些其余的特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置你的任务是分析这个日志文件并回答如下给出的问题。
IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪一个消息?IRC通常使用哪些TCP端口?
因特网中继聊天(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 端口。
僵尸网络是什么?僵尸网络一般用于干什么?
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络。
它每每被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也均可被黑客随意“取用”。
蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通讯?
经过 Wireshark 打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
,由于咱们知道 IRC 服务经过6667端口
通过筛选,能够获得五个IRC服务器,分别为 209.126.161.2九、66.33.65.5八、63.241.174.14四、217.199.175.十、209.196.44.172
在这段观察期间,多少不一样的主机访问了以209.196.44.172为服务器的僵尸网络
首先先拉取209.196.44.172与172.016.134.191之间的全部的 IRC 数据包。这里使用命令tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 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地址,通讯时间等等。
而后使用如下代码对209.196.044.172.06667-172.016.134.191.01152
文件进行筛选,能够获得共有3457个主机访问过服务器(在当前主机进入到IRC的频道以后,频道会将当前频道中全部的主机的信息都发送过来,能够从其中的数据包中计算当前频道共有多少主机)
哪些IP地址被用于攻击蜜罐主机?
首先,咱们认为进入蜜罐的流量都是攻击。使用如下命令查找端口并输出到1.txt 中
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 >1.txt; wc -l 1.txt
(tcpdump -nn: 指定将每一个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;uniq命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数)
能够看到共有148个端口被攻击了
接着使用以下指令找出全部的可能链接的主机的 IP 地址。这个指令的做用就是将链接IP地址输出到2.txt中。
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
(其中 awk -F 就是指定分隔符,可指定一个或多个, print 后面作字符串的拼接。)
能够看到一共有165个主机被用于蜜罐入侵
攻击者尝试了哪些安全漏洞?
要了解攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii
指令先查一下网络流分布状况。发现大部分都是TCP包,有一部分UDP包,因此咱们首先应该筛选出响应的TCP端口和UDP端口。
利用下面的指令筛选出蜜罐主机相应的 TCP 端口。输出能够看到 TCP 响应端口为135(rpc),139(netbios-ssn),25(smtp)445(smb),4899(radmin),80(http)。
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
(0x12表明有回复)
将协议部分改成 udp ,能够筛选出 udp 端口137(netbios-ns)
tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and udp | 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 服务器的漏洞,从而获取系统权限。
接下来是210.22.204.101访问的80端口,攻击者是想经过缓冲区溢出攻击来得到一个命令行了
下一个访问 80 端口的是218.25.147.83,这里会看到c:\notworm,说明这是一个蠕虫攻击。上网搜索发现是红色代码(red code)病毒
其他的 ip 地址均为正常访问蜜罐
最后看对80端口有没有攻击成功了,咱们经过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机作的回应均为一个 iis 服务器的默认页面,因此80端口的这些攻击均失败。
而后关注TCP 139号端口。这个也比较简单,虽然有不少主机链接到这个端口的,可是基本都是同样的,大部分都是链接,而后不少空会话,一样也没有成功,因此应该是 SMB 查点。
而后分析TCP 445端口。这个端口链接很是多,能够看到许多 \samr, \srvsvc 字符串,查询字符串后很容易发现一个PSEXESVC.EXE
字符串,是由61.111.101.78发起的,经过对这种字符串的搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是经过IRC进行通讯。
继续往下看,发现该 ip 地址与蜜罐创建了会话,说明攻击成功
还有就是 ip 地址为210.22.204.101的主机进行的攻击,根据字符串推测应该是使用了LAN Manager口令猜想,一样创建了会话,攻击成功
其他的针对 445 端口的数据流量都是一些普通查点,就不一一赘述了
最后一个TCP 4899端口。只有 IP 地址 210.22.204.101 访问过。上网搜索能够查到 4899 端口是一个远程控制软件 radmin 服务端监听端口,这个软件不是木马,应该是上面攻击成功后上传这个软件方便控制。
至此分析结束
哪些攻击成功了?是如何成功的?
经过上面的分析可知,成功的攻击发起者是210.22.204.101 和 61.111.101.78,分别是 Dv1dr32 蠕虫和 LAN Manager 口令猜想
此次实验题目较以前的几周又难又多,感受本身的脑子快不够用了,仍是得多学习多实践啊