20242924 2024-2025-2 《网络攻防实践》实践八报告

20242924 2024-2025-2 《网络攻防实践》实践八报告

1.实践内容

1.1 恶意代码基础知识

这部分包括恶意代码定义与分类、恶意代码发展史、计算机病毒、网络蠕虫、后门与木马、僵尸程序与僵尸网络、Rootkit。

  • 恶意代码(Malware,或Malicious Code)指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。恶意代码根据执行方式、传播方式和对攻击目标的影响分为计算机病毒(Computer Virus)、蠕虫(Worm)、恶意移动代码(Malicious Mobile Code)、后门(Backdoor)、特洛伊木马(Trojan Horse)、僵尸网络(Botnet)、僵尸程序(Bot)、内核套件(Rootkit)等。反病毒业界通常采用“三元组命名”规则来命名恶意代码。

在1983年计算机病毒定义正式出现之后,恶意代码在近30年发展过程中重要和著名的案例有Brian病毒、Concept病毒等。恶意代码的发展趋势:恶意代码的复杂度和破坏力不断增强、恶意代码技术的创新越来越频繁、关注重点从计算机病毒转到蠕虫和内核级的攻击工具等。

1.1.1 计算机病毒

计算机病毒在1983年由Fred Cohen首次提出。1994年我国的《中华人名共和国计算机安全保护条例》给出了我国对计算机病毒的具有法规效力的定义。计算机病毒的基本特性:感染性、潜伏性、可触发性、破坏性、衍生性等。计算机病毒潜在的感染目标可分为可执行文件、引导扇区和支持宏指令的数据文件三大类。计算机病毒的传播渠道包括移动存储、电子邮件及下载、共享目录等。

1.1.2 网络蠕虫

网络蠕虫是一种通过网络自主传播的恶意代码,可以进行自我复制。蠕虫的内部组成结构有弹头、传播引擎、目标选择算法、扫描引擎和有效载荷。

  • 蠕虫获取目标系统访问权常用的技术有缓冲区溢出攻击、文件共享攻击、利用电子邮件传播、利用其它普遍的错误配置等;传播引擎通常利用的网络传输机制包括文件传输协议FTP、小文件传输协议TFTP、超文本传输协议HTTP、服务信息块协议SMB以及原始SOCKET套接字等;
  • 蠕虫可选择的目标有电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务、通过特定规则任意选择IP目标地址等;
  • 蠕虫的有效载荷有附加的攻击代码、植入后门、安装分布式拒绝服务攻击代理、组件僵尸网络、执行一个复杂的计算等。

1.1.3 后门与木马

后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;木马(特洛伊木马)是指一类看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
后门工具能够为攻击者提供多种不同类型的访问通道,包括本地权限提升和本地账号、单个命令的远程执行、远程命令行解释器访问、远程控制GUI、无端口后门等。对于UNIX平台,后门工具则也可以利用inittab系统初始化脚本、inetd网络服务配置、与用户登录或程序激活相关的用户启动脚本、Crond后台程序计划任务来配置自启动等。
特洛伊木马程序的目的有欺骗用户或系统管理员安装特洛伊木马程序、隐藏在计算机的正常程序中等。

1.1.4 僵尸网络与僵尸程序

僵尸网络是在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展融合而产生的一种新型攻击方式。僵尸网络是指攻击者处于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络具有恶意性和网络传播性。最早出现的IRC僵尸网络由僵尸网络控制器(botnet controller)和僵尸程序两部分组成。

  • 僵尸程序分为主体功能模块和辅助功能模块,主体功能模块包括命令与控制模块和传播模块,辅助功能模块包括信息窃取模块、主机控制模块、下载更新模块和防分析检测模块。当前主流的僵尸网络命令与控制机制有基于IRC协议的命令控制机制、基于HTTP协议的命令与控制机制和基于P2P协议的命令与控制机制三大类。

1.1.5 Rootkit

Rootkit属于特洛伊木马的范畴。根据操作系统的分层,Rootkit可以运行在用户模式和内核模式两个不同的层次上。除了这两种传统模式Rootkit之外,还有虚拟机模式Rootkit。针对类UNIX平台的用户模式Rootkit是Rootkit的最初模式,实现用户模式Rootkit主要有使用现有接口在现有Windows函数之间注入恶意代码、关闭Windows文件保护机制后覆盖硬盘上的文件、利用DLL注入和API挂钩操纵正在内存中运行的进程三种技术。
大多数内核模式Rootkit采用如下技术:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制等。Linux操作系统中利用LKM机制来实现内核模式Rootkit有Adore、Adore-ng、KIS(Kernel Intrusion System)等,目前实现的Windows内核模式Rootkit有NT Rootkit、Fu Rootkit等。

1.2 恶意代码分析方法

这部分包括恶意代码分析技术概述、恶意代码分析环境、恶意代码静态分析技术、恶意代码动态分析技术。

1.2.1 代码分析技术概述

代码分析或称程序分析,是按需求使用一定规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。恶意代码分析的关键点在于构造受控的分析环境。恶意代码分析的技术方法主要包括静态分析和动态分析两大类。

1.2.2恶意代码分析环境

恶意代码分析环境有恶意代码发烧友的分析环境、基于虚拟化构建恶意代码分析环境、用于研究的恶意代码自动分析环境。

1.2.3恶意代码静态分析技术

恶意代码静态分析主要技术手段有反病毒软件扫描、文件格式识别、字符串取分析、二进制结构分析、反汇编、反编译、代码结构与逻辑分析、加壳识别与代码脱壳等。

1.2.4恶意代码动态分析技术

恶意代码动态分析主要技术手段有快照对比、系统动态行为监控、网络协议栈监控、沙箱、动态调试等。其中,系统动态行为监控软件包括文件行为监控软件、进程行为监控软件、注册表监控软件、本地网络栈行为监控软件等。目前常用的动态调试器软件包括Windows平台下的开源Ollydbg软件、微软推出的免费软件windbg商业软件IDA Pro和SoftICE等,以及类UNIX平台下的gdb、systrace、ElfShell等。

2.实践过程

2.1 实践任务一

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

解压下载的压缩文件,将RaDa放入虚拟机Windows attck的cmd启动目录下(C:\Documents and Settings\Administrator)中
de
打开终端,输入file RaDa.exe,查看该文件类型,是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序,intel 80386 表示处理器架构。
de
使用 PEiD 工具查看 RaDa.exe 的基本信息
de
这里可以看到文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型(UPX壳,版本为 0.89.6 )
de
输入strings RaDa.exe命令,查看 RaDa.exe 中可打印字符串,发现全是乱码,这说明软件被加壳,需要脱壳
de
使用超级巡警工具对文件进行脱壳,该工具有这个壳的样本库,可以自动脱壳,省去了手工脱壳的麻烦,打开程序,并选择目录路径下的rada.exe
de
脱壳成功,恶意程序同目录下生成了一个脱壳以后的程序。
de
再次使用 strings RaDa_unpacked.exe 命令查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有用字符串,但并未查找到作者信息。
de
打开该程序之前运行恶意程序,然后打开监视工具 process explorer
de
在进程监控里点击该恶意程序,右键选择 Properties 查看详细信息,发现恶意程序的作者信息,是Raul siles和David Perze于2004年编写的
de

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

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

计算crackme1.exe和crackme2.exe的 md5 值以检查完整性:
de
使用 file 命令来分析该恶意程序的大概信息,切换到恶意程序所在目录,分别执行 file crackme1.exe 和 file crackme2.exe 来查看两个文件信息:
de
两个文件是32位 windows 下 PE 文件,没有图形界面,是命令行程序。
对 crackme1.exe 进行分析。在cmd中尝试运行该程序,试探其输入格式。
de
接下来利用 IDA Pro 打开crackme1.exe程序分析。
de
打开 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”两个字符串。
猜测前者就是我们需要的口令,后者就是输入口令正确时程序的反馈信息。
de
接下来在终端中继续按照程序中出现的明文字符串队口令进行验证:
de
验证成功
接下来在IDA View中通过view——graphs——function calls操作查看函数调用图
可以发现:关键的部分在sub_401280这里:
de
可以看到程序是用C语言编写,因为可以发现字符串比较函数 strcmp 和输出函数 fprintf printf
关键部分就在 sub_401280 函数中,打开sub_401280函数的流程图
de

cmp [ebo+arg_0],2 为判断程序是否有两个参数。如在命令行输入 crackme1.exe 1 ,那么参数对应的值为 argc=2,argv={”crackme1.exe”,”1”} 。如果有两个参数,那么进行下一步判断,程序用 I know the secret 对应的字符串和用户输入的口令相比较,通过比较的结果反馈口令是否正确。
de
对crackme2进行分析:
de
同样用IDA pro 工具来打开 crackme2.exe 进行分析,可以看到明文字符串如下,再看函数调用图,发现核心函数还是 sub_401280:
de
查看 sub_401280流程图,通过cmp [ebp+arg_0],2判断程序参数是否为两个;通过参数个数的判断后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和 crackmeplease.exe 进行判断。
de
对用户输入的口令与“ I know the secret ”判断:通过口令判断后,通过一定规则输出通过测试的信息。具体是 unk_403080 中的字符串分别与0x42h进行异或运算,复制源程序名为新的程序:
de
输入crackmeplease.exe "I know the secret",发现回复为"我有一个小小的秘密:巧克力",成功。
de

2.3 分析实践任务一

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

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

  • 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
    MD5摘要值:caaa6985a43225a0b3add54f44a0d4c7
    基本信息:PE32 executable(GUI) Intel 80386 ,for MS Windows

终端键入指令md5sum RaDa.exe指令得到其md5摘要值:caaa6985a43225a0b3add54f44a0d4c7。利用file RaDa.exe识别出这是32位GUI文件:
de

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

  • 该文件是一个后门程序。可以进行http请求,使攻击者远程连接被控主机并进行一些指令操作,同时还修改了注册表使得文件具有开机自启动功能

IDA 对RaDa_unpacked.exe进行分析
C盘中双击运行恶意程序RaDa_unpacked.exe,打开监视工具process explorer,选择strings:
de

  • 该恶意程序使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands.html的网页上,然后分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件
  • 将文件RaDa.exe复制到了 C:\RaDa\bin 目录下,可以看出该恶意代码将其自我复制到主机系统盘,并激活了自启动,将rada.exe文件放到C:\RADA\bin文件夹下,还试图从一个HTML页面获取并解析命令,故猜测这应该是一个后门程序
  • 还可以发现该恶意程序中可执行DDos拒绝服务攻击

由此可知这个文件的目的是利用HTTP协议,修改注册表信息,使得每次开机都会发动DDOS攻击

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

  • 程序被执行时会将自身安装到系统C盘中,并创建文件夹用来存放从攻击主机下载到受控主机的文件和从受控主机获取的文件;同时通过修改注册表的方式使得程序能够开机自启动;具有一定的隐蔽性。

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

  • 使用0.89.6版本的UPX壳进行加壳处理;通查看网卡地址判断系统是否运行在虚拟机上,若是则隐藏作者信息
    de

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

  • 后门程序。因为该程序不能自主传播,且没有伪装成正常功能的程序,可以供攻击者远程连接并用指令操纵被控主机

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

  • Bobax – 2004、Windows Update、海阳顶端等后门。

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

  • 可能。在非VMware的虚拟机或者Windows下输入--authors参数可以显示作者名字,通过ida或者Process Explorer查看strings也可以找到作者名字是Raul Siles & David Perze,写于2004年。
    de

2.4 分析实践任务二

任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

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

2、僵尸网络是什么?僵尸网络通常用于什么?

僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
可以一对多地执行相同的恶意行为,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,使得攻击者能够以极低的代价高效地控制大量的资源为其服务。

3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

由于IRC协议使用TCP连接,要找出与蜜罐主机通讯的IRC主机,可以利用建立TCP连接的三次握手过程进行分析。只需要找出蜜罐主机向哪些机器的IRC端口发送过SYN包,即可找出蜜罐主机试图通讯的IRC服务器。
IRC协议最常用的端口为6667,在WireShark中对日志文件进行分析,可以看到除了6667外其他端口上没有数据包,因此这里所有的IRC数据都使用的是6667端口。于是可以利用如下表达式过滤出蜜罐主机向6667端口发送的SYN包: ip.src == 172.16.134.191 and tcp.dstport == 6667 and tcp.flags.syn == 1
de
共过滤得到21个tcp包,利用ip.src == 172.16.134.191 and tcp.dstport == 6667 and tcp.flags.syn ==1进行IP Address统计,得到如下结果:63.241.174.144、66.33.65.58、209.126.161.29、209.196.44.172、217.199.175.10
de

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

需要用到tcpflow命令,先使用命令安装tcpflow
apt-get install tcpflow
通过
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
进行分析,产生了三个文件
de
使用命令:
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
查看文件,发现有3461台主机访问了以209.196.44.172为服务器的僵尸网络
de

5、哪些IP地址被用于攻击蜜罐主机?

使用:
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 >iplist.txt;wc -l iplist.txt
筛选出ip地址:
de
打开文件查看到,一共有165个IP地址被用于攻击蜜罐主机。
de

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 139 25 445 4899 80端口
de
再用命令筛选有响应的UDP端口,发现137端口在局域网中提供计算机的IP地址查询服务,处于自动开放状态
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
de

7、那些攻击成功了?是如何成功的?

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

输入ip.addr == 172.16.134.191 && tcp.port ==端口号

  • 135端口:进行数据连接
    ip.addr == 172.16.134.191 && tcp.port ==135
    de
  • 25端口:进行数据连接
    ip.addr == 172.16.134.191 && tcp.port ==25
    de
  • 80端口:相关攻击的信息包含:null.ida是标识的WEB-IIS ISAPI、dafault.ida是标识的code red,为一个红色代码蠕虫攻击
    ip.addr == 172.16.134.191 && tcp.port ==80
    de
  • 445端口:发现执行了\System32\PSEXESVC.EXE,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用。所以只有对445端口实施的攻击是成功的
    ip.addr == 172.16.134.191 && tcp.port ==445
    de

3.学习中遇到的问题及解决

  • 问题一:在学习通无法下载rada文件,被防火墙识别为病毒被删除
  • 问题一解决方法:Windows安全中心检测到这个文件,关闭防火墙并允许这次操作就可以在自己电脑上解压后再复制到虚拟机上了。
    de

4.实践总结

本次实验通过分析Rada恶意样本和僵尸网络流量,掌握了恶意代码脱壳、反调试对抗、字符串提取等技术,并深入理解了IRC协议在僵尸网络中的作用。实验中遇到加壳混淆、反调试检测等问题,通过手动脱壳和动态调试解决。网络流量分析显示,老旧系统(如未修复MS08-067漏洞的主机)仍是攻击重点,而蜜罐能有效捕获攻击行为。实验让我认识到:恶意代码分析需结合静态与动态方法,绕过反逆向技术;僵尸网络防御依赖实时监控(如Snort)和漏洞管理;攻防对抗是持续过程,需不断更新技术手段。未来将深化逆向工程和威胁狩猎能力,以应对更复杂的网络威胁。

posted @ 2025-04-23 12:15  Swannn  阅读(40)  评论(0)    收藏  举报