20222426 2024-2025-1 《网络与系统攻防技术》实验四实验报告

20222426 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1.实验内容

1.1恶意代码概念:
恶意代码是指指令集合,包括二进制执行文件、脚本语言代码等,目的是技术炫耀、远程控制、窃取信息、盗用资源等。
常见类型:计算机病毒、蠕虫、特洛伊木马、逻辑炸弹、系统后门、Rootkit、僵尸程序等。
命名规则:恶意代码前缀表示种类(如Trojan表示木马),名称代表家族特征,后缀表示变种。

1.2恶意代码发展历史:
早期案例:1983年Fred Cohen定义计算机病毒,1986年第一例PC病毒Brain出现。
著名事件:1988年Morris蠕虫大战,1998年CIH病毒爆发,2001年“红色代码”蠕虫,2003年“SQL Slammer”蠕虫。
国内情况:1989年国内首例病毒攻击事件,90年代末新世纪初本土化恶意代码流行,如CIH病毒、冰河、灰鸽子等。

1.3恶意代码常见种类:
计算机病毒:能自我复制,通过感染其他程序传播,如CIH病毒。
网络蠕虫:主动传播,通过网络漏洞或邮件等传播,如“红色代码”蠕虫。
特洛伊木马:伪装成有用程序,实际包含恶意功能,如木马后门Setiri。
后门:允许攻击者绕过安全控制,如Cd00r和SAdoor无端口后门。
僵尸程序与僵尸网络:攻击者控制大量主机,通过一对多命令与控制信道组成网络,用于DDoS攻击等。
Rootkit:隐藏性恶意代码,修改操作系统软件以隐藏攻击者访问,如Linux RootKit和Win32平台的FakeGINA。

1.4恶意代码分析技术:
静态分析:使用反病毒软件扫描、VisualTotal在线扫描等,分析文件格式、字符串、函数名和调用地址等。
动态分析:通过行为监视、网络控制等方法,观察恶意代码运行情况,如使用RegSnap、Perfect Uninstall进行快照对比,或使用Process Explorer、Filemon等工具监控行为。
反编译与逆向工程:将二进制代码转换为高级编程语言,分析程序结构和逻辑,如使用IDA Pro进行反汇编,使用JAD进行Java反编译。

1.5恶意代码混淆机制与加壳:
混淆机制:包括加密、多态、花指令等技术,以逃避检测。
加壳:使用压缩壳、加密壳等减小程序大小,保护版权,加大破解难度,如UPX、PEPack等。
脱壳:使用超级巡警脱壳器等工具,寻找程序入口点,dump出程序,修复PE文件。

1.6恶意代码防御与应对:
防御措施:保持系统更新,使用反病毒软件,限制网络访问等。
应对策略:发现恶意代码后,立即隔离并清除,分析攻击来源和方式,加强系统安全防护。

2.实验过程

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

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

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;

将RaDa.exe放在kali系统里面。


kali通过file 命令查看文件类型,这是微软 Windows平台、英特尔80386处理器的一个32位PE文件,并且是GUI文件。
kali通过strings命令,发现脱壳前有很多乱码。

下载peid.rar,在win11中解压,打开PEID.exe。

在PEID.exe查看RaDa.exe,可以查看加壳方式为UPX。
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;

下载超级巡警脱壳机之后,脱壳处理成功,生成RaDa_unpacked.exe。

将生成的文件放在kali里面。

对脱壳后的文件进行strings命令查看。


可以看到一些字段明确的内容,但并未发现作者名字。
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

下载IDA,找到作者和时间。IDA Pro(Interactive Disassembler Professional),即交互式反汇编器专业版,是Hex-Rays公司出品的一款交互式反汇编工具。它可以将二进制文件转换为可读的汇编代码,帮助研究人员分析和理解程序的内部结构。IDA Pro支持多种处理器架构和指令集,包括Intel x86、x64、MIPS、PowerPC、ARM等,是逆向工程领域的重要工具。

点击Strings,经过查找可以发现作者的名字和日期,即Raul siles && David Perez。

二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

首先执行crackme1.exe,对参数个数进行猜测。猜测程序需要1个参数。

使用IDA Pro Free打开crackme1.exe,点击Strings查看。

查看函数结构。可以看到与printf直接相关的为sub_401280函数。

如图可以看到,sub_401280首先判断参数个数,
若不是一个则输出"I think you are missing something.",
若为一个参数且参数不为"I know the secret"则输出"Pardon?What did you say?",
若为一个参数且参数为"I know the secret",则输出"You know how to speak to programs,Mr.Reverse-Engineer"。

再次运行程序,成功输出目标结果。

首先执行crackme2.exe,对参数个数进行猜测。猜测程序需要2个参数。

使用IDA Pro Free打开crackme2.exe,点击Strings查看。

查看函数结构。可以看到与printf直接相关的为sub_401280函数。

找到sub_401280的流程图,进行分析。
如果输入参数个数不等于2,打印"I think you are missing something.",
如果第一个输入参数不等于crackmeplease.exe,会打印"I have an identity problem.",
第二个输入参数如果不等于"I know the secret",则会打印"Pardon? What did you say?"。
成功则输出“We have a little secret:Chocolate”。

先将crackme2.exe复制为crackmeplease.exe。

结果不正确,一直找不到问题,可能和Windows系统里面严格的文件权限有关。

将crackme2.exe和crackmeplease.exe复制到System32文件夹下,赋予更高权限。

运行crackmeplease.exe输入参数"I know the secret",即可输出成功信息。

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

得到文件的MD5摘要值。

打开RaDa_unpacked.exe,但是在process explorer中没有找到有效信息,可能被Windows defender杀死,于是在虚拟机的Windows sever 2016系统进行实验。

可以看到该程序有以下行为:
(1)使用http连接到10.10.10.10主机的一个叫做RaDa_commands.html的网页上,进行一些上传和下载操作,并在受害者C盘中创建文件夹“C:/RaDa/tmp”。
(2)将文件rada.exe复制到C:\RaDa\bin\路径下,并修改注册表设置为开机自启动。
(3)该恶意程序中可执行DDos拒绝服务攻击
(4)对主机的注册表进行了读写和删除操作。

还可以看到一些get、put、screenshot截屏、sleep休眠等指令,以及作者信息与编写年份。由这些指令功能可以推测这是个后门程序,可以远程控制受害者电脑。

打开IDA,点击Strings,找到authors双击进行分析。



点击sub_40AAA0查看流程图,进一步判断函数功能,可以看到这个函数进行网卡配置信息的查询。
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5摘要值:caaa6985a43225a0b3add54f44a0d4c7。基本信息:Windows平台、英特尔80386处理器的一个32位PE文件,并且是GUI文件。
(2)找出并解释这个二进制文件的目的;
后门程序。可以进行http请求,使攻击者远程连接被控主机并进行一些指令操作。
(3)识别并说明这个二进制文件所具有的不同特性;
1将请求连接 http://10.10.10.10/ 网页,获得来自攻击者的指令。
2会在主机C盘自动创建文件夹,修改注册表,添加自启动项。
3会发起DDoS Smurf攻击。
4可执行put、get、screenshot、sleep等命令。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
1使用UPX进行加壳处理。
2查看网卡地址判断系统是否运行在虚拟机上,若是则隐藏作者信息。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
该恶意代码没有传播性、伪装性、欺骗性,没有隐藏恶意目标,所以不是病毒、木马、蠕虫。此程序可以获得控制权限,是后门程序。
(6)给出过去已有的具有相似功能的其他工具;
用msfvenom生成过的后门文件与该程序的功能类似。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,作者是Raul Siles&&David Perez。在Windows下执行命令Rada_unpacked.exe,输入--authors,即可查看。通过IDA或者Process Explorer查看strings也可以查看作者是Raul Siles&&David Perez。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.基于特征码的方法
基于特征码的方法是最传统的恶意软件检测方法。它依赖于已知恶意软件样本的特征码(通常是恶意软件中的一段独特代码或字符串),将这些特征码存储在特征码库中。当扫描目标文件时,检测工具会将文件中的代码与特征码库中的特征码进行比对,如果匹配成功,则判定为目标文件为恶意软件。
2. 静态分析方法
静态分析方法是在不执行恶意软件的情况下,通过对其代码进行静态分析来检测恶意行为。这包括分析恶意软件的文件格式、字符串、函数调用、控制流图等。
具体工具和技术:
使用VisualTotal等在线恶意代码扫描引擎。
使用PEID、File Analyzer等工具确定恶意代码的目标平台和文件类型。
使用IDA Pro、Ollydbg等工具进行反汇编和反编译,分析恶意软件的内部结构和逻辑。
3. 动态分析方法
动态分析方法是在受控环境中执行恶意软件,通过监控其行为和运行结果来检测恶意行为。这包括监控恶意软件的文件操作、进程操作、注册表操作、网络行为等。
具体工具和技术:
使用Filemon、Process Explorer等工具监控文件系统和进程行为。
使用Regmon监控注册表行为。
使用nmap、tcpdump等工具监控网络行为。
使用沙盒技术(如Norman Sandbox、CWSandbox等)在隔离环境中执行恶意软件。
4. 基于行为的方法
基于行为的方法是通过分析恶意软件的行为模式来检测恶意行为。这包括分析恶意软件的文件访问模式、进程创建模式、网络通信模式等。
具体实现:
使用行为监视工具(如MwSniffer、Sebek等)监控恶意软件的行为。
建立行为模式库,将已知的恶意软件行为模式存储在库中。
当检测到新的恶意软件时,将其行为与行为模式库中的模式进行比对,如果匹配成功,则判定为恶意软件。
5. 基于机器学习和人工智能的方法
基于机器学习和人工智能的方法是近年来发展起来的恶意软件检测方法。它通过分析大量恶意软件和良性软件的样本数据,训练机器学习模型来识别恶意软件的特征和行为模式。
具体实现:
收集大量的恶意软件和良性软件样本数据。
对样本数据进行预处理和特征提取。
使用机器学习算法(如支持向量机、神经网络、决策树等)训练模型。
使用训练好的模型对新的软件进行检测,判断其是否为恶意软件。

四、取证分析实践
Windows 2000系统被攻破并加入僵尸网络

问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

在wireshark中打开botnet_pcap_file.dat文件。
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC的特点是通过服务器中继与其他连接到这一服务器上的用户交流。注册时需要发送的消息有三种,分别是:口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加入频道,格式如下:JOIN 。
IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络,通常被黑客用来发起大规模的网络攻击,如DDoS、海量垃圾邮件等。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

打开wireshark对包进行分析,指令ip.src == 172.16.134.191 && tcp.dstport == 6667。
可以得知IRC服务器的IP地址分别为
209.126.161.29
66.33.65.58
209.196.44.172
63.241.174.144
217.199.175.10
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

使用apt-get install tcpflow命令下载tcpflow。

使用命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667,生成新的三个文件。

查看report.xml,找到ip,端口,通信时间等信息。

避免出现字符编码问题,导致计数不准确。

得到结果是3457。
(5)哪些IP地址被用于攻击蜜罐主机?

使用以上命令找出所有连接主机的IP地址,将结果输出到2.txt文件中,wc -l 2.txt显示行数。


可以看到生成的2.txt文件,所有可能连接到主机的IP地址有165个。
(6)攻击者尝试攻击了那些安全漏洞?

使用wireshark的“统计-协议分级”,查看网络流分布情况,其中186个是UDP协议,54350个是TCP协议。

使用
·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
·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
可以看到TCP响应端口为135、139、25、445、4899、80,
UDP响应端口为137。

查看TCP的135端口,筛选条件如图,测试了135端口的开放情况

查看TCP的139端口,筛选条件如图,大部分是普通连接。

查看TCP的25端口,筛选条件如图,发现只是进行连接,没有数据交换。


在监控TCP的445端口时,根据设定的筛选条件,发现了一个名为PSEXESVC.EXE的进程。经过资料查询,这是一种名为Dv1dr32的蠕虫病毒。该蠕虫病毒的存在表明正在进行蠕虫攻击。同时,返回的信息中包含“\PIPE\ntsvcs”,这是一个远程命名管道的调用,通常用于Windows系统的远程过程调用(RPC)。由此,可以推断出攻击者已经成功获得了系统权限,攻击已经得手。

在监控TCP的4899端口时,根据预设的条件进行了筛选。值得注意的是,4899端口通常是远程控制软件Radmin服务端所监听的端口,而这一端口也常被黑客利用来控制被感染的计算机。


在监控TCP的80端口时,根据设定的筛选条件进行了检查。在监控记录中,发现了一个异常的通信行为:来自IP地址210.22.204.101的设备向蜜罐发送了一连串的字符'C'。这种异常的、连续发送大量相同字符的行为,很可能是攻击者在进行缓冲区溢出攻击的尝试。

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

如图,经过查询可以了解到它是一个红色代码蠕虫攻击。

在监控UDP的137端口时,根据设定的筛选条件进行了检查。137端口主要用于在局域网(LAN)环境中提供NetBIOS名称服务,它允许计算机查询网络上其他计算机的名字或IP地址。一般来说,当计算机安装了NetBIOS协议后,该端口会自动开放。因此,任何对这个端口的访问都可以被视为NetBIOS查点操作,即查询网络上其他计算机的信息。
(7)那些攻击成功了?是如何成功的?
来自IP地址61.111.101.78的攻击者成功利用Dv1dr32蠕虫进行了攻击。该蠕虫通过向目标主机的TCP 445端口发送包含恶意代码的数据包,并将名为PSEXESVC.EXE的蠕虫文件复制到目标系统的目录下,从而实现了攻击的成功。一旦PSEXESVC.EXE被执行,攻击者便利用SVCCTL(服务控制管理器)的漏洞来获取对目标主机的服务控制权。

3.问题及解决方案

  • 问题1:snort在kali里面安装不成功。
  • 问题1解决方案:
    编辑镜像源文件:使用vim打开/etc/apt/sources.list文件。输入以下命令:
    sudo vim /etc/apt/sources.list
    注释或删除原有源:在打开的sources.list文件中,找到原有的kali镜像源,可以在其前面加上#号来注释掉,或者直接删除这些行。
    添加阿里云源:在文件的末尾添加阿里云的kali镜像源。
    deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
    deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
    保存并退出:在vim编辑器中,按Esc键退出编辑模式,然后输入:wq并按回车键保存并退出。
    更新镜像源和系统:在终端中输入以下命令来更新镜像源和系统:
    sudo apt update && sudo apt upgrade
    尝试重新安装snort:在更新了镜像源之后,再次尝试安装snort,即可成功。
  • 问题2:IDA的使用出现问题。
  • 问题2解决方案:刚开始下载的IDA软件不能正常使用,经过请教同学,更换了IDA安装包,即https://out7.hex-rays.com/files/idafree84_windows.exe,安装之后就可以正常使用IDA。

4.学习感悟、思考等

在本次实验中,相较于之前的实验,对Kali系统的使用频率有所减少。在Windows环境中,发现多次运行RaDa.exe文件会立即被查杀,即便偶尔成功运行,也难以在Process Explorer中捕捉到有用的信息。为此,一个更为有效的策略是准备一个版本稍低的Windows系统来运行这些相关文件。通过这次实验,我对恶意代码的结构和功能有了更深入的理解,这不仅增强了实践能力,也加深了对课堂理论知识的掌握。

参考资料

posted on 2024-11-03 13:03  20222426魏宏宇  阅读(33)  评论(0编辑  收藏  举报