20232810 2023-2024-2 《网络攻防实践》实验八

devtools/2024/9/19 21:41:27/ 标签: python

一、实践内容

1.1 恶意代码

1.1.1 简介

定义:恶意代码(Malware,或Malicious Code)指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。
指令集合:二进制执行文件、脚本语言代码、宏代码、寄生在文件或者启动扇区的指令流。
目的:远程控制被攻击主机、满足施跳板攻击或进一步传播恶意代码、窃取私人信息或机密信息、窃取计算存储带宽资源、拒绝服务等。
类型:不感染的依附性恶意代码(特洛伊木马、逻辑炸弹)、不感染的独立性恶意代码(点滴器、繁殖器)、可感染的依附性恶意代码(病毒)、可感染的独立性恶意代码(蠕虫)

1.1.2 计算机病毒

定义:计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
特性:感染性(本质特性)、潜伏性、可触发性、破坏性、衍生性。
感染及引导机制:
(1)感染可执行文件(最为普遍的方式):前缀感染机制(病毒将自身复制到宿主程序的始端)、后缀感染机制(病毒将自身复制到宿主程序的末端)、插入感染机制(病毒在感染宿主程序时,病毒代码放在宿主程序的中间)。
(2)感染引导扇区:通过BIOS定位磁盘的主引导区,运行存储的主引导记录,接着从分区表中找到第一个活动分区,读取并执行这个活动分区的分区引导记录,而分区引导记录负责装载操作系统。
(3)感染数据文件(支持宏的数据文件):将自身以宏指令的方式复制到数据文件中,当被感染的数据文件被应用程序打开时,将自动执行宏病毒体,完成病毒的引导。

1.1.3 网络蠕虫

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

1.2.4 静态分析

定义:通过在受控环境中执行目标代码,以获取目标代码的行为及运行结果。
方法列表:
(1)动态分析中的监视与控制:行为监视即一系列监控软件来控制和观察恶意代码的运行情况。网络控制即与业务网络和互联网保持物理隔离。
(2)快照比对:分为四步:对“干净”资源列表做快照、运行恶意代码、对恶意代码运行后的“脏”资源列表做快照、对比“干净”和“脏”快照,获取恶意代码行为结果。
(3)动态行为监控:包括Notification机制(Win32/Linux系统本身提供的行为通知机制)和API Hooking技术(对系统调用或API调用进行劫持,监控行为)。
(4)网络监控:主要监控四个方面,包括恶意代码开放的本地端口、恶意代码发起的网络连接、控制恶意代码网络流和恶意代码流行攻击方式-ARP欺骗。
(5)沙盒:沙盒技术用于安全运行程序的安全环境,经常被用于执行和分析非可信的代码。
(6)动态跟踪调试:在程序的执行过程中进行二进制调试(Debugging)。

二、实践过程

2.1 动手实践任务一

(1)解压下载的压缩文件,将RaDa放入虚拟机WinXP的桌面,同时打开终端,先 cd 桌面 进入桌面后输入 file RaDa.exe,查看该文件类型,这是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。
在这里插入图片描述
(2)使用PEiD工具查看文件加壳类型。加壳的目的是为了增加逆向难度。可以看到这个是一个版本为0.89.6的UPX壳(压缩壳)。
在这里插入图片描述
(3)输入strings RaDa.exe,查看 RaDa.exe中可打印字符串,发现全是乱码,这说明被加壳了
在这里插入图片描述
(4)使用超级巡警进行脱壳,选择相应的路径,支持脱壳。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5)查看桌面,可以看到这个文件。
在这里插入图片描述
(6)再用 strings 查看脱壳后的RaDa_unpacked.exe,发现了脱壳后的恶意程序的可打印字符串。

在这里插入图片描述
(7)这时候用 IDA Pro Free 打开这个文件。
在这里插入图片描述

在这里插入图片描述
(8)查看详细信息,可以找到作者为DataRescue sa/nv,邮箱为ida@datarescue.com
在这里插入图片描述

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

(1)首先检查两个文件的完整性,计算其 md5 值。
在这里插入图片描述
(2)使用file命令查看其文件类型,可以看到这两个文件都是32位windows下PE文件。
在这里插入图片描述
(3)对crackme1.exe进行分析
在这里插入图片描述
(4)接下来利用IDA Pro打开这个程序分析,打开通过Strings窗口可以查看该程序中出现的字符串。通过Strings窗口可以查看到该程序中出现的明文字符串,可以看到前面的两种输出信息,“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。由此我们可以猜测,前者就是口令,后者是输入口令正确时程序的输出信息。
在这里插入图片描述
接下来看函数调用图(Function Call)可以发现:关键的部分在sub_401280这里,程序是使用strcmp函数来输入的,然后利用printfprint函数输出。
在这里插入图片描述
下面看sub_401280流程图,看到 cmp [ebp+arg_0],2,其用来判断程序是否有两个参数。
在这里插入图片描述
继续分析,可以看到其他几条口令。
在这里插入图片描述
猜测正确的口令应该是"I know the secret",输入命令运行改口令,可以得到这样一条回复"You know how to speak to programs,Mr.Reverse-Engineer"。成功。
在这里插入图片描述
(5)程序crackme2.exe的分析过程与之类似,先打开Function call(函数调用图),发现关键的部分在sub_401280这里。
在这里插入图片描述
在这里插入图片描述
输入 copy crackme2.exe crackmeplease.exe 将程序复制并命名为crackmeplease.exe,输入crackmeplease.exe “I know the secret”,得到的反馈信息为We have a little secret: Chocolate.成功。
在这里插入图片描述

2.3 分析实践任务一:分析一个自制恶意代码样本rada

(1)查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要。利用file RaDa.exe识别出这是32位GUI文件
在这里插入图片描述
(2)接下来打开监听工具process explorer对RaDa.exe进行检测,如图发现该程序用http连接到目标为10.10.10.10的主机下名为RaDa——commands的网页上,创建文件夹C:\RaDa\tmp保存下载文件,进行DDOS拒绝服务攻击,将RaDa.exe复制到C:\RaDa\bin。该程序还依次读、写和删除注册表,打开注册表查看发现没有信息,则表示已删除。接下来执行exe(执行指定命令)、put(将宿主主机中的指定文件上传到服务器)、get(将服务器中的指定文件下载到宿主主机中)、screenshot(截取宿主主机的屏幕并保存到tmp文件夹)、sleep(停止活动一段时间)。
在这里插入图片描述
(3)进入Strings对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode
在这里插入图片描述
(4)在Strings里查看参数,可以看到作者信息。
在这里插入图片描述
(5)在strings中点击IP地址: http://10.10.10.10/RaDa,定位到相应位置后,由上述分析,用http连接到目标为10.10.10.10的主机下名为RaDa——commands.html,对应的函数为sub_404FB0,点击进入此函数,得到汇编代码如图,这个字符串被拷贝到dword_40C030变量中。
在这里插入图片描述
在这里插入图片描述
(6)回答问题

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
答:文件的摘要是caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件。
2、找出并解释这个二进制文件的目的;
答:这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统,并且只要用户上网,就可以得到到攻击者的攻击指令。
3、识别并说明这个二进制文件所具有的不同特性;
答:该程序运行的时候建立远程连接并修改注册表
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
答:UPX加壳技术
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
答:应该属于病毒程序
6、给出过去已有的具有相似功能的其他工具;
答:木马Bobax。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
作者为Raul siles 和 David Perze。使用strings命令能查看

2.4 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat)是一种在线聊天协议,它允许用户通过网络参与实时的文字交流。用户可以在IRC服务器上创建和加入频道(类似于聊天室),并与世界各地的人进行交流。
当一个IRC客户端申请加入一个IRC网络时,它通常会发送几个关键的命令消息来建立连接和注册。首先,客户端会发送NICK命令来设置用户的昵称,然后使用USER命令来提供用户的身份认证信息,包括用户名、主机名、服务器名和真实姓名(或其它信息)。这些是建立初始连接和进行用户注册所需的基本命令。
IRC通常使用TCP端口6667作为默认的通信端口。除此之外,还可能使用6660到6669、7000等端口。有些服务器还支持SSL加密连接,通常使用6697端口。这些端口使得IRC客户端能够与服务器建立稳定的连接。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由大量互联网连接的设备组成的网络,这些设备被黑客或恶意软件控制,以执行一系列自动化的任务。这些设备通常被称为“僵尸”或“机器人”,因为它们在不知情的设备主人的控制之外被远程控制。
僵尸网络通常用于以下几种目的:

  1. 分布式拒绝服务攻击(DDoS):利用大量的设备同时向特定的服务器或网络发送大量请求,导致目标系统超负荷,无法处理正常的流量,从而中断服务。
  2. 发送垃圾邮件:利用控制的设备发送大量垃圾邮件或进行垃圾邮件活动,因为使用多个源发送可以增加其分布范围并更难被拦截。
  3. 密码破解:使用僵尸网络中的计算能力来破解密码或执行其他需要大量计算资源的安全攻击。
  4. 信息窃取:利用被感染的设备来收集敏感信息,如信用卡号码、个人身份信息和企业数据。
  5. 点击欺诈:自动化点击网络广告或搜索引擎结果,以生成虚假的点击量,从而欺诈广告收入。
  6. 加密货币挖矿:使用僵尸网络中的设备资源来挖掘比特币等加密货币。
    僵尸网络由于其能够动员的庞大资源和跨越国界的特性,成为了网络犯罪和网络战的一个重要工具。对于个人和组织来说,确保其设备的安全,防止成为僵尸网络的一部分,是非常重要的。
    (3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
    首先通过Wireshark打开数据文件botnet_pcap_file.dat,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667,可以找到所有与蜜罐主机进行通信的五个 IRC 服务器:分别为 209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172在这里插入图片描述
    (4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
    计算出的结果有3461个
    在这里插入图片描述
    (5)哪些IP地址被用于攻击蜜罐主机?
    在这里插入图片描述
    (6)攻击者尝试了哪些安全漏洞?哪些攻击成功了?是如何成功的?
    有135、139、25、445、4899、80。用wireshark打开文件botnet.pcap,逐个筛选TCP端口。
    135:探测;25:扫描;139:SMB查点;80:缓冲区溢出;1340:红色代码蠕虫等。

三、学习中遇到的问题及解决

开始无法将RaDa拖拽到虚拟机里面,后来采用同学的建议,将其存到U盘中,然后用虚拟机连接上U盘,才成功复制到虚拟机里。

四、学习感想和体会

随着实验内容的加深,除却对工具的学习外,更多的感受到底层编程语言及其逻辑、协议设计及其逻辑的要求进一步加深,要学的东西有很多,还是得埋头打基础。

五、参考资料

https://www.cnblogs.com/h767424060/p/16244282.html
https://www.cnblogs.com/ql5199/p/16216445.html
https://www.cnblogs.com/psalm46/p/16228109.html


http://www.ppmy.cn/devtools/37952.html

相关文章

【快速入门】数据库的增删改查与结构讲解

文章的操作都是基于小皮php study的MySQL5.7.26进行演示 what 数据库是能长期存储在计算机内,有组织的,可共享的大量数据的集合。数据库中的数据按照一定的数据模型存储,具有较小的冗余性,较高的独立性和易扩展性,并为…

工业级路由器的穿透力是不是更强(原创科普)

今天我想和大家聊聊工业级路由器的一个重要特性——穿透力。作为一名从事工业网络通信的工程师,我发现很多用户在选择工业级路由器时,都会问到一个问题:"工业级路由器的穿透力是不是更强?"下面就让我来为大家解答这个疑问。当然如果有通信产品需要也可以关注星创易联…

C++算法题 - 二叉树(2)

TOC 114. 二叉树展开为链表 LeetCode_link 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与…

k8s 资源文件参数介绍

Kubernetes资源文件yaml参数介绍 yaml 介绍 yaml 是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点例如 SpringBoot 的配置文件 application.yml 也是一个 yaml 格式的文件 语法格式 通过缩进表示层级关系不能使用tab进行缩进&am…

Hive操作运算符

关系操作符 以下操作符比较操作数(operands)从而产生TRUE/FALSE值.运算符操作数描述A B所有基本类型如果表达A等于表达B,结果TRUE,否则FALSE.A ! B所有基本类型如果A不等于表达式B表达返回TRUE,否则FALSE.如果有值为NULL&#xff0c;不会返回结果A < B所有基本类型TRUE,如…

如何使用Sentinel实现流控和降级

Sentinel 是一款面向分布式系统的流量控制、熔断和自适应限流工具&#xff0c;由Alibaba开源。Sentinel 以Java客户端的形式提供&#xff0c;可以嵌入到Java应用中以保护系统稳定运行。 以下是使用Sentinel实现流量控制和降级操作的详细步骤&#xff1a; 1. 添加Sentinel依赖…

Tansformer原理解读

什么是注意力机制 生物学中的注意力机制是指人类或动物能够选择性地将感知和认知资源集中到某些信息或任务上的能力。这种能力允许我们在众多信息的背景中过滤出重要的信息&#xff0c;并将这些信息传递给相应的神经元进行处理。 本质&#xff1a;能从中抓住重点&#xff0c;…

如何看待2024数维杯?

一、赛事介绍 美赛结束后,2024年又一场高含金量数模竞赛开始报名啦!数维杯每年上半年为数维杯国赛(5月,俗称小国赛),下半年为数维杯国际赛(11月),累计参赛高校千余所,参赛人数超14万人,经过八年多的发展,已成为继数学建模国赛和美赛之后的第三大全国性数学建模赛事,…

SpringBoot过滤器简单构建详细教程以及与拦截器区别解释

作用范围&#xff1a;过滤器基于Servlet规范&#xff0c;作用于更广泛的层面&#xff0c;不仅限于Spring MVC&#xff0c;它可以拦截进入Web应用的所有请求&#xff0c;包括静态资源请求。过滤器可以对请求和响应的内容进行预处理和后处理。实现方式&#xff1a;过滤器需要实现…

2 Spring IoC

目录 POM 案例一&#xff0c;基于 xml 配置 创建 entity 创建 Spring 配置文件 测试 Spring IoC 案例一&#xff0c;基于注解配置 改造 entity 改造 Spring 配置文件 改造测试类 Spring IoC 案例二&#xff0c;基于 xml 配置 创建 StudentService 接口 创建 UserSe…

python中一些莫名其妙的异常

目录 一、字符串中空格\xa0二、文件写入为空问题三、Counter对NAN空值的统计问题 一、字符串中空格\xa0 对于文本中的一些空格&#xff0c;原始状态时显示为普通“空格”&#xff08;其实是latin1编码字符&#xff09;&#xff0c;但是经过split()操作后&#xff0c;这些latin…

Python函数

一、Python函数 1.函数的语法 def 函数名(入参): 函数体 return 返回值 注意&#xff1a; &#xff08;1&#xff09;函数必须先定义后使用&#xff08;定义在上&#xff0c;使用在下&#xff09; &#xff08;2&#xff09;参数和返回值如果不需要都可以省略 2.函数的参数…

【自动驾驶|毫米波雷达】逻辑化讲清快时间与慢时间傅里叶变换

碎碎念&#xff1a;实习过程中发现在进行雷达知识交流时&#xff0c;大部分同事都会用英文简称代替中文的一些称呼&#xff0c;比如Chirp、FFT等等。起初我觉得是因为很多英伟达、TI芯片的开发教程都是英文的&#xff0c;所以看得多了大家都习惯这样称呼&#xff0c;后来在和指…

【Qt】深入理解QWidget常用控件: enable属性、geometry属性和window frame属性

文章目录 前言&#xff1a;1. 什么是控件2. Qt中QWidget控件的常用属性及元编程QWidget 核心属性enable属性&#xff1a;geometry 属性 :window frame 窗口框架 总结: 前言&#xff1a; 图形化界面的开发常常需要使用各种控件&#xff0c;而Qt作为一个强大的跨平台GUI应用程序…

React 第二十三章 shouldComponentUpdate

React 中的 shouldComponentUpdate 是一个生命周期方法&#xff0c;用于控制组件是否需要重新渲染。 文档地址&#xff1a;https://zh-hans.reactjs.org/docs/react-component.html#shouldcomponentupdate shouldComponentUpdate 接收两个参数&#xff1a;nextProps 和 nextS…

基于 Node.js 的爬虫库Puppeteer

一、介绍 Puppeteer是一个基于Node.js的爬虫库,它提供了一个简单的API,可以让你使用Chrome浏览器的核心功能进行网络自动化操作,包括网页渲染、表单提交、点击按钮和执行JavaScript等。 Puppeteer使用了Headless Chrome,它是Chrome浏览器的无头版本,可以在后台运行,并通…

拿去面试!一个基于 DDD 的高性能短链系统

众所周知&#xff0c;商城、RPC、秒杀、论坛、外卖、点评等项目早早就烂大街了&#xff0c;翻开同学的简历一看 10 个里面有 9 个是这些&#xff0c;翻遍全网再很难找到一个既有含金量又能看得懂的项目&#xff0c;针对此&#xff0c;我研发了这样一个可以快速上手又具有较多技…

大数据Scala教程从入门到精通第三篇:Scala和Java的关系

一&#xff1a;Scala和Java的关系 1&#xff1a;详解 一般来说&#xff0c;学 Scala的人&#xff0c;都会 Java&#xff0c;而 Scala 是基于 Java 的&#xff0c;因此我们需要将 Scala和 Java 以及 JVM 之间的关系搞清楚&#xff0c;否则学习 Scala 你会蒙圈 Scala可以使用SDK…

杰发科技AC7801——支持的纠错功能

1. 复位寄存器保留复位类型 低压检测复位&#xff08;LVD Reset&#xff09; 集成了一个低压保护系统&#xff0c;以便在电源电压发生变化期间保护存储器内容和控制 MCU 系统状态。该系统由上电复位(POR)电路和 LVD 电路组成&#xff0c;LVD 可以配置为不同的复位基准&#x…

VBScript与文件的编码

首先&#xff0c;VBScript的脚本源文件得是ANSI编码的&#xff0c;如果保存为UTF-8格式的&#xff0c;执行时可能会报错&#xff0c;比如你语法什么的都没有问题&#xff0c;不过代码中包含汉字串&#xff0c;那么可能执行时就会出现“未结束的字符串常量”之类的错误。 VBScri…