这个做业属于哪一个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个做业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695 |
我在这个课程的目标是 | 学习并掌握网络攻防知识,能完成相关实践 |
这个做业在哪一个具体方面帮助我实现目标 | 学习恶意代码相关知识,并利用工具对恶意代码进行分析 |
一、恶意代码:指是计算机按照攻击者的意图执行以达到恶意目标的指令集。html
- 攻击目标:炫技;远程控制被攻击机;窃取信息;窃取计算、存储、带宽资源;拒绝服务、进行破坏活动;
- 类型:
- 基于多维度标签的恶意代码形态分类:
二、恶意代码的发展:linux
1983正式定义,80年代进入中国;
复杂度和破坏力不断加强;创新频繁;恶意代码重点转移到蠕虫和内核级攻击工具;ios
三、计算机病毒:算法
计算机病毒基本特性:(1)感染性(自我复制,判断计算机病毒首要依据);(2)潜伏性(感染过程隐蔽);(3)可触发性(知足特定条件后,激活感染机制);(4)破坏性(炫技;破坏计算机系统正常运行);(5)衍生性。编程
计算机病毒的感染和引导机制:
潜在感染目标分为如下三类:windows
- (1)可执行文件。以可执行文件为宿主,当其被用户运行时,依附在上面的病毒被激活。三种感染方式:前缀感染机制、后缀感染机制和中间插入感染机制。
前缀感染机制指病毒将自身复制到宿主程序的开始,宿主程序被执行时,系统会先运行病毒代码;
后缀感染机制指病毒将自身复制到宿主程序的末端,在宿主程序开始时加一条跳转指令,使病毒代码先执行再跳转到宿主程序;
中间插入感染机制指把病毒代码放在宿主程序中间,使得病毒更隐蔽但编写难度较大。- (2)引导扇区。计算机启动过程:BIOS定位到磁盘主引导区;运行主引导区存储的主引导记录;主引导纪录从分区表找到第一个活动分区;读取并执行该分区的引导记录,分区引导记录负责装载操做系统。感染目标:主引导区、分区引导区。经过感染引导记录,病毒就能够在系统启动时先于操做系统获取系统控制权。
- (3)支持宏指令的数据文件。数据文件中包含的可执行指令即宏指令。
宏病毒将自身以宏指令方式复制到数据文件中,当文件打开时自动执行宏病毒。
计算机病毒的传播机制:基于硬件的包括软盘、U盘、SD卡等;基于网络的主要包含电子邮件及下载、共享文件等。安全
四、网络蠕虫:服务器
网络蠕虫的基本特性:经过网络自主传播,无需人为干预;不须要感染宿主;递归方式传播;网络
计算机病毒与网络蠕虫对比:
数据结构
网络蠕虫的组成结构:
- (1)弹头:渗透攻击,包括缓冲区溢出攻击、共享文件攻击、利用电子邮件传播和其余广泛配置错误等;
- (2)传播引擎:经过在目标系统上执行传播引擎指令,完成蠕虫样本的传播。方式有FTP/TFTP/HTTP/SMB等;
- (3)目标选择算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,利用扫描引擎扫描每个由目标选择算法肯定的地址,肯定其是否能够被攻击。目标包括电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务和经过特定规则任意选择目标IP。
- (4)有效载荷:附加的攻击代码,执行一些特殊目地的操做,包括植入后门、安装分布式拒绝服务攻击代理、组建僵尸网络、执行一个复杂计算等。
五、后门与木马
后门:容许攻击者绕过系统常规安全控制机制的程序,按照攻击者本身的意图提供访问通道。
类型:本地特权提高、单个命令的远程执行、远程命令行解释访问器(NetCat)、远程控制GUI(VNC、BO、冰河、灰鸽子)、无故口后门(ICMP后门、基于Sniffer非混杂模式或混杂模式的后门)。
木马:特洛伊木马,看起来具备某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
木马假装技术:命名假装、使用软件包装工具、攻击软件发布站点、代码下毒。
六、僵尸程序与僵尸网络
僵尸网络定义:攻击者出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络。
僵尸网络功能结构:主要分为主体功能和辅助功能。主体功能包括命令与控制模块(核心)、传播模块,辅助功能分为信息窃取模块、主机控制模块、下载更新模块、防分析检测模块。
IRC僵尸网络工做机制:
(1)攻击者渗透攻击,感染僵尸程序;
(2)僵尸网络尝试加入指定IRC命令与控制服务器;
(3)攻击者使用广泛动态域名服务奖僵尸程序链接的域名映射到多台IRC服务器;
(4)僵尸程序加入攻击者私有IRC命令与控制信道;
(5)加入信道的僵尸程序监听控制指令;
(6)攻击者发出信息窃取、僵尸主机控制核工记命令;
(7)僵尸程序执行命令。
僵尸网络的命令和控制机制:
基于IRC协议的命令和控制机制、基于HTTP协议的命令和控制机制(通常可绕过防火墙)、基于P2P协议的命令与控制机制(更隐蔽)
七、Rootkit
- 定义:一种特洛伊木马后门工具,经过修改现有的操做系统软件,使攻击者得到访问权并隐藏在计算机中。用来获Root后门访问的kit工具包。
- 用户模式Rootkit:修改操做系统在用户态的程序和库文件。分为五种类型:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、一些零散工具(网络嗅探器)、安装脚本。
- 内核模式Rootkit:修改操做系统内核,更深的隐藏和更强的隐蔽性。技术手段:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。
一、代码分析:按需求使用必定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。
恶意代码分析的技术方法主要包括:静态分析和动态分析。
分析良性代码与分析恶意代码的区别:
不能提早知道恶意代码的目的。
恶意代码具备恶意的攻击目的,会对所运行环境进行恶意破坏。
恶意代码分析在绝大数状况下不会拥有待分析程序的源代码。
恶意代码目前都会引入大量各类各样的对抗分析技术。
二、恶意代码分析环境
- 恶意代码发烧友的分析环境:利用集线器或者交换机把计算机链接在一块儿。
- 采用虚拟化技术构建恶意代码分析环境:保证宿主计算机不要链接业务网络和互联网。
- 用于研究的恶意代码自动分析环境:专业人员使用的,分为静态分析机、动态分析机、网络分析机和综合分析机。
三、恶意代码静态分析技术
定义:经过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。
恶意代码静态分析方法列表:
- 反病毒软件扫描:使用反病毒软件扫描分析样本,以识别类型、家族、变种等信息。卡巴斯基、诺顿、瑞星、金山、360、VirtusTotal等。
- 文件格式识别:windows平台,二进制文件EXE和DLL以PE文件格式组织,linux平台上是ELF。工具:file(肯定文件类型以及支持平台);peid(文件类型、编译连接器版本、加壳识别);FileAnalyzer等。
- 字符串提取:可能获取的信息包括恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息和Email地址、包含库文件和函数调用。工具:strings、IDA Pro、Strip(删除不可执行的标记性信息);
- 二进制结构分析:工具:binutils。nm指令在可执行二进制文件中查找重要数据元素。objdump从目标文件中显示不一样类型的信息;反汇编。
反汇编:把二进制程序从二进制机器指令码转换为汇编代码。工具IDA Pro。
反编译:将汇编代码还原成高级编程语言。- 代码结构与逻辑分析:核心任务,针对反汇编和反编译的结果。Call Graph:用户函数、系统函数和函数调用关系。程序控制流图CFG,程序逻辑分析。
- 加壳识别和代码脱壳:夹克混淆机制包括:加密(采用固定加密/解密器)、多样性(使用多样化解密器)、多态(恶意代码能随机变换解密器,使得每次感染所生成的恶意代码具备惟一性,必须脱壳才能检测分析)、变形(直接在恶意代码原有形态上加入各类代码变换形态)。
对恶意代码的加壳识别工具:PEiD、pe-scan、fileinfo等
脱壳工具:针对UPX,-d选项自动脱壳;针对PEPack,使用UnPEPack;针对ASPack,使用ASPack unpacker;VMUnpacker等。
四、恶意代码动态分析技术(实验环境必定要与业务网络和互联网彻底断开!)
恶意代码动态分析方法列表:
- 快照比对:对“干净”资源列表作快照;激活恶意代码;对恶意代码运行后的“脏”资源列表作快照;对比两个快照,获取恶意代码行为结果。
- 系统动态行为监控:核心。包括基于行为机制(Win32/Linux系统提供的行为通知机制)和API劫持技术(对API调用进行劫持,监控行为)。
- 网络监控:恶意代码开放的端口(nmap)、恶意代码发起的网络链接(tcpdump/wireshark)。
- 动态调试:在程序的执行过程当中进行调试。
对提供的rada恶意代码样本(云班课),进行文件类型识别,脱壳与字符串提取,以得到rada恶意代码的编写做者,具体操做以下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada代码进行样本分析,从中发现rada恶意代码的编写做者是谁。
- 实践在WinXP上进行,上面已经安装各类分析软件。
- 在cmd中切换到恶意程序所在的目录,使用【file RaDa.exe】命令查看 RaDa.exe的文件类型。能够看到该程序是一个Windows平台下32位的二进制可执行文件,GUI表示这个程序是一个有图形界面的程序,intel 80386是处理器架构。
- 而后使用【strings RaDa.exe】查看该程序可打印字符串,结果发现可打印的字符串为乱码,判断该程序采用了加壳技术,接下来分析使用了哪一种加壳工具。
- 使用PEiD工具查看RaDa.exe使用的加壳工具,能够看到使用的加壳工具为UPX,还能够看到文件的入口点、偏移等信息。
- 使用超级巡警自动脱壳对RaDa.exe进行脱壳,能够看到在RaDa.exe同目录下生成了一个脱壳之后的程序RaDa_unpacked.exe
- 用【strings RaDa_unpacked.exe】查看脱壳后的RaDa.exe即RaDa_unpacked.exe,能够看到正常显示信息
- 打开IDA Pro Free选择脱壳以后的文件,便可看到rada恶意代码的编写做者。
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其可以输出成功信息。
- 依旧选择WinXP虚拟,采用静态分析,而且以防万一断开了虚拟机的网络。
- 在恶意程序所在目录下,使用【file crackme1.exe】和f【ile crackme2.exe】命令查看两个文件信息,两个文件均为windows系统下32位的二进制可执行程序,使用控制台操做。
- 先分析crackme1.exe。执行crackme1.exe,尝试输入不一样类型不一样数量的参数(数值、字符、字符串)执行,发现输入一个参数与输入多个参数时有不一样的输出,推测该程序的输入为一个参数。
- 利用IDA Pro Free打开crackme1.exe,经过Strings窗口能够看到4个字符串
- 接下来在【View->Graphs->Function calls】中打开函数调用图,能够看到用于输出的print/fprint功能在sub_401280中,因此接下来查看sub_401280以寻找程序运行结果的输出状况。
- 在Functions里找到sub_401280的汇编代码,能够看到经过比对输入的参数,输出不一样的结果。其中,cmp [ebo+arg_0],2 判断程序是否超过两个参数,cmp是比较两个操做数的大小,若是输入参数不小于2是则返回“I think you are missing something.”。下面又利用strcmp比较用户输入参和“I know the secret”,一致则输出“You know how to speak to programs, Mr. Reverse-Engineer”,不然输出“Pardon? What did you say?”
- 输入【crackme1.exe “I know the secret”】进行验证,结果能够输出成功信息。
- 同理下面分析crackme1.exe。直接利用IDA Pro Free打开crackme2.exe,经过Strings窗口能够看到5个明文字符串。
- 接下来在【View->Graphs->Function calls】中打开函数调用图,能够看到用于输出的fprint功能在sub_401280中,因此接下来查看sub_401280以寻找程序运行结果的输出状况。
- 在Functions里找到sub_401280的汇编代码,能够看到经过比对输入的参数,输出不一样的结果。其中,一样先判断程序是否超过两个参数,若是输入参数不小于2是则返回“I think you are missing something.”;接着用strcmp函数对argv里面的第一个字符串,由于是arg_4(32位系统中堆栈指针每次变化4字节)即程序名,和“crackmeplease.exe”进行判断,若是不一致,则输出“I have a identity problem”,一致则继续判断用户的输入与“I know the secret”是否一致,若不一致,则输出“Pardon? What did you say?”,一致则输出正确结果。
- 由上述分析可知,要获得正确输出,首先程序名要使用crackmeplease.exe,故先将crackme2.exe复制为crackmeplease.exe,再输入【crackmeplease.exe “I know the secret”】进行验证,结果能够输出成功信息。
深刻分析这个二进制文件,并得到尽量多的信息,包括它是如何工做的,它的目的以及具备的能力,最为重要的,请展现你获取全部信息所采起的恶意代码分析技术。
(1)提供对这个二进制文件的摘要,包括能够帮助识别同同样本的基本信息。
(2)找出并解释这个二进制文件的目的。
(3)识别并说明这个二进制文件所具备的不一样特性。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
(6)给出过去已有的具备类似功能的其余工具。
(7)可能调查出这个二进制文件的开发做者吗?若是能够,在什么样的环境和什么样的限定条件下?
- 首先按照实践一的过程对RaDa.exe进行分析。过程简略描述,利用【file RaDa.exe】分析该恶意程序的运行环境,结果为win32位程序,有图形界面;用【strings RaDa.exe】输出结果乱码,为加壳文件;用PEiD判断UPX壳;用超级巡警进行脱壳。
- 使用MD5生成RaDa.exe的摘要信息,摘要内容为【caaa6985a43225a0b3add54f44a0d4c7】
- 打开process explorer和wireshark进行监听,而后运行RaDa.exe。在process explorer中双击RaDa.exe查看程序运行详细信息,能够看到改程序首先使用http链接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,而后下载和上传了一些文件,以后在受害主机C盘建立两个文件夹【C:/RaDa/tmp】和【C:/RaDa/bin】,接着往下有一条DDos攻击的语句。
- 接着往下,能够看到对注册表进行读写和删除操做
- 接着能够看到一些命令:exe(在宿主主机中执行指定的命令);put(将宿主主机中的指定文件上传到服务器);get(将服务器中的指定文件下载到宿主主机中);screenshot(截取宿主主机的屏幕并保存到tmp文件夹);sleep(中止活动一段时间);而后下面紧跟着能够看到这个恶意程序的做者。
- 下面分析wireshark监听的数据。能够看到受害主机向10.10.10.10的80端口发送了大量的数据包,但追踪数据流没有什么内容。
(1)提供对这个二进制文件的摘要,包括能够帮助识别同同样本的基本信息。
(2)找出并解释这个二进制文件的目的。
当用户链接互联网时,该程序就会经过http请求链接到指定主机,进行接受攻击者指令操做
(3)识别并说明这个二进制文件所具备的不一样特性。
RaDa.exe被执行时,它会在实验主机的C盘下建立了一个RaDa目录,并建立一个bin文件夹,一个tmp文件夹,tmp文件夹用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,bin文件夹中安装了一个RaDa.exe可执行文件。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
该二进制文件使用了UPX加壳,须要脱壳处理才能进行反编译分析的。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
由于这个样本不具备传播和感染的特色,因此它不属于病毒和蠕虫。它也没有将本身假装成有用的程序以欺骗用户运行,因此不属于木马。经排除它多是一个后门程序或僵尸程序。
(6)给出过去已有的具备类似功能的其余工具。
Bobax–2004也是使用http方式来同攻击者创建链接,而后解析并执行其中的指令。
(7)可能调查出这个二进制文件的开发做者吗?若是能够,在什么样的环境和什么样的限定条件下?
有上面的分析可知,此二进制文件是Raul siles和David Perze于2004年编写的。
数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其余敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪一个消息?IRC通常使用哪些TCP端口?
- IRC是因特网中继聊天(Internet Relay Chat)的简称。IRC 的工做原理:在本身的PC上运行客户端软件,而后经过因特网以IRC协议链接到一台IRC服务器上便可。IRC的特色是经过服务器中继与其余链接到这一服务器上的用户交流。注册时须要发送的消息有三种,分别是:口令,昵称和用户信息。格式以下:USER
、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加入频道,格式以下:JOIN 。 - IRC服务器明文传输一般在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
(2)僵尸网络是什么?僵尸网络一般用于干什么?
- 僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络。
- 僵尸网络,是互联网上受到黑客集中控制的一群计算机,一般被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也均可被黑客随意“取用”。
(3)蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通讯?
- 使用Wireshark打开botnet_pcap_file.dat,利用【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
(4)在这段观察期间,多少不一样的主机访问了以209.196.44.172为服务器的僵尸网络。
这一问实在是卡在了最初的起点,kali它为何总连不上网,以前的几种方法都试了此次无论用了。能我解决了网络问题再战!!
(5)哪些IP地址被用于攻击蜜罐主机?
- 还好上一问没有影响到下面的过程。进入蜜罐的流量都被认为是攻击,使用以下指令查找端口并输出到1.txt中,结果能够看出查找到148个被攻击的端口。
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 /*cut -d是指定字段的分隔符;uniq命令用于检查及删除文本文件中重复出现的行列,通常与sort命令结合使用;grep搜索获取昵称输出行;grep -v就是NOT指令,去除空行;wc计算行数。*/
- 使用以下指令查找全部的可能链接的主机的IP地址,将链接IP地址输出到2.txt中,结果能够看出有165个主机可能被用于攻击蜜罐主机。awk -F就是指定分隔符,可指定一个或多个,print后面作字符串的拼接
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后面作字符串的拼接*/
(六、7)攻击者尝试了哪些安全漏洞?哪些攻击成功了?是如何成功的?
- 首先使用【snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii】,发现大部分为TCP包,还有一部分UDP包。
- 使用以下指令筛选蜜罐主机有响应的TCP端口,即SYN,ACK标志为1
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
结果能够看到如下端口:135(rpc),139(netbiosssn),25(smtp),445(smb),4899(radmin),80(http)
- 同理筛选蜜罐主机有响应的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
结果能够看到如下端口:137(netbios-ns)
接下来对端口依次进行分析:
- UDP:137(netbios-ns)
137端口是在局域网中提供计算机的名字或IP地址查询服务,通常安装了NetBIOS协议后,该端口会自动处于开放状态,所以访问这个端口确定是NetBIOS查点。
- 25,135
利用【tcp.port135 || tcp.port25】筛选这两个端口,发现这两个端口只有链接,没有数据交互,应该是只对这两个端口进行了扫描
- 80
利用【ip.dst == 172.16.134.191 && tcp.dstport==80】筛选链接蜜罐主机80端口的数据包,首先发现大量与24.197.194.106相关的包,而且能够看到一条信息为“GET /NULL.ida?AAAAAAAAA...”的包,经查询是利用IIS缓冲区的IDA漏洞在攻击IIS服务器。
而后是210.22.204.101访问80端口,能够看到一条信息为“GET /NULL.ida?CCCCCCC...”的包,与前面相似,应该也是进行缓冲区溢出攻击。
接着访问80端口的是218.25.147.83,看到一条信息为“GET /NULL.ida?NNNNN...”的包,但这个不是缓冲区溢出攻击,经查找这是一个红色代码病毒。
最后是68.169.174.108和192.130.71.66访问80端口,比较正常的访问。
经过分析蜜罐主机80端口向外的数据包,发现响应均为一个iis服务器的默认页面,因此80端口的攻击均失败。
- 139
利用一样的筛选方法,139端口的链接大部分是普通链接,不少空会话,没有什么异常信息,可能只是SMB查点
- 445
利用一样的筛选方法,查询字符串能够发现PSEXESVC.EXE,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用
- 4899
该端口是远程控制工具Radmin的监听端口,不是木马但多是攻击者攻击成功后装来方便控制。
一、实践三中wireshark捕不到包。
刚开始为了安全断掉了虚拟机的网络,链接网络后捕包成功。
二、实践四kali又连不上网了。
尝试了各类方法仍是不行,再找找看有没有其余办法,或者它就本身忽然好了也有可能。
本周的分析好难,尤为是最后两个,作起来很吃力,虚心向大佬们学习。