zoukankan      html  css  js  c++  java
  • 20199308 2019-2020-2 《网络攻防实践》第9周作业

    (:」∠)_

    一、实践内容

    1、恶意代码基础知识

    1.1 恶意代码定义与分类

    • 定义:使计算机按照攻击者的意图执行以达到恶意目标的指令集。
    • 分类、特性及实例:

    1.2 发展过程

    1.3 计算机病毒

    • 我国对计算机病毒的定义:
      计算机病毒是指编制或者在计算机程序中插入的,破坏计算机功能或数据、影响计算机使用,并能自我复制的一组计算机指令或者程序代码。
    • 基本特性:
      1、感染性
      2、潜伏性
      3、可触发性
      4、破坏性
      5、衍生性
    • 感染机制:
    • 传播渠道:
      移动储存、电子邮件及下载、共享目录等。

    1.4 网络蠕虫

    • 定义:
      一种通过网络自主传播的恶意代码,可以自我复制。它的出现相对于传统计算机病毒和木马、后门来说比较晚,但无论从传播速度、传播范围还是破坏程度上来讲,都是以往的恶意代码所无法比拟的。
    • 基本特性:
      1、自我复制,感染性
      2、通过网络的自主传播
      3、不需要宿主,独立程序
      4、直接通过网络传播,包括内网和互联网
      5、一般来说不需要用户交互,通过目标系统上的安全漏洞或错误配置进行传播,但对于一小部分蠕虫,如邮件蠕虫,用户交互是必要的。
    • 内部组成结构

    1.5 后门与木马

    • 后门:
      能够为攻击者提供多种不同类型的访问通道,包括:

      • 本地权限提升和本地账号
      • 单个命令的远程执行
      • 远程命令解释器访问
      • 远程控制GUI
      • 无端口后门
    • 后门工具可以利用自启动文件夹、注册表自启动项及预定计划任务这三种主要方法来达到自启动的效果。

    • 特洛伊木马可以用于一下目的:

      • 欺骗用户或系统管理员安装特洛伊木马程序,这样木马程序就通过毫无戒备的用户进入到计算机系统中;
      • 隐藏在计算机的正常程序中,将自己伪装成看起来属于该系统,使得用户和管理员不会察觉到它的存在,通常与后门工具结合,成为木马后门。
    • 命名伪装常用的攻击技巧有:

      • 混淆文件扩展名
      • 模仿Windows系统文件或服务命名

    1.6 僵尸程序与僵尸网络

    • 僵尸网络是在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展融合而产生的一种新型攻击方式。
    • 僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
    • 僵尸网络区别于其他攻击方式的基本特性是使用一对多的命令与控制机制,另外,僵尸网络还具有恶意性和网络传播性。
    • 僵尸程序的功能组成结构
      • 主体功能模块中的命令与控制模块作为整个僵尸程序的核心,实现与僵尸网络控制器的交互、接受攻击者的控制命令、进行解析和执行,并将执行结果反馈给僵尸网络控制器。
      • 辅助功能模块是对僵尸程序除主体功能外其他功能的归纳,主要包括信息窃取、僵尸主机控制、下载与更新和躲避检测与对抗分析等功能模块。
    • IRC僵尸网络的工作机制:
    • 僵尸程序的命令与控制机制包括:
      • 基于IRC协议的命令与控制机制
      • 基于HTTP协议的命令与控制机制
      • 基于P2P协议的命令与控制机制

    1.7 Rootkit

    • 定义: 一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。
    • 应用程序级木马后门、用户模式Rootkit和内核模式Rootkit位置对比:
    • 用户模式Rootkit:
      • UNIX用户模式Rootkit中集成的工具可以被分为五种不同类型:
        1、提供后门访问的二进制替换程序
        2、隐藏攻击者的二进制替换程序
        3、用于隐藏但不替换二进制程序
        4、另外一些零散的工具:一些常用的攻击工具,如网络嗅探器、后门shell监听器等。
        5、安装脚本
      • Windows用户模式Rootkit有三种技术:
        1、Windows为了支持第三方工具扩展Windows的内置功能特性,提供了一些开发接口。用户模式Rootkit可以使用这些开发接口将自身实现的恶意功能逻辑插入到现有的Windows函数之间,而无需覆盖Windows代码。
        2、Windows使用WFP机制来防止操作系统关键文件被修改或替换,因此Windows用户模式Rootkit要想覆盖操作系统关键文件,就必须首先使得WFP功能失效。
        3、用户模式Rootkit还可以使用DLL注入和API挂钩技术把恶意代码直接加入运行进程的内存空间中。
    • 内核模式Rootkit的技术手段:
      • 文件和目录隐藏
      • 进程隐藏
      • 混杂模式隐藏
      • 改变执行方向
      • 设备截取和控制

    2、恶意代码分析方法

    2.1 恶意代码分析与良性代码分析的区别

    区别项 恶意代码分析 良性代码分析
    目的公开性 目的未知,需分析和推测其目的 一般情况下,目的是公开且明确的,可辅助分析过程
    目的恶意性 目的恶意,需要受控环境 良性,无需受控环境
    是否存在源码 绝大多数情况无源码,二进制分析 开源软件存在源码,源码分析;闭源软件则需要二进制分析
    使用对抗分析技术 各种多样化对抗分析,博弈问题 一般无对抗分析,商业软件也引入对抗分析保护产权

    2.2 恶意代码发烧友的分析实验环境

    2.3 基于虚拟化技术的恶意代码分析实验环境

    2.4 用于恶意代码研究的自动分析环境

    2.5 恶意代码静态分析技术

    • 作用:能够对恶意代码的特性和目的有一个大体的了解,甚至能够识别出恶意代码的各个组成部分。
    • 技术列表:

    2.6 恶意代码动态分析

    • 作用:激活一个受控分析实验环境的代码,当一个代码在实际系统中运行时,我们能够更加迅速地了解其行为。
    • 常用的恶意代码动态分析监控技术和工具
    • 技术列表:

    二、实验过程

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

    任务内容:对提供的rada恶意代码样本(U盘或FTP/materials/course9下载),在WinXP_Attacker虚拟机中进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
    1、使用文件格式和类型识别工具(file, PEid),给出rada恶意代码样本的文件格式、运行平台和加壳工具。
    2、使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
    3、使用字符串提取工具(strings、IDA Pro),对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?


    过程如下:

    • 打开WinXP Attacker,将RaDa.exe文件放入。
    • 首先利用file RaDa.exe命令查看RaDa.exe的文件类型,可知这是一个32位Windows PE可执行文件,并且有图形化窗口。
    • 然后使用PEiD工具(查壳)来查看加壳的类型。在这里我们可以看到这个是一个版本为0.89.6的UPX壳。还可以看到文件的入口点、EP段、偏移、文件类型等信息。
    • 然后用strings RaDa.exe查看RaDa.exe中可打印字符串,发现都是乱码,这也验证了这是一个加壳程序,所以下一步是进行脱壳。
    • 然后用超级巡警这个软件进行脱壳,这里也识别出了是一个UPX壳,脱完之后输出为RaDa_unpacked.exe。emmm...一下下就脱好了。
    • 脱壳结束,打开IDA Pro Free选择脱壳之后的RaDa_unpacked.exe文件,可以看到如下信息。首先是作者的信息DataRescue sa/nv。

    动手实践:分析Crackme程序

    实践内容:使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。


    过程如下:

    • 仍在WinXP Attacker中,放入两个crackme文件。

    • crackme1.exe的分析

    • 对crackme1.exe进行执行,猜测参数执行,可以发现一个参数输入与其他的参数输入得到的输出明显不一样,所以可以猜测这个程序的输入是一个参数。

    • 接下来利用IDA Pro打开这个程序分析,我们打开通过Strings窗口可以查看该程序中出现的字符串,我们发现了前面的两种反馈信息,I think you are missing something.和Pardon? What did you say?,这两个我们之前已经见过了,很容易猜测,第一个是参数不对的返回情况,第二个是给的参数数量对了,但是具体的内容不对。

    • 然后将窗口切换到汇编语言窗口IDA View-A,在菜单栏中View->Graphs->Function calls依次点开查看函数结构:

    • 可以看到字符串比较函数strcmp和输出函数fprintf和printf。那么显而易见,sub_401280这个函数就显得至关重要了。在函数列表中双击这个函数,可以看到它的汇编代码:

    • 可以看到参数为2和不为2的情况,调用了一个字符串匹配函数strcmp,也就是输入的字符串与I know the secret进行比较,如果不匹配就输出Pardon? What did you say?如果正确,就输出You know how to speak to programs, Mr. Reverse-Engineer。


    • 于是进行验证:

    • crackme2.exe的分析

    • 有了前面的经验,这次就直接用IDA Pro进行分析。






    • 将原文件重命名为crackmeplease.exe,然后显示出Pardon?What did you say?,这说明我们已经离正确输出很近了,然后就是修改制定的密文为:I have the secret",就可以输出正确答案:

    实践作业1:样本分析实践:分析一个自制恶意代码样本rada。

    实践内容:深入分析这个rada.zip二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。

    过程如下:

    • 打开wireshark和已经脱壳的rada_unpacked.exe,在进程探测器process explorer中点击运行的进程,可以看到该二进制文件的编码字符串内容,当恶意程序打开后或以http协议与目标地址10.10.10.10的RaDa_commands.html进行连接,在本机目录下会新建tmp和bin两个文件夹,注册表也会有改变:

    • 在wireshark上发现大量发现10.10.10.10的TCP数据包:

    • 然后分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件,往下分析发现该恶意程序中可执行DDos拒绝服务攻击;然后又发现该恶意程序对主机注册表进行了读写和删除操作:

    • 然后打开注册表查看并未发现有关于RaDa的信息,可能是该恶意程序已经删除了注册表信息:

    • md5sum RaDa.exe指令查看摘要和文件类型,得到其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7。利用file RaDa.exe识别出这是32位PE文件,并且还是个GUI文件:

    • 接下来使用 IDA 对其进行分析。该程序在第一个实践中已经被脱壳了,脱壳后的文件名称为RaDa_unpacked.exe。(进入 Strings 对话框,在 Type 右键点击 Setup,设置类型为 Unicode。)

    • 查看命令行参数:可以看到作者、时间等信息。

    • 看到一个熟悉的 IP 地址,双击定位:猜测程序被执行后访问了这个地址。

    • 根据线索分析,得到RaDa_commands.html。寻找这个字符串对应的函数sub_404FB0,进入这个函数,看黄色部分的汇编代码,得知是被拷贝到dword_40C030这个变量中。

    • 找到dword_40C030变量对应的函数sub_4052C0 ,打开其Call Graph查看。这里我们看到判断了三个网段分别为192.168.、172.16.、10.,(三个私有网段,确保服务器在私有网段中,然后到服务器去取命令文件)


    回答问题:
    1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
    摘要为caaa6985a43225a0b3add54f44a0d4c7;Win32 PE 加 UPX 壳 GUI 文件。
    2、找出并解释这个二进制文件的目的。
    这个二进制文件通过网络获取指令,并执行;攻击者可以利用其完全控制该系统,是一个后门程序。
    3、识别并说明这个二进制文件所具有的不同特性。
    会请求 Web 服务器;解析获得的指令并执行。
    4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
    UPX 压缩技术。
    5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
    不具有自主传播模块,不具有传播和感染的性质,所以它不属于病毒和蠕虫;也没有将自己伪装成有用的程序以欺骗用户运行,不是木马。是一个后门程序。
    6、给出过去已有的具有相似功能的其他工具。
    使用http方式来同攻击者建立连接————Bobax、海阳顶端、Setiri等。
    7、可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
    Raul siles和David Perze于2004年编写的。

    实践作业2:取证分析实践:Windows2000系统被攻陷并加入僵尸网络

    实践内容:数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志中,,同时IP地址和其他敏感信息被混淆。分析这个日志文件并回答问题:


    过程如下:
    1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

    • 因特网中继聊天(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 端口。

    2、僵尸网络是什么?僵尸网络通常用于干什么?

    • 僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。

    • 僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
      3、蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?

    • 通过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

    4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。

    • 这里需要用到tcpflow这个命令,首先有关apt-get install tcpflow进行安装,然后执行tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667',会生成172.016.134.191.01152-209.196.044.172.06667,209.196.044.172.06667-172.016.134.191.01152和report.xml三个文件。
    • 这里一部分是从目标服务器发送出来的,一部分是从其他主机发送到目标主机的,统计得到主机个数为3457:

    5、哪些IP地址被用于攻击蜜罐主机?

    • 利用tcpdump指定IP地址收集被攻击的端口写入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;统计个数:

    • 通过snort获取所有可能链接的主机IP地址,将内容输出到2.txt,可以看到一共有165行共计165个: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:

    6、攻击者尝试了哪些安全漏洞?

    • snort统计一下网络流量包分布情况:

    • 以上可以看出大部分为tcp数据包,少部分为udp数据包,然后分别筛选这两种端口:

    • 输出可以看到 TCP 响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin)和80(http)。将协议部分改为udp,可以筛选出udp端口137(netbios-ns)。

    • 下面依次分析这些端口:TCP135端口,只是进行了连接,没有数据内容交换,很有可能是对这个端点进行了connect扫描:

    • TCP25端口,与135端口相似,也没有进行数据内容的交换,猜测攻击机对其进行了connect扫描:

    • TCP139端口,这里大部分连接也没有传递具体会话内容,主要也是SMB查点:

    • TCP445端口,这里发现有一个PSEXESVC.EXE的文件,这个二进制文件主要是一种Dv1dr32蠕虫,这种蠕虫通过IRC进行通信。

    • 然后该源IP地址与蜜罐主机建立了会话,攻击成功,这里Windows的svcctl MSRPC接口用于同SCM(服务控制管理器)通讯,svcctl漏洞允许匿名用户连接到SCM,然后就可以枚举所安装的或正在运行的服务。

    • TCP80端口,这里主要通过该端口使用脚本攻击IIS服务器的漏洞,从而获取系统权限。

    • 210.22.204.101访问了80端口,攻击者通过缓冲区溢出获得命令行:

    • 这里访问的是218.25.147.83,这里会看到c: otworm,是一个蠕虫攻击:

    • UDP137端口,网络基本输入/输出系统 (NetBIOS) 名称服务器 (NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法,在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了。

    7、哪些攻击成功了?是如何成功的?

    通过上面的分析可知,成功的攻击发起者是210.22.204.101 (Dv1dr32 蠕虫)和 61.111.101.78( LAN Manager 口令猜测)

    三、实验总结

    这周作业好多,实力劝退。。。
    参考同学们的博客学了很多:
    https://www.jianshu.com/p/d425140c6561
    https://www.cnblogs.com/charlesxie/p/12776522.html
    https://www.cnblogs.com/20199304lbs/p/12793607.html
    https://www.cnblogs.com/louhao-20199310/p/12789892.html

  • 相关阅读:
    禁止用户打开HTML页面调试
    Git 忽略提交 .gitignore
    PHP日期时间处理
    HTML页面中JavaScript能获取到的各种屏幕大小信息
    移动浏览器H5页面通过scheme打开本地应用
    Python爬虫利器:Beautiful Soup
    MySQL分页查询优化
    JavaScrpit中异步请求Ajax实现
    PHP反射机制
    CentOS下nginx php mysql 环境搭建
  • 原文地址:https://www.cnblogs.com/hsj910/p/12783606.html
Copyright © 2011-2022 走看看