20199303 2019-2020-2 《网络攻防实践》第9次作业

(一)基础知识:

1.恶意代码的分类

恶意代码定义:指计算机按照攻击者意图执行以达到恶意攻击的目的。
恶意代码的类型有

  • 计算机病毒:一种能自我复制的代码,通过将自身嵌入其他程序进行感染,感染过程通常需要人工干预完成。

  • 蠕虫:蠕虫通过修改操作系统相关配置,使其在系统启动时能运行,是自主运行的代码。

  • 恶意移动代码:是指可以从远程主机下载并在本地执行的轻量级程序。

  • 后门:是指能够绕开正常的安全控制机制,从而为攻击者提供正常访问途径的一类恶意代码。可以用此对目标主机进行完全的控制。

  • 特洛伊木马:是一类伪装成有用的软件,但隐藏其恶意目标的恶意代码,特征在于其伪装性。

  • 僵尸网络:是指攻击者传播僵尸程序控制大量的主机,并通过一对多的命令和控制信道所组成的攻击网络。

  • 内核套件(Rootkit):是在用户态通过替换或修改系统关键可执行文件,或在内核态通过控制操作系统内核,用以获取最高的控制权。

    2.恶意代码发展趋势

  • 恶意代码的复杂度和破坏力不断增强;

  • 恶意代码技术的创新越来越平凡;
    关注重点从计算机病毒转移到蠕虫和内核级的攻击工具。
    3.计算机病毒

  • 基本特性:感染性、潜伏性、可触发性、破坏性、衍生性

  • 感染及引导机制:潜在的感染目标可分为三类

(1)可执行文件:是计算机病毒最普遍的感染目标,因为以可执行文件作为宿主程序,当其被用户运行时,依附在上面

(2)引导扇区:通过BIOS定位到磁盘的主引导区,运行存储在那的主引导记录,接着找到第一个活动分区,分区引导记录负责装载操作系统。
(3)支持宏指令的数据文件:在数据文件中包含可执行指令称为宏指令,宏病毒将自身以宏指令的方式复制到数据文件中,因此当被感染的数据文件被打开时,将自动执行宏病毒载体,完成病毒引导。

  • 病毒传播机制:传播渠道包括移动存储、电子邮件及下载、共享目录等。通过U盘、SD卡等
    4.网络蠕虫
    计算机病毒与蠕虫的对比:

    组成结构:
  • 弹头:为了侵占一个系统,蠕虫必须首先获得计算机访问权,用一些渗透攻击的代码作为弹头。
  • 传播引擎:在获得目标访问权之后,蠕虫必须复制自身样本到目标系统上。
  • 扫描引擎:一旦蠕虫在受害机上运行,目标扫描算法开始寻找新的攻击目标,然后利用扫描引擎扫描每一个由目标扫描算法所确定的地址,确定是否可攻击。
  • 有效载荷:就是附加的攻击代码,为攻击者在目标机子上执行一些特殊操作,通常包括后门、拒绝服务攻击代理和组件僵尸网络。

后门与木马

后门工具能为攻击者提供不同类型的访问渠道:本地特权提升和本地账号;单个命令的远程执行;远程命令行解释器访问;后门工具几乎都用了自启动功能。

Windows平台中,自启动文件夹一般在C:\Documents and Setting[username]\Start Menu\Program\Startup目录下,一旦后门工具被添加至此文件夹,Windows启动时就会启动后门工具。
可以通过msconfig和autoruns工具来检查出恶意后门工具注册的非法启动项。
特洛伊木马:攻击者设计出无数的木马欺骗和伪装技术的方法,将恶意功能隐藏在木马程序中,并植入到目标计算机系统。

6.僵尸程序与网络

演化过程


僵尸网络的基本特性是使用一对多的命令与控制机制,主流的包括基于IRC协议的、基于HTTP协议的和基于P2P三大类

7.Rootkit:
用户模式和内核模式的对比:

用户模式的工具有

类UNIX:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、安装脚本等。
Windows:利用一些开发接口、使WFP功能失效、使用DLL注入和API挂钩。三种技术如图所示:

内核模式的实现机制

  • Linux系统中:LKM机制支持在内核中注入新代码,利用LKM机制实现的内核模式有Adore、Adore-ng、KIS等。
  • Windows:利用恶意设备驱动程序、修改内存中当前运行的内核、覆盖硬盘上的内核镜像等。

2.1恶意代码文件类型识别、脱壳与字符串提取

任务:对rada恶意代码样本,进行文件类型识别、脱壳与字符串提取,以获得恶意代码的编写作者
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具。
打开命令行,在文件所在目录使用file RaDa.exe查看该文件,这是一个32位Windows的可执行文件

用PEID打开该文件,可见文件有加壳,且为UPX壳

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
![](https://img2020.cnblogs.com/blog/1800807/202004/1800807-20200429125803513-1461712463.png


对于字符串提取,这里将上面脱壳之后的程序放到linux下,使用linux的缺省程序strings进行字符串提取,命令为strings Rada_unpacked.exe。对于提取的结果,我们可以看到有很多程序的交互字符串和程序的函数调用的函数名,开头显示You can learn a lot playing funny security challenges。截图如下:

实践二:分析Crack程序:使用IDA Pro动态或静态分析crackme1.exe与crackme2.exe,寻找特定的输入,使其能输出成功的信息。

使用file命令查看crackme1.exe的文件类型,可以看出其是32位Windows下的PE文件,没有图形界面,是命令行文件。

用IDA Pro打开crackme1.exe,查看strings信息,看语义感觉You know how to speak to program是我们想要的结果

胡乱输入,感觉应该为缺少一至二个参数

因为不懂汇编语言,分析流程图比较困难

尝试将可以辨认的字符串输入可得到结果

对crackme2.exe进行分析,前面的分析和crackme1.exe相同,直接用IDA工具打开,发现核心函数还是sub_401280。

找到其汇编代码,有

通过参数个数的判断后,接着用 strcmp 函数对 argc 里面的第一个字符 串,即程序名,和“crackmeplease.exe” 进行判断

通过后再与I know the secret比较
所以,把文件名变成crackmeplease.exe,再输入I know the secret

实践三:

1.样本分析实践:分析一个资质的恶意代码样本rada
任务:作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。

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

首先使用MD5对该恶意程序进行摘要信息分析,md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。

此程序被加壳了,我们像之前一样做脱壳处理后分析。打开proceed和wireshark进行监听,运行RaDa.exe文件,这里把主机的网络断开。运行程序
对行为进行分析,可以发现访问了```http://10.10.10.10/RaDa网址,下载了一个文件保存到C:\RaDa\tmp文件。

往下分析发现该程序可发动DDos拒绝服务攻击,

注意到strings里还有VM相关的字符串,猜测该代码可能会识别虚拟机

回答问题:

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
该文件md5值为caaa6985a43225a0b3add54f44a0d4c7
(2)找出并解释这个二进制文件的目的。
ddos 攻击
(3)识别并说明这个二进制文件所具有的不同特性。
执行后将自身复制到C:\RaDa\bin,并且恶意修改注册表
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
使用了UPX加壳,可识别虚拟机
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
该代码没有感染性也不会自主传播,因此不是病毒和蠕虫。改代码没有隐藏自身为正常程序骗用户执行,因此也不是木马。该程序可能属于僵尸或后门程序,因为是从服务器下载命令,个人感觉比较可能是僵尸程序。
(6)给出过去已有的具有相似功能的其他工具。
例如Zeus,Setiri及GatSlag等僵尸程序
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
在非虚拟机的条件下执行

取证分析实践

任务:数据源是Snort收集的蜜罐主机5天的网络流量日志(经过适当处理),这台蜜罐主机在一个僵尸网络中。回答以下问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

IRC是因特网中继聊天(Internet Relay Chat)的简称。
申请加入前要先注册,注册时需要发三种信息:
用户信息USER
口令PASS 以及昵称NICK
注册完成后,客户端就可以使用JOIN 信息来加入频道
IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口
(2)僵尸网络是什么?僵尸网络通常用于干什么?

僵尸网络是攻击者出于恶意目的,通过传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络
通常用于发动分布式拒绝服务攻击(DDoS)、发送垃圾邮件、窃取隐私信息、刷点击量等
(3)蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?
用wireshark打开botnet_pcap_file.dat,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,206.196.44.172五个

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。
将数据文件放到kali,安装tcpflow,先用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,因此分析209.196.044.172.06667-172.016.134.191.01152
使用同学们的超长命令,或者用python的正则也可以处理
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

(5)哪些IP地址被用于攻击蜜罐主机?
使用statistics-IPv4 statistics-All address,统计所有IP地址,用ip.dst == 172.16.134.191筛选目的地址为蜜罐主机的包可以查看

(6)攻击者尝试了哪些安全漏洞?+(7)哪些攻击成功了?是如何成功的?
先用snort -r botnet_pcap_file -c /etc/snort/snort.conf -K asciisnort分析一下,发现绝大部分都是TCP和UDP包

然后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端口,即SYN,ACK标志为1

再用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端口

最后对每个端口逐一分析
tcp.port135 or tcp.port25筛选这两个端口,发现这两个端口的流量都是只有连接,没有数据交互,应该是只对这两个端口进行了扫描

ip.dst == 172.16.134.191 and tcp.dstport==80筛选连接蜜罐主机80端口的包,发现24.197.194.106不断地在进行攻击,应该是在用脚本攻击IIS服务器

还有210.22.204.101发送了异常长的数据包,应该是在做缓冲区溢出攻击

最后是218.25.147.83也是异常长的数据包,但看到最后发现大概是蠕虫而不是缓冲区溢出

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

问题1:虚拟机比较慢
问题1解决方案:适当调整内存大小
问题2:缺少部分软件,有些命令无法执行
问题2解决方案:更换系统再尝试

posted @ 2020-04-29 20:53  20199303吕建文  阅读(273)  评论(0编辑  收藏  举报