20199319 2019-2020-2 《网络攻防实践》第九周作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695
我在这个课程的目标是 学习并掌握网络攻防知识,能完成相关实践
这个作业在哪个具体方面帮助我实现目标 学习恶意代码相关知识,并利用工具对恶意代码进行分析

恶意代码安全攻防

1.知识点梳理与总结

恶意代码基础知识

1、恶意代码:指是计算机按照攻击者的意图执行以达到恶意目标的指令集。

  • 攻击目标:炫技;远程控制被攻击机;窃取信息;窃取计算、存储、带宽资源;拒绝服务、进行破坏活动;
  • 类型
  • 基于多维度标签的恶意代码形态分类

2、恶意代码的发展:

1983正式定义,80年代进入中国;
复杂度和破坏力不断增强;创新频繁;恶意代码重点转移到蠕虫和内核级攻击工具;

3、计算机病毒:

计算机病毒基本特性:(1)感染性(自我复制,判断计算机病毒首要依据);(2)潜伏性(感染过程隐蔽);(3)可触发性(满足特定条件后,激活感染机制);(4)破坏性(炫技;破坏计算机系统正常运行);(5)衍生性。

计算机病毒的感染和引导机制
潜在感染目标分为以下三类:

  • (1)可执行文件。以可执行文件为宿主,当其被用户运行时,依附在上面的病毒被激活。三种感染方式:前缀感染机制、后缀感染机制和中间插入感染机制
    前缀感染机制指病毒将自身复制到宿主程序的开始,宿主程序被执行时,系统会先运行病毒代码;
    后缀感染机制指病毒将自身复制到宿主程序的末端,在宿主程序开始时加一条跳转指令,使病毒代码先执行再跳转到宿主程序;
    中间插入感染机制指把病毒代码放在宿主程序中间,使得病毒更隐蔽但编写难度较大。
  • (2)引导扇区。计算机启动过程:BIOS定位到磁盘主引导区;运行主引导区存储的主引导记录;主引导纪录从分区表找到第一个活动分区;读取并执行该分区的引导记录,分区引导记录负责装载操作系统。感染目标:主引导区、分区引导区。通过感染引导记录,病毒就可以在系统启动时先于操作系统获取系统控制权。
  • (3)支持宏指令的数据文件。数据文件中包含的可执行指令即宏指令
    宏病毒将自身以宏指令方式复制到数据文件中,当文件打开时自动执行宏病毒。

计算机病毒的传播机制:基于硬件的包括软盘、U盘、SD卡等;基于网络的主要包含电子邮件及下载、共享文件等。

4、网络蠕虫:

网络蠕虫的基本特性:通过网络自主传播,无需人为干预;不需要感染宿主;递归方式传播;

计算机病毒与网络蠕虫对比

网络蠕虫的组成结构

  • (1)弹头:渗透攻击,包括缓冲区溢出攻击、共享文件攻击、利用电子邮件传播和其他普遍配置错误等;
  • (2)传播引擎:通过在目标系统上执行传播引擎指令,完成蠕虫样本的传播。方式有FTP/TFTP/HTTP/SMB等;
  • (3)目标选择算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击。目标包括电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务和通过特定规则任意选择目标IP。
  • (4)有效载荷:附加的攻击代码,执行一些特殊目地的操作,包括植入后门、安装分布式拒绝服务攻击代理、组建僵尸网络、执行一个复杂计算等。

5、后门与木马

后门:允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供访问通道。
类型:本地特权提升、单个命令的远程执行、远程命令行解释访问器(NetCat)、远程控制GUI(VNC、BO、冰河、灰鸽子)、无端口后门(ICMP后门、基于Sniffer非混杂模式或混杂模式的后门)。

木马:特洛伊木马,看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
木马伪装技术:命名伪装、使用软件包装工具、攻击软件发布站点、代码下毒。

6、僵尸程序与僵尸网络

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

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

IRC僵尸网络工作机制
(1)攻击者渗透攻击,感染僵尸程序;
(2)僵尸网络尝试加入指定IRC命令与控制服务器;
(3)攻击者使用普遍动态域名服务奖僵尸程序连接的域名映射到多台IRC服务器;
(4)僵尸程序加入攻击者私有IRC命令与控制信道;
(5)加入信道的僵尸程序监听控制指令;
(6)攻击者发出信息窃取、僵尸主机控制核工记命令;
(7)僵尸程序执行命令。

僵尸网络的命令和控制机制
基于IRC协议的命令和控制机制、基于HTTP协议的命令和控制机制(一般可绕过防火墙)、基于P2P协议的命令与控制机制(更隐蔽)

7、Rootkit

  • 定义:一种特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。用来获Root后门访问的kit工具包。
  • 用户模式Rootkit:修改操作系统在用户态的程序和库文件。分为五种类型:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、一些零散工具(网络嗅探器)、安装脚本。
  • 内核模式Rootkit:修改操作系统内核,更深的隐藏和更强的隐蔽性。技术手段:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。

恶意代码分析方法

1、代码分析:按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。

恶意代码分析的技术方法主要包括:静态分析和动态分析
分析良性代码与分析恶意代码的区别:
不能提前知道恶意代码的目的。
恶意代码具有恶意的攻击目的,会对所运行环境进行恶意破坏。
恶意代码分析在绝大数情况下不会拥有待分析程序的源代码。
恶意代码目前都会引入大量各种各样的对抗分析技术。

2、恶意代码分析环境

  • 恶意代码发烧友的分析环境:利用集线器或者交换机把计算机连接在一起。
  • 采用虚拟化技术构建恶意代码分析环境:保证宿主计算机不要连接业务网络和互联网。
  • 用于研究的恶意代码自动分析环境:专业人员使用的,分为静态分析机、动态分析机、网络分析机和综合分析机。

3、恶意代码静态分析技术

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

恶意代码静态分析方法列表

  • 反病毒软件扫描:使用反病毒软件扫描分析样本,以识别类型、家族、变种等信息。卡巴斯基、诺顿、瑞星、金山、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等。

4、恶意代码动态分析技术实验环境一定要与业务网络和互联网完全断开!

恶意代码动态分析方法列表:

  • 快照比对:对“干净”资源列表做快照;激活恶意代码;对恶意代码运行后的“脏”资源列表做快照;对比两个快照,获取恶意代码行为结果。
  • 系统动态行为监控:核心。包括基于行为机制(Win32/Linux系统提供的行为通知机制)和API劫持技术(对API调用进行劫持,监控行为)。
  • 网络监控:恶意代码开放的端口(nmap)、恶意代码发起的网络连接(tcpdump/wireshark)。
  • 动态调试:在程序的执行过程中进行调试。

2.实践过程

实验一:恶意代码文件类型识别、脱壳和字符串提取

对提供的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恶意代码的编写作者。

实验二:分析Crackme程序

在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)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

猜你喜欢

转载自www.cnblogs.com/fanxiaonan/p/12801321.html