本次做业属于哪一个课程 | 网络攻防实践 |
---|---|
这个做业要求在哪里 | 恶意代码基础知识和分析方法 |
我在这个课程的目标是 | 学习网络攻防相关技术和原理 |
这个做业在哪一个具体方面帮助我实现目标 | 学习恶意代码安全攻防的相关知识 |
恶意代码: | 指的是使计算机按照攻击者意图执行以达到恶意目标的指令集。 |
---|---|
分类: | 计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸网络、内核套件。 |
弹头: | 获取计算机的访问权限 |
---|---|
传播引擎: | 完成蠕虫样本的复制传播 |
目标选择算法和扫描引擎: | 一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,而后利用扫描引擎扫描每个由目标选择算法肯定的地址,确认其是否能够被攻击。 |
有效载荷: | 附加的攻击代码。 |
6.3僵尸网络的功能结构html
6.4僵尸网络的命令与控制机制ios
7.1 Rootkit定义算法
7.2用户模式Rootkitshell
7.3内核模式Rootkitwindows
利用对内核的操做,内核模式Rootkit能够修改内核,完全地隐藏攻击者在计算机上的活动,大多数内核模式Rootkit采用以下技术手段:安全
8.1恶意代码分析技术概述服务器
8.2恶意代码分析环境网络
8.3恶意代码静态分析技术tcp
8.4恶意代码动态分析技术函数
任务:对提供的rada恶意代码样本(U盘或FTP/materials/course9下载),在WinXP_Attacker虚拟机中进行文件类型识别,脱壳与字符串提取,以得到rada恶意代码的编写做者。
步骤:
实验环境:WinXP Attacker虚拟机(安装有cygwin以及基本的脱壳软件和字符串提取工具)。
查看RaDa.exe的文件类型:file RaDa.exe
,可知这是一个32位Windows PE可执行文件,而且有图形化窗口。
使用PEiD工具(查壳)来查看加壳的类型。UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
【版本为0.89.6的UPX壳(压缩壳,更多内容参考UPX壳分析)】
查看RaDa.exe中可打印字符串:strings RaDa.exe
,都是乱码。
进行脱壳:超级巡警
,脱完以后输出为RaDa_unpacked.exe
。
进行分析啦:打开IDA Pro Free
选择脱壳以后的文件。
能够看到做者的信息DataRescue sa/nv,邮箱,程序由MSVB编写,函数调用,汇编代码。
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其可以输出成功信息。
实验环境:装有IDA Pro的WinXP Attacker虚拟机。下面两个程序都是静态分析(利用IDA进行动态分析我不会啊)。
步骤1:
crackme1.exe
,猜想参数执行,猜想这个程序的输入是一个参数。IDA Pro
,打开Strings
窗口查看该程序中出现的字符串,发现两种反馈信息I think you are missing something.
和 Pardon? What did you say?
猜想:第一个是参数不对的返回状况,第二个是给的参数数量对了,继续进行分析。strcmp
和输出函数fprintf
和printf
。分析sub_401280
函数。strcmp
,比较输入的字符串与I know the secret
进行比较,若是不匹配就输出Pardon? What did you say?
。若是正确,输出You know how to speak to programs, Mr. Reverse-Engineer。
I know the secret
,结果正确步骤2:
IDA Pro
分析crackme2.exe
,照旧打开Strings
窗口查看该程序中出现的字符串。call function
,咱们能够看到字符串比较函数strcmp
和输出函数fprintf
以及输入函数等。那么此时应该寻找,sub_401280
这个函数了。2
,若是不是,就返回I think you are missing something。
,ebp+arg_4
,不是上面的ebp+arg_0
了。那就是说咱们这里匹配的不是执行参数了,那应该是什么呢?看arg_4
和arg_0
相差了4
(变量定义的时候dword ptr 8
和dword ptr 0C
),那么arg_0
表明的是第一个参数,其实arg_4
表明的就是第0
个参数,也就是程序名。copy crackme2.exe crackmeplease.exe
给程序改个名字,而后输入crackmeplease.exe "I know the secret"
发现输出了一个字符串We have a little secret: Chocolate
xor eax 42h
,这个指令是将eax
与0x42
异或,网上看有个指令是add eax,offset unk_403080。
那么就很简单了,后面的操做就是将unk_403080
中的字符逐个与0x42
进行异或运算。能够验证0x15 xor 0x42
对应的ascii码是W
。(此处借鉴了建国的分析进行学习)任务:如今你做为一名安全事件处理者的任务(若是你接受的话)就是深刻分析这个二进制文件,并得到尽量多的信息,包括它是如何工做的,它的目的以及具备的能力,最为重要的,请展现你获取全部信息所采起的恶意代码分析技术。
步骤:
md5sum RaDa.exe
指令获得其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
。利用file RaDa.exe
识别出这是32位PE文件,而且仍是个GUI文件RaDa_unpacked.exe
。(进入 Strings
对话框,在 Type
右键点击 Setup
,设置类型为 Unicode
。)RaDa_commands.html
。寻找这个字符串对应的函数sub_404FB0
,进入这个函数,看黄色部分的汇编代码,得知是被拷贝到dword_40C030
这个变量中。dword_40C030
变量对应的函数sub_4052C0
,打开其Call Graph
查看。这里咱们看到判断了三个网段分别为192.168.
、172.16.
、10.
,(三个私有网段,确保服务器在私有网段中,而后到服务器去取命令文件)问题回答
提问:提供对这个二进制文件的摘要,包括能够帮助识别同同样本的基本信息。
回答:摘要为caaa6985a43225a0b3add54f44a0d4c7;Win32 PE 加 UPX 壳 GUI 文件。
提问:找出并解释这个二进制文件的目的。
回答:这个二进制文件经过网络获取指令,并执行;攻击者能够利用其彻底控制该系统,是一个后门程序。
提问:识别并说明这个二进制文件所具备的不一样特性。
回答:会请求 Web 服务器;解析得到的指令并执行。
提问:识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
回答:UPX 压缩技术。
提问:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
回答:不具备自主传播模块,不具备传播和感染的性质,因此它不属于病毒和蠕虫;也没有将本身假装成有用的程序以欺骗用户运行,不是木马。是一个后门程序。
提问:给出过去已有的具备类似功能的其余工具。
回答:使用http方式来同攻击者创建链接————Bobax、海阳顶端、Setiri等
提问:可能调查出这个二进制文件的开发做者吗?若是能够,在什么样的环境和什么样的限定条件下?
回答:Raul siles和David Perze于2004年编写的
任务:数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其余敏感信息被混淆。回答下列问题
因特网中继聊天(Internet Relay Chat),简称 IRC 。 IRC 的工做原理很是简单,只要在本身的 PC 上运行客户端软件,而后经过因特网以 IRC 协议链接到一台IRC服务器上便可。IRC 特色是经过服务器中继与其余链接到这一服务器上的用户交流。注册时须要发送的消息有三种,分别是:
消息格式以下:USER <username> <hostname> <servername> <realname>
、 PASS <password>
和 NICK <nickname>。
客户端就使用 JOIN
信息来加入频道,格式以下:JOIN <channel>。
IRC 服务器明文传输一般在6667
端口监听,也会使用6660—6669
端口。 SSL
加密传输在 6697
端口。
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络。
僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也均可被黑客随意“取用”。
经过Wireshark
打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
,由于咱们知道 IRC 服务经过6667
端口
能够找到全部与蜜罐主机进行通讯的 IRC 服务器:分别为 209.126.161.29
,66.33.65.58
、63.241.174.144
、217.199.175.10
、209.196.44.172
首先先使用命令tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 6667'
拉取209.196.44.172
与172.016.134.191
之间的全部的 IRC 数据包。这里通常须要装一下sudo apt-get install tcpflow
(我又碰到kali出问题了,在问题部分详细讲)
得到三个文件,172.016.134.191.01152-209.196.044.172.06667
、209.196.044.172.06667-172.016.134.191.01152
和report.xml
,report.xml
包含其余两个文件的相关信息:上述双方的ip地址,端口,mac地址,通讯时间等等。
首先咱们计算在当前主机加入IRC时刻,IRC中主机的个数,使用的PY代码以下所述,主机的个数是 3457。这仅仅是第一步的计算。而后咱们在计算截至结束嗅探的时候的不断有主机加入和退出IRC频道,咱们在补充上这个过程当中的主机个数,共计 3608个。具体使用的代码以下:
import re pattern = re.compile( r':irc5.aol.com 353 rgdiuggac @(.*?):(.*?)\n', re.S) pattern2 = re.compile(r':(.*?)!~', re.S) dict = {} with open("test.txt", 'r') as fp: thisline = fp.readline() while thisline: if thisline.startswith(":irc5.aol.com 353 rgdiuggac"): items = re.findall(pattern, thisline) string = items[0][1] splitstring = string.split(" ") for item in splitstring: dict[item] = 1 else: items = re.findall(pattern2, thisline) print(items) if len(items) == 1: dict[items[0]] = 1 thisline = fp.readline() print(len(dict) - 1)
首先,咱们认为进入蜜罐的流量都是攻击。使用如下命令查找端口并输出到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
(tcpdump -nn: 指定将每一个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示;grep -v:排除指定字符串;cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;uniq命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数)
能够看到共有148个端口被攻击了
接着使用以下指令找出全部的可能链接的主机的 IP 地址。这个指令的做用就是将链接IP地址输出到2.txt中。
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
(其中 awk -F 就是指定分隔符,可指定一个或多个, print 后面作字符串的拼接。)能够看到一共有165个主机被用于蜜罐入侵
要了解攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii
指令先查一下网络流分布状况。发现大部分都是TCP包,有一部分UDP包,因此咱们首先应该筛选出响应的TCP端口和UDP端口。
利用下面的指令筛选出蜜罐主机相应的 TCP 端口。输出能够看到 TCP 响应端口为135(rpc),139(netbios-ssn),25(smtp)445(smb),4899(radmin),80(http)。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
(0x12表明有回复)
将协议部分改成 udp ,能够筛选出 udp 端口137(netbios-ns)tcpdump -r botnet_pcap_file -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
逐个分析所用的端口,首先是udp 137号端口,这个是在局域网中提供计算机的IP地址查询服务,处于自动开放状态,因此访问这个端口确定就是 NetBIOS 查点了。接下来看 tcp 135 号端口和25号端口,咱们看到只是进行了链接,可是是没有数据的交互的,因此这攻击者多是对这两个端口进行了 connect 扫描。
而后查看 TCP 80 端口,首先利用 Wireshark 进行筛选tcp.dstport==80 && ip.dst == 172.16.134.191
首先链接最多的就是 24.197.194.106 这个IP,他的行为就是不停的用脚本在攻击 IIS 服务器的漏洞,从而获取系统权限。
接下来是210.22.204.101访问的80端口,攻击者是想经过缓冲区溢出攻击来得到一个命令行了
下一个访问 80 端口的是218.25.147.83,这里会看到c:\notworm,说明这是一个蠕虫攻击。上网搜索发现是红色代码(red code)病毒
其他的 ip 地址均为正常访问蜜罐.最后看对80端口有没有攻击成功了,咱们经过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机作的回应均为一个 iis 服务器的默认页面,因此80端口的这些攻击均失败。
而后关注TCP 139号端口。这个也比较简单,虽然有不少主机链接到这个端口的,可是基本都是同样的,大部分都是链接,而后不少空会话,一样也没有成功,因此应该是 SMB 查点。
而后分析TCP 445端口。这个端口链接很是多,能够看到许多 \samr, \srvsvc 字符串,查询字符串后很容易发现一个PSEXESVC.EXE字符串,是由61.111.101.78发起的,经过对这种字符串的搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是经过IRC进行通讯。
继续往下看,发现该 ip 地址与蜜罐创建了会话,说明攻击成功
还有就是 ip 地址为210.22.204.101的主机进行的攻击,根据字符串推测应该是使用了LAN Manager口令猜想,一样创建了会话,攻击成功
其他的针对 445 端口的数据流量都是一些普通查点,就不一一赘述了最后一个TCP 4899端口。只有 IP 地址 210.22.204.101 访问过。上网搜索能够查到 4899 端口是一个远程控制软件 radmin 服务端监听端口,这个软件不是木马,应该是上面攻击成功后上传这个软件方便控制。
经过上面的分析可知,成功的攻击发起者是210.22.204.101
(Dv1dr32 蠕虫)和 61.111.101.78
( LAN Manager 口令猜想)
问题1:kali又双叒断网!!!!!!!!!!!!!
问题1解决方案1:恢复eth0这块网卡罢工问题,不太管用eth0罢工 Kali Linux没法访问网络的问题
问题1解决方案2:更换DNS,无论用
问题1解决方案3:开启VMware NET Service服务,原本看着服务是已经处于开启状态,觉得又没戏了,幸亏细心点击了重启,成了···
问题2:tcpflow -r botnet_pcap_file 'host 209.196.44.172 and port 6667'
提示找不到文件
问题2解决方案1:先借鉴了于淼的博客,给文件更名,可是仍是不行。
问题2解决方案2:灵光一现,把文件类型名也加进去,tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
成了~
啥也不说了,kali你毁我青春。