20199329 2019-2020-2 《网络攻防实践》第九周作业

《网络攻防实践》第九周作业


一、前言


二、知识点总结

1.恶意代码基础知识

1.1 恶意代码

恶意代码:使计算机按照攻击者的意图执行以达到恶意目标的指令集,不一定使二进制执行文件,也可以使脚本语言代码、宏代码,或者是寄生在其他代码或启动山区中的一段指令流。
恶意代码类型、特性及典型实例

1.2 计算机病毒

计算机病毒(Computer Virus):一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
三种可执行文件的感染方式:前缀感染机制,后缀感染机制和插入感染机制
前缀感染机制:指的是病毒将自身复制到宿主程序的开始,当宿主程序被执行时,操作系统首先会运行病毒代码,大多数情况下,病毒在判断其触发条件是否满足后会将控制权转交给宿主程序,所以用户很难感觉到病毒的存在;
后缀感染机制:指的是病毒将自身复制到宿主程序的末端,然后通过修改宿主程序开始时的指令,加入一条跳转指令,使得在宿主程序执行时首先跳转到病毒代码,执行完病毒代码后再通过一条跳转指令继续执行宿主程序;
中间插入感染机制:指的是病毒在感染宿主程序时,能把它拦腰截断,把病毒代码放在宿主程序的中间。中间插入感染机制能够通过零长度插入技术等使得病毒更加隐蔽,但该机制需要阶段宿主程序时的位置要恰当,需要保证病毒能够首先获得控制权,而且病毒不能被卡死,宿主程序也不能因病毒的插入而不能正常工作,因此编写此类病毒需要高超的技巧。
计算机病毒的传播渠道:移动存储、电子邮件及下载、共享目录等。

1.3 网络蠕虫

蠕虫(Worm):自我复制机制与计算机病毒类似,但蠕虫是一类自主运行的恶意代码,并不需要将自身嵌入到其他宿主程序中。蠕虫通常通过修改操作系统相关配置,使其能够在系统启动时得以运行。蠕虫一般通过主动扫描和攻击网络服务的漏洞进行传播,一般不需要人工干预。
基本特性:网络蠕虫和计算机病毒都有感染和自我复制的特性,而且网络蠕虫通过网络的自主传播无需人为干预,计算机病毒特性在于感染宿主,包括可执行文件、数据文档或磁盘引导删去,蠕虫病毒没有必要感染宿主,大多数病毒则需要用户运行一个程序或浏览一个文件。
计算机病毒与网络蠕虫的特性比对:

网络蠕虫的组成结构:类似导弹,弹头用来穿透目标,传播引擎驱动导弹飞向它的目标,目标选择算法和扫描引擎用来引导导弹发现和指向它的目标,有效在和仓中携带了执行真正破坏性攻击的恶性材料。

1.4 后门与木马

后门(Backdoor):是指一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。攻击者可以通过使用后门工具对目标主机进行完全控制,著名的后门工具包括Netcat、Back Orifice、Linux Root Kit和我国自行开发的冰河等。
特洛伊木马(Trojan Horse):是一类伪装成有用的软件,但隐藏其恶意目标的恶意代码。后门和特洛伊木马两个概念经常混淆,后门仅为攻击者给出非法访问途径,而特洛伊木马的特征则在于伪装性。当然,许多工具融合了后门和特洛伊木马两者的特性,即攻击者将后门工具伪装成善意的软件,诱导用户安装从而为其给出访问权,此类工具可称为木马后门。
基本特征:后门和木马是恶意代码中经常被混淆的两类技术形态,在实际的样本实例中也往往融合在一起使用。从定义特性上进行分析,后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;而木马作为特洛伊木马的简称,是指类看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。错误的观点是将后门和木马等同,将提供对受害计算机远程控制的任何程序或受害计算机上的远程命令行解释器均视为木马:而根据定义特性,它们应被视为后门,但如果将后门工具伪装成良性程序,这才具备真正的木马特征。欺骗用户或系统管理员安装特洛伊木马程序,这样木马程序就通过毫无戒备的用户进入到计算机系统中: 隐藏在计算机的正常程序中,将自己伪装成看起来属于该系统,使得用户和管理员不会觉察到它的存在,通常与后门工具结合,成为木马后门。

1.5 僵尸网络和程序

僵尸网络(Botnet):是攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的攻击网络。僵尸网络区别于其他攻击方式的基本特性是使用一对多的命令与控制机制,此外也具有恶意性和网络传播特性。
僵尸程序(Bot):是用于构建僵尸网络以形成一对多控制攻击平台的恶意代码形态。内核套件(Rootkit)是在用户态通过替换或修改系统关键可执行文件,或者在内核态通过控制操作系统内核,用以获取并保持最高控制权(root access)的一类恶意代码,又分为用户态Rootkit和内核态Rootkit两种。
基本特征:僵尸程序通常也会携带渗透攻击“弹头”通过利用网络服务漏洞进行网络传播,但它与蠕虫的区别在于是否受控,蠕虫一般都是自主传播方式,而僵尸程序则是接受控制后进行攻击和传播;僵尸程序为了隐藏自身在受害主机上的存在,会采用--些伪装和欺骗机制,此时也具有特洛伊木马特性,但这并非僵尸程序必有的特征:与后门工具类似,僵尸程序也会为攻击者提供对受害主机的远程控制,如在受害主机上执行特定指令,或下载安装一些恶意程序,但它与后门工具的区别在于控制机制的差异,后门通常提供一对- -的控制,而僵尸程序能够为攻击者提供更灵活的一对多的控制机制。因此我们定义,僵尸网络是指攻击者(称为botmaster) 出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络区别于其他攻击方式的基本特性是使用一-对多的命令与控制机制,另外,僵尸网络还具有恶意性和网络传播性。
僵尸程序的功能组成结构:

1.6 Rootkit

Rootkit:是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。
基本特征:正如Rootkit定义中所明确指出的,首先, 它属于特洛伊木马的范畴,它获取运行在目标计算机上与操作系统相关联的常规程序,并用恶意版本替换它们:恶意的Rootkit 程序将自身伪装成恰当且普通的程序,为的就是掩盖其真正的恶意目的,而这种伪装和隐藏机制正是特洛伊木马的定义特性;此外,Rootkit 还作为后门行使其职能,各种Rootkit通过后门口令、远程Shell或其他可能的后门]途径,为攻击者提供绕过正常机制的后门]访问通道,而这正是后门工具的定义特性。作为一类特殊形态的木 马后门工具,一个恶意代码之所以能够被称为Rookit,就必须具备替换或修改现有操作系统软件进行隐藏的特性,而这才是Rootkit的定义特性。
应用程序级木马后门,用户模式Rootkit和内核模式Rootkit位置对比,如下图:

实现Windows系统中用户模式Rootkit的三种不同技术:

2.恶意代码分析方法

代码分析:按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。
恶意代码分析主要包括静态分析与动态分析方法,来对代码进行逆向工程来确定其功能。
恶意代码分析与良性代码分析的区别:

在恶意代码分析网段中,包括了系统主要的四类恶意代码自动化分析组件,分别为静态分析机、动态分析机、网络分析机、综合分析机。
分析流程:先静态分析,然后动态分析。必要时再从二进制层次上对恶意代码进行微观的静态结构及逻辑分析,并结合动态分析中的运行调试机制,来理解恶意代码的细节特征与行为机理。
静态分析技术列表如下图:

恶意代码动态分析技术列表如下图:


三、实验内容

任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下。
1.解压老师发的压缩包到win XP attacker上,然后运行命令行,file命令恶意程序RaDa.exe。可以看到文件类型,它是PE32位可执行文件。有图形化窗口,用了intel 80386处理器的汇编指令集。

2.打开PEiD中文版,导入这个Rada.exe,查看下基本信息。这里可以看到文件的入口点、偏移、文件类型、EP短、汇编程序以及加壳类型。

节查看器

汇编代码

PE细节

扩展信息,检测一行包含了加壳信息

3.命令行输入strings命令,对恶意程序进行字符串提取。发现是乱码。

4.我们使用脱壳工具超级巡警虚拟机脱壳器对恶意程序进行脱壳。得到了unpacked.exe

5.这时再用PEiD打开发现当前编译工具使用时VB5.0/6.0:

6.在用上面讲的方法读取文本内容,可以看到文本内容已经没有乱码:

7.运行该程序,然后在process explorer上读取进程Strings信息,找到了作者名字

任务二:分析Crackme程序

Crack1

1.在C盘创建crack目录,将exe文件放入其中,首先要猜测需要输入的参数个数,我们从0个参数开始,依次测试不同参数个数的输出

2.打开IDA Pro Free,然后把crackme1.exe导入进去,进行反编译。

3.这里先查看程序中明文字符串Strings window,可以发现前四个中有两项输出记录下来了,猜测第2条是密码,第四条是破解成功的提示语:

4.查看他的函数结构

5.返回主界面,找到401280这一代码块,在Functions window中定位该函数。

6.然后从IDA VIEW-A这一栏可以看到,定位到了对应位置的汇编代码部分

7.依据下图汇编代码推测输出正确输入应该为"I know the secret"

8.输入密码,攻击成功

Crack2

1.首先要猜测需要输入的参数个数,我们从0个参数开始,依次测试不同参数个数的输出

2.由IDA PRO Free打开crackme2.exe。可以看到如下基本信息

3.打开函数表,可以看到它的大致结构。关键代码段,401280

4.定位401280代码段,然后查看他的数据流表。

5.对比上个程序的判断条件,发现相差了一个add eax 4代码,eax寄存器加4,据此大致判断出需要两个参数,第一个是程序名,第二个是密码。然后我们将原文件重命名为crackmeplease.exe,使用密文:"I know the secret",就可以攻击成功。

任务三:分析Crackme程序

1.打开wireshark和已经脱壳的rada_unpacked.exe,运用上述工具打开属性,可以看到该二进制文件的编码字符串内容,当恶意程序打开后或以http协议与目标地址10.10.10.10的RaDa_commands.html进行连接,在本机目录下会新建tmp和bin两个文件夹,注册表也会有改变:

2.在wireshark上发现大量发现10.10.10.10的TCP数据包:

3.继续观察字符串,推测这里开启DDoS拒绝服务远程攻击

4.用IDA对脱壳后的二进制文件进行反编译,首先查找它的string,这里需要把type改成unicode,猜测其作用是访问网站,修改注册表。

回答问题

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

可以运行在Windows系统上运行,支持的cpu型号是80386,32位,根据之前分析的内容,该二进制文件进行了加壳处理。
2.找出并解释这个二进制文件的目的。
这个二进制文件通过网络获取指令,并执行;攻击者可以利用其完全控制该系统,是一个后门程序。

3.识别并说明这个二进制文件所具有的不同特性。
RaDa.exe被执行时,将在该目录下新建bin和tmp文件,其中bin目录下的二进制文件修改注册表,自动随虚拟机开启,然后从指定的目标服务器请求web页面,获取指令和参数。

4.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
从前边实践得出结论,它是经过UPX加壳的。
UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。

5.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
该程序并未进行自我复制和传播,不符合蠕虫和病毒的特征,也没有伪装成其他形式的文件,也不是木马,所以可能是一个后门程序或者僵尸程序。

6.给出过去已有的具有相似功能的其他工具。
使用http方式来同攻击者建立连接————Bobax、海阳顶端、Setiri等。

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

脱壳后通过process explorer进行进程查看。

任务四:取证分析实践

问题1:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
IRC(Internet Relay Chat),因特网中继聊天。简单来说,就是你在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。
注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN 。
IRC使用的服务器端口有:
6667(明文传输,如irc://irc.freenode.net)、
6697(SSL加密传输,如ircs://irc.freenode.net:6697)等。

问题2:僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络 。僵尸网络通常用于DDos,海量垃圾邮件等。

问题3:蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信
打开wireshark,设置限定条件ip.src == 172.16.134.191 && tcp.dstport == 6667然后看看都有哪些IRC服务器与之交互。主要有63.241.174.144,217.199.175.10,209.126.161.29,66.33.65.58,209.196.44.172

问题4:在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先安装工具tcpflow,设置限定条件为host 209.196.44.172 and port 6667


生成了172.016.134.191.01152-209.196.044.172.06667,209.196.044.172.06667-172.016.134.191.01152和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
统计得到主机个数为3462:

问题5:哪些IP地址被用于攻击蜜罐主机?
利用tcpdump指定IP地址收集被攻击的端口写入result.txt,tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >result.txt; wc -l result.txt


通过snort获取所有可能链接的主机IP地址,将内容输出到ip.txt,可以看到一共有165行共计165个,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 > ip.txt;wc -l ip.txt

问题6:攻击者尝试攻击了哪些安全漏洞?
使用snort -r botnet.pcap -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况

可以看出大部分为tcp数据包,少部分为udp数据包,分别筛选这两种端口:
tcp端口。

udp端口

下面依次分析这些端口:TCP135和TCP25端口,只是进行了连接,没有数据内容交换,很有可能是对这个端点进行了connect扫描:

接下来分析445端口,445是SMB协议端口。设置过滤条件为ip.dst==172.16.134.191 and tcp.dstport==445,结果如下图。这里发现有一个PSEXESVC.EXE的文件,这个二进制文件主要是一种Dv1dr32蠕虫,这种蠕虫通过IRC进行通信。

查找从蜜罐发往61.111.101.78的信息ip.dst==61.111.101.78,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,所以攻击者肯定是获得了权限,攻击是成功的。

TCP80端口,设置筛选条件为ip.dst==172.16.134.191 and tcp.dstport==80 and http

这里主要通过该端口使用脚本攻击IIS服务器的漏洞,从而获取系统权限。
210.22.204.101向蜜罐发了很多的C,攻击者通过缓冲区溢出获得命令行:

这里访问的是218.25.147.83,会看到c:\notworm,是一个蠕虫攻击:

UDP137端口,设置条件ip.dst == 172.16.134.191 and udp.port == 137,网络基本输入/输出系统(NetBIOS) 名称服务器(NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法,在局域网中提供计算机的IP地址查询服务,处于自动开放状态。

问题7:哪些攻击成功了?是如何成功的?
成功的攻击发起者是210.22.204.101(Dv1dr32 蠕虫)和 61.111.101.78( LAN Manager 口令猜测)


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

  • 本周实验内容较大,很多知识点都来不及消化
  • 分析恶意代码能力较弱。通过学习其他同学的博客,大概有所了解了,但还是有不清楚的地方,实验后慢慢消化。

五、学习感想和体会

本次实验主要学习了恶意代码安全攻防,能够进行一些简单的恶意程序分析。重点在分析上,需要进一步回顾消化。


2020 年 4月 29日

posted @ 2020-04-29 23:57  朱星帆20199329  阅读(368)  评论(0编辑  收藏  举报