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

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

1.实践内容

(一)基础知识

恶意代码:

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

僵尸网络:

Botnet构成了一个攻击平台,利用这个平台可以有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以从事网络欺诈等其他违法犯能活动。下面是已经发现的利里Botnet发动的攻击行为。Botnet还可能被用来发起新的未知攻击。
(1)拒绝服务攻击。使用Bother发动DDos攻击是当前最主要的威胁之一,攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连绩访问特定的网络目标,从而达到DDos的目的,由于Botnet可以形成庞大规模,而目利田其进行DDos攻击可以做到更好地同步,所以在发布控制指令时,能够使得DDos的危害更大,防范更难。
(2)发送垃圾邮件。一些bots会设立sockv4/v5代理,这样就可以利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息。
(3)窃取秘密。Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。同时bot程序能够使用sniffer观测感兴趣的网络数据,从而获得网络流量中的秘密
(4)滥用资源。攻击者利用Bother从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失。例如:种植广告软件。点击指定的网站:利用僵尸主机的资源存储大型数据和违法数据等。利用僵尸主机搭建假冒的银行网站从事网络钓鱼的非法活动。
可以看出,Botnet无论是对整个网络还是对用户自身,都造成了比较严重的危害。

(二)恶意代码的防范

为了确保系统的安全与畅通,已有多种恶意代码的防范技术,如恶意代码分析技术、误用检测技术、权限控制技术和完整性技术等。

恶意代码分析技术:

恶意代码分析是一个多步过程,他深入研究恶意软件结构和功能,有利干对抗措施的发展。按照分析过程中恶意代码的执行状态可以把恶意代码分析技术分成静态分析技术和动态分析技术两大类。
1.静态分析技术
静态分析技术就是在不执行二进制程序的条件下,利用分析工具对恶意代码的静态特征和功能模块进行分析的技术。该技术不仅可以找到恶意代码的特征字符串、特征代码段等,而且可以得到恶意代码的功能模块和各个功能模块的流程图。由于恶意代码从本质上是由计算机指令构成的,因此根据分析过程是否考虑构成恶意代码的计算机指令的语义,可以把静态分析技术分成以下两种:
(1)基于代码特征的分析技术。在基于代码特征的分析过程中,不考虑恶意代码的指令意义,而是分析指令的统计特性、代码的结构特性等。比如在某个特定的恶意代码中,这些静态数据会在程序的特定位置出现,并且不会随着程序拷贝副本而变化,所以,完全可以使用这些静态数据和其出现的位置作为描述恶意代码的特征,当然有些恶意代码在设计过程中,考虑到信息暴露的问题而将静态数据进行拆分,其至不使田静态数据,这种情况就只能通过语义分析或者动态跟踪分析得到具体信息了。
(2)基于代码语义的分析技术。基于代码语义的分析技术要求考虑构成恶意代码的指令的含义,通过理解指令语义建立恶意代码的流程图和功能框图进一步分析恶意代码的功能结构。因此,在该技术的分析过程中首先使用反汇编工具对恶意代码执行体进行反汇编,然后通过理解恶意代码的反汇编程序了解恶意代码的功能。从理论上讲,通过这种技术可以得到恶意代码的所有功能特征。但是,目前基于语义的恶意代码分析技术主要还是依靠人工来完成,人工分析的过程需要花费分析人员的大量时间,对分析人员本身的墓求也很高。
采用静态分析技术来分析恶意代码最大的优势就是可以避免恶意代码执行过程对分析系统的破坏。但是他本身存在以下两个缺陷:①由于静态分析本身的局限性,导致出现问题的不可判定;②绝大多数静态分析技术只能识别出已知的病毒或恶意代码,对多态变种和加壳病毒则无能为力。无法检测未知的恶意代码是静态分析技术的一大缺陷。
2.动态分析技术
动态分析技术是指恶意代码执行的情况下,利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程,对静态分析结果进行验证。根据分析过程中是否需要考虑恶意代码的语义特征,将动态分析技术分为以下两种:
(1)外部观察技术。外部观察技术是利用系统监视工具观察恶意代码运行过程中系统环境的变化,通过分析这些变化判断恶意代码功能的一种分析技术。通过观察恶意代码运行过程中系统文件,系统配置和系统注册表的变化就可以分析恶意代码的自启动实现方法和进程隐藏方法:由于恶意代码作为一段程序在运行过程中通常会对系统造成一定的影响,有些恶意代码为了保证自己的自启动功能和进程隐藏的功能,通常会修改系统注册表和系统文件,或者会修改系统配置。
通过观察恶意代码运行过程中的网络活动情况可以了解恶意代码的网络功能。恶意代码通常会有一些比较特别的网络行为,比如通过网络进行传播、繁殖和拒绝服务攻击等破坏活动,或者通过网络进行诈骗等犯罪活动,或者通过网络将搜集到的机密信息传递给恶意代码的控制者,或者在本地开启一些端口、服务等后门等待恶意代码控制者对受害主机的控制访问。
虽然通过观测恶意代码执行过程对系统的影响可以得到的信息有限,但是这种分析方法相对简单,效果明显,已经成为分析恶意代码的常用手段之一。
(2)跟踪调试技术。跟踪调试技术是通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能的技术。在实际分析过程中,跟踪调试可以有两种方法:
①单步跟踪恶意代码执行过程,即监视恶意代码的每一个执行步骤,在分析过程中也可以在适当的时候执行恶意代码的一个片段,这种分析方法可以全面监视恶意代码的执行过程,但是分析过程相当耗时。
②利用系统hook技术监视恶意代码执行过程中的系统调用和API使用状态来分析恶意代码的功能,这种方法经常用于恶意代码检测。

误用检测技术:

误用检测也被称为基于特征字的检测。他是目前检测恶意代码最常用的技术,主要源于模式匹配的思想。其检测过程中根据恶意代码的执行状态又分为静态检测和动态检测:静态检测是指脱机对计算机上存储的所有代码进行扫描;动态检测则是指实时对到达计算机的所有数据进行检查扫描,并在程序运行过程中对内存中的代码进行扫描检测。误用检测的实现流程如图所示。

权限控制技术:

恶意代码要实现入侵、传播和破坏等必须具备足够权限。首先,恶意代码只有被运行才能实现其恶意目的,所以恶意代码进入系统后必须具有运行权限。其次,被运行的恶意代码如果要修改、破坏其他文件,则他必须具有对该文件的写权限,否则会被系统禁止。另外,如果恶意代码要窃取其他文件信息,他也必须具有对该文件的读权限。
权限控制技术通过适当的控制计算机系统中程序的权限,使其仅仅具有完成正常任务的最小权限即使该程序中包含恶意代码,该恶意代码也不能或者不能完全实现其恶意目的。

完整性技术:

恶意代码感染、破坏其他目标系统的过程,也是破坏这些目标完整性的过程。完整性技术就是通过保证系统资源,特别是系统中重要资源的完整性不受破坏,来阻止恶意代码对系统资源的感染和破坏。
校验和法是完整性控制技术对信息资源实现完整性保护的一种应用,他主要通过Hash值和循环冗余码来实现,即首先将未被恶意代码感染的系统生成检测数据,然后周期性地使用校验和法检测文件的改变情况,只要文件内部有一个比特发生了变化,校验和值就会改变。

2.实践过程

动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
打开WinXPattacker,用命令提示符打开已存在c盘20212919wyt文件夹下的rada.exe文件,输入命令file RaDa.exe看到文件类型为32位操作系统下的PE文件,有图形化界面。

输入命令strings RaDa.exe可以看到文件字符串为乱码。

打开PEiD找到Rada.exe文件位置查看其基本信息,可以看到加壳类型为UPX。

(2)使用超级巡警软件对Rada.exe文件进行脱壳。

输入strings命令查看脱壳后的rada_unpacked.exe文件中可打印的字符串,可以发现有大量的函数调用名。

(3)使用字符串提取工具process explorer,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是Raul siles&David Perze,他在2004年写的。

动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
分析crackme1.exe:
在WinXP Attacker中输入file crackme1.exe查看文件类型为32位Windows下的PE文件,没有图形界面,是命令行文件。

执行crackme1.exe,猜测参数执行,查看返回有I think you are missing something等。

打开IDA并打开crackme1.exe文件,查壳这个文件的函数调用。

strcmp是c语言中字符串匹配密码的函数,发现关键的程序段sub_401280。

查看程序中的明文字符串strings看到第二行字符串I know the secret猜测为密码口令、第四行You know how to speak to programs,Mr Reverse Engineer。猜测为口令成功输入的反馈。

验证猜想是正确的。

查看函数调用图,在IDA上选择view—graphs—function calls。发现输出函数fprintf和printf 即为程序输出,则sub_401280即为核心函数。

打开sub_401280函数的流程图,发现该函数首先判断参数个数是否为2,若参数个数不为2,也就是前面在输入命令crackme1.exe时输出I think you are missing something,若参数个数为2,则将第二个参数与字符串I know the secret作比较,正确则输出You know how to programs。

分析crackme2.exe:
和分析crackme1.exe同理,打开IDA并打开crackme2.exe文件,查壳这个文件的函数调用。选择view—graphs—function calls。发现输出函数fprintf即为程序输出,则crackme2.exe的核心函数也是sub_401280。

打开sub_401280函数的流程图,发现该函数首先判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe,若正确则判断第二个参数是否为I know the secret。

验证猜想是正确的。

分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
1.使用md5sum命令查看摘要信息, md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。

启动恶意软件并用radaprocess explorer软件进行监测。在RaDa.exe
的属性里可以看到它通过HTTP协议连接到10.10.10.10主机下RaDa\RaDa_commands.html
的网页上,在c盘C:\RaDa\tmp目录下创建用于保存下载文件的文件夹,恶意软件还修改了注册表(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)将rada设置为开机启动。

下拉可以看到,该程序还对主机实行了DDOS拒绝服务攻击,可以看出该恶意代码将其自我复制到主机系统盘,并激活了自启动,还试图从一个HTML页面获取并解析命令,故猜测这应该是一个后门程序。接下来该程序对注册表进行了读写和删除操作。

rada执行了上传、下载、休眠、屏幕截图等命令。
-exe:在宿主主机中执行指定的命令      
-put:将宿主主机中的指定文件上传到服务器         
-get:将服务器中的指定文件下载到宿主主机中     
-screenshot:截取宿主主机的屏幕并保存到tmp文件夹        
-sleep:停止活动一段时间

总结:
1、这个二进制文件的摘要为caaa6985a43225a0b3add54f44a0d4c7。PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中,使用了UPX加壳工具进行了加壳处理
2、找出并解释这个二进制文件的目的:下载后门到目标主机,发动拒绝服务攻击,可远程与目标主机通信。
3、识别并说明这个二进制文件所具有的不同特性:这个恶意程序会自我复制到目标主机c盘,并自动新建文件夹而不被发现,修改注册表,文件运行时自动与其他主机通信。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术:文件被加壳处理,为乱码形式;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:不能自主传播,未进行伪装,是后门程序。
6、给出过去已有的具有相似功能的其他工具:木马Setiri。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?将rada.exe脱壳后,获得开发作者信息Authors: Raul Siles & David Perez, 2004。

分析实践任务二:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
答:IRC是Internet Relay Chat 的英文缩写,中文一般称为互联网中继聊天。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,目前世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
申请加入前要先注册,注册时需要发三种信息:用户信息USER、口令PASS 以及昵称NICK、注册完成后,客户端就可以使用JOIN 信息来加入频道。
IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
答:僵尸网络(英文名称叫Botnet),是互联网上在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展、融合而产生的一种新型攻击方法。往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用Wireshark打开数据文件,根据IRC简介,常见端口为6667,因此设置过滤条件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,209.196.44.172

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
使用tcpflow分流(筛选指定host与端口),命令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。
因为我们要找的是访问 209.196.44.172的主机,故此处着重看第一个文件。

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

输入命令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.172(grep取出昵称,sed去除前缀,tr将空格转换为新行,tr -d去除\r,grep -v "^$"去除空行,sort -u排序并去重,wc计算行数)。结果显示有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 > tcpdump.txt;wc -l tcpdump.txt
打开生成的tcpdump.txt文件,可以看到有165个IP地址被用于攻击蜜罐主机。

6、攻击者尝试攻击了那些安全漏洞?
使用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筛选出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 udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq筛选响应的端口,发现udp端口有137(netbios-ns)。137端口在局域网中提供计算机的IP地址查询服务,处于自动开放状态。

7、那些攻击成功了?是如何成功的?
筛选出端口135和25,139发现攻击者只是进行了连接,并没有数据传输,故只是对端口进行了查点或connect扫描。

tcp 80端口,在waireshark中筛选tcp.dstport==80 && ip.dst == 172.16.134.191,发现了TCP协议、SMB协议和NBSS协议,同时发现24.197.194.106与蜜罐的有交互连接数最多,可以知道24.197.194.106利用IIS漏洞对蜜罐主机进行Web探测。随后发现了网站www.worm.com,说明攻击者使用了蠕虫,还有缓冲区溢出攻击等。

端口4899是一个被广泛破解和使用的商业远程控制软件radmin,攻击者通过上传radmin可以实现对靶机的控制。

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

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

  • 问题1:实验在准备阶段下载恶意代码样本的过程中因为虚拟机存在防火墙拦截功能,导致未能成功。
  • 问题1解决方案:发现压缩包可以逃离防火墙的监测成功复制到虚拟机桌面上,固下载了一个解压工具,实现成功下载并解压了rada恶意代码样本。

4.实践总结

此次试验学到了很多关于恶意代码和僵尸网络的知识,也成功实现了分析恶意代码的过程,实验没有很多难处,主要是知识比较庞杂,编辑的命令也比以前更加复杂,出现了很长的,需要不断上网查阅知识来对实验进行理解和操作,总之还是很顺利的。

posted on 2022-05-06 22:35  婷啊婷儿  阅读(49)  评论(0编辑  收藏  举报