《网络攻防实践》第9周作业

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

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635
本次作业的目标是 学习恶意代码安全攻防
作业正文 见下文

1.实践内容

1. 恶意代码

使计算机按照攻击者的意图执行以达到恶意目标的指令集。

  • 分析:恶意代码是一组指令集,而并不一定是二进制执行文件。其实现方式多种多样,如二进制执行文件、脚本语言代码、宏代码,或是寄生在其他代码或启动扇区中的一段指令流。
  • 类型:根据其执行方式、传播方式利对攻击目标的影响分为计算机病毒、蠕虫、恶意移动代码、特洛伊木马、后门、僵尸程序、内核套件等。

    (1)计算机病毒:一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
    (2)蠕虫:一类自主运行的恶意代码,自我复制机制与计算机病毒类似,不需要将自身嵌入到其他宿主程序中。蠕虫通常通过修改操作系统相关配置,使其能够在系统启动时得以运行。一般通过主动扫描和攻击网络服务的漏洞进行传播,一般不需要人工干预。
    (3)恶意移动代码:移动代码是指可以从远程主机下载并在本地执行的轻量级程序,不需要或仅需要极少的人为干预。恶意移动代码是指在本地系统执行一些用户不期望的恶意动作的移动代码。普遍以Web浏览器作为攻击目标。
    (4)后门:一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。攻击者可以通过使用后门工具对目标主机进行完全控制。
    (5)特洛伊木马:一类伪装成有用的软件,但隐藏其恶意目标的恶意代码。
    (6)僵尸网络:攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的攻击网络。僵尸程序是用于构建僵尸网络以形成一对多控制攻击平台的恶意代码形态。
    (7)内核套件:用户态通过替换或修改系统关键可执行文件,或者在内核态通过控制操作系统内核,用以获取并保持最高控制权(root access)的一类恶意代码,分为用户态Rootkit和内核态Rootkit两种。

恶意代码的命名规则与分类体系

反病毒业界普遍釆用“三元组命名”规则来对所发现的恶意代码新样本来进行命名,这里的“三元组”是指恶意代码的类型、家族名称和变种号,一般形式为:
[恶意代码类型.]恶意代码家族名称[.变种号]

2. 计算机病毒

病毒程序通过修改其他程序的方法将自己的精确复制或可能演化的形式放入其他程序中,从而感染它们。

  • 基本特性:
    (1)感染性:病毒进入计算机并被执行,就通过扫描或监视的方式寻找符合其感染条件的目标,并釆用附加或插入等方式将自为复制链接到目标程序中。
    (2)潜伏性:病毒感染目标程序后,并不会立即进行破坏行为,而是在系统中潜伏。
    (3)可触发性:病毒在满足特定的触发条件后,激活其感染机制或破坏机制。触发实质是一种或多种判断条件控制,可作为计算机病毒触发判断条件的有系统日期、时间、特定的文件类型或数据的出现、病毒体自带的计数器等。
    (4)破坏性:病毒在触发后会执行一定的破坏性动作来达到病毒编写者的目标
    (5)衍生性:对某一个已知的病毒程序做出修改,从而衍生出另外一种或多种病毒变种。

  • 感染及引导机制
    (1)可执行文件
    以可执行文件作为宿主程序,当其被用户运行时,依附在上面的病毒就可以被激活取得控制权。
    感染方式:
    a. 前缀感染机制:指的是病毒将自身复制到宿主程序的开始,当宿主程序被执行时,操作系统首先会运行病毒代码,大多数情况下,病毒在判断其触发条件是否满足后会将控制权转交给宿主程序,所以用户很难感觉到病毒的存在;
    b. 后缀感染机制:指的是病毒将自身复制到宿主程序的末端,然后通过修改宿主程序开始时的指令,加入一条跳转指令,使得在宿主程序执行时首先跳转到病毒代码,执行完病毒代码后再通过一条跳转指令继续执行宿主程序;
    c. 中间插入感染机制:指的是病毒在感染宿主程序时,能把它拦腰截断,把病毒代码放在宿主程序的中间。中间插入感染机制能够通过零长度插入技术等使得病毒更加隐蔽,但该机制需要阶段宿主程序时的位置要恰当,需要保证病毒能够首先获得控制权,而且病毒不能被卡死,宿主程序也不能因病毒的插入而不能正常工作。

    (2)引导扇区
    首先通过BIOS定位到磁盘的主引导区,运行存储在那的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录负责装载操作系统。病毒可以在系统启动时先于操作系统便截取系统控制权。
    (3)支持宏指令的数据文件
    数据文件格式支持在数据文件中包含一些执行代码,使得应用软件在打开这些数据文件时自动执行所包含的代码,从而完成一些自动化数据处理的功能。宏病毒感染数据文件的方式为将自身以宏指令的方式复制到数据文件中,因此当被感染的数据文件被应用软件打开时,将自动执行宏病毒体,完成病毒的引导。

  • 传播机制
    病毒在计算机系统中被触发,它就会寻找可供感染的宿主程序位置,并复制自身并寄生在宿主上,病毒可能依附在移动存储或硬盘的引导扇区,或者可以嵌入代码的文档、可执行文件或者脚本文件。计算机病毒的传播渠道包括移动存储、电子邮件及下载、共享目录等。

3. 网络蠕虫

一种可以自我复制的代码,并且通过网络传播,通常无须人为干预就能传播。

  • 基本特性

-组成结构

(1)“弹头”
蠕虫首先获得计算机的访问权,它可以使用一些渗透攻击代码作为“弹头”。
常用的技术如下:
a. 缓冲区溢出攻击
b. 文件共享攻击:利用Windows文件共享、类UNIX平台上的NFS等网络文件系统以及P2P文件共享网络,蠕虫可以向目标系统的文件系统传播自身,通过覆盖一些常被运行或自动加载的可执行文件,蠕虫可以完成快速的自主网络传播。
c. 电子邮件传播
d. 其他普遍的错误配置:如弱口令账户等。
(2)传播引擎
“弹头”获得目标系统的访问权后,蠕虫传输自身复制样本到目标系统上。在弹头打开通道之后,通过在目标系统上执行传播引擎指令,来完成蠕虫样本的传播,传播引擎通常利用的网络传输机制包括文件传输协议FTP、小文件传输协议TFTP、超文本传输协议HTTP、服务信息块协议SMB以及原始SOCKET套接字等。
(3)目标选择算法和扫描引擎
蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,然后利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击。
可选择的多种不同目标选择算法如下:
a. 电子邮件地址
b. 主机列表:如类UNIX平台中的/etc/hosts和Windows平台上的LMHOSTS等文件中所列的主机地址。
c. 被信任的系统:类UNIX平台中,蠕虫可以从/etc/hostso equiv文件和用户个人的。
d. 网络邻居主机:在基于Windows的局域网内,蠕虫可以通过NetBIOS协议探测局域网中的邻居主机,并作为进一步传播目标。
e. 域名服务:域名服务器成为蠕虫潜在目标地址的储藏室。
f. 通过特定规则任意选择IP目标地址:最为常用的目标选择方法,蠕虫可仅仅从IP网段地址中,通过某种预定的算法来选择IP地址,进而试图去传播。
(4)有效载荷
蠕虫的有效载荷就是附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操作。
常常携带的有效载荷如下:
a. 植入后门:使得攻击者可以远程完全控制目标系统,最有效的后门可以使用Rootkit技术隐藏在目标系统中,以保证攻击者长期的控制。
b. 安装分布式拒绝服务攻击代理:等待攻击者命令,对一些互联网在线主机或服务实施分布式拒绝服务攻击。
c. 组建僵尸网络:植入僵尸程序,所有被蠕虫侵占的主机将连接到一个偶尸网络中,从而被攻击者更有效地控制,并灵活地依据攻击者命令进行各种攻击行为。
d. 执行一个复杂的计算

4. 后门与木马

  • 后门:允许攻击者绕过系统常规安全控制机制的 程序,能够按照攻击者自己的意图提供访问通道。
    后门工具能够为攻击者提供多种不同类型的访问通道,包括如下几种:
    (1)本地权限提升和本地账号:使得攻击者能够将其权限等级提升为系统管理员,或者新增一个本地账户,有了这些用户权限,攻击者可以任意访问系统及其文件。
    (2)单个命令的远程执行:攻击者可通过此类后门单独执行一个命令,并获得命令运行结果。
    (3)远程命令行解释器访问:即远程Shell,这类后门允许攻击者通过网络快速直接地输入能够在目标系统上运行的Shell命令,并获得运行结果。
    (4)远程控制GUI:能够以图形化界面的方式来访问目标系统,并提供较远程Shell功能更多,更简单易用的访问接口,如可以让攻击者看到远程目标系统的操作桌面,控制鼠标移动和键盘输入,访问文件系统,甚至控制远程摄像头等。
    (5)无端口后门:可以无须打开TCP或UDP监听端口的无端口后门,具体包括ICMP后门,基于Sniffer非混杂模式的后门,基于Sniffer混杂模式的后门等。

  • 木马:一类看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
    特洛伊木马程序可以用于以下目的:
    (1)欺骗用户或系统管理员安装特洛伊木马程序,这样木马程序就通过亳无戒备的用户进入到计算机系统中;
    (2)隐藏在计算机的正常程序中,将自己伪装成看起来属于该系统,使得用户和管理员不会觉察到它的存在,通常与后门工具结合,成为木马后门。

5. 僵尸程序与僵尸网络

僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网絡。僵尸网络区别其他攻击方式的基木特性是使用一对多的命令与控制机制,僵尸网络还具有恶意性和网络传播性。

  • 功能结构
  • 工作机制
  • 僵尸程序的命令与控制机制
    (1)基于IRC协议的命令与控制机制
    (2)基于HTTP协议的命令与控制机制
    (3)基于P2P协议的命令与控制机制

6. Rootkit

一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。

  • 用户模式Rootkit
    大部分UNIX用户模式Rootkit中集成的工具可以被分为如下五种不同的类型:
    (1)提供后门访问的二进制替换程序:攻击者可以用这些替换程序覆盖各种用于访问计算机的程序和服务,从而通过后门进入系统,一旦通过后门进入,他们将直接被赋予Root特权。
    (2)隐藏攻击者的二进制替换程序:这些被木马化的二进制程序将被用于替换系统中各种信息查看的工具,从而向用户和管理员隐瞒攻击者在受害计算机中的文件、进程和网络使用。
    (3)用于隐藏但不替换的二进制程序:这些工具可以使攻击者更改系统以隐藏他们的攻击行为,如更改程序修改时间、删除或修改系统日志等。
    (4)另外一些零散的工具:很多Rootkit中还包含了一些常用的攻击工具,如网络嗅探器、后门Shell监听器等。
    (5)安装脚本:用于解开打包的Rootkit工具,并完成自动化的安装过程。在替换二进制程序的过程中,自动化安装脚本将会把替换程序安装到适当位置,并重置上次修改口 期,甚金可能会压缩或填充二进制替换代码,使之与原来的正常程序保持同样的长度。
  • 内核模式Rootkit
    内核模式Rootkit的攻击目标则更加深入,直接面向操作系统的控制核心——内核,较用户模式Rootkit更为彻底并高效地毁坏受害计算机。
    大多数内核模式Rootkit釆用如下技术手段:
    (1)文件和目录隐藏:大多数内核模式Rootkit可以对用户和管理员隐藏掉指定的文件和目录夹,而一旦被隐藏,内核可以欺骗任何查找该文件的应用程序。
    (2)进程隐藏:可以将后门进程进行隐藏,利用进程分析工具也不能发现这个后门。
    (3)网络端口隐藏:隐藏正在后门监听的TCP或UDP端口,这样本地程序就看不到它们,攻击者的远程访问后门就可以更加隐蔽。
    (4)混杂模式隐藏:隐藏网络接口的混杂模式状态,使得攻击者进行网络嗅探时更隐蔽。
    (5)改变执行方向:当用户和管理员运行一个程序时,内核假扮运行所要求的程序,并将执行方向改变,让其运行木马化的程序。
    (6)设备截取和控制:截取和控制发往或来自于受害计算机上某个硬件设备的数据,如将任何输入系统键盘的键击记录(keystroke)截取和保存到一个本地文件上中,实现一个秘密的键击记录器。

7. 恶意代码分析方法

恶意代码分析的技术方法主要包括静态分析和动态分析两大类。
(1)静态代码分析方法在不实际执行软件代码情况下对恶意代码进行自动化或辅助分析,通常包括使用反病毒引擎扫描识别已知的恶意代码家族和变种,逆向分析获取恶意代码的关键程序信息、模块构成、内部数据结构和关键控制流程,理解恶意代码的机理,并提取特征码用于检测。
(2)动态代码分析方法通过在受控环境中执行待分析的目标恶意代码,并利用系统、网络、甚至指令层次上的监控技术手段,来获取目标代码的行为机理和运行结果。

8. 恶意代码静态分析技术

- 反病毒软件扫描
- 文件格式识别
- 恶意代码实例名
- 帮助或命令行选项
- 用户会话
- 后门口令
- 相关URL信息、E-mail地址:
- 包含库文件和函数调用
- 二进制结构分析
- 反汇编(Disassemble)与反编译(Decompile)
- 加壳识别与代码脱壳

2.实践过程

2.1 动手实践:恶意代码文件类型识别、脱壳与字符串提取

实践任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具。
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

实验环境:WinXPattacker
实验步骤:
1.将所给rada.exe文件拷贝到虚拟机中,输入file RaDa.exe查看文件类型,为32位操作系统下的PE文件,有图形化界面

2.输入strings RaDa.exe,打印该字符串,可以发现都是一群乱码

3.使用PEiD工具查看Rada.exe的基本信息,可以看到加壳类型为UPX

4.使用超级巡警软件对文件进行脱壳

5.输入strings RaDa_unpacked.exe,打印脱壳后的文件,发现字符串都出来了

2.2 动手实践:分析Crackme程序

实践挑战:使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息
实验环境:WinXPattacker
实验步骤:
1.使用file命令查看crackme1.exe的文件类型,可以看出其是32位Windows下的PE文件,没有图形界面,是命令行文件

2.首先对crackme1.exe进行执行,猜测参数执行,查看输出可以发现只一个参数的输出和其他参数都不一样,所以只带了一个参数

3.用IDA打开该恶意程序进行分析,查看程序中的明文字符串,前四项中有两项是刚输入过来的。猜测一个是密码,一个是成功之后的提示语,猜测I know the secret

4.返回终端尝试一下,发现猜对了

5.打开函数调用图(Function Call),找字符串操作相关的函数,以及输出函数,因为我们测试程序的时候明显是有输出的。可以看到字符串比较函数strcmp和输出函数fprintf和printf。那么显而易见,sub_401280为关键程序段,stump为c语言编写,使用字符串匹配密码

6.找到sub_401280函数的流程图,cmp [ebp+arg_0],2 发现该函数首先判断参数个数是否为2,若参数个数不为2,也就是我们前面尝试直接运行程序时,在crackme1.exe及crackme1.exe 1 2时都输出I think you are missing something,若参数个数为2,则将第二个参数与字符串I know the secret作比较,正确则输出You know how to programs,与我们的猜想一致

7.对crackme2.exe进行分析,前面的分析和crackme1.exe相同,直接用IDA工具打开,发现核心函数还是sub_401280

8.第一步是判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe,若正确则判断第二个参数是否为I know the secret,若参数正确,则执行下面的操作

9.进行验证,分析正确

2.3 样本分析实践:分析一个自制恶意代码样本rada

回答问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
(2)找出并解释这个二进制文件的目的。
(3)识别并说明这个二进制文件所具有的不同特性。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
(6)给出过去已有的具有相似功能的其他工具。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

实验环境:WinXPattacker
实验步骤:
1.使用MD5对该恶意程序进行摘要信息分析,md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。

2.此程序被加壳了,像之前一样做脱壳处理后分析。打开process explore进行监听,运行RaDa.exe文件,把网络断开。

3.对行为进行分析,发现访问了http://10.10.10.10/RaDa网址,下载了一个文件保存到C:\RaDa\tmp文件。

4.继续分析发现该程序可发动DDos拒绝服务攻击

5.该程序对注册表进行了读写和删除操作,打开注册表发现没有该程序留下的痕迹

6.打开wireshark,查看监测的数据,可以发现受害机与10.10.10.10的主机发送信息

回答问题:
(1)这个二进制文件摘要信息:
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中
使用了UPX加壳工具进行了加壳处理
(2)下载后门到目标主机,发动拒绝服务攻击,可远程与目标主机通信。
(3)自我复制到C盘下,修改注册表自启动项
(4)使用了UPX加壳工具
(5)安全软件反馈是木马程序,但通过分析,发现没有伪装成有用的软件,所以不是木马;没有自己复制并发送到网络,不是蠕虫;攻击者可以远程发送指令并且修改了自己的操作痕迹,所以是后门。
(6)海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接
(7)Raul siles和David Perze,2004年。

2.4 取证分析实践:Windows2000被攻破并加入僵尸网络

一个未打任何补丁的Windows 2000蜜罐主机且设置了一个空的管理员密码,被攻陷加入到一个僵尸网络,在蜜罐主机运营期间,共发现了15164个不同主机加入了这个僵尸网络。用Snort工具收集的该蜜罐主机5天的网络流日志,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和一些其他的特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。分析这个日志文件并回答以下问题:
(1)IRC是什么? 当IRC客户端申请加入一个IRC网络时将发送哪个消息? IRC一般使用哪些TCP端口?
(2)僵尸网络是什么? 僵尸网络通常用于什么?
(3)蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通讯?
(4)在这段观察期间,多少不同的主机访问了以 209.196.44.172为服务器的僵尸网络?
(5) 哪些IP地址被用于攻击蜜罐主机?
(6)攻击者尝试攻击了哪些安全漏洞?
(7)哪些攻击成功了?是如何成功的?

3.学习中遇到的问题及解决

  • 问题1:针对大部分问题没有思路
  • 问题1解决方案:反复看书和参看同学博客

4.实践总结

本章内容感觉比较难,针对实践没有太多的思路。

参考资料

猜你喜欢

转载自www.cnblogs.com/mywlgf/p/12796950.html