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

news/2025/1/11 9:48:44/文章来源:https://www.cnblogs.com/moxst/p/18519901

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

1.实验内容

  • 恶意代码文件类型标识、脱壳与字符串提取。
  • 使用IDA Pro静态或动态分析,寻找特定输入,使其能够输出成功信息。
  • 分析恶意代码样本rada,并撰写报告。
  • 取证分析实践——Windows 2000系统被攻破并加入僵尸网络

2.实验过程

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

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

解压下载的rada压缩文件:


输入file RaDa.exe,查看该文件类型:

可以看到是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序, intel 80386 表示处理器架构。
输入命令strings RaDa.exe查看RaDa.exe中的可打印字符:

发现全是乱码,这说明软件被加壳,需要脱壳。
输入命令RaDa --authors可以查看作者信息

使用 PEiD 工具查看 RaDa.exe 的基本信息:

可以看到文件的入口点、偏移、文件类型、EP段、首字节以及加壳类型等信息(UPX壳,版本为 0.89.6 )

2.1.2使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

使用超级巡警工具对文件进行脱壳,选择rada.exe :

脱壳成功,恶意程序同目录下生成了一个脱壳以后的程序。
再次使用 strings RaDa_unpacked.exe 命令查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有意义的字符串:


再次使用PEiD工具来查看脱壳后的程序:

2.1.3使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁

使用IDA对其进行分析,结果如下:

在string窗口中,右键setup,将Unicode勾选上:

发现作者为Raul Siles & David Perez与命令行中得到的authors信息一致:

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

2.2.1

计算crackme1.exe和crackme2.exe的 md5 值以检查完整性:

使用 file 命令来分析恶意程序的信息:

可以看到两个文件是32位 windows 下 PE 文件,没有图形界面,是命令行程序。
运行crackme1.exe文件,通过输入不同的数字和字符串,试探其输入格式。观察输出,只有两种,根据输出的提示,可以判断该程序的输入为一个参数,但是不清楚输入值数据类型为字符还是数字。

利用 IDA Pro 打开crackme1.exe程序进行分析:

打开 Strings 窗口:

可以看到除了上面输出提示的两句话,还有另外两句。
在view->graphs->function calls中查看函数调用图:

可以看出验证的部分在sub_401280这里,它调用了strcmp函数和输出函数printf,应该适用于判断输入并打印提示信息。
在View->Graphs->Flow chart中查看流程图:

cmp [ebo+arg_0],2 为判断程序是否有两个参数。如在命令行输入 crackme1.exe 1 ,那么参数对应的值为 argc=2,argv={”crackme1.exe”,”1”} 。如果有两个参数,那么进行下一步判断,否则直接跳到004012B0,打印I think you are missing something.。程序用 I know the secret 对应的字符串和用户输入的口令相比较,通过比较的结果反馈口令是否正确。所以可以猜测“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”两个字符串分别是口令和输入正确口令时程序的提示信息。
在终端中按照程序中出现的明文字符串口令进行验证:

可以看到验证成功!
继续使用IDA Pro对crackme2.exe程序进行分析:

可以看到明文字符串。
再看函数调用图,发现函数还是sub_401280:

通过 cmp [ebp+arg_0],2 判断程序参数是否为两个;通过参数个数的判断后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和 crackmeplease.exe 进行判断


通过对流程图分析,发现应该现将其改名为crackmeplease.exe,然后输入口令才能得到正确结果。


可以看到验证成功!说明之前的猜想是正确的。

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

使用MD5对该恶意程序进行摘要信息分析:

使用file命令,查看该文件相关信息:

使用IDA 对RaDa_unpacked.exe进行分析:

查看Strings,可以看到作者、日期等信息


打开Process Explorer,点击运行恶意程序脱壳后的RaDa_unpacked.exe。在Process Explorer 中,查看strings进行分析:


发现其使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,然后下载上传文件,并且在靶机上创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件。同时该恶意程序中可执行DDos拒绝服务攻击。该恶意程序对主机注册表进行了读写和删除操作:该恶意程序对主机注册表进行了读写和删除操作。

还可以发现了和作者、数据库查询语句相关的信息。
在主机C盘目录下,看到生成的文件:


(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
摘要为caaa6985a43225a0b3add54f44a0d4c7。
文件采用了PE格式,是一个图形用户界面程序,为Intel 80386处理器架构编译的程序。
(2)找出并解释这个二进制文件的目的;
HTTP请求 10.10.10.10\RaDa\RaDa_commands.html,将文件 RaDa.exe 复制到了 C:\RaDa\bin 目录下,对主机实行DDos拒绝服务攻击 。
(3)识别并说明这个二进制文件所具有的不同特性;
该文件运行会对注册表进行读写和删除操作。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用了UPX加壳技术,不进行脱壳会显示乱码。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
本恶意程序为后门程序,使用DDoS攻击使主机瘫痪,该程序执行需要通过攻击者远程发送指令且该程序没有自我复制和传播,也没有将伪装成其他程序。
(6)给出过去已有的具有相似功能的其他工具;
实验二的backdoor获取主机的shell
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。使用IDA、ProcessExplorer。(脱壳后)
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。

2.4取证分析实践

Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆.并回答问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC,即Internet Relay Chat,是一种用于实时文本交流的协议,广泛用于进行群组聊天和私聊。当IRC客户端申请加入一个IRC网络时,通常会发送一个NICK消息来指定它希望使用的昵称,以及一个USER消息来提供用户的基本信息。IRC一般使用TCP端口6667。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由大量被恶意软件感染的计算机组成的网络,这些计算机在未被用户察觉的情况下被远程攻击者控制。僵尸网络通常用于发动分布式拒绝服务(DDoS)攻击、发送垃圾邮件、进行数据盗窃或大规模的点击欺诈等恶意活动。攻击者通过控制大量的“僵尸计算机”来协同执行这些任务,从而增加攻击的效率和效果。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
由于IRC协议使用TCP连接,要找出与蜜罐主机通讯的IRC主机,可以利用建立TCP连接的三次握手过程进行分析。IRC协议最常用的端口为6667,在WireShark中对日志文件进行分析,于是可以利用如下表达式过滤出蜜罐主机向6667端口发送的TCP包:
ip.src == 172.16.134.191 && tcp.dstport == 6667

利用此表达式进行IP Address统计,可以看到通信的IRC服务器,如下:

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
使用命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667分流得到两个分流后的数据文件。172.016.134.191.01152-209.196.044.172和209.196.044.172.06667-172.016.134.191和一份报告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查看多少不同的主机访问了以209.196.44.172为服务器的僵尸网络:

(5)哪些IP地址被用于攻击蜜罐主机?
查找端口并输出到20222424.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 >20222424.txt; wc -l 20222424.txt,结果显示共有148个端口被攻击了:


使用命令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 > 20222424.txt;wc -l 20222424.txt,将连接IP地址输出到2.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筛选出蜜罐主机相应的TCP端口:

筛选这些端口进行分析:

  • 135端口:

    只是TCP三次握手建立通信,没有数据传输。
  • 139端口:

    推断进行了SMB查点。
  • 25端口:

    推断进行了端口扫描。
    445端口:

    主机61.111.101.78向蜜罐发送了PSEXESVC.EXE,这是一种通过命令行环境和目标机器进行连接进而控制目标机器的程序,并且不需要通过RDP远程桌面协议进行图形化控制,所以很难被发现。
    4899端口:

    4899端口是Radmin的默认端口,具有远程控制功能。
    80端口:

    端口有一长串“A”字符的通信,应该是用了缓冲区溢出攻击,使之获取cmd的权限。

    发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,可能正在输入什么命令获得蜜罐的机密消息。
    (7)那些攻击成功了?是如何成功的?
  • 445端口通过可执行文件PSEXESVC.EXE对系统注入了蠕虫病毒并成功获取了远程调用。
  • 80端口通过缓冲区溢出攻击使用了cmd.exe。
  • 4899端口使用Radmin远程控制。

3.问题及解决方案

  • 问题1:kali虚机没有tcpflow
  • 问题1解决方案:
  • 问题2:在ProcessExplorer中未能找到RaDa_unpacked.exe
  • 问题2解决方案:在运行RaDa_unpacked.exe后会有弹窗提示,不能点击确定或者关闭弹窗。

4.学习感悟、思考等

在这次实验中,我对恶意代码分析技术有了进一步的学习,加深了对恶意程序工作原理和常见特征的理解,进一步提高了识别和分析这些威胁的能力。使用 IDA Pro 进行静态和动态分析让我掌握了如何使用分析工具深入剖析可执行文件的内部结构,理解程序的逻辑和潜在漏洞。我意识到了取证分析在安全事件响应中的关键作用。我学习到如何使用取证工具来提取和分析系统中的重要数据,从而定位攻击者行为并维护计算环境的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猿人学web端爬虫攻防大赛赛题第19题——乌拉乌拉乌拉

题目网址:https://match.yuanrenxue.cn/match/19 解题步骤看触发的数据包。有这么好的事情,没有加密的参数,url非常简单,直接写代码访问。 import requestsurl = "https://match.yuanrenxue.cn/api/match/19?page=1" headers = {Host: match.yuanrenxue.cn, Con…

Visual Studio 2022安装水晶报表(Crystal Reports)

这些天,为程序呈现报表。当想添加Crystal Report时,发现Visual Studio 2022无法添加报表。只有重新下载啦。去这里https://www.tektutorialshub.com/crystal-reports/download-crystal-reports-for-visual-studio-2022/下载上面图片,标志1,即是安装至vs2022。 而标志2,是运…

整理几个国内常用的个人创作者知识付费平台

个人创作者的作品如何实现销售?如何解决收款问题?又该如何提升曝光率?如何让个人创作的作品真正发挥其价值?无论是文件、文档、软件、源码、绘画、动漫、视频、音频、乐谱、小说、图集,创作者们都需要一个便捷的平台来促进与用户之间的交易和联系。因此,知识付费平台应运…

Error infos:DedeCms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错!

检查数据库配置使用FTP工具打开htdocs/data/common.inc.php文件。 查找并记录cfg_dbpwd的值(数据库密码)。验证数据库密码登录云虚拟主机控制台,进入“数据库信息”页面。 单击数据库名称右侧的“管理”按钮,输入记录的密码进行验证。重置密码(如果需要)如果密码错误,点…

访问云盘

www.cnblogs.com/delphixx

上传网站文件至云虚拟主机后提示文件大小为0 KB

使用FileZilla工具成功连接云虚拟主机后,网站文件上传到主机站点时,提示传输的文件大小为0 KB。具体错误信息显示已传输0个文件且文件大小为0字节,表示传输的文件大小为0 KB。 问题原因 该问题是由于云虚拟主机空间已占满导致的。当云虚拟主机的空间已满时,无法成功上传新的…

一文读懂数据血缘分析

01什么是数据血缘分析? 数据血缘为数据全生命周期过程中的数据关系,包括数据特征的变化,即数据的来龙去脉。主要内容包括数据的来源、数据的加工方式、映射关系以及数据的流出和消费。数据血缘分析就是针对数据分析中的血缘关系做分析,主要包含数据来源分析、数据血缘影响分…

公司网站用户名密码修改?

登录账户打开公司网站,进入登录页面。 输入当前的用户名和密码,点击登录。进入账户设置登录后,找到并点击账户设置或个人资料选项,通常位于页面顶部的用户头像或用户名旁边。选择修改用户名/密码在账户设置页面中,找到“修改用户名”或“修改密码”的选项。输入新信息修改…

网站打不开怎么办

当遇到网站无法打开的情况时,可以尝试以下几个步骤来排查和解决问题:检查网络连接:确认设备是否已成功连接到互联网。 尝试访问其他网站,看是否只有特定网站无法访问。清除浏览器缓存和Cookies:有时候网站加载不正常是因为浏览器缓存或Cookies的问题。 清除后重新尝试访问…

PbootCMS登录请求发生错误,检查系统会话文件存储目录是否具有写入权限

确定会话文件存储目录PbootCMS默认的会话文件存储目录通常是data/session。检查目录是否存在通过FTP或服务器管理工具,导航到PbootCMS的根目录。 确认data/session目录是否存在。如果不存在,可以手动创建该目录。检查目录权限使用FTP或服务器管理工具检查data/session目录的权…

在箭头函数内,想执行2个行为,但第2个行为却略过

如下示例代码(Javascript):第1个行为提示给用户,当用户点击提示之后,页面重新定向当前页面了,那自然的,第2个行为自然略过了。解决办法,就是使用setTimeout写个超时器,过多少秒之后,自动 执行第2个行为。.then(response => {if (response.data.Status) {alert(&quo…

帝国CMS后台编辑器修改让图片固定宽度高度自适应

找到 fckeditor\editor\dialog\fck_image\fck_image.js 文件。 修改以下代码:GetE(txtWidth).value = 850; GetE(txtHeight).value = 850 * oImageOriginal.height / oImageOriginal.width;850 为默认宽度,可根据需要调整。扫码添加技术【解决问题】专注中小企业网站建设、网…