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

一、实践内容

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.1.4 后门与木马

后门定义:允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供通道。

后门类型:本地特权提升、单个命令的远程执行、远程命令行解释访问器(NetCat)、远程控制GUI(VNC、BO、冰河、灰鸽子)、无端口后门(ICMP后门,基于Sniffer非混杂模式或混杂模式的后门)。

自启动后门:Windows通过修改自启动文件、注册表自启动项,Linux修改inittab、rc.d/init.d文件。

木马定义:看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。

木马的伪装技术:命名伪装、使用软件包装工具、攻击软件发布站点、开发者代码下毒。

1.1.5 僵尸程序与僵尸网络

僵尸程序定义:攻击者用于一对多控制目标主机的恶意代码。

僵尸网络定义:攻击者传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。

僵尸网络功能结构:主体功能分为命令控制模块和传播模块,辅助功能分为信息窃取模块、主机控制模块、下载更新模块、防分析检测模块。

僵尸网络类型:IRC僵尸网络(基于IRC互联网实时聊天协议构建)、HTTP僵尸网络(Web网站方式构建)、P2P僵尸网络(P2P协议构建)。

1.1.6 Rootkit

定义:隐藏性恶意代码形态,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。换句话说,就是root权限的kit工具包。

用户模式Rootkit:恶意修改操作系统在用户模式下的程序/代码,达到隐藏目的(木马化操作系统用户模式应用程序)。主要分为五种类型:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、一些零散工具如网络嗅探器、安装脚本。

内核模式Rootkit:恶意修改操作系统内核,从而达到更深的隐藏和更强的隐蔽性(对内核组件的恶意修改和木马化)。主要有如下方式:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。

1.2 恶意代码分析技术

1.2.1 简介

代码分析:按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。恶意代码分析的技术方法主要包括静态分析和动态分析两类。

分析良性代码与分析恶意代码的区别:
(1)不能提前知道恶意代码的目的。
(2)恶意代码具有恶意的攻击目的,会对所运行环境进行恶意破坏。
(3)恶意代码分析在绝大数情况下不会拥有待分析程序的源代码。
(4)恶意代码目前都会引入大量各种各样的对抗分析技术。

1.2.2 分析环境

采用虚拟化技术构建恶意代码分析环境:保证主机和虚拟机的隔离,防止主机收到伤害,同时最好让主机隔离网络连接

在这里插入图片描述

用于研究的恶意代码自动分析环境:专业人员使用的,分为静态分析机、动态分析机、网络分析机和综合分析机

在这里插入图片描述

1.2.3 静态分析

定义:通过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。

方法列表:
(1)反病毒软件扫描:使用反病毒软件对待分析样本进行扫描。主要有卡巴斯基、赛门铁克、瑞星、金山等。
(2)文件格式识别:依靠专业工具如file(确定恶意代码目标平台和文件类型),peid(文件类型、编译链接器、是否加壳),FileAnalyzer(分析Win32平台窗口程序中包含的特殊文件)等进行识别分析。
(3)字符串提取:主要提取的信息包括可能获得的有用信息、恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息和Email地址、库和函数调用。
(4)二进制结构分析:nm指令在可执行文件中查找symbols重要元素。objdump主要功能有从可执行文件中限制不同类型的信息、编译器类型、代码段数据段位置、反汇编。
(5)代码结构与逻辑分析:程序结构主要是了解Call Graph,即用户函数、系统函数和函数调用关系。分析系统函数调用列表可在高层分析二进制程序的行为逻辑。程序逻辑主要是了解程序控制流图(CFG),CFG完备地反映了一个程序的执行逻辑。
(6)加壳识别和代码脱壳:包括四个方面:加密(固定加密/解密器)、多样性(多样化解密器)、多态(多态病毒能够通过随机变换解密器从而使得每次感染所生成的病毒实例都具有唯一性)、变形(直接在病毒体上加入各种代码混淆技术)。

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)按下 “给我脱”,脱壳成功,发现生成了一个新文件RaDa_unpacked.exe(脱壳文件)。

在这里插入图片描述

在这里插入图片描述

(6)查看桌面,果然可以看到这个文件。

在这里插入图片描述

(7)再用 strings 查看脱壳后的RaDa_unpacked.exe,发现了脱壳后的恶意程序的可打印字符串。

在这里插入图片描述

(8)这时候用 IDA Pro Free 打开这个文件。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(9)查看详细信息,可以找到作者为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函数来输入的,然后利用print和fprint函数输出。

在这里插入图片描述

在这里插入图片描述

下面来看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这里。

在这里插入图片描述

下面来看sub_401280,内容与上一个文件基本一致,大致可以判断出关键口令为I know the secret,只是从下图可以看到,代码逻辑中的程序名称改变了,变成了:crackmelpease.exe.因此需要对程序名称进行修改。

在这里插入图片描述

在这里插入图片描述

输入 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)接下来使用IDA对RaDa_unpacked.exe进行分析(该程序在第一个实践中已经被脱壳了),进入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可执行文件,同时也是一个UPX加壳文件。

2、找出并解释这个二进制文件的目的;
答:这个二进制文件是一个后门程序,攻击者可以利用其完全控制该系统,并且只要用户上网,就可以得到到攻击者的攻击指令。

3、识别并说明这个二进制文件所具有的不同特性;
答:该程序运行的时候建立远程连接并修改注册表,将下载的文件存储到C:\RaDa\tmp,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令。

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
答:UPX加壳,同时手动修改进行防范脱壳,一些干扰的误导选项,如没有用到的sql语句SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True,无意义的starting DDOS smurf remote attack。

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
答:样本不具有传播和感染的性质,同时没有将自己伪装成有用的程序以欺骗用户运行,因此不属于病毒、蠕虫、木马,应当是一个后门程序或者僵尸程序。

6、给出过去已有的具有相似功能的其他工具;
答:木马Bobax、特洛伊木马Setiri、GatSla等。

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
作者为Raul siles 和 David Perze。使用ida或strings能查看,或者在非vmware环境下执行–authors参数。

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

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

1、因特网中继聊天(Internet Relay Chat),简称IRC。IRC的工作原理非常简单,客户端软件通过因特网以IRC协议连接到IRC服务器上即可。IRC特点是通过服务器中继与其他连接到这一服务器上的用户交流。

2、注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN 。

3、 IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。

注意:攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,那么基于端口识别服务不再可靠,要进行基于应用协议特征进行识别(如USER/NICK)。

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

僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。

僵尸网络,是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

(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为服务器的僵尸网络?

1、先使用 apt-get install tcpflow 安装包。

在这里插入图片描述

2、然后输入命令tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667' 获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,得三个文件:一个report文件和两个分流的文件,报告文件内有两个主机互相通信的时间,IP,mac地址,使用端口,包裹数。

在这里插入图片描述

3、查询主机个数主要看是 209. 开头的文件,从这个文件中找到有多少个主机访问了209.196.44.172,包裹数过于庞大,使用管道连接指令筛选。

本次使用命令: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个。
在这里插入图片描述

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

蜜罐主机作为诱导主机,进入其流量一般都应当是攻击行为,因此使用tcpdump查找连接主机ip

注:awk -F就是指定分隔符,可指定一个或多个,print后面做字符串的拼接;cut -d是指定字段的分隔符;uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用。

本次使用命令: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 > ip.txt;wc -l ip.txt

在这里插入图片描述

在这里插入图片描述

(6)攻击者尝试了哪些安全漏洞?哪些攻击成功了?是如何成功的?

1、要分析攻击者针对的安全漏洞,首先要定位到可能被攻击的TCP/UDP端口号,使用 如下命令查询响应过的端口号: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

在这里插入图片描述

2、可以看到有135、139、25、445、4899、80。用wireshark打开文件botnet.pcap,逐个筛选TCP端口。

①使用 ip.addr == 172.16.134.191 and tcp.port == 135 筛选端口135的数据。可看出端口135的数据很少,且并没有实际数据交互,推测是在探测。

在这里插入图片描述

②端口25的情况类似,也应当只是扫描。

在这里插入图片描述

③端口139的情况有些不同,出现了SMB协议,但并未有实际数据交互,应当是SMB查点。

在这里插入图片描述

④端口80数据量很大,在浏览中发现http协议中异常字段,类似于缓冲区溢出攻击的特征。

在这里插入图片描述

3、添加http筛选条件 ip.addr == 172.16.134.191 and tcp.port == 80 and http,发现后续还有不同攻击,应该是目录穿越攻击。

在这里插入图片描述

4、使用 tcp.stream eq 1340 。验证80端口的外流流量时,注意到80端口最后访问的一个有趣操作,类似于缓冲区溢出攻击但有区别,追踪后发现是一种红色代码蠕虫攻击。

在这里插入图片描述

80端口遭受了大量多种攻击,但向外流量均为一个iis服务器的默认页面,所以80端口的这些攻击均失败。

5、端口445中多次出现了SMB协议,而且Path:\172.16.134.191\ADMIN$等多次重复组合出现,筛选浏览,发现61.111.101.78发送了PSEXESVC.EXE,这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。

在这里插入图片描述

445的出口流量,发现每个IP地址连入的连接都有响应的回应,所以攻击者肯定是获得了权限,因此这个攻击成功的。

在这里插入图片描述

6、最后的端口4899,起初只看到单个地址,查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制。

在这里插入图片描述

但当后续把筛选条件拓展时,发现24.197.194.106对其曾尝试攻击过一次,至此,才算结束。

在这里插入图片描述

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

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

(2)在实验四中,使用tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667’时,在文件名后忘记空格导致失败。

在这里插入图片描述

四、学习感想和体会

本次实验虽然内容较多,但还是比较简单的,美中不足的是依旧犯了些粗心导致的错误。通过实验动手实践了恶意代码文件类型识别、脱壳与字符串提取,动手实践了分析案例 Crackme 程序,寻找其启动方式和内部信息,另外分析了恶意样本,进一步了解了取证分析的细节。
随着实验内容的加深,除却对工具的学习外,更多的感受到底层编程语言及其逻辑、协议设计及其逻辑的要求进一步加深,要学的东西有很多,还是得埋头打基础。

五、参考资料

https://www.cnblogs.com/h767424060/p/16244282.html
https://www.cnblogs.com/ql5199/p/16216445.html
https://www.cnblogs.com/psalm46/p/16228109.html
https://www.cnblogs.com/bixj/p/16247391.html
https://www.cnblogs.com/william-tony/p/16242149.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值