2407 --2 《网络与系统攻防技术》实验四实验报告
1.实践内容
1.1 恶意代码基础知识
定义:指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。
恶意代码类型
计算机病毒
指那种既具有自我复制能力,又必须寄生在其他实用程序中的恶意代码。感染过程通常需要人为干预
蠕虫
它和计算机病毒的最大不同在于自我复制过程,病毒的自我复制过程需要人工干预,无论是运行感染病毒的实用程序,还是打开包含宏病毒的邮件,都不是由病毒程序自我完成的。蠕虫能够自我完成下述步骤:
(1)查找远程系统:能够通过检索已被攻陷的系统的网络邻居列表或其他远程系统地址列表找出下一个攻击对象。
(2)建立连接:能够通过端口扫描等操作过程自动和被攻击对象建立连接,如Telnet连接等。
(3)实施攻击:能够自动将自身通过已经建立的连接复制到被攻击的远程系统,并运行它。
后门
指一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。攻击者可以通过使用后门工具对目标主机进行完全控制,如NC
特洛伊木马
是一类伪装成有用的软件,但隐藏其恶总目标的恶意代码。主要特征是伪装性
僵尸网络
僵尸网络区别于其他攻击方式的基本特性是使用一对多的命令与控制机制,此外也具有恶意性和网络传播特性。
rootkit
是在用户态通过替换或修改系统关键可执行文件,或者在内核态通过控制操作系统内核,用以获取并保持最高控制权的一类恶意代码。
恶意代码的特征:
(1)恶意破坏的目的
(2)其本身为程序
(3)通过执行发生作用
恶意代码的传播方式:
总的来说,恶意代码的传播是因为用户的软件出现了漏洞、操作不慎或者是两者的结合造成
(1)病毒:病毒具有自我复制的功能,一般嵌入主机的程序中。当被感染文件执行操作,例如,用户打开一个可执行文件时,病毒就会自我繁殖。病毒一般都具有破坏性
(2)木马:这种程序从表面上看没有危害,但实际上却隐含着恶意的意图和破坏的作用。一些木马程序会通过覆盖系统中已经存在的文件的方式存在于系统之中;另外有的还会以软件的形式出现,因为它一般是以一个正常的应用程序身份在系统中运行的,所以这种程序通常不容易被发现
(3)蠕虫:蠕虫是一种可以自我复制的完全独立的程序,它的传播不需要借助被感染主机中的其他程序和用户的操作,而是通过系统存在的漏洞和设置的不安全性来进行入侵,如通过共享的设置来侵入。蠕虫可以自动创建与它的功能完全相同的副本,并能在无人干涉的情况下自动运行,大量地复制占用计算机的空间,使计算机的运行缓慢甚至瘫痪
(4)移动代码:移动代码是能够从主机传输到客户端计算机上并执行的代码,它通常是作为病毒、蠕虫或者是特洛伊木马的一部分被传送到客户的计算机上的。此外,移动代码还可以利用系统的漏洞进行入侵,如非法的数据访问和盗取管理员账号等
恶意代码攻击机制
(1)侵入系统:侵入系统是恶意代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,如:从互联网下载的程序本身就可能含有恶意代码;接收已经感染恶意代码的电子邮件;从光盘或U盘往系统上安装软件;黑客或者攻击者故意将恶意代码植入系统等
(2)维持或提升现有特权:恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成
(3)隐蔽策略:为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己
(4)潜伏:恶意代码侵入系统后,等待一定的条件,并具有足够的权限时,就发作并进行破坏活动
(5)破坏:恶意代码的本质具有破坏性,其目的是造成信息丢失,泄密,破坏系统完整性等
1.2 恶意代码分析
恶意代码分析是一个多步过程,他深入研究恶意软件结构和功能,有利于对抗措施的发展。按照分析过程中恶意代码的执行状态可以把恶意代码分析技术分成静态分析技术和动态分析技术两大类
恶意代码静态分析
反病毒软件扫描
使用现成的反病毒软件来扫描待分析的样本,以确代码是否含有病毒。常用软件包括国产的金山、瑞星;国外的诺顿、卡巴斯基等等
文件格式识别
恶意代码通常是以二进制可执行文件格式存在的,其他的存在形式还包括脚本文件、带有宏指令的数据文件、压缩文件等。文件格式识别能够让我们快速地了解待分析样本的文件格式,对于二进制可执行文件而言,了解样本的格式也意味者我们获知了恶意代码所期望的运行平台。常用软件是PEiD、Filelnfo、FileAnalyzer 等
字符串提取分析
有时恶意代码的作者会在自己的作品中放入某个特定的url或email地址,或者恶意代码会使用到某个特定的库文件和函数。利用字符串提取技术,可以帮助我们分析恶意代码的功能和结构
反汇编、反编译
可根据二进制文件最大限度地恢复出源代码,帮助分析代码结构
加壳识别和代码脱壳
恶意代码的加壳会对深入的静态分析构成阻碍,在识别出恶意代码所使用的加壳工具之后,下一步就是进行脱壳,恢复出恶意代码加壳之前的原有形态,对于常见的加壳工具如UPX、 PEPack、 ASPack等都拥有相应的脱壳工具
恶意代码动态分析
动态分析技术手段主要有:快照比对、系统动态行为监控、网络协议栈监控、沙箱、动态调试等
快照比对
对原始的系统资源列表做一个快照,然后激活恶意代码并给予充分的运行时间,之后再对恶意代码运行后的系统资料列表进行快照,并对比两个快照之间的差异,从而获取恶意代码行为对系统所造成的影响。常使用的工具有:FileSnap,RegSnap,完美卸载等
系统动态行为监控
针对恶意代码对文件系统、运行进程列表、注册表、本地网络栈等方面的行为动作,进行实时监视、记录和显示
网络协议栈监控方法
从本地网络上的其他主机来检测承受恶意代码攻击的机器的行为,如恶意代码所开放的TCP或UDP端口,对外发起的网络连接和通信会话等
沙箱技术
沙箱它供了受限制的执行环境,使得在沙箱中运行的代码不能修改用户系统,从而提供了一个用于运行不可信程序的安全环境
2、实验过程
2.1 恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
使用PEiD工具查看RaDa.exe的基本信息,可以看到这个是一个版本为0.89.6的UPX壳,以及文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
对RaDa.exe进行脱壳处理,生成RaDa_unpacked.exe。再次用PEiD.exe进行扫描。再用strings,可以看到:
使用UPX加了压缩壳,识别结果为“UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo”
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
分析可知该恶意代码为Raul Siles和David Perez于编写。
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
分析crackme1.exe
首先在kali中直接运行该程序,有如下结果:
Windows下利用IDA Pro分析
main函数首先会判断命令行参数个数,若个数不等于2,输出“I think you are missing something.”,直接结束。若个数等于2,则判断第二个参数是否为“I know the secret”,是则输出“You know how to speak to programs,Mr. Reverse-Engineer”,否则输出为“Pardon? What did you say?”。
分析crackme2.exe
首先尝试运行一下
接下来具体分析:
main函数首先将会判断命令行的参数个数,若个数不等于2,则输出“I think you are missing something.”,直接结束。若个数等于2,则先判断第一个参数是否为“crackmeplease.exe”,若不是输出为“I have an identity problem.”,结束;若是,则接着判断第二个参数是不是“I know the secret”,是则输出成功信息,不是则输出“Pardon? What did you say?”。
2.3 分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
在IDA Pro下打开unpacked.exe,进行静态分析:
因此,我猜测恶意代码使用http连接到10.10.10.10的主机,进行了上传和下载操作。其中mend.html可能是恶意代码获得指令的文件。
它在C盘下创建RaDa文件夹,并包含tmp和bin两个子文件夹。下载了一些文件到tmp目录下,将RaDa.exe复制到bin目录下。
此外,它还可以进行一些修改注册表、截屏、休眠等操作。
(3)识别并说明这个二进制文件所具有的不同特性;
该二进制文件能修改注册表,开机自启动,自我复制到C盘,进行截图等操作。并且能从指定的web服务器请求指定的web页面,进而获取指令(通过CGI程序)。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用了UPX加壳。直接用strings命令查看会发现全是乱码。同时也有虚张声势,比如它说它要发起DDoS Smurf远程攻击,其实并没有。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
分类:后门程序
理由:不能自主进行传播和感染,没有伪装成正常程序进行欺骗。其功能主要是建立连接远端服务器的后门,远程获取指令并执行,伪装性强,具有持续性。
(6)给出过去已有的具有相似功能的其他工具;
Bobax(TrojanProxy.Win32.Bobax.a)二者都使用http协议从指定的服务器下载命令文件,接下来执行指令
Setiri木马,由两部分代码组成:Connection Broker Code和后门。Connection Broker Code就是安装在任何一台web服务器上的CGI程序脚本,这一点相似。
(7)可能调查处这个二进制文件的开发作者吗?
可以。
2.4 取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是Internet Relay Chat 的英文缩写,中文一般称为互联网中继聊天。只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称),所有的沟通就在他们所在的Channel内以不同的Nickname进行交谈。
6667端口(明文传输)、6697端口(SSL加密)
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的。
利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息
Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等
攻击者利用Botnet从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
kali下使用Wireshark打开数据源botnet_pcap_file.dat,设置过滤条件:
ip.src == 172.16.134.191 && tcp.dstport == 6667 && tcp.flags == 0x2
这里可以看到与密罐进行交互的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为服务器的僵尸网络?
输入命令后,产生了三个文件,3个文件分别为209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml
共3457台主机。
(5)哪些IP地址被用于攻击蜜罐主机?
命令行输入:
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 > qhq.txt;wc -l qhq.txt
共有165个主机。
(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
接下来用wireshark筛选出经过每个端口的数据包
筛选通过80端口的数据包:
看到210.22.204.101向蜜罐发送了超多的C,可能在进行缓冲区溢出攻击
24.197.194.106进行拒绝服务攻击。
发现攻击方24.197.194.106不停的用autoexec.bat脚本在攻击IIS服务器的漏洞,从而获取cmd.exe的执行权限。
筛选通过4899端口的数据包:
4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能。可能控制蜜罐主机。
筛选通过445端口的数据包:
查询后知道这是蠕虫病毒的一个工具(PSEXEC工具原理是通过ipc$连接,然后释放psexesvc.exe到目标机器)
发现在No.20975的报文中以管理员身份访问了Windows文件共享。
3.学习中遇到的问题及解决
问题1:如下图:
问题1解决方案
4.实践总结
本次实验所需要使用的工具相比前几次更丰富,耗时也更长。恶意代码的分析方法主要分为静态分析方法和动态分析方法。这两种方法在本次实验中都有所涉及。静态分析方法是指在不执行程序的条件下进行分析,如反汇编分析等;而动态分析方法是指在恶意代码执行的情况下,利用调试工具对恶意代码实施跟踪和观察,比如抓包等等,确定恶意代码的工作过程,以便作进一步分析。但是在分析的过程中由于自己知识水平的限制,对比结果虽然明显看到有很多不同,但是分析是又不知道该从何下手,不太清楚每一项具体代表什么含义,只能通过查阅资料,特别是在抓包的时候,导致最后分析的结果也不是很全面详细,希望在之后的学习中能够对其有更加深入的了解。
参考资料
逆向神器之IDA的使用
内网渗透——PSExec工具
tcpflow 抓包