20212805 2021-2022-2 《网络攻防实践》第八次(第十周)作业

一、知识点梳理与总结

1.1 恶意代码定义与分类

恶意代码的定义

  • 恶意代码是一个指令集合,可能是二进制的执行文件、脚本语言代码、寄宿在别的代码里的指令。

恶意代码的分类

  • 计算机病毒:一种代码,需要把自己嵌入到其他的程序之中进行感染,但是这个嵌入过程需要人为的干预才可以完成。可以自我复制。

  • 蠕虫:与计算机病毒类似,但是它不需要嵌入到其他的程序之中,通常会调整系统设置,让自己随系统启动而启动。一般也不需要人为的干预,会自己主动的扫描其它目标的网络服务的漏洞,然后自己进行传播。

  • 恶意移动代码:首先是移动代码的定义:一种轻量级程序,可以从远程主机下载然后在本地运行,很少需要人来操作。恶意移动代码是指那些会在本地主机来自己进行一些本地用户不希望进行的操作的代码。

  • 后门:绕开正常的安全机制,为攻击者提供便捷的访问的代码。

  • 特洛伊木马:一种将自己伪装起来的恶意代码。假装自己是无害的,来骗过用户,让用户安装自己。很形象的比喻。就像假装献给雅典娜的巨大木马。

  • 僵尸网络:攻击者为了达到自己的目的,传播一种恶意代码,来控制多台主机,形成一种攻击网络。其中用于这个用途的恶意代码被称为僵尸程序。

  • 内核套件:在用户态通过修改一些关键文件,或者在直接内核态来控制操做系统的内核,来获得root权限。为了完成这一目的而编写的恶意代码称为内核套件。


计算机病毒

  • 定义:计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。这里必须记住:计算机病毒是借助人类帮助从一台计算机传至另一台计算机,这也是其传播机制。

  • 特性:感染性(本质特性)、潜伏性、可触发性、破坏性、衍生性。

  • 感染机制:计算机病毒一般情况下会把自己寄宿在可执行文件、引导扇区和支持宏指令文件三种。在寄宿在可执行文件的时候,计算机病毒会随着可执行文件的执行而运行;寄宿在引导扇区的时候,,通过感染引导区的引导记录,病毒就可以在系统启动的时候获取控制全;寄宿在支持宏指令的文件的时候,会等待其他的程序来打开这个文件,这时候执行代码。

  • 传播机制:计算机病毒在一个系统之中被触发的时候,就会去寻找系统内其他的可以被它感染的程序,复制自己进下一个宿主内。


网络蠕虫

  • 定义:一种通过网络自主传播、自我复制的独立恶意代码。(从这里就可以看出病毒和蠕虫的区别)
  • 传播机制:主动攻击网络服务漏洞、通过网络共享目录、通过邮件传播。
组成结构:
  • 弹头:利用目标系统安全漏洞入侵目标系统。包括缓冲区溢出攻击、破坏目标系统服务中的内存结构、文件共享攻击、利用电子邮件传播、利用其它普通的错误配置。这里其实就是我们之前说的渗透攻击模块。
  • 传播引擎:通过在目标系统上执行传播引擎指令,完成蠕虫样本的传播。方式有FTP/TFTP/HTTP/SMB/直接传送/单包等。
    目标选择算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击。包括电子邮件地址、主机列表、被信任的系统、网络邻居主机等。这里就是扫描策略。
  • 有效载荷:附加的攻击代码,执行一些特殊目地的操作。包括植入后门、安装分布式拒绝服务攻击代理、组建僵尸网络、执行一个复杂计算等。

后门与木马

  • 后门定义:允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供通道。
  • 后门类型:本地特权提升、单个命令的远程执行、远程命令行解释访问器(NetCat)、远程控制GUI(VNC、BO、冰河、灰鸽子)、无端口后门(ICMP后门,基于Sniffer非混杂模式或混杂模式的后门)。
  • 自启动后门:Windows通过修改自启动文件、注册表自启动项,Linux修改inittab、rc.d/init.d文件。
  • 木马定义:看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
  • 木马的伪装技术:命名伪装、使用软件包装工具、攻击软件发布站点、代码下毒(开发者有意为之,后面的利益就不可知了)。

僵尸程序与僵尸网络

  • 僵尸程序定义:攻击者用于一对多控制目标主机的恶意代码。

  • 僵尸网络定义:攻击者传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。(注意仔细品味几种恶意程序的定义的黑体字,体会不同)

  • 僵尸网络功能结构:主体功能分为命令控制模块和传播模块,辅助功能分为信息窃取模块、主机控制模块、下载更新模块、防分析检测模块。

  • 僵尸网络类型:IRC僵尸网络(基于IRC互联网实时聊天协议构建)、HTTP僵尸网络(Web网站方式构建)、P2P僵尸网络(P2P协议构建)。


恶意代码分析

恶意代码分析技术主要包括静态分析(不执行代码的情况下进行分析)和动态分析(在受控的环境体重执行恶意代码,利用各种方法来获取想要的信息)两大类。

恶意代码静态分析技术
  • 恶意代码静态分析技术包括:反病毒扫描软件、文件格式识别、字符串提取分析、二进制结构分析、反汇编、反编译、代码结构和逻辑分析、加壳识别与代码脱壳。

    • 反病毒扫描软件:这是最简单直接的方法。用现成的软件来扫描待分析的样本,如果软件可以识别病毒,就可以知道该病毒的欸行、家族等。国内外都有着很多的相关软件。除了这些已有的软件之外,我们还可以使用ClamAV来尝试构造自己的反病毒软件。

    • 文件格式识别:当我们有了一个我们从未见过的恶意代码样本的时候,首先要知道他是什么文件格式。用file的命令就可以通过提取关键特征来识别文件类型。除此之外,还有很多恶意代码文件格式的识别工具。

    • 字符串提取分析:通过提取程序中连续的可以打印的字符所组成的字符串,也许就能获得我们所需要的关键信息,也是一种简单直接的方式。有可能会得到的信息有:代码的名字、程序的帮助和说明、会话内容、口令、库文件和函数的调用等。用string命令可以实现。当然也有相关的软件。

    • 二进制结构分析:二进制文件的恶意代码,通常会在编译和链接过程中留下来一些信息。通过工具binutils,可以查看一些遗留下来的信息。先前的string就是binutils的一个命令。objdump也是一个二进制程序分析工具。

    • 反汇编与反编译:反汇编是把二进制程序还原成汇编代码,反编译则是更进一步的还原成编程语言。一般情况下不会直接逐句逐行的读这些代码,一般会在掌握了更多的信息之后再回头对程序进行分析。

    • 代码结构与逻辑分析:在反汇编和反编译获得了二进制程序的汇编语言或者高级语言的代码之后,就可以对代码的逻辑也结构进行分析。如IDA pro之类的分析工具可以为我们提供一些辅助功能。

    • 加壳识别与代码脱壳:在静态分析的时候,会发现很多恶意代码会通过加壳来影响对手的分析,隐藏自己的各种信息。因此,我们需要对加壳的恶意代码进行识别并且进行脱壳。

  • 恶意代码动态分析技术主要的手段有:基于快照比对的方法和工具、系统动态行为监控、网络协议栈监控、沙箱、动态调试等

    • 基于快照比对的方法和工具:在恶意代码运行之前对系统的资源做一个快照。然后再恶意代码运行之后的一段时间再做一次快照,通过对比可以对恶意代码的影响进行分析。

    • 系统动态行为监控:这是动态分析中最核心的部分。在代码运行的时候对恶意代码对文件系统、运行进程列表等的动作进行实时的监控。

      • 文件行为监控软件:大多数恶意代码都会读写文件,filemon软件记录了各种文件的所有操作与操作所发生的时间,可以让我们了解恶意代码对那些文件进行了什么操作。

      • 进程行为监控软件:这类软件用于监控恶意代码对进程的激活与修改。常用的软件有process explorer、top、lsof等。

      • 注册表监控软件:Windows平台上的恶意代码还会修改和利用注册表。regmon软件能够实时地显示每个和注册表有关的行为。

      • 本地网络栈行为监控软件:很多恶意代码都有着网络行为,所以也需要对本地网络栈进行监控。类unix平台的lsof命令可以帮助我们查看到unix系统的开放的端口。win平台可以用TCPView或者Fport来查看是否新的端口。

    • 网络协议栈监控:除了从运行平台来监控自己之外,更加有效的方法是从本地网络上的另一台主机来监控。

    • 沙箱技术:沙箱技术为动态分析提供了一个很好的环境,让运行的恶意代码不能修改系统。

    • 动态调试技术:动态调试是指在某个程序运行的时候对该程序进行调试。一般来说恶意代码运行非常快,但是采用动态调试技术就可以一步一步慢慢的运行恶意代码。方便我们进行观察。

二、实践过程

实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

在WinXP Attacker中下载解压rada.exe,通过file RaDa.exe可查看RaDa.exe的文件类型为32位Windows PE可执行文件

 

 

 然后通过指令strings RaDa.exe来查看该程序可打印字符串,发现为乱码,猜测该程序经过加壳

 

 

 使用PEiD工具来查看该程序使用的加壳工具,然后采用脱壳工具脱壳

 

 

 

 

 

 再用PEiD工具来查看脱壳后的程序,可以看到编写该程序所使用的语言和平台为VB6.0

 

 

 使用监视工具process explorer对脱壳后的恶意程序进行检测,可以查看到有关作者的信息

 

 

动手实践任务二:分析Crackme程序

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

分别通过命令file crackme1.exefile crackme2.exe来粗略分析两程序的信息,可看到两文件均为windows系统下的32位可执行程序,无图形界面,仅用作控制台

 

 尝试寻找特定输入,通过随机输入发现,该程序对字符串组合有回应

 

 

 接下来用IDA打开该恶意程序进行分析,可看到除上图两句回复外,还应该有其他两个回复,并且可看到该程序使用C语言编写的

 

 

 现对crackme1.exe发送另两字符串,发现其对I know the secret返回了一个新的消息

 

 

 在此直接用IDA打开crackme2.exe,发现比crackme1.exe多了一些信息

 

 

分析实践任务一:

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

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

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

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

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

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

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

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

利用md5sum RaDa.exe得到该程序摘要值caaa6985a43225a0b3add54f44a0d4c7,然后通过file RaDa.exe识别出是32位PE文件,而且还是GUI文件,然后开始脱壳

 

 下面利用IDA pro进行分析,该恶意程序使用http连接到目标为10.10.10的主机下名为RaDa_commands的网页上,然后分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹C:/RaDa/tmp来保存其下载的文件,往下分析发现该恶意程序中可执行DDos拒绝服务攻击

 

 

 继续往下分析,发现该恶意程序对主机注册表进行了读写和删除操作

 还可发现上传、下载、截图、休眠等操作

 然后查看wireshark的监听数据,可看到受害主机向目标主机10.10.10.10发送大量数据包,但是追踪其数据流时,没有任何信息

问题解答梳理

1:md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。它是一个32位PE GUI可执行程序,同时也是一个UPX加壳文件。

2:用户上网后,该程序通过http请求连接到用户的主机,然后攻击者可以远程连接被控主机并进行一些指令操作,同时还修改了注册表使得文件具有开机自启动功能。

3:RaDa.exe被执行时,它会将自身安装到系统C盘中,并通过修改注册表的方式使得每次系统启动,启动后主要就是以下过程:
(1)从指定的web服务器请求指定的web页面。
(2)解析获得的web页面,获取其中的指令。
(3)执行解析出来的指令,主要的指令上面给出。
(4)等待一段时间后继续按照这个循环执行。

4:通过UPX加壳,来阻止反编译分析。查看网卡地址判断系统是否运行在虚拟机上,若是则隐藏作者信息

5:首先这个样本不具有传播和感染的性质,所以它不属于病毒和蠕虫。然后它也没有将自己伪装成有用的程序以欺骗用户运行,所以他也不属于木马。所以我认为它是一个后门程序或者僵尸程序。

6:Bobax,2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。还有特洛伊木马Setiri。

7:通过ida或者Process Explorer查看strings可以找到作者名字是Raul Siles & David Perze,写于2004年。

分析实践任务二:

任务:分析的数据源是用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、IRC指的是因特网中继聊天(Internet Relay Chat)。IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流。申请时需要发送口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。

  • 注意:攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,那么基于端口识别服务不再可靠,要进行基于应用协议特征进行识别(如USER/NICK)。

2、僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。僵尸网络构成了一个攻击平台,利用这个平台可以有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。这其中包括:拒绝服务攻击,发送垃圾邮件,窃取秘密,滥用资源,僵尸网络挖矿等、

3、由(1)可知IRC服务器通过6667端口,又已知蜜罐IP地址172.16.134.191,设置过滤条件

 

 

设置的过滤条件ip.src == 172.16.134.191 and tcp.dstport == 6667 and tcp.flags.syn==1

 

 

 

 

 

可找到五个IRC服务器

  • 209.126.161.29
  • 66.33.65.58
  • 63.241.174.144
  • 217.199.175.10
  • 209.196.44.172

4、

apt-get install tcpflow
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

 

 

 

 

执行如下两条问题,避免出现字符编码问题

export LC_COLLATE='C'
export LC_CTYPE='C'

利用如下指令进行搜索有多少主机连接(grep获取昵称输出,sed去除前缀,tr将空格转换为换行,tr -d删除\r,grep -v去除空行,sort -u排序并去除重复,wc -l输出行数)

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

 得到结果是3457

5、使用如下指令找出所有连接主机的IP地址(cut -d是指定字段的分隔符,uniq命令用于删除文本文件中重复出现的行),将结果输出到2.txt文件中,wc -l 2.txt显示行数

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 > 2.txt;wc -l 2.txt

 查找到165个被攻击的端口

6、使用snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii指令查看网络流分布情况

 

 

 

 可以看到大部分都是TCP包,极少部分是UDP包。
- 接下来进一步筛选出响应的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包

 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响应端口为135、139、25、445、4899、80
UDP响应端口为137

 

查看TCP的135和25端口,设定筛选条件:tcp.port == 135 || tcp.port == 25

仅有连接,没有数据交互,推测攻击者仅进行了connect扫描

接下来分析445端口:ip.dst == 172.16.134.191 and tcp.dstport == 445

 在61.111.101.78发起的请求中发现了PSEXESVC.EXE(一种Dv1dr32蠕虫),通过IRC进行通信

 

 判断是否成功:ip.dst==61.111.101.78

 

 发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,攻击成功

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

看到210.22.204.101向蜜罐发送了很多的C,可能在进行缓冲区溢出攻击

此外,24.197.194.106发起了很多次连接,这是不停地使用脚本在攻击IIS服务器的漏洞,从而获取系统权限

218.25.147.83也访问了80端口,下方信息中发现了C:\notworm,这是一个红色代码蠕虫攻击。

查看4899端口:ip.dst==172.16.134.191 and tcp.dstport==4899

 

 可以查得4899端口是一个远程控制软件radmin服务端监听端口

分析UDP的137端口,这个端口是NetBIOS相关协议,ip.dst == 172.16.134.191 and udp.port == 137

 

 可以看到这里的所有IP地址进行访问的负载都是相同的,都是KAAAAA....AA的形式,这里推测应该是在进行NetBIOS查点

7、来自61.111.101.78的PSEXESVC.EXE,即Dv1dr32蠕虫攻击成功了。是通过向对TCP445端口发送含有PSEXESVC.EXE的数据包,且将PSEXESVC.EXE地址改到系统目录下攻击成功的。攻击成功后通过利用SVCCTL漏洞获取目标主机服务。

posted @ 2022-05-06 11:18  20212805  阅读(14)  评论(0编辑  收藏  举报