• 20192421 202120222 《网络与系统攻防技术》实验四实验报告


    一.实验内容

    1. 恶意代码文件类型标识、脱壳与字符串提取

    2. 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

    3. 分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

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

    4. 取证分析实践

    Windows 2000系统被攻破并加入僵尸网络
    问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

    • IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
    • 僵尸网络是什么?僵尸网络通常用于什么?
    • 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
    • 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
    • 哪些IP地址被用于攻击蜜罐主机?
    • 攻击者尝试攻击了那些安全漏洞?
    • 那些攻击成功了?是如何成功的?

    二.实验过程

    1. 恶意代码文件类型标识、脱壳与字符串提取

    (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

    首先我们在kali虚拟机中使用file命令查看rada.exe的文件类型,可以看到如下图情况

    可以看出它是一个32位的PE可执行文件,其中GUI表示有图形界面,而intel 80386表示处理器架构

    使用PEiD打开rada.exe文件,可以看到文件的入口点、文件偏移、EP段等信息以及文件的加壳信息,是版本为0.89.6的UPX壳,如下图

    使用strings命令查看RaDa.exe可打印字符,结果如下图

    (2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

    使用strings命令查看RaDa_unpacked.exe,结果如下图所示(因字符篇幅过大,只截取了开头与结尾部分)

    使用IDA Pro Free打开脱壳后的文件,结果如下

    在Strings里查找作者的名字和文件编写的日期,结果如下:

    2.使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息

    (1)crackme1.exe

    多次运行crackme1.exe并尝试不同的参数个数,通过返回结果判断正确的参数个数,观察程序输出如下

    猜测需要一个参数

    使用IDA Pro Free打开crackme1.exe,在Strings查看字符串

    在主页面上点击View-Graphs-Function calls,查看函数结构


    由此我们得知,该程序sub_401280函数与printf和fprintf函数直接相关,因此猜测可通过调整sub_401280函数达成改变输出的目的
    通过jump-jump to function查看sub_401280函数

    如图可以看到,sub_401280首先判断参数个数,若不是一个则输出"I think you are missing something."(即左边箭头指向方向)

    若为一个参数且参数不为"I know the secret"则输出"Pardon?What did you say?"(即先往右边箭头所指向再向左边箭头指向)若为一个参数且参数为"I know the secret"
    则输出"You know how to speak to programs,Mr.Reverse—Engineer"(即先往右边箭头所指向再向右边箭头指向)


    按照该思路运行程序并输入正确口令,验证成功

    (2)crackme2.exe

    类比分析crackme1.exe思路进行
    运行crackme2.exe尝试判断正确的参数个数,结果如下

    猜测正确结果为一
    使用IDA Pro Free打开crackme2.exe,点击Strings查看字符串

    在主页面上点击View-Graphs-Function calls,查看函数结构

    由图片我们得知该程序sub_401280函数与printf和fprintf函数直接相关,因此猜测可通过调整sub_401280函数达成改变输出的目的
    通过jump-jump to function查看sub_401280函数
    缩略图如下

    程序首先会判断参数个数,若参数个数不为2(此处包含了程序名),则输出“I think you are missing something.”(选择左向箭头),否则选择右向箭头。

    选择右向箭头之后,判断第一个参数是不是“crackmeplease.exe”

    不是则输出“I have an identity problem.”(再选择左向箭头)

    选择向右箭头,判断第二个参数是不是“I know the secret”,若是则输出成功信息,否则输出“Pardon? What did you say?”

    综上所述,程序先判断第一个参数即程序名是否为“crackmeplease.exe”,再判断第二个参数是否为“I know the secret”,二者皆正确是才会输出我们想要的信息。
    于是将文件复制重命名为crackmeplease.exe,运行crackmeplease.exe输入参数"I know the secret",即可输出成功信息

    3.分析一个自制恶意代码样本rada,并撰写报告,回答问题

    (1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息

    • 在kali上使用md5sum rada.exe命令得到二进制文件的MD5摘要值为caaa6985a43225a0b3add54f44a0d4c7

    (2)找出并解释这个二进制文件的目的

    • 打开process explorer,以管理员权限运行该程序,在进程中找到rada_unpacked.exe,右键选择Properties—Strings查看
      结果如下图


      可以看到该程序有以下行为:
    • 使用http连接到10.10.10.10主机的一个叫做RaDa_commands.html的网页上。
    • 在C盘中创建文件夹“C:/RaDa/tmp”。
    • 将文件RaDa.exe复制到C:\RaDa\bin\路径下,并修改注册表设置为开机自启动(此处杀毒软件也会有相关提醒)。
    • 疑似可执行DDos拒绝服务攻击。
    • 与一些指令如put、get、screenshot、sleep有关系。

    (3)识别并说明这个二进制文件所具有的不同特性

    执行文件会将自身安装进系统,并修改注册表使得程序在系统启动时自执行;会自动获取10.10.10.10/RaDa中的RaDa_commands.html这个网页中包含的攻击者的相关指令,然后对相应的IP进行DDos攻击。

    (4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术

    使用0.89.6版本的UPX壳进行加壳处理

    (5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由

    我认为是后门程序。该程序虽然感染了主机并获取部分操作权限,但却并未伪装成正常程序,也并未通过网络进行传播和感染

    (6)给出过去已有的具有相似功能的其他工具

    Bobax、Setiri

    (7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

    可以,就在windows平台下使用“--authors”作为参数,会将作者信息弹出

    4. 取证分析实践

    Windows 2000系统被攻破并加入僵尸网络

    问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

    (1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

    • 因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
    • 申请时需要发送口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。
    • IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。 SSL 加密传输在 6697 端口。

    (2)僵尸网络是什么?僵尸网络通常用于什么?

    • 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
    • 拒绝服务攻击;发送垃圾邮件;窃取用户信息、网络流量;滥用资源;挖矿

    (3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

    使用Wireshark打开数据文件botnet_pcap_file.dat,设置过滤源IP地址为172.16.134.191,又因为是IRC通信,所以应该过滤目的端口为6667或6697。具体过滤条件如下:
    ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697

    蜜罐主机分别和66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172和209.126.161.29这五个IRC服务器进行了通信

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

    • 对捕获到的数据包进行分流,指令如下:
      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
    使用如下命令获取访问以209.196.44.172为服务器的僵尸网络的主机数量:
    cat 209.196.044.172.06667-172.016.134.191.01152 | grep --text "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

    发现有3461个主机

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

    使用如下命令查找攻击的IP地址并输出到文件中
    结果如下

    (6)攻击者尝试攻击了那些安全漏洞?

    • 查找TCP端口情况

    • 查找UDP端口情况

    • 使用wireshark查看TCP25,135端口

    可以看到这两个端口只是进行了连接,并没有数据的交互

    • 使用wireshark查看TCP的80端口
      存在缓存区溢出攻击,通过缓冲区溢出获得命令行。

    • 使用wireshark查看TCP的139端口
      看到同样大部分都是连接,并没有数据的传递

    • 使用wireshark查看TCP的445端口
      在61.111.101.78发起的请求中发现了PSEXESVC.EXE,这是一种蠕虫,通过IRC进行通信

    使用ip.dst==61.111.101.78查看从蜜罐发往攻击主机的数据包,可以看到results:Acceptance,而且以后的数据包中含有很多response字样,猜测是被控主机在响应攻击者的命令。

    • 使用wireshark查看TCP的4899端口

    4899端口是一个远程控制软件Radmin服务端监听的端口,经常被黑客用来控制被控机

    (7)那些攻击成功了?是如何成功的?

    • 来自61.111.101.78的PSEXESVC.EXE,即蠕虫攻击成功了。是通过向对TCP445端口发送含有PSEXESVC.EXE的数据包,且将PSEXESVC.EXE地址改到系统目录下攻击成功的。攻击成功后通过利用SVCCTL漏洞获取目标主机服务。

    三.实验问题及解决方案

    问题一:RaDa_unpacked.exe运行后使用Process Explorer未找到

    问题一解决方案:RaDa_unpacked.exe使用管理员权限后方可运行,使用管理员权限运行Process Explorer成功找到

    四.学习感悟及思考

    本次实验量比较大,使用了多个软件与多个分析文件。但对于这些软件的不熟悉会影响实验进度速度,一度影响了实验正常继续。还有很多知识例如汇编知识不熟悉也很大程度加大了实验的难度,所以说还是要多加学习这方面的相关知识。

  • 相关阅读:
    JavaScript内部原理:浏览器的内幕
    DOM结构深度优先遍历(二):TreeWalker
    DOM结构深度优先遍历(一):NodeIterator
    Linux bc 命令
    两个小function实现XML和string相互转化
    Git 多用户配置
    Vue 新增的$attrs与$listeners的详解
    CSS mask遮罩
    flask之后端传值给前端
    python cv2在验证码识别中的使用
  • 原文地址:https://www.cnblogs.com/zyh12345/p/16157001.html
Copyright © 2020-2023  润新知