20211918-晋伊甲-2021-2022-2《网络攻防实践》第八次实践

一、实践内容

(一)恶意代码(Malicious Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。具有如下共同特征:
(1) 恶意的目的
(2) 本身是计算机程序
(3) 通过执行发生作用
有些恶作剧程序或者游戏程序不能看作是恶意代码。对滤过性病毒的特征进行讨论的文献很多,尽管它们数量很多,但是机理比较近似,在防病毒程序的防护范围之内,更值得注意的是非滤过性病毒。
(二)恶意代码分类
恶意代码的分类标准主要是代码的独立性和自我复制性,独立的恶意代码是指具备一个完整程序所应该具有的全部功能功能,能够独立传播、运行的恶意代码,这样的恶意代码不需要寄宿在另一个程序中。非独立恶意代码只是一段代码,必须嵌入某个完整的程序中,作为该程序的一个组成部分进行传播和运行。对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程,这个过程也称为感染宿主程序的过程。对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程。不具有自我复制能力的恶意代码必须借助其他媒介进行传播。
病毒(Virus):很小的应用程序或一串代码,能够影响主机应用。两大特点:繁殖(propagation)和破坏(destruction)。繁殖功能定义了病毒在系统间扩散的方式,其破坏力则体现在病毒负载中。
特洛伊木马(Trojan Horses):可以伪装成他类的程序。看起来像是正常程序,一旦被执行,将进行某些隐蔽的操作。比如一个模拟登录接口的软件,它可以捕获毫无戒心的用户的口令。可使用HIDS检查文件长度的变化
内核套件(Root工具):是攻击者用来隐藏自己的踪迹和保留root访问权限的工具
逻辑炸弹(Logic Bombs):可以由某类事件触发执行,例如某一时刻(一个时间炸弹),或者是某些运算的结果。软件执行的结果可以千差万别,从发送无害的消息到系统彻底崩溃。
蠕虫(Worm): 像病毒那样可以扩散,但蠕虫可以自我复制,不需要借助其他宿主
僵尸网络(Botnets):是由C&C服务器以及僵尸牧人控制的僵尸网络。
间谍软件(Spyware ):间谍软件就是能偷偷安装在受害者电脑上并收集受害者的敏感信息的软件。
恶意移动代码:移动代码指可以从远程主机下载并在本地执行的轻量级程序,不需要或仅需要极少的人为干预。移动代码通常在Web服务器端实现。恶意移动代码是指在本地系统执行一些用户不期望的恶意动作的移动代码。
后门:指一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。攻击者可以通过使用后门工具对目标主机进行完全控制。
广告软件( Adware):自动生成(呈现)广告的软件。
上述分类只是个大概,各种恶意代码常常是你中有我,我中有你。而且在实际中,攻击者经常会将多种恶意代码组合起来使用。

(三)不同恶意代码的区别
病毒侧重于破坏系统和程序的能力;
木马侧重于窃取敏感信息的能力;
蠕虫侧重于网络中的自我复制能力和自我传染能力。
(四)恶意代码基本技术
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、防范手段
通用恶意代码检测技术包括静态和动态检测技术:
(1)基于特征的扫描技术
建立恶意代码的特征文件,在扫描时根据特征进行匹配查找
(2)校验和法
对需要监控的文件生成校验,周期性的生成新校验和并与原始值比较
(3)沙箱技术
根据程序需要的资源和拥有的权限建立运行沙箱,可以安全地检测和分析程序行为
(4)基于蜜罐的检测技术
将主机伪装为运行着脆弱的服务或系统,同时安装强大的监测系统。
其中基于特征的扫描技术和校验和法是静态检测技术,沙箱技术和基于蜜罐的检测技术属于动态检测技术。

二、实践过程

  • 动手实践任务一
    对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
    (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
    (2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
    (3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
    1、首先我们使用file命令查看RaDa.exe的文件类型,看到RaDa.exe是一个Windows PE可执行文件,并且有图形化窗口

    之后在XP虚拟机中使用程序PEiD.exe进行扫描。我们可以在扩展信息中可以看到加壳的工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo

    再使用超级巡警之虚拟机自动脱壳器对RaDa.exe进行脱壳处理,生成RaDa_unpacked.exe。再次用PEiD.exe进行扫描。再用strings,可以看到:


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

首先用命令行运行,发现它这样显示:

之后我们使用IDA 7.0对crackme1.exe进行分析,结果如下所示:




用同样的方法打开view的strings视图:

这里首先对一个临时变量设置了初始值mov [ebp+var_4], 0,接下来[ebp+var_4]与21h进行比较,不大于则执行_putchar输出。循环退出之后输出0Dh也就是\r。结果如下:

  • 三、 分析实践任务一
    分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

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

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

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

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

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

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

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
使用md5sum命令查看摘要信息, md5摘要值如下:

接下来在IDA中打开脱壳后的文件RaDa_unpacked.exe,右键type,选择set up,把unicode类型勾上,就可以知道rada都做了什么:

通过查找资料,发现它先通过HTTP协议访问了10.10.10.10\RaDa\RaDa_commands.html,
然后,HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run是控制计算机启动项的注册表信息,这里应该是rada修改注册表,使系统启动时运行rada.exe,修改内容为REG_SZ字符串类型
继续,程序对主机实行了DDOS拒绝服务攻击并调用了user32.dll和kernel32.dll内核文件,后面跟了几个函数
之后发现,,出现了WScript.Shell,程序进行了对注册表的读取操作:RegRead;对注册表的写操作:RegWrite以及对注册表的删操作:RegDelete
这一步猜测是修改了注册表,然后RegRead读取数据到变量中,再删除对注册表的修改


把wireshark监听的数据分析一下,可以看到受害主机向目标主机10.10.10.10发送了大量的数据包,但是使用追踪数据流,并没有发现任何信息

  • 四、 分析实践:Windows 2000系统被攻陷并加入僵尸网络
    分析的数据源是用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、因特网中继聊天(Internet Relay Chat),简称 IRC 。 IRC 的工作原理非常简单,只要在自己的 PC 上运行客户端软件,然后通过因特网以 IRC 协议连接到一台IRC服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用 JOIN 信息来加入频道,格式如下:JOIN 。IRC 服务器明文传输通常在*** 6667*** 端口监听,也会使用 6660—6669 端口。 SSL 加密传输在 6697 端口。
2. 僵尸网络是什么?僵尸网络通常用千什么?
僵尸网络是攻击者传播僵尸程序控制大量主机,通过一对多的命令与控制信道组成攻击网络,是在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态基础上发展融合而产生的一种新型攻击方式

僵尸网络可以被用于拒绝服务攻击、发送垃圾邮件、窃取用户敏感信息等秘密、耗费网络资源
3. 蜜罐主机CIP地址: 172.16.134.191)与哪些IRC服务器进行了通信?
在wireshark中打开老师提供的文件botnet_pcap_file,利用指令ip.src172.16.134.191 and tcp.dstport == 6667进行过滤TCP连接中使用6667端口的主机IP地址。


以“三次握手”为标识找到了与密罐进行交互的IRC服务器共五台:66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172、209.126.161.29。
4. 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
输入命令:tcpflow -r /home/kali/桌面/botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'

输入命令后,产生了三个文件,3个文件分别为209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml

输入命令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来计算209.196.044.172.06667-172.016.134.191.01152文件中有多少主机访问了209.196.044.17。
显示3461个。

根据上图可以看出有3461台主机访问了僵尸网络。
5. 那些IP地址被用于攻击蜜罐主机?
使用tcpdump命令查找端口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 >20211907.txt;wc -l 20211907.txt,将数据导入到202111907文件中。

6、攻击者尝试攻击了那些安全漏洞?
输入命令: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筛选出TCP端口,可以看到有135(rpc)、 139(netbios-ssn)、 25(smtp)、 445(smb)、 4899(radmin)、 80(http)。

之后查看UDP端口,输入命令:tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

7. 那些攻击成功了?是如何成功的?
使用ip.dst == 172.16.134.191 and tcp.dstport == 80命令在wireshark中过滤
210.22.204.101发送许多异常数据包,是红色代码蠕虫攻击。

从下图可以看到61.111.101.78向蜜罐主机发送PSEXESVC.EXE,该文件是一种Dv1dr32的蠕虫,当客户端执行该可执行文件后,攻击方就可以远程控制执行文件的主机,然后获取权限。

端口4899,发现只有210.22.204.101与4899有通信,而4899端口是radmin服务端监听端口。

三、学习中遇到的问题及解决

本次实验因为在前几次作业中积累的经验加上与同学进行了充分的讨论,所以实验整体上进行的比较顺利。

四、学习感悟

通过本次实践我又掌握了许多有用且实用的网络攻防技巧。

posted @ 2022-05-08 23:03  20211918-晋伊甲  阅读(51)  评论(0编辑  收藏  举报