20211920 2021-2022-2 《网络攻防实践》实践八报告

1.实践内容

一. 恶意代码

恶意代码是一种有害的计算机代码或 web 脚本,其设计目的是创建系统漏洞,并借以造成后门、安全隐患、信息和数据盗窃、以及其他对文件和计算机系统的潜在破坏。恶意代码不仅使企业和用户蒙受了巨大的经济损失,而且使国家的安全面临着严重威胁。1991年的海湾战争是美国第一次公开在实战中使用恶意代码攻击技术取得重大军事利益,从此恶意代码攻击成为信息战、网络战最重要的入侵手段之一。恶意代码问题无论从政治上、经济上、还是军事上,都成为信息安全面临的首要问题。让我们一起来认识一下恶意代码。

一、什么是恶意代码

恶意代码(Unwanted Code)是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。

二、恶意代码的分类

  • 1、恶意代码分类
    恶意代码的分类标准主要是代码的独立性和自我复制性,独立的恶意代码是指具备一个完整程序所应该具有的全部功能功能,能够独立传播、运行的恶意代码,这样的恶意代码不需要寄宿在另一个程序中。非独立恶意代码只是一段代码,必须嵌入某个完整的程序中,作为该程序的一个组成部分进行传播和运行。对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程,这个过程也称为感染宿主程序的过程。对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程。不具有自我复制能力的恶意代码必须借助其他媒介进行传播。
    分类:

  • 2、不同恶意代码的区别
    病毒侧重于破坏系统和程序的能力
    木马侧重于窃取敏感信息的能力
    蠕虫侧重于网络中的自我复制能力和自我传染能力

三、恶意代码基本技术

  • 1、隐蔽技术
    (1)本地隐藏
    防止本地系统管理人员觉察而采取的隐蔽手段。

文件隐蔽:将恶意代码的文件命名为与系统的合法程序文件名相似的名称,或者干脆取而代之,或者将恶意代码文件附加到合法程序文件中。
进程隐蔽:附着或替换系统进程,使恶意代码以合法服务的身份运行,从而隐蔽恶意代码。还可以通过修改进程列表程序,修改命令行参数使恶意代码进程的信息无法查询。也可以借助RootKit 技术实现进程隐蔽。
网络连接隐蔽:借用现有服务的端口实现网络连接隐蔽,如使用80端口,攻击者在自己的数据包设置特殊标识,通过标识识别连接信息,未标识的WWW 服务网络包仍转交给原服务程序处理。
编译器隐蔽:由编译器在对程序代码进行编译时植入恶意代码,从而实现恶意代码在用户程序中的隐藏和原始分发攻击。恶意代码的植入者是编译器开发人员。
RootKit隐蔽:利用适当的Rootkit工具,可以很好的隐蔽自身或指定的文件、进程和网络连接等,很难被管理员发现。
(2)网络隐藏
网络隐藏主要是指通信内容和传输通道的隐藏。

通信内容隐蔽:使用加密算法对所传输的内容进行加密能够隐蔽通信内容。
传输通道隐藏:利用隐蔽通道技术,实现对传输通道的隐蔽。(隐蔽通道(Covert Channel)是一个不受安全机制控制的、利用共享资源作为通信通路的信息流。包括有:存储隐蔽通道和时间隐蔽通道。)

  • 2、生存技术
    恶意代码的生存技术主要包括四种类型:

反跟踪技术:通过提高恶意代码分析难度,减少被发现的可能性
加密技术:利用加密技术,提高恶意代码自身保护能力
模糊变换技术:利用模糊变换技术,恶意代码可以躲避基于特征码的恶意代码检测系统,提高生存能力
自动生产技术:利用自动生成技术,在已有的恶意代码的基础上自动生成特征码不断变化的新的恶意代码,从而躲避基于特征码的恶意代码检测。

  • 3、攻击技术
    进程注入技术:恶意代码程序将自身嵌入到操作系统和网络系统的服务程序中,不但实现了自身的隐藏,而且还能随着服务的加载而启动。
    三线程技术:恶意代码进程同时开启三个线程,其中一个为主线程,负责远程控制的工作。另外两个辅助线程分别是监视和守护线程。一旦发现主线程被删除,则立即设法恢复。
    端口复用技术:重复利用系统或网络服务打开的端口(如80端口),可以欺骗防火墙,具有很强的欺骗性。
    超级管理技术:恶意代码采用超级管理技术对反恶意代码软件系统进行攻击,使其无法正常运行。
    端口反向连接技术:指使恶意代码的服务端(被控制端)主动连接客户端(控制端)的技术。
    缓冲区溢出技术:恶意代码利用系统和网络服务的安全漏洞植入并且执行攻击代码,造成缓冲区溢出,从而获得被攻击主机的控制权。

四、恶意代码传播方式及防范手段

  • 1、传播方式
    传播途径
    利用操作系统和应用软件的漏洞进行传播
    通过网站传播
    在网页上挂载恶意代码
    如:主机流览该网页时,恶意代码会自动下载到主机执行。
    将恶意代码与正常应用软件捆绑
    如:主机下载正常软件运行时,恶意代码也随之自动运行。
    利用移动媒介传播
    如:主机访问U盘和硬盘时,恶意代码可以自动执行。
    利用用户之间的信任关系传播
    如:冒充用户发送虚假链接、图片、邮件等。
    总的来说,恶意代码的传播是因为用户的软件出现了漏洞、操作不慎或者是两者的结合造成。
    (1)病毒。病毒具备有自我复制能力,一般嵌入主机的程序中。当被感染文件执行操作,如,用户打开一个可执行文件时,病毒就会自我繁殖。病毒一般都具有破坏性。
    (2)木马。这种程序从表面上看没有危害,但实际上却隐含着恶意的意图和破坏的作用。一些木马程序会通过覆盖系统中已经存在的文件的方式存在于系统之中;另外有的还会以软件的形式出现,因为它一般是以一个正常的应用程序身份在系统中运行的,所以这种程序通常不容易被发现。
    (3)蠕虫。蠕虫是一种可以自我复制的完全独立的程序,它的传播不需要借助被感染主机中的程序和用户的操作,而是通过系统存在的漏洞和设置的不安全性来进行入侵,如通过共享的设置来侵入。蠕虫可以自动创建与它的功能完全相同的副本,并能在无人干涉的情况下自动运行,大量地复制占用计算机的空间,使计算机的运行缓慢甚至瘫痪。

  • 2、攻击机制
    恶意代码的行为表现各异,破坏程度千差万别,但基本作用机制大体相同,其整个作用过程分为6个部分。
    (1)侵入系统。侵入系统是而已代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,包括前面传播方式的各种途径。如:从互联网下载的程序本身就可能含有而已代码;接收已感染恶意代码的电子邮件;从光盘或U盘往系统上安装软件;黑客或者攻击者故意将恶意代码植入系统等。
    (2)维持或提升权限。恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。
    (3)隐蔽策略。为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己。
    (4)潜伏。恶意代码侵入系统后,等待一定的条件,并具有足够的权限时,就发作并进行破坏活动。
    (5)破坏。恶意代码本质具有破坏性,其目的是造成信息丢失,泄密,破坏系统完整性等。
    (6)重复(1)至(5)对新的目标实施攻击过程。

  • 3、防范手段
    通用恶意代码检测技术包括静态和动态检测技术:

基于特征的扫描技术
建立恶意代码的特征文件,在扫描时根据特征进行匹配查找
校验和法
对需要监控的文件生成校验,周期性的生成新校验和并与原始值比较
沙箱技术
根据程序需要的资源和拥有的权限建立运行沙箱,可以安全地检测和分析程序行为
基于蜜罐的检测技术
将主机伪装为运行着脆弱的服务或系统,同时安装强大的监测系统。
其中基于特征的扫描技术和校验和法是静态检测技术,沙箱技术和基于蜜罐的检测技术属于动态检测技术。

五、常见恶意代码

二. 病毒、蠕虫、木马、炸弹的区别及常见的病毒

背景知识

  • 先来看看计算机网络通信面临的威胁:
    截获——从网络上窃听他人的通信内容
    中断——有意中断他人在网络上的通信
    篡改——故意篡改网络上传送的报文
    伪造——伪造信息在网络上传送
    截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动攻击

  • 病毒、蠕虫、木马、炸弹都属于恶意程序

病毒:破坏计算机功能或数据,以破坏为主,传染其他程序的方式是通过修改其他程序来把自身或其变种复制进去完成的,典型的熊猫烧香
蠕虫:通过网络的通信功能将自身从一个结点发送到另一个结点并启动运行的程序,典型的应用于耗尽对方的计算机资源
木马:后门程序,以窃取信息为主,它的特点是能与外界通信
逻辑炸弹:一种当运行环境满足某种特定条件时执行其他特殊功能的程序

常见的病毒:

  • 系统病毒(前缀:WIN32 /PE/ W32)
  • 蠕虫病毒(Worm.BBeagle): 一段能进行自我传播,无须用户干预而可以自动触发执行额破坏性程序或代码
  • 木马病毒、黑客病毒(Trojan.QQ3344): 通过网络或者系统漏洞进入用户的系统并隐藏,然后向外界泄露用户信息,黑客病毒则有一个可视的界面,能对用户的电脑进行远程控制。木马、黑客病毒往往是成对出现的,木马病毒负责侵入用户的电脑,而黑客病毒则会通过该木马病毒来进行控制
  • 脚本病毒(Script.Redlof): 主要采用j脚本语言设计的计算机病毒 ,通过网页进行的传播的病毒
  • 宏病毒(Macro.Melissa): 一种寄存在文档或模板的宏中的计算机病毒, 一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。
  • 后门病毒(BackDoor.Win32.Huigezi): 通过网络传播,给系统开后门,给用户电脑带来安全隐患
  • 病毒种植程序病毒(Droper.BingHe2.2C):运行时会从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。
  • 破坏性程序病毒(Harm.Command.Killer): 本身具有好看的图标来诱惑用户点击,当用户点击病毒时,病毒便会直接对用户计算机产生破坏 , 如格式化C盘(Harm.formatC.f)
  • 玩笑病毒(Jioke.Grl ghost): 本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒会做出各种破坏操作来吓唬用户,其实病毒并没有对用户电脑进行任何破坏。
  • 捆绑机病毒(Binder.QQPass.QQbin): 是一种和正常软件捆绑在一起的病毒,当用户运行这些捆绑病毒时,会表面上运行这些应用程序,然后隐藏运行捆绑在一起的病毒。

2.实践过程

动手实践任务一

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

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

1)在WinXP Attacker虚拟机上打开终端输入file RaDa.exe查看RaDa.exe的文件类型为32位操作系统下的PE文件,有图形化界面

2)使用PEID查壳工具,查看文件的加壳类型位UPX壳、入口点、文件偏移、EP段等基本信息


3)在终端输入strings RaDa.exe查看可打印的字符串,由于文件加壳所以出现乱码

4)使用超级巡警脱壳工具对文件脱壳

5)再次输入strings RaDa_unpacked.exe查看可打印的字符串,脱壳后出现正常字符串

6)在IDA Pro Free打开RaDa_unpacked.exe文件,可以找到作者为DataRescue sa/nv,邮箱为ida@datarescue.com

动手实践任务二:分析Crackme程序

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

  • 对crackme1.exe进行破解,试探输入格式。在接受一个参数的时候输出信息与其他不同,猜测该程序接受一个参数

  • 使用IDA Pro Free打开crackme1.exe进行分析。分析该程序的字符串,其中gcc表示该程序用C语言编写。发现前面的两种反馈信息“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)可以发现:关键的部分在sub_401280这里,程序是使用strcmp函数来输入的,然后利用print和fprint函数输出

  • 查看sub_401280流程图,截取sub_401280的汇编代码。其中cmp [ebo+arg_0],2表示判断程序的参数个数是否为2

  • 再往下看,可以看到其他几条口令

  • 猜测正确的口令应该是I know the secret,在终端输入crackme1.exe "I know the secret",可以得到这样一条回复您知道如何与项目对话,逆向工程师先生,成功

  • 与crackme1.exe分析相似,在终端运行crackme2.exe程序,结果与1相同

  • 在IDA Pro Free打开程序并查看字符串

  • 查看函数调用图,找到字符串操作相关的函数,如图程序可能是使用strcmp函数比较口令,重点仍然是sub_401280

  • 与1一致,查看流程图,查看sub_401280的汇编代码,cmp [ebo+arg_0],2表示判断程序的参数个数是否为2

  • 查看流程图,整体过程与1类似。判断参数是否为2,若不为2,则执行"I think you are missing something";若为2,则将第一个参数与"crackmeplease.exe"做对比,若不同,输出"I have an identity problem.",若相同,则将第二个参数与"I know the secret"比较,如第二个参数不同,则执行"Pardon?What did you say?"

  • 接着,如果第二个参数相同,则通过一定规则输出通过测试的信息。具体时unk_403080中的字符串分别与0x42进行异或运算

  • 最后,在终端进行测试。输入copy crackme2.exe crackmeplease.exe将程序复制并命名为crackmeplease.exe,输入crackmeplease.exe "I know the secret",得到的反馈信息为We have a little secret: Chocolate

分析实践任务一:

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

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

文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件,同时也是一个UPX加壳文件。

  • 获得摘要
    在终端输入md5sum RaDa.exe查看摘要,如图,md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
    输入file RaDa.exe查看RaDa.exe的文件类型为32位操作系统下的PE文件

2、找出并解释这个二进制文件的目的;

这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统。

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

它会自动安装到C盘中,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令。

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

UPX 加壳技术

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

不具有传播和感染的性质,故不属于病毒和蠕虫,同时也未将自己伪装成良性程序以,不是特洛伊木马,排除各种可能后这应该是一个后门程序。

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

木马Bobax、海阳顶端、木马Setiri等

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

2004年,由Raul siles和David Perze二人编写

  • 接下来使用 IDA 对RaDa_unpacked.exe进行分析(该程序在第一个实践中已经被脱壳了),进入 Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode。

  • 找到Functions中sub_40B010,进入试图

  • 找到一个 IP 地址,一些大佬们用wireshark发现该程序被执行后访问了这个地址,得到RaDa_commands.html,可以从上图中画红色圈圈的地方看到其对应的函数为sub_404FB0

  • 进入这个函数,看黄色部分的汇编代码,可以看到其被参数40C030替换,找到该位置,看到该参数对应的函数是sub_4052C0

    我们搜索4052C0,打开其Call Graph查看。这里我们看到三个私有网段分别为192.168.、172.16.、10.先确保服务器在私有网段中,然后到服务器去取命令文件

分析实践任务二:

Windows 2000系统被攻破并加入僵尸网络

任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

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

  • 因特网中继聊天(Internet Relay Chat),简称 IRC。IRC 的工作原理非常简单,只需要在自己的 PC 上运行客户端软件,然后通过因特网以IRC 协议连接到一台 IRC 服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流。
  • 注册时需要发送的消息有三种,分别是口令,昵称和用户信息
  • IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。SSL 加密传输在 6697 端口。

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

  • 僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
  • 僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

3、蜜罐主机(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

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

  • 这里一般需要装一下sudo apt-get install tcpflow,然后输入命令tcpflow -r /home/zt/桌面/botnet_pcap_file.dat'host 209.196.44.172 and port 6667'获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,得三个文件,172.016.134.191.01152-209.196.044.172.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml,report.xml

5、那些IP地址被用于攻击蜜罐主机?

  • 使用以下命令查找端口并输出到1.txt 中(tcpdump -nn: 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;uniq命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数),总共148个端口
    tcpdump -n -nn -r /home/zt/桌面/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

6、攻击者尝试攻击了那些安全漏洞?

  • 输入snort -r /home/zt/桌面/botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii查看一下网络流分布情况。大部分都是TCP包,所以我们首先应该筛选出响应的TCP端口

  • 使用指令筛选出蜜罐主机相应的TCP端口。指令为:
    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

  • 用wireshark打开文件botnet.pcap,分析个端口,wireshark中使用条件tcp.dstport==80 && ip.dst == 172.16.134.191进行筛选,这些是目标地址为172.16.134.191、目标端口为80的数据包。个人未发现攻击现象(大神们说IIS服务器的漏洞被攻击,但我不知道在哪儿)

  • 再看80端口下一个ip地址218.25.147.83,在tcp流中看到c:\notworm(蠕虫攻击)

  • 输入tcp.dstport==139 && ip.dst == 172.16.134.191查看139号端口。可以看到有很多主机连接到这个端口的,但是基本都是一样的,大部分都是连接,个人未察觉到异常

  • tcp.dstport==445 && ip.dst == 172.16.134.191来看TCP 445号端口,发现一个PSEXESVC.EXE字符串,是由61.111.101.78发起的,我搜索了一下这个字符串,感觉和大神们的描述不太一样,这似乎是一个类似于telnet的远程控制程序,某些反病毒扫描程序会报告其中的一个或多个工具感染了“远程管理”病毒。这些 PsTools 都不带病毒,但是如果病毒使用了这些工具,则它们可能触发病毒通知。

  • 再看,通过字符串信息可以知道主机210.22.204.101对蜜罐使用了LAN Manager口令猜测,并且成功攻击

7、那些攻击成功了?是如何成功的?

  • 通过上面的分析可知,成功的攻击发起者是218.25.147.83(蠕虫攻击)和 61.111.101.78( LAN Manager 口令猜测)

3.学习中遇到的问题及解决

在查看获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,显示没有此类文件按,发现是因为没有加前缀地址/home/zt/桌面/。

4.参考资料

http://www.xitongzhijia.net/xtjc/20170719/102860.html
https://blog.csdn.net/JunSIrhl/article/details/102925387
https://blog.csdn.net/fullbug/article/details/122549463

posted @ 2022-05-08 08:51  张婷20211920  阅读(66)  评论(0编辑  收藏  举报