20212906 2021-2022-2 《网络攻防实践》第八次作业

一、实验内容

1.恶意代码基础知识

1.1恶意代码定义与分类

​ 恶意代码(Malware,或Malicious Code)指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。

​ 恶意代码这一概念在人类创造电子计算机之处就有了,20世纪70年代计算机病毒这一概念出现在科幻小说中,80年代后,人们开始关注重视计算机病毒。

​ 恶意代码可以根据其执行方式、传播方式利对攻击目标的影响分为计算机病毒、蠕虫、 恶意移动代码、特洛伊本马、后门、僵尸程序、内核套件等,其特征和典型实例如下表。

恶意代码类型 定义特征 典型实例
计算机病毒(Virus) 通过感染文件(执行文件、数据文件、电子邮件等)或磁盘引导扇区进行传播,一般需要宿主程序被执行或人为交互才能运行。 Brain, Concept, CIH
蠕虫(Worm) 一般为不需要宿主的单独文件.通过网络传播,自动复制,通常无须人为交互便可感染传播 Morris, Code Red,Slammer
恶意移动代码(Malicious mobile code) 从远程主机下载到本地执行的轻量级恶意代码,不需要或仅需要极少的人为于预。 Santy Wonn
后门(Backdoor) 绕过正常的安全控制机制,从而为攻击者提供访问途径 Netcat, BO,冰河
特洛伊本马(Trojan) 伪装成有用软件,隐藏其恶意目标,欺骗用户安装执行 Seliri
僵尸程序(Bot) 使用一对多的命令与控制机制组成僵尸网络 Sdbot, Agobot
内核套件(Rootkit) 通过替换或修改系统关键可执行文件(用户态),或者通过控制操作系统内核(内核态),用以狭取并保持最高控制权(root access) LRK. FU. hdef
融合型恶意代码 融合上述多种恶意代码技术,构成更只破坏性的恶意代码形态 Nimda

反病毒业界普遍釆用“三元组命名”规则来对所发现的恶意代码新样本来进行命名,一般形式为:

[恶意代码类型.]恶意代码家族名称[.变种号]

但反病毒商家对“三元组”命名的方式有所不同,导致病毒种类十分混乱,且一直没有统一标准。

​ 在未来,恶意代码的复杂度和破坏力会不断增强,更新速度也会加快

1.2计算机病毒

​ 我国对计算机病毒给出的具有法规效力的定义:“计算机病毒是指编制或者在计算机程序中插入的,破坏计算机功能或数据、影响计算机使用,并能自我复制的一组计算机指令或者程序代码”。不论如何定义计算机病毒,他都有这几个特点:感染性、潜伏性、可触发性、破坏性、衍生性。

​ 根据计算机病毒的定义于特征,计算机病毒要进入到一个计算机程序,然后运行、进行不断的自我复制,计算机病毒如何进入程序,又如何开始运行的呢。

​ 计算机病毒潜在的感染目标可分为三大类:

可执行文件:前缀感染机制(加到宿主程序的开始)、后缀感染机制(加到宿主程序的结尾,使用跳转指针先运行病毒)和插入感染机制(加到宿主程序的中间,找好位置很关键),三种感染机制,都必须在宿主程序运行前抢先获得控制权。

引导扇区:病毒感染引导区,在系统启动前,先获得控制权

支持宏指令:病毒一宏指令的方式复制到数据文件中,当某个软件执行该数据文件时,会先执行病毒。

​ 病毒的一大特点是传播,病毒的传播一般要借助人的力量,如附着在移动存储、电子邮件及下载、共享目录,当人们互相使用这些软硬件的时候,病毒就得以传播。

1.3 网络蠕虫

​ 网络蠕虫(Worm)是一种通过网络自主传播的恶意代码,这是一种可以自我复制的代码,并且通过网络传播,通常无须人为干预就能传播。如果没有外界干扰,蠕虫会一直对脆弱的系统进行感染,传播速度可能是指数形式,对互联网的危害十分巨大。

​ 网络蠕虫的基本特性是通过网络的自主传播,利用目标系统上存在的安全缺陷,进而用一种自动的方法来占据目标主机。这也是和计算机病毒最大的区别之处。

​ 蠕虫的基本结构如下图所示。

弹头:弹头一般是渗透模块主要用来获得计算机访问权,侵入计算机系统

传播引擎:通常利用的网络传输机制将蠕虫的复制样本传输到目标系统

目标选择算法和扫描引擎:目标选择算法开始寻找新的攻击目标,然后利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击,当然这一切利用的都是已攻击计算机的资源

有效载荷:蠕虫的有效载荷就是附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操作,例如添加后门、安装分布式拒绝服务攻击代理

1.4后门与木马

​ 后门和木马是两个概念,但通常结合在一起使用,后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道,木马则是指一类看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。

​ 后门能够为攻击者提供多种不同类型的访问通道:本地权限提升和本地账号、单个命令的远程执行、远程命令行解释器访问、无端口后门、远程控制GUI。Windows系统中,后门工具可以利用自启动文件夹、注册表自启动项及预定计划任务来自启动。后门工具进入自启动文件夹后,系统启动后会自动启动自启动文件夹,后门工具也就捎带着启动了。

​ 特洛伊木马通过使自己看起来像是正常的有用的软件,越过防火墙进入到系统。常用的手段是欺骗用户或系统管理员安装特洛伊木马程序,例如攻击者攻击软件发布站点,是软件带有恶意代码,下载软件的人察觉不到,就在安装软件时也安装了恶意代码。

1.5僵尸程序与僵尸网络

​ 僵尸程序具有蠕虫、特洛伊木马、后门三者的特征,担忧与三种有着显著的区别,僵尸程序会使用“弹头”获得主机的控制权并通过网络进行传播,为了隐藏自己会采用一些伪装和欺骗机制,可以为攻击者提供对受害主机的远程控制。僵尸程序的结构图如下,其中命令与控制模块是核心,传播模块将僵尸程序传播到不同的主机上。

​ 僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。下图是IRC僵尸网络的工作机制,其僵尸控制器是IPC聊天服务器。

​ 僵尸网络的基本特性是使用一对多的命令与控制机制,当前主流使用的僵尸网络命令与控制机制包括: 基于IRC协仪的命令与控制机制、基于HTTP协议的命令与控制机制和基于P2P协议的命令与控制机制。

1.6 Rootkit

​ Rootkit,它能够通过控制目标计算机操作系统的关键组件,来为攻击者提供强有力的手段,用来获取访问并隐藏在系统中。Rootkit具有特洛伊木马和后门的特性。但其定义特点在于通过替换或修改现有操作系统软件进行隐蔵。

​ 根据操作系统的分层,Rootkit可以运行在两个不同的层次上,即用户模式和内核模式。

​ UNIX用户模式Rootkit中集成的工具类型:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、零散工具(嗅探)、安装脚本、

​ Windows的用户模式Rootkit:将恶意代码通过开发接口插入插入到现有的Windows函数之间、使WFP功能失效再修改获替换系统程序、使用DLL注入和API挂钩 技术把恶意代码直接加入运行进程的内存空间中。

​ 内核模式Rootkit,控制力更强,更难以发现,采样的技术手段:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。

2. 恶意代码分析方法

​ 在大多数情况下,进行恶意代码分析时,我们将只有恶意代码的可执行文件本身,而这些文件并不是我们人类可读的。为了了解这些文件的意义,你需要使用各种工具和技巧,而每种只能揭露出少量的信息。所以在实战中,我们要综合使用各种工具,才能看到一个全貌。
​ 恶意代码分析有两类基本方法:

静态分析:在没有运行恶意代码时对其进行分析的技术
动态分析:相比较静态分析而言,则需要运行恶意代码,通过其产生的行为,如对计算机中注册表、文件的更改,网络的连接等动态数据进行分析,从而确定其具体行为。

2.1恶意代码分析环境

​ 基于前面对恶意代码的各种介绍,恶意代码的分析一定要有一个封闭,可控的环境,简单的原因就是若是恶意代码运行起来了,可以控制环境来控制恶意代码,且恶意代码不会影响到环境外的主机。

​ 恶意代码分析爱好者可以用很低的成本搭建一个分析环境,淘几台旧电脑、找一个集线器链接几台电脑,在电脑上安装用于安全保护的软件、代码分析的软件,一个简单的分析环境就有了。

​ 当然在科技发达的今天,我们可以利用虚拟化技术在电脑上安装几台虚拟机,这下连电脑都不用买了,但是安装虚拟机的电脑性能还是要好一点,而且在分析恶意代码时,宿主机最好不要有什么网络业务,也最好将宿主机的网卡与虚拟机网卡隔离开。

​ 以上这两种环境对于我来说已经足够了,但是对于安全团队和反病毒厂商是远远不够的。安全研究团队和反病毒厂商都会维护更加复杂、功能更加完备的恶意代码分析环境,从而能够对每次发现和捕获的大量恶意代码样本实例进行高度自动化地分析,生成恶意代码分析报告,并指导检测特征码生成、应急处置等工作。

2.2 恶意代码静态分析技术

​ 静态分析技术一般是对恶意代码经行评估,对其特点和目的经行分析,整理出恶意代码的组成部分等。静态分析面临的中最大难题是很容易受到恶意代码对抗分析机制的影响,这个机制会把代码搞得面目全非,很难再分析。下面将回个介绍静态分析的主要手段。

反病毒软件扫描:让反病毒软件选择目标程序所在的文件目录进行扫描,看是否能够识别该样本,以及该样本的类型、家族、变种等信息。

文件格式识别:文件格式识别能够让我们快速地了解待分析样本的文件格式,对于二进制可执行文件而言,了解样本的格式也意味着我们获知了恶意代码所期望的运行平台。Windows平台上的可执行文件格式有EXE和DDL,UNIX平台上是ELF。常用的工具有file有些恶意代码为了隐藏自己会用一些欺骗手段,例如把自己伪装成.doc之类的。

字符串提取分析:提取出程序中3个或更多的连续可打印字符所组成的全部字符串,这些字符串中通常包含了很多可用于理解程序行为的信息内容。可能获得的有用信息内容包括:恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息、E-mail地址、包含库文件和函数调用。使用工具有strings。

二进制结构分析:二进制形式的恶意编译和链接过程在结果代码中留下了大量有用的信息,UNIX平台上的binutils工具可以对其进行分析,常用命令有nm(可查看符号表)和objdump。

反汇编(Disassemble)与反编译(Decompile):反汇编与反编译是对二进制程序编译链接的逆过程,反汇编:二进制生成汇编语言;反编译:汇编语言到高级编程语言。常用的反汇编软件有IDAPro、Ollydbg. W32Dasm、VC++等;反编译工具则是通常针对不同高级编程语言进行单独设计和实现的。

代码结构与逻辑分析:对上一步得到的汇编语言程序和高级编程语言程序进行结构与逻辑分析是静态分析中最为核心的任务。函数调用关系图与程序控制流图对程序逻辑分析十分重要,常用有工具IDA Pro。

加壳识别与代码脱壳:恶意代码常常会使用加壳技术进行恶意目的隐藏与对抗分析,使得上述所有方法都不一定能得到想要的结果。恶意代码通常使用的加壳混淆机制包括加密、多样性、多态和变形等;加壳工具包括压缩壳、加密壳、多态壳、变形売和伪装壳等。识别壳工具PEiD,脱壳工具UPX。

2.3恶意代码动态分析技术

​ 动态分析即激活恶意代码,观察恶意代码的每一步动作动作。在分析过程中一点要注意环境的隔离与系统的恢复,分析环境中要有控制软件、监视工具、快照对比工具等以便经行分析。下面介绍恶意代码动态分析的主要技术手段。

快照比对:快照对比,即对比恶意代码运行之前的系统与恶意代码运行之后的系统,看两者有什么差异,一判断恶意代码干了什么。工具软件包括RegSnap、完美卸载。快照对比最主要的缺点就是无法监控和分析恶意代码的中间行为。

系统动态行为监控:这一方法主要针对恶意代码对文件系统、运行进程列表、注册表、本地网络栈等方面的行为动态进行实时监视、记录和显示。系统动态行为监控通常基于行为通知机制或者API劫持技术实现。

(1)文件行为监控软件:大部分恶意代码会读取系统文件并试图感染他们,文件行为监控软件能够实时地监测和记录恶意代码在文件系统上的各种类型操作,常用的软件有Filemon,
(2)进程行为监控软件:常用软件Process Explorer,让使用者查看到通常看不见的后台执行处理程序,可以使用方便地管理程序进程,并能够监视、挂起、垂启和强行终止任何程序进程类UNIX平台上进行进程分析的常用工具则为top和Isof。
(3)注册表监控软件:Windows操作平台上,恶意代码会改写注册表,来改变操作系统的配置,进一步控制系统。Regmon软件能够实时地显示和每个注册表项读/写操作相关的所有行为。Regmon软件支持设置过滤规则,我们可以过滤掉系统自身对注册表的更改。
(4)本地网络栈行为监控软件:对于恶意代码利用本地网络栈进行的网络传输行为,我们可以在本地局域网络中部署网络嗅探器进行监听,如类UNIX平台中的Isof命令,Windows平台的TCPView或Fport工具。

网络协议栈监控方法:恶意代码的网络行为,可以使用端口扫描技术查看恶意代码打开了或者隐藏哪些端口,利用网络漏洞扫描器,查看恶意代码打开了哪些后门,使用网络嗅探器软件对被控制主机与其他主机来往的数据包进行分析。

沙箱技术:沙箱技术提供了受限制的执行环境,使得在沙箱中运行的代码不能够修改用户系统,从而提供了一个用于运行不可信程序的安全环境。

动态调试技术:动态调试是在程序运行时刻对它的执行过程进行调试的技术过程,动态调试器能够以单步模式来调试恶意代码,能够一行代码接着一行代码,一个函数调用接着一个函 数调用地进行恶意代码行为分析的过程。动态调试器软件有Windows平台的开源Ollydbg软件、UNIX平台下的gdb、systrace、ElfShell 等。

二、实践过程

1 恶意代码文件类型识别、脱壳与字符串提取

1.1 实践任务

​ 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以 获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和 加壳工具。

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。

(3)使用字符串提取工具,对脱売后的rada恶意代码样本进行分析,从中发现rada恶 意代码的编写作者是谁?

1.2实践过程

1.使用Linux缺省的file命令查看rada.exe文件的格式和运行平台,打开rada.exe文件所在的文件夹,输入file RaDa.exe。可以从下图中看出是windows系统。

2.使用peid查壳工具对RaDa.exe进行查壳

3.使用PEID unpacker for upx插件对rada.exe去壳

4.使用Linux上的strings命令对脱壳后的rada.exe文件提取字符串。

2 分析Crackme程序

使用IDA Pro静态或动态分析crackme 1 .exe与crackme2.exe, 找特定的输入,使其能够输出成功信息。

2.1 对crackme1.exe文件进行分析

1.使用IDA打开crackme1.exe文件,查壳这个文件的函数调用。如下图所示。

2.先看crackme1.exe的主函数,对各种参数进行赋值之后,使用了cmp [ebp+argc], 2的命令,这是在判断参数是否有两个,若是只有一个,例如在命令行只输入了.\crackme1.exe,就会输出I think you are missing something,如果参数有两个,例如.\crackme1.exe 1就会跳转到loc_4012D2这个模块。

3.进入loc_4012D2模块,判断第二个参数是否为I have an identity problem.,如果不是则输出Pardon? What did you say?,如果是,则进入loc_401310模块,并输出You know how to speak to programs, MrReverse-Engineer。运行的结果如下图所示。

对crackme2.exe文件进行分析

1.使用IDA打开crackme2.exe文件,查看这个程序的函数调用情况。如下图所示。

2.可以看到crackme2.exe的主函数与之前的crackme1.exe相似,上来也是判断是否有两个参数。若只有一个参数,则输出I think you are missing something,如果有两个参数则跳转到loc_4012D5模块。

3.进入到loc_4012D5模块,会判断第一个参数也就是程序命是不是crackmeplease.exe:如果不是,将会输出I have an identity problem.;如果是,则会进入loc_401313模块。

4.进入loc_401313模块,会判断第二个参数是不是I know the secret:如果不是,则输出Pardon? What did you say?;如果是,则进入loc_401351模块。

5.进入loc_401351模块后,程序进入一个循环,设置变量ebp+var_4的值为0,然后让ebp+var_4与21h比较,若不大于则输出一串字符,具体是 unk_403080 中的字符串分别与0x42h 进行异或运算。

3 样本分析实践

待分析二进制文件位置:rada.zip, 警告这个二进制文件是一个恶意代码,因此你 必须采用一一些预防措施来保证业务系统不被感染,建议在一个封闭受控的系统或网络中处 理这个未知的实验品。

回答问题:

  1. 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。

  2. 找出并解释这个二进制文件的目的。

  3. 识别并说明这个二进制文件所具有的不同特性。

  4. 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。

  5. 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。

  6. 给出过去已有的具有相似功能的其他工具。

奖励问题:

  1. 可能调査出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

1.提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。

先对恶意代码进行静态分析,利用md5sum RaDa.exe命令得到恶意代码的摘要。

使用file RaDa.exe命令查看文件格式和操作环境

使用strings RaDa.exe命令提取字符串,这个文件是带壳的,提取出来的是乱码,要对代码经行查壳与脱壳。

使用Peid工具查壳,超级巡警脱壳工具脱壳。

2.找出并解释这个二进制文件的目的。

​ 我们使用IDA打开脱壳后的RaDa.exe进行分析,打开之后没有出现函数调用的结构图,而是直接出现了代码。不断翻看看到了一些可疑之处。尤其是下面红框画出的地方,貌似是访问了某个站点,下载了一些文件到受控主机,又在C盘创建了一个文件夹RaDa\tmp。

​ 下图可以看到这里设置了三个网段,且都是私有网段,应该使用来隐藏服务器的,上面的RaDa_command.html可能也是在这三个网段之中。

继续往下分析看到几个我们提取字符串时看到的字符串,而且这几个字符串都放在函数模块sub_405E40里面。感觉非常可疑啊。大概这个模块是用来设置命令行的。

​ 再往下看,发现了一个设置mac地址的地方,双击模块查壳函数调用结构图,可以发现这里对mac地址进行了判断,只有符合其中一个就可以继续往下进行,通过对mac地址的查询,发现这几个mac地址都是属于VM的,看样子,这个恶意代码要在VM环境下才能运行。

​ 从整体上来看,这个恶意代码最大的动作就是连接了某个站点,在受控主机上下载一些文件,有点像一个后门。

接下来我们双击红框中的命令就可以看到这些字符串再什么地方被调用过,这里以--authors为例子。双击之后可以看到,在两个函数中调用了这个字符串,分别是 sub_405E40和sub_40B010,点开第二个发现是具体的处理过程,点开第一个函数,发现结构庞大,应该是主程序,截图如下。

再次回到上述的string列表,我们可以看到,出现了几个IP地址,其中唯一一个完整的就是http://10.10.10.10/RaDa。这里我们打开wireshark,使用过滤器ip.src == 10.10.10.10 or ip.dst == 10.10.10.10。这个时候我们发现,又很多的ICMP报文也进入了过滤器之后,查看详细信息之后会发现,其实是ICMP报文,用来kepp-alive。从此可以看到与10.10.10.10建立的连接是长连接,也就是说这很可能是一条信息的传输通道。截图如下。

在我们得到10.10.10.10是指令传输接口之后,我们回到IDA,查看IDA中对应的指令的处理代码。接下来我们能看到有两个函数回调用这个字符串,分别是sub_4052C0和sub_404FB0。这里我们重点看第一个函数,再函数中我们发现它还调用了其他字符串,包括name exe、get、put、screenshot和sleep这几个指令函数。

再次回到string列表看看还有没有漏网之鱼。还有两个可以点,一个是不完整的sql字符串,另一个就是不完整的三个mac地址。这里mac地址的前三个字段标识网卡的生产厂家,后三个标识网卡的序列号,但是这里只限制了最初的三个字段,难道是针对特定公司网卡的攻击程序?

点击对应的字符串进行跳转,发现sql语句并没有被调用,但是mac语句是真正的被执行了。这里代码中对三个mac地址进行了判断,只要符合其中任意一个,程序就将向下执行。我们知道MAC地址是IEEE唯一分配的,通过查询我们知道这些mac地址均属于vm,(幸亏我不是用virtualbox做的实验)。具体截图如下:

  • 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息:

    • 再linux下调用程序md5sum $path$/rada.exe计算程序的md5码作为同一样本的标识。caaa6985a43225a0b3add54f44a0d4c7为程序的MD5码
    • 此外通过上文我们可以知道这个程序的加壳方式是UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo、
    • 运行平台:RaDa.exe: PE32 executable (GUI) Intel 80386, for MS Windows这三者联合起来可以作为一个这个文件的基本信息身份标识。
  • 找出并解释这个二进制文件的目的:通过上边的分析,我们可以知道这个二进制程序通过网络获取指令,并执行,不具备自主传播模块,由此可知,这个应该是后门程序或僵尸网络程序。

  • 识别并说明这个二进制文件所具有的不同特性:

    • 初次安装的时候会进行初始化的相关操作,添加注册列表、移动文件位置至C盘,建立网络连接接收指令。

    • 持续运行阶段:维持与服务器的网络连接,解析网络指令,执行网络指令,等待一段时间继续执行。具体的指令如下表

指令 说明
put 将主机文件下载到宿主机器
get 将宿主机文件上传到主机
screenshot 获取宿主机屏幕截图保存到tmp
sleep 停止活动一段时间
  • 除此之外,此二进制程序还具有其他一些命令行参数可供调用,分析过程见上文,参数如下:
参数 具体动作
--visible 弹出网页是否可见
--verbose 显示starting DDOS smurf remote attack
--uninstall 卸载二进制程序
--tmpdir 设置缓存文件夹
--server 设置获取命令的服务器的地址
--period 两次获取命令的时间间隔
--noinstall 执行程序但跳过安装
--installdir 修改安装路径,不再安装到c:\rada
--help 实际上并不像字面意思一样输出帮助信息,仅仅是程序名等信息
--gui windows下的一个命令窗口
--cycles 设置获取命令的次数
--commands 设置获取命令的文件
--cgiput 与上文put相对应的cgi脚本
--cgipath 设置远程cgi脚本的位置
--cgiget 与上文get相对应的xgi脚本
--authors 在VM中会产生输出,但是在物理机中不会输出
  • 识别并解释这个二进制文件中采用的防止被分析或被逆向工程的技术

    • 首先采用了UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo的加壳方式,直接被一键脱壳,未详细理解
    • 二进制程序的相关代码片段只在特定的环境下才可以执行,例如--authors参数必须在vm的网卡中才会执行。
    • 一些干扰的误导选项,如没有用到的sql语句SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True,无意义的starting DDOS smurf remote attack。
  • 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由

    • 首先此二进制程序不具有自主传播模块,所以它不属于病毒和蠕虫
    • 此程序未进行伪装,所以也不是木马
    • 若攻击者仅仅用此程序进行远程控制,那么就是后门程序;若再次基础上加入僵尸网络,则就是僵尸程序
  • 给出过去已有的具有相似功能的其他工具

    • 从服务器下载指令并执行具备组件僵尸网络的能力,可以参考linux下的开源Zeus,
    • Setiri及其前辈GatSlag
  • 可能查出这个二进制文件的开发作者吗?如果可以,在什么样的环境下和什么样的限定条件下?

    • 如上文所述,可以通过--authors参数获取相关作者信息Authors: Raul Siles & David Perez, 2004
    • 网卡的MAC地址必须属于VM公司(简单来说就是必须在虚拟机中运行,但是MAC地址是可以伪装的啊)

4 案例分析

分析日志文件并回答以下给出的问题:

  1. IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息? IRC-般 使用哪些TCP端口?

  2. 僵尸网络是什么?僵尸网络通常用于什么?

  3. 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

  4. 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

  5. 哪些IP地址被用于攻击蜜罐主机?

  6. 攻击者尝试攻击了哪些安全漏洞?

  7. 哪些攻击成功了?是如何成功的?

  8. IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息? IRC一般使用哪些TCP端口?

IRC是因特网中继聊天(Internet Relay Chat)的简称。

申请加入前要先注册,注册时需要发三种信息:用户信息USER、口令PASS 以及昵称NICK、注册完成后,客户端就可以使用JOIN 信息来加入频道。

IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口。

  1. 僵尸网络是什么?僵尸网络通常用于什么?

​ 僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。下图是IRC僵尸网络的工作机制,其僵尸控制器是IRC聊天服务器。

​ 通常用于发动分布式拒绝服务攻击(DDoS)、发送垃圾邮件、窃取隐私信息、刷点击量等。

  1. 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

用wireshark打开botnet_pcap_file.dat文件,输入筛选条件ip.src == 172.16.134.191 && tcp.dstport == 6667,筛选源地址为蜜罐主机,目的端口为6667的包。可得到五个地址:

209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
206.196.44.172

  1. 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

在kali上使用tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"对样本进行分流,得到两个分流后的数据文件209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667和一份报告report.xml。

查看报告文件,可以看到两个主机互相通信的时间,IP,mac地址,使用端口,包裹数。

使用一个超长的命令,来计算209.196.044.172.06667-172.016.134.191.01152文件中有多少主机访问了209.196.044.172。grep取出昵称,sed去除前缀,tr将空格转换为新行,tr -d去除\r,grep -v "^$"去除空行,sort -u排序并去重,wc计算行数。

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 ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

计算出来结果有3461个。

  1. 哪些IP地址被用于攻击蜜罐主机?

由于蜜罐即得特殊作用,所有发送到蜜罐得数据包都很可疑。

使用wireshark得统功能,将目的地址设置为172.016.134.191,查看都有哪些IP给蜜罐发送过数据包。

  1. 攻击者尝试攻击了哪些安全漏洞?

使用Tcpdump工具筛选出蜜罐主机有哪些端口是响应的。输入命令

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

可以看到有135、139、25、445、4899、80。使用wireshark筛选出源地址为172.16.134.191,tcp端口为135、139、25、445、4899、80的数据包,一次分析。

端口135、139、25上虽有很多数据包但是没有什么数据传输,多为在建立连接,可能是在查点或者扫描。

端口80上的数据包比较复杂了,其中210.22.204.101发送了三个很大的的数据包,大概是在做缓冲区溢出攻击。

​ 此外在80端口上,还发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,可能正在输入什么命令获得蜜罐的机密消息。

端口445上的数据包即发现了,61.111.101.78向蜜罐放了PSEXESVC.EXE,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用。

  1. 哪些攻击成功了?是如何成功的?见第六问的分析。

三、学习中的问题

问题1:对linxu下相关字符串处理的命令不够熟悉

问题1解决方案:自己手写的python程序,配合简单的正则表达式,最终达到了相同的效果

问题2:自己的基础还是太欠缺了,特别是分析最后一道题的时候,对着大量的数据报文无处下手

问题2解决方案:回看之前的内容,使用wireshark完成了相关的任务

四、实验总结

这次实验很难比较吃力。

posted @ 2022-05-02 20:39  MizDow  阅读(53)  评论(0编辑  收藏  举报