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

news/2024/11/8 23:28:35/文章来源:https://www.cnblogs.com/20222312zhx/p/18536110

一、恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者
(1).通过kali中的file命令查看文件格式和可运行平台,即exe文件,Win32平台
通过PEID查壳文件发现使用UPX壳

二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
(1).解析Crackme1.exe:
直接运行crackme1.exe会报错

然后按F5反编译,得到伪代码如下:

int __cdecl main(int argc, const char **argv, const char **envp)
{
void *v3; // esp

v3 = alloca(16);
__main();
if ( argc == 2 )
{
if ( !strcmp(argv[1], "I know the secret") )
{
printf("You know how to speak to programs, Mr. Reverse-Engineer\n");
return 0;
}
else
{
fprintf(&__iob[2], "Pardon? What did you say?\n");
return 2;
}
}
else
{
fprintf(&__iob[2], "I think you are missing something.\n");
return 1;
}

故,输入”I Know the secret”,得到结果

三、分析一个自制恶意代码样本rada
(1).提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息

(2)识别并说明这个二进制文件所具有的不同特性
能修改靶机注册表,能发动DDos攻击,截图,强制休眠,检查用户键盘输入

(3)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
加壳:使用UPX加壳

(4)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
木马
私自通过隐秘通道与攻击者联系,并上传下载靶机文件,并且无宿主,不依赖其他程序。另外,virustotal显示大部分杀软都检测出该恶意代码为木马。

6)给出过去已有的具有相似功能的其他工具
比如Metasploit中的msfvenom

(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
要调查二进制文件的开发作者,通常可以通过以下方式进行追踪,但这需要一定的条件和环境支持:

静态分析:

检查二进制文件的元数据和符号信息。某些编译器和工具链可能会在生成的文件中嵌入特定的标记、版本信息或路径,可能揭示开发环境的信息。
利用反编译工具(如IDA Pro、Ghidra等)分析代码,寻找开发者可能嵌入的调试信息或字符串。
动态分析:

在受控环境(如虚拟机或沙箱)中执行文件,观察其行为,包括网络连接、文件访问和注册表操作。这可能会揭示某些开发者特意编写的特征或使用的工具。
文件特征指纹:

比较文件哈希值或代码模式,检查是否与已知的恶意软件样本或公开的代码库有相似性,从而推测开发者或开发团队。
威胁情报和历史记录:

如果二进制文件与某些攻击样本类似,可以通过威胁情报数据库(如VirusTotal、MITRE ATT&CK等)进行比对,可能查到其来源或开发者的相关信息。
限制条件
文件不得经过混淆或加密,否则可能很难解析开发者信息。
需要权限使用特定分析工具或威胁情报数据库。
若文件是通过正规开发工具链生成,且没有明显的开发者信息嵌入,直接确认作者身份会非常困难。

四、取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat) 是一种早期的互联网聊天协议,它允许用户通过实时文本进行通信。IRC基于客户端-服务器架构,用户通过IRC客户端连接到IRC服务器,然后加入各种不同的频道进行群聊或进行一对一的私聊。

当IRC客户端申请加入一个IRC网络时,发送的消息是:

"NICK":这个命令用于设置客户端的昵称。例如:NICK user123 表示将客户端的昵称设置为 user123。
"USER":用于设置用户的身份信息。通常是一个四个参数的命令,格式如下:USER 。这个命令提供了关于用户的详细信息。
"PASS":如果IRC网络需要密码认证(例如对某些私有网络或受限制的服务器),客户端也会发送一个 PASS 命令来进行认证。
这两个消息(NICK 和 USER)是客户端在尝试连接到IRC网络时必须发送的标准消息。如果认证成功,客户端就可以进入IRC服务器并加入指定的频道进行聊天。

IRC通常使用的TCP端口:

端口 6660-6669:这些是IRC协议的标准端口。大多数IRC服务器会使用这几个端口之一进行通信。
端口 7000:这是IRC的另一个常用端口,通常用于加密连接(如使用SSL/TLS)。
如果一个IRC网络对安全性要求较高,可能会启用SSL或TLS加密连接,并且使用类似 6697 的端口(SSL的标准端口)。

(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet) 是一种由大量被恶意软件感染的计算机(这些计算机被称为“僵尸”)组成的网络。这些计算机通常在不被用户知情的情况下被黑客控制。僵尸网络的建立通常是通过传播木马、病毒、间谍软件等恶意程序来实现的,这些程序能够悄悄地让黑客远程控制目标计算机。

僵尸网络的功能:
DDoS攻击(分布式拒绝服务攻击):僵尸网络最常见的用途之一是发起大规模的DDoS攻击。黑客通过控制大量感染的计算机,发起流量洪水,压垮目标服务器或网络,导致其无法正常工作。

发送垃圾邮件:僵尸网络也被广泛用于发送垃圾邮件(Spam)。黑客控制的僵尸计算机会作为邮件代理,大量发送垃圾邮件,进行诈骗、广告、钓鱼攻击等。

窃取敏感信息:通过控制被感染的计算机,黑客可以远程访问用户的私人信息,包括登录凭证、银行卡信息等。这些信息通常会被用于身份盗窃或其他形式的诈骗。

点击欺诈:僵尸网络也可用于自动点击广告链接,从而给广告商造成虚假的点击量,实施广告欺诈。

传播恶意软件:僵尸网络的计算机可能会继续作为传播平台,向其他计算机或设备传播恶意软件。

在僵尸网络的控制下,这些计算机执行各种非法活动,而计算机的原始用户通常并不知情。控制这些僵尸计算机的黑客被称为“僵尸网络操控者”或“Botmaster”
(3).蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
将pacp包拖到wireshark中分析,使用规则:

可以看到与三个不同IP通信
故一共与63.241.174.144,217.199.175.10,209.196.44.172三个主机通信
(4).在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
设置过滤器为ip.addr209.196.44.172 and irc.response.commandJOIN
因为之前提到过当用户发送JOIN时表示主机加入irc网络,这样我们就过滤出请求加入了irc网络的所有包。但是由于一个包可能有多个JOIN,也有可能有主机重复加入,因此不能只看包的数量。

哪些IP地址被用于攻击蜜罐主机?
进入到统计->Ipv4 statistics->Source and Destination,然后输入以下过滤规则,然后应用

(6)攻击者尝试攻击了那些安全漏洞
思路:找出被访问次数最多的端口,那些应该就是收到攻击的端口。
利用统计功能,设置过滤器为ip.dst==172.16.134.191,然后统计其中次数较多的端口。
TCP:80,445,4899,1152,139,1077,1061,1051
UDP:65
可以发现有PSEXESVC.exe,是一种蠕虫。
(1)tcp135端口只有连接没有数据交互
(2)tcp139大多为正常连接
(3)tcp25端口只进行了连接,没有数据的交互,所以攻击者可能是对该端口进行了connect扫描。
(4)udp137是在进行NetBIOS查点

五、学习中遇到的问题和解决
在对抓包进行分析的时候,导出的数据一开始并不完全,同时信息显示不全,需要在导出时重新选取分组得到完整数据

六、实验感悟
在参与恶意代码分析的实验过程中,我深感这是一项既严密又充满挑战的工作,它不仅要求我们具备扎实的计算机技术基础,还需要极高的安全防范意识和敏锐的逻辑思维能力。通过这次实验,我进一步理解了恶意代码的运作机制和对互联网安全的威胁,也学习到了如何使用各种工具和技术进行恶意代码的辨识、分析和中和。

实验中,我们首先被教导如何在安全的沙箱环境中运行恶意程序,观察其行为表现,记录文件系统、注册表、网络活动的变化。这一步骤对于分析恶意代码的目的和传播方式至关重要。通过对比恶意程序修改前后的系统变化,我们可以推测出其可能的恶意行为,如数据窃取、广告弹出等。

随后的逆向工程部分则更为复杂和挑战性强。使用工具如IDA Pro, Ghidra等进行代码的逆向,使我们能够窥探到恶意程序的具体实现逻辑。这种深入的代码分析不仅帮助我们理解攻击者的技术手段,还能找到防御的切入点,为制定有效的防御策略提供依据。

此外,实验也让我体会到编写恶意代码的意图多种多样,并且不断进化的恶意软件技术带来了前所未有的分析难题。例如,代码混淆和加密技术的使用,大大增加了分析的复杂度,要求我们不断更新知识和工具以跟上恶意软件的更新步伐。

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

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

相关文章

点阵LED电路分析

以点阵的左上角LED为例,即 A1 LED为例,进行电路分析 9号脚接着LED的阳极,所以9号脚需是高电平,13号脚连着LED的阴极,所以13号脚需是低电平 9号脚连接着Q10的集电极,欲使9号脚为高电平,则需要Q10导通 Q10的发射极连接着+5V电压,欲使Q10导通,则基极需为低电平,即LEDC0为…

苹果手机和电脑数据互传

利用共享的文件夹 这个方法简单来说就是iPhone通过远程连接到Windows服务器,利用共享的文件夹来进行照片中转。 注意:iPhone和Windows必须要连接到同一个局域网内! ● Windows设置 第一步,获取Windows电脑的IP地址。 具体操作是先打开“Windows设置-网络和Internet-网络和共…

由一个业务需求引发的对 ASP.NET 全局变量的调研及结果

在单机模式下,使用哪种技术来存储身份状态信息比较安全可靠呢?前言 前段时间使用 ASP.NET MVC + Form Auth 做了一个单机小项目,当时对于采用什么方式来存储登录状态有些纠结,通常的做法是使用 Cookie 或者 Session,但是我想有没有更好的方式来存储登录状态呢?于是花了点…

苹果手机数据传输

利用共享的文件夹 这个方法简单来说就是iPhone通过远程连接到Windows服务器,利用共享的文件夹来进行照片中转。 注意:iPhone和Windows必须要连接到同一个局域网内! ● Windows设置 第一步,获取Windows电脑的IP地址。 具体操作是先打开“Windows设置-网络和Internet-网络和共…

c语言中返回整数值的长度

001、方法1 while循环[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 测试c程序 #include <stdio.h>int get_length(int a) {int length = 0;while(a > 0){length++;a /= 10;}return length; }int main(void) {int a;printf("a = "…

Blender 常用建模操作

常用简单介绍 挤出 快捷键:E 挤出是2个动作,生成加移动,所以右键撤销只能撤销移动内插 快捷键:I 内插仅是一个动作倒角 快捷键:Ctrl+B 滚动滚轮可以增加倒角的段数环切 快捷键:Ctrl+R 滚动滚轮可以增加倒角的段数挤出详细介绍 沿轴线挤出或者自动挤出挤出流形可以向内挤出…

Stack模块的设置

TEAM: Topological Evolution-aware Framework for Traffic Forecasting–Extended Version Motivation 为了捕捉复杂的时空动态,许多基于深度学习的方法最近被提出,并由于其学习非线性动力学[35,59]的能力,在挑战数据集上显示出了有希望的结果。这些方法通常建立在图神经网…

CCPC辽宁省赛赛后总结

2024CCPC辽宁省赛-赛后总结 ​ 写这篇的时候已经是11/8日了,过了半个多星期才开始写,我实在堕落,啊对对对。 ​ 这算是acm生涯中真正意义上的首场了,本来是奔着首银摄金的目标去的,结果拿了个铜尾,导致我们小队闹得不是很愉快,所以来写下这篇总结来避免下次犯错。ps:滚榜…

C++之endl以及它与换行符的区别

看下C++_primer上的一段话,并给予解释:1. endl 是操纵符 在 C++ 中,endl 是一种特殊的操纵符(manipulator),它的作用不仅是结束一行(相当于换行),还会刷新缓冲区。操纵符是一种可以影响输出行为的特殊值,比如 endl、setw 等。 题外话 想要了解更多关于setw的内容,可…

C++之fixed

在 C++ 中,fixed 是一个操纵符(manipulator),用于指定浮点数的显示格式。 在默认情况下,C++ 会使用科学计数法或定点(小数点)格式输出浮点数,具体取决于数值的大小和有效位数。 然而,当使用 fixed 时,它会强制所有浮点数都以定点格式显示,即以小数点后的固定位数输出…

MyBatis如何关闭一级缓存(分注解和xml两种方式)

MyBatis如何关闭一级缓存(分注解和xml两种方式)@目录问题:为什么有缓存什么场景下必须需要关闭一级缓存关闭一级缓存方法(针对使用MyBatis场景)第1种:注解形式(可指定仅仅某个Mapper关闭注解)第2种:sql动态拼接传入的随机数 问题:为什么有缓存 mybatis默认开启一级缓存 什…