20199313 2019-2020-2 《网络攻防实践》第九周作业
20199313 2019-2020-2 《网络攻防实践》第九周作业
本博客属于课程:《网络攻防实践》
本次作业:《第九周作业》
我在这个课程的目标:掌握知识与技能,增强能力和本领,提高悟性和水平。
恶意代码
恶意代码,又称Malicious Code,或MalCode,MalWare。
设计目的为用来实现某些恶意功能的代码或程序。
包括:计算机病毒、网络蠕虫、木马、后门、Rootkit、Exploit、DDoSer、僵尸程序、广告软件、间谍软件……
恶意代码的分类
传统计算机病毒:一组能够进行自我传播、需要用户干预来触发执行的破坏性程序或代码。如CIH、新欢乐时光、宏病毒…
网络蠕虫:一组能够进行自我传播、不需要用户干预即可触发执行的破坏性程序或代码。
其通过不断搜索和侵入具有漏洞的主机来自动传播。如红色代码、SQL蠕虫王、冲击波、震荡波、极速波…
特洛伊木马:是指一类看起来具有正常功能,但实际上隐藏着很多用户不希望功能的程序。通常由控制端和被控制端两端组成。
如冰河、网络神偷、灰鸽子……
后门:使得攻击者可以对系统进行非授权访问的一类程序。如Bits、WinEggDrop、Tini…
RootKit:通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中的程序。如RootKit、Hkdef、ByShell…
拒绝服务程序,黑客工具,广告软件,间谍软件……
常见恶意代码
病毒
计算机病毒是人为制造的,有破坏性,又有传染性和潜伏性的,对计算机信息或系统起破坏作用的程序。它不是独立存在的,而是隐蔽在其他可执行的程序之中。计算机中病毒后,轻则影响机器运行速度,重则死机系统破坏;因此,病毒给用户带来很大的损失,通常情况下,我们称这种具有破坏作用的程序为计算机病毒。
计算机病毒按存在的媒体分类可分为引导型病毒、文件型病毒和混合型病毒3种;按链接方式分类可分为源码型病毒、嵌入型病毒和操作系统型病毒等3种;按计算机病毒攻击的系统分类分为攻击DOS系统病毒,攻击Windows、系统病毒,攻击UNIX系统的病毒。如今的计算机病毒正在不断的推陈出新,其中包括一些独特的新型病毒暂时无法按照常规的的类型进行分类,如互联网病毒(通过网络进行传播,一些携带病毒的数据越来越多)、电子邮件病毒等。
蠕虫
蠕虫是一种可以自我复制的代码,并且通过网络传播,通常无需人为干预就能传播。蠕虫病毒入侵并完全控制一台计算机之后,就会把这台机器作为宿主,进而扫描并感染其他计算机。当这些新的被蠕虫入侵的计算机被控制之后,蠕虫会以这些计算机为宿主继续扫描并感染其他计算机,这种行为会一直延续下去。蠕虫使用这种递归的方法进行传播,按照指数增长的规律分布自己,进而及时控制越来越多的计算机。
特洛伊木马
木马病毒是指隐藏在正常程序中的一段具有特殊功能的恶意代码,是具备破坏和删除文件、发送密码、记录键盘和攻击Dos等特殊功能的后门程序。木马病毒其实是计算机黑客用于远程控制计算机的程序,将控制程序寄生于被控制的计算机系统中,里应外合,对被感染木马病毒的计算机实施操作。一般的木马病毒程序主要是寻找计算机后门,伺机窃取被控计算机中的密码和重要文件等。可以对被控计算机实施监控、资料修改等非法操作。木马病毒具有很强的隐蔽性,可以根据黑客意图突然发起攻击。
后门
后门程序,跟我们通常所说的"木马"有联系也有区别。联系在于:都是隐藏在用户系统中向外发送信息,而且本身具有一定权限,以便远程机器对本机的控制。区别在于:木马是一个完整的软件,而后门则体积较小且功能都很单一。后门程序类似于特洛依木马(简称"木马"),其用途在于潜伏在电脑中,从事搜集信息或便于黑客进入的动作。
间谍软件
“间谍软件”其实是一个灰色区域,所以并没有一个明确的定义。然而,正如同名字所暗示的一样,它通常被泛泛的定义为从计算机上搜集信息,并在未得到该计算机用户许可时便将信息传递到第三方的软件,包括监视击键,搜集机密信息(密码、信用卡号、PIN码等),获取电子邮件地址,跟踪浏览习惯等。
僵尸程序和僵尸网络
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。之所以用僵尸网络这个名字,是为了更形象地让人们认识到这类危害的特点:众多的计算机在不知不觉中如同中国古老传说中的僵尸群一样被人驱赶和指挥着,成为被人利用的一种工具。
僵尸程序(Robot、Bot)有时直译为机器人程序,是指现恶意控制功能的程序代码,它能够自动执行预定义的功能、可以被预定义的命令控制。其实Robot程序本身不一定是恶意的,但多以恶意为目的来使用。植入了恶意Bot或者其他可以恶意远程控制程序的计算机称为僵尸计算机。
Rootkit
Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动!
恶意代码的分析技术
分析恶意代码需要分析以下内容:
1、隐蔽功能
2、加密功能
3、触发条件
4、自启动功能
5、自主攻击和繁殖功能
6、破坏功能
恶意代码分析有两类方法:静态分析和动态分析。静态分析方法是在没有运行恶意代码时对其进行分析的技术,而动态分析方法则需要运行恶意代码,而这两类技术又进一步分析基础技术和高级技术。
1)、静态分析技术基础技术
静态分析基础技术包括检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让你能够生成简单的网络特征码。
2)、动态分析基础技术
动态分析基础技术涉及运行恶意代码并观察系统的行为,以移除感染,产生有效的检测特征码,或者两者。然而,在你可以安全运行恶意代码之前,你必须建立一个安全的环境,能够让你在避免对你的系统与网络带来的风险的前提下,研究运行的恶意代码。
3)、静态分析高级技术
静态分析高级技术,主要对恶意代码内部机制的逆向工程,通过将可执行文件装载到反汇编器中,查看程序指令,来发现恶意代码到底做什么。这些指令时被CPU执行的,所以静态分析高级技术能够告诉你程序具体做了哪些事情。需要掌握汇编语言、代码结构、windows操作系统概念等专业知识。
4)动态分析高级技术
动态分析高级技术则是用调试器来检查一个恶意可执行程序运行时刻的内部状态。动态分析高级技术提供了从可执行文件中抽取详细信息的另一个路径。
实践一:rada分析
静态分析
Unix/Linux上都有一个file命令,用以判断某文件是什么类型的文件。Windows默认没有这个东西,下载地址中提供了一个这个Linux工具的port,下载setup安装即可,把安装后的bin目录加到PATH中即可以在命令行使用了。
我们在windows的cmd窗口下用cd命令切换到当前文件夹,使用命令 file RaDa.exe 和命令file rada_dump.exe可以看到如下图一所示的信息。
图中信息的意思为:
这是一个32位的可运行程序(.exe),是针对windows操作系统下,并且拥有图形界面(GUI)的应用程序,其运行平台为因特尔80386(intel 80386)
关于文件是否被加壳,要依赖于PEID检测工具,使用起来很简单(其原理主要在于字段分析与识别),如下图二所示,我们可以看到关于这个文件的各种信息。其中,这个文件的扩展信息中提到这个文件的检测结果为:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo,网上搜索相关信息后得出结论,这个是加壳后的文件,是UPX 0.89.6版本的壳,并且我们可以看出这个文件是被压缩过等信息。
图一
图二
脱壳、反汇编过程
这里我们用脱壳巡警工具进行快速脱壳,脱壳完成后输出结果我们看一下,如图三所示(实际就是我们上面file命令查看文件类型信息的第二个文件rada_dump.exe,其文件信息类型在图一中已经展示,这里不再赘述)。
脱壳之后这个文件对于我们来说就等同于一个被编译过的源代码文件一样的存在,我们这里想要知道其内部信息就要对其进行反汇编,这里我们用到了反汇编的工具IDA pro(原理主要在于反汇编过程的熟练操作,要快速定位到首字段位置,如果嫌麻烦这个步骤在上面的PEID中可以快速识别匹配字段,来快速完成。找到首字段后,根据Accii码对文件内容进行反汇编,结合32位的intel 80386平台给出的操作指令集,得到脱壳后的信息),如图四所示
图三
图四
样本分析
图五
所谓不入虎穴焉得虎子,首先,我们准备好process explorder用来监测进程(实测,这个玩意有树状列表,比process minitor好用多了),其次,准备好wireshark用来看这个文件是否向外部进行了网络传输,最后,我们准备好Regshot用来建立注册表快照,用来分析注册表的修改情况。
一切就绪我们运行这个恶意代码,我们看到快照对比之下,这个新增加的键无从遁形,直接定位到了他所在的位置。除了对注册表的分析之外,我们可以在process explorder中对这个进程前后的输入输出进行提取分析(这个过程其实也可以尝试在反汇编软件中查看输出表,不过可能是未运行的状态所以我第一次的尝试未成功)。我们在下图七中看到了从这个进程中字符串提取的情况(注意在Image中会看到很多乱码,选择memory就会看到前后提取出的字符串有机拼接之后的结果),我们可以看到这个字眼经常出现啊,很有可能就是作者,
图六
图七
这个程序都干了什么呢,这里又觉得process minitor在这方面更为详细。
仔细观察,进程开始之后,程序首先创建了windows文件夹下的.pf文件,然后就开始进行一些列的注册表操作,从detail栏目中我们可以大致看出这个进程都干了什么,这里包括不停的读取我们的磁盘和IO信息,包括在我们的注册表中增加了很多文件,在NT文件夹下复制了这个恶意代码的运行程序(.exe文件),时不时就会回去重新运行一下这个恶意代码,让进程数量急剧增多,包括建立了TCP的长连接,等等行径。
- 具体分析
1、文件摘要:
演算文件的md5值,为:caaa6985a43225a0b3add54f44a0d4c7
2、目的
这个程序在不停的自我复制并且链接到一个固定的IP地址,看起来像一个后门程序,他篡改了注册表并且奇迹自动启动,由内而外链接的过程与反弹端口木马的行为十分相似,故而推测是一个反弹端口木马或者后门程序
3、保护措施
这个程序自身加壳做到了反逆向,并且,并未轻易抖露作者信息
4、分类
我给其分类为反弹端口木马或者后门程序
5、我们在做exploit攻击虚拟机时使用过类似的反弹端口木马程序
在作者这一栏中,攻击者并未傲娇的将自己的名字放在author里储存,而且这个author在被调用的位置均是push操作,将这个信息压入堆栈,之后并无操作。但是在刚刚字符串收集的时候,我们已经看到了是创造的这个镜像,可以理解为他就就是攻击者。
Crackme
演算文件的md5值,crackme1为: 4357BF8C20FABB642FAFC0B73FB0ABFB、crackme2为: 46AA577172D8F37AE2AE281515C99AFB
上面对RaDa的步骤对这个crackme1文件再来一遍,通过file命令,我们看到crackme1文件是一个32位的可运行程序(.exe),是针对windows操作系统下,其运行平台为因特尔80386(intel 80386),但是没有图形界面。
然而当我们尝试运行这个程序的时候,却发现反馈是缺少某东东西(盲猜缺少密码或者某种前置环境)
对这个文件进行壳检测,发现这是个很单纯的软件,没有加壳,那么这样的话我们直接对其进行逆向分析好了!
看到文件的流程图后我们大致明白了这个程序该如何进入,显然我们一直没能进入,但是在string中我们看到了通过的字符串,我们追踪一下这个玩意在哪被调用了,我们到了401310,然后继续向上查找401310在哪被jump了(显然401310上面是个jump指令,那么401310就只能被jump到达),就这样我们到了4012Ec,在4012EC之前,我们看到系统做了一个判断如下面第二张图, jz short loc_4012D2这里我们看看判断对象是什么,他判断输入的语句是否是“i konw the secret”,如果判断错误,则跳转004012F1输出parden what did you say?
另外,如果判断是,则跳转401310输出You know how to speak to programs, Mr.。。。
You know how to speak to programs, Mr.
到这里是否好奇,之前什么都不输入,返回的是"I think you are missing something.\n"是什么情况
这里我们回去在看一下代码,,有一行比较cmp [ebp+arg_0], 2
汇编指令cmp的比较结果是:
如果比较的是两个无符号数,则零标志位和进位标志位表示的两个操作数之间的关系如下表所示:
CMP结果 ZF CF
目的操作数 < 源操作数 0 1
目的操作数 > 源操作数 0 0
目的操作数 = 源操作数 1 0
这条指令意在比较一下 是否有两个输入参数,如果有则输出parden what did you say?,否则输出I think you are missing something.\n
测试一下,结果正确
同理我们也可以测试出crakeme2要输入的也是参数为:“i konw the secret”
测试一下:发现不行,回去仔细看了一下程序逻辑
通过参数个数的 判断后 , 接着用strcmp 函数对 argc 里面的第一个字符串,即程序名,和“crackmeplease.exe”进行判断,也就是说我们要通过验证还要改程序名,改一下试试:
果然通过验证了,很有意思的小程序。
取证分析——僵尸网络和僵尸程序
IRC
因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,目前世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)
IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流,所以IRC的中文名为“因特网中继聊天”。
IRC的最大特点是实现了在线实时交谈,速度快、功能多的优点使它比电子邮件或新闻组等联络沟通方式更具吸引力。IRC可以设置单独的频道,在这个频道内,输出的文字可供所有人都看到。这样,来自世界不同角落的人能同时得到有关信息。而如果是两个人之间的单独交谈,甚至可以不用通过服务器,以保证谈话的保密性。随着网络带宽的增加和技术的发展,现在有一些IRC不仅可以传输文字信息,还能传输声音或图像信息,这样的功能就更强了。
IRC一般默认的端口6667.
僵尸网络和僵尸程序
在Botnet的概念中有这样几个关键词。“bot程序”是robot的缩写,是指实现恶意控制功能的程序代码;“僵尸计算机”就是被植入bot的计算机;“控制服务器(Control Server)”是指控制和通信的中心服务器,在基于IRC(因特网中继聊天)协议进行控制的Botnet中,就是指提供IRC聊天服务的服务器。僵尸网络是一种由引擎驱动的恶意因特网行为:DDoS攻击是利用服务请求来耗尽被攻击网络的系统资源,从而使被攻击网络无法处理合法用户的请求。 DDoS 攻击有多种形式,但是能看到的最典型的就是流量溢出,它可以消耗大量的带宽,却不消耗应用程序资源。DDoS 攻击并不是新鲜事物。在过去十年中,随着僵尸网络的兴起,它得到了迅速的壮大和普遍的应用。僵尸网络为 DDoS 攻击提供了所需的“火力”带宽和计算机以及管理攻击所需的基础架构。
具体分析
主机ip为:172.16.134.191,这里我们筛选一下后主要看出主机进行通讯的IP地址有:(这里说的是通过6667端口通信的,因为IRC是默认6667端口)
209.126.161.29、63.241.174.144、217.199.175.10、66.33.65.58、209.196.44.172(最后一个这个ip通信了很久很久,约四个小时)
哪些主机与僵尸网络进行了通信
与僵尸网络209.196.44.172通信的主机ip有:172.16.134.191,(废话,只看这个捕包记录当然看不出来)
这里要在kali中进行tcp分析(这个活其实在wireshark中进行tcp流追流踪也可以看出来)
因为kali就给出了5这个数字,我不放心怎么这么少,于是又上wireshark上看了一下,应该还有很多,kali没识别出来的
哪些IP地址被用于攻击蜜罐主机
我们只需要看看哪些ip进入了蜜罐主机即可,kali告诉我们一共有148个,在输出文件1.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
攻击者尝试了哪些安全漏洞?哪些攻击成功了?是如何成功的?
我们可以对包类型进行分析,snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii
我们看到主要是tcp包和udp包居多,在wireshark上进行具体分析,我们首先筛选了80端口的包数据,我们看到,这个210.22.204
101的主机不停地攻击着我们的主机,到后面确实攻击成功了,而且用到了boot.ini等等配置文件
这里是蠕虫攻击,我们通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面,所以80端口的这些攻击均失败。
同理我们看看139端口的情况,一开始就发现了一个smb报文异常但是也没有攻击成功
在145端口上,由61.111.101.78发起的包中有个PSEXESVC.EXE字符串,通过搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。
同样找出口流量,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,通过搜索可知,这是一个远程调用,所以攻击者肯定是获得了权限,因此这个攻击成功的。