20222817 2022-2023-2《网络攻防实践》第八周作业

目录

1.实践内容

1.1知识梳理

1.2实践内容

2.实践过程

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

4.实践总结

参考资料


1.实践内容

1.1知识梳理

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.1计算机病毒

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

1.1.1.2网络蠕虫

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

  • 蠕虫获取目标系统访问权常用的技术有缓冲区溢出攻击、文件共享攻击、利用电子邮件传播、利用其它普遍的错误配置等;

  • 传播引擎通常利用的网络传输机制包括文件传输协议FTP、小文件传输协议TFTP、超文本传输协议HTTP、服务信息块协议SMB以及原始SOCKET套接字等;

  • 蠕虫可选择的目标有电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务、通过特定规则任意选择IP目标地址等;

  • 蠕虫的有效载荷有附加的攻击代码、植入后门、安装分布式拒绝服务攻击代理、组件僵尸网络、执行一个复杂的计算等。

1.1.1.3后门与木马

后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;木马(特洛伊木马)是指一类看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。

后门工具能够为攻击者提供多种不同类型的访问通道,包括本地权限提升和本地账号、单个命令的远程执行、远程命令行解释器访问、远程控制GUI、无端口后门等。对于UNIX平台,后门工具则也可以利用inittab系统初始化脚本、inetd网络服务配置、与用户登录或程序激活相关的用户启动脚本、Crond后台程序计划任务来配置自启动等。

特洛伊木马程序的目的有欺骗用户或系统管理员安装特洛伊木马程序、隐藏在计算机的正常程序中等。

1.1.1.4僵尸网络与僵尸程序

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

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

1.1.1.5Rootkit

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.1.2 恶意代码分析方法

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

1.1.2.1 代码分析技术概述

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

1.1.2.2恶意代码分析环境

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

1.1.2.3恶意代码静态分析技术

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

1.1.2.4恶意代码动态分析技术

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

1.2实践内容

动手实践任务一

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

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

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

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

2.实践过程

动手实践任务一:

解压下载的压缩文件,将RaDa放入虚拟机Windows attck的cmd启动目录下(C:\Documents and Settings\Administrator)中

同时打开终端,输入file RaDa.exe,查看该文件类型,是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序, intel 80386 表示处理器架构。 

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

这里可以看到文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型(UPX壳,版本为 0.89.6 ) 

输入strings RaDa.exe命令,查看 RaDa.exe 中可打印字符串,发现全是乱码,这说明软件被加壳,需要脱壳 

使用超级巡警工具对文件进行脱壳,该工具有这个壳的样本库,可以自动脱壳,省去了手工脱壳的麻烦,打开程序,并选择目录路径下的rada.exe 

脱壳成功,恶意程序同目录下生成了一个脱壳以后的程序。 

再次使用 strings RaDa_unpacked.exe 命令查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有用字符串,但并未查找到作者信息。 

打开监视工具 process explorer,打开该程序之前运行恶意程序,在进程监控里点击该恶意程序,右键选择 Properties 查看详细信息,发现恶意程序的作者信息,是Raul siles和David Perze于2004年编写的: 

动手实践任务二:

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

使用 file 命令来分析该恶意程序的大概信息,切换到恶意程序所在目录,分别执行 file crackme1.exe 和 file crackme2.exe 来查看两个文件信息: 

两个文件是32位 windows 下 PE 文件,没有图形界面,是命令行程序。
对 crackme1.exe 进行分析。在cmd中尝试运行该程序,试探其输入格式。 

接下来利用 IDA Pro 打开crackme1.exe程序分析。
打开 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”两个字符串。
猜测前者就是我们需要的口令,后者就是输入口令正确时程序的反馈信息。 

 接下来在终端中继续按照程序中出现的明文字符串队口令进行验证:

验证成功

接下来在IDA View中通过view——graphs——function calls操作查看函数调用图
可以发现:关键的部分在sub_401280这里:

可以看到程序是用 C 语言编写,因为可以发现字符串比较函数 strcmp 和输出函数 fprintf 和 printf
关键部分就在 sub_401280 函数中,打开 sub_401280函数的流程图 

cmp [ebo+arg_0],2 为判断程序是否有两个参数。如在命令行输入 crackme1.exe 1 ,那么参数对应的值为 argc=2,argv={”crackme1.exe”,”1”} 。如果有两个参数,那么进行下一步判断,程序用 I know the secret 对应的字符串和用户输入的口令相比较,通过比较的结果反馈口令是否正确。

对crackme2进行分析:

同样用IDA pro 工具来打开 crackme2.exe 进行分析,可以看到明文字符串如下:

再看函数调用图,发现核心函数还是 sub_401280: 

查看 sub_401280流程图:

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

通过口令判断后,通过一定规则输出通过测试的信息。具体是 unk_403080 中的字符串分别与0x42h进行异或运算。

复制源程序名为新的程序。
输入crackmeplease.exe "I know the secret",发现回复为"我有一个小小的秘密:巧克力",成功!!!: 

分析实践一:

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

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

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

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

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

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

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

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

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

IDA 对RaDa_unpacked.exe进行分析
在Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode: 

查看Strings信息参数:可以看到作者和日期信息 

开之前用过的监视工具 process explorer 和 wireshark 开启监听,并运行恶意程序RaDa.exe,分析其程序运行详细信息: 

HTTP请求 10.10.10.10\RaDa\RaDa_commands.html ,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页。
之后又下载和上传文件到 C:/RaDa/tmp 。
将文件 RaDa.exe 复制到了 C:\RaDa\bin 目录下。往下看可以发现该恶意程序似乎对主机实行了DDos拒绝服务攻击 

再往下看可以发现该恶意程序对主机的注册表进行了读写和删除操作。 

exe 在宿主主机中执行指定的命令, get 下载, put 上传, screenshot 截屏, sleep 休眠。

使用wireshark进行分析,可以看到受害主机向目标主机 10.10.10.10 发送了大量的数据包:

再打开IDA Pro 对前面脱壳后.exe文件进行分析。
首先查看字符串 string ,进入 Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode: 

string里把unicode选中查看字符串。这时可以查看到很多的字符串: 

看一下VMware tools,双击选中的字符串进行定位: 

发现其调用函数 sub_404FB0,这个函数中,这个字符串被拷贝到变量 dword_40C070 中,搜索到这个变量对应的函数是 sub_40AAA0

查看函数 sub_40AAA0 流程图,这个函数首先进行网卡配置信息的查询,然后确认 dword_40C070 对应的字符是否存在,若存在则判断vmware tools是不是在注册表里面。可以发现这只是作者为了防止通过参数得到作者信息的手段。 

分析实践2:

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

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

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

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

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

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

6、攻击者尝试攻击了那些安全漏洞?

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

解答:

1.IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
因特网中继聊天(Internet Relay Chat),简称 IRC。IRC 的工作原理非常简单,只需要在自己的 PC 上运行客户端软件,然后通过因特网以IRC 协议连接到一台 IRC 服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流。
注册时需要发送的消息有三种,分别是口令,昵称和用户信息。
IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。SSL 加密传输在 6697 端口。

2.僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
僵尸网络主要用于:发动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

共过滤得到21个tcp包,利用此表达式进行IP Address统计,得到如下结果: 

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

首先在wireshark中尝试利用 ip.src ==209.196.44.172 || ip.dst ==209.196.44.172 进行筛选,结果只有蜜罐主机:

kali终端里键入指令:sudo apt-get install tcpflow 安装tcpflow服务: 

然后输入命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,得三个文件即:172.016.134.191.01152-209.196.044.172.06667、209.196.044.172.06667-172.016.134.191.01152和report.xml,report.xml 

因为要找的是访问 209.196.44.172 的主机,所以着重看第一个文件。使用代码 209.196.044.172.06667-172.016.134.191.01152 这个文件进行筛选:

cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^: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

这个指令是管道连接的,第一条是 cat 命令,连接209.输出文件。第二条 grep 搜索获取昵称输出行。第三条 sed 去除前缀,最后的 g 是全局的意思。第三条 tr 将空格转换为换行。第四条 tr -d 删除 \r 。第五条 grep -v 就是NOT指令,去除空行。第六条 sort -u 排序并去除重复。最后一条 wc -l 输出行数。

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

我们认为进入蜜罐的流量都是攻击。使用以下命令查找端口并输出到1.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 >1.txt; wc -l 1.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 > 2.txt;wc -l 2.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 139 25 445 4899 80端口:

然后我们逐个进行分析,在wireshark中输入 ip.dst == 172.16.134.191 and tcp.port==135进行筛选,这些是目标地址为172.16.134.191、目标端口为135的数据包。可以看到数据包很少,只是建立通信,没有数据传输: 

ip.dst == 172.16.134.191 and tcp.port==139,数据包长度都很小,推断进行了SMB查点 

ip.dst == 172.16.134.191 and tcp.port==25,推断进行了端口扫描 

ip.dst == 172.16.134.191 and tcp.port==445,存在大量数据包,主机61.111.101.78向蜜罐发送了PSEXESVC.EXE,这是一种通过命令行环境和目标机器进行连接进而控制目标机器的程序,并且不需要通过RDP远程桌面协议进行图形化控制,所以很难被发现。 

ip.dst == 172.16.134.191 and tcp.port==4899,4899端口是Radmin的默认端口,具有远程控制功能,通常杀毒软件是无法查出。 

ip.dst == 172.16.134.191 and tcp.port==80,发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,可能正在输入什么命令获得蜜罐的机密消息。 

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

通过上面的分析可知,成功的攻击发起者是218.25.147.83(蠕虫攻击)和 61.111.101.78( LAN Manager 口令猜测)

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

  • 问题1:crackme1、crackme2.exe文件因为报错下载不了。
  • 问题1解决方案:其他途径获取。

4.实践总结

本次实践内容较多、知识点较为复杂。仅凭自己摸索是不行的,需要向同学请教、借鉴学长们的经验。

参考资料

  • 《网络攻防技术与实践》

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值