• 20192429马一 202120222 《网络与系统攻防》实验四 恶意代码分析实践


    20192429马一 2021-2022-2 《网络与系统攻防》实验四 恶意代码分析实践

    一、实验内容

    1.恶意代码文件类型标识、脱壳与字符串提取
    对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

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

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

    (3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

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

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

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

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

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

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

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

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

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

    4.取证分析实践

    二、实验目标

    • 基本掌握并实现对恶意代码的分析工作
    • 实验中涉及的知识内容:
      恶意代码:恶意代码(Unwanted Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件
      恶意代码分类:
      后门:恶意代码将自身安装到一台计算机上允许攻击者进行访问。后门程序通常让攻击者只需很低级别的认证或者无需认证,便可连接到计算机上,并可以在本地系统执行命令。
      僵尸网络:与后门类似,也允许攻击者访问系统。但是所有被同一个僵尸网络感染的计算机将会从一台控制命令服务器接收到相同的命令。
      下载器:这是一类只是用来下载其他恶意代码的恶意代码。下载器通常是在攻击者获得系统的访问时首先安装的。去下载安装其他恶意代码。
      蠕虫病毒:可以自我复制和感染其他计算机的恶意代码。
      特洛伊木马:如今黑客程序借用其名,有“一经潜入,后患无穷”之意,特洛伊木马没有复制能力,它的特点是伪装成一个实用工具,诱使用户将其安装在PC端,从而秘密获取信息
      内核套件:用以获取并保持最高控制权的一类恶意代码

    三、实验步骤及结果

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

    1. 将RaDa.exe放入虚拟机中,并用 file RaDa.exe 查看文件类型,发现,这是一个有图形化界面(GUI)的windows32 PE程序
      LUAbGT.md.png

    2. 输入 strings RaDa.exe ,查看 RaDa.exe 中可打印字符串,发现全是乱码,推测程序是被加壳了
      LUVlA1.md.png

    3. 使用PEiD工具查看加壳类型,可以看出,这是一个版本为 0.89.6 的upx壳
      LUVG9K.png

    4. 使用超级巡警进行脱壳,得到一个脱壳后的文件RaDa_unpacked.exe
      LUVD4P.png

    5. 对已脱壳的文件查看字符串
      LUVhEn.md.png

    6. 用IDA Pro Free打开这个脱壳文件,可以发现作者为Raul Siles David Perze
      LUVoCV.md.png
      LUVT3T.md.png

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

    3.2.1 分析crackme1.exe

    1. 分析 crackme1.exe 时,先对其输入进行检查,测试不同输入结果
      LUZKxS.md.png

    2. 使用IDA Pro来分析这个程序,打开String windows可以查找到该程序的明文字符串
      LUZ0r4.md.png

    3. 通过函数调用图(Function Call)可以发现,在sub_401280处,函数使用strcmp函数来输入,利用print和fprint函数输出
      LUZBqJ.md.png

    4. 查看sub_401280处的汇编语言,cmp [ebp+arg_0],2 为判断程序是否有两个参数。
      LUeSds.md.png

    5. 通过查看函数调用过程,可以发现,只有当输入为 I know the secret 时,才会输出正确口令
      LUeAQU.md.png

    6. 改变输出后,得到结果如下:
      LUeKF1.md.png

    3.2.2 分析crackme2.exe

    1. 测试不同输入得到的输出
      LUe3QO.md.png

    2. 查看字符串对话框得到明文输出结果
      LUeGOe.md.png

    3. 查看函数调用图发现,任然是在sub_401280处,srrcmp函数输入,fprintf函数输出
      LUetwd.md.png

    4. 与crackme1.exe一致,都是输入文件名与 I know the secret才得到正确输出
      LUeBSf.md.png

    5. 与之前不同的是,得到正确输出前,需要对文件有文件名的判断
      LUeXfx.md.png

    6. 复制一个文件,并修改输入为 crackmeplease.exe "I know the secret",得到正确输出
      LUmSXD.md.png

    3.3 分析一个自制恶意代码样本rada并回答问题

    • 通过 md5sum RaDa.exe 指令得到其md5摘要。利用 file RaDa.exe 识别出这是32位GUI文件
      LUmRDe.png

    • 在字符串窗口中,更改显示类型为Unicode,可以查找到作者以及创作时间
      LUm54I.md.png

    • 如图所示,它会使用http协议连接到IP地址为10.10.10. 10的目标主机下的一个名为RaDa_commands的网页上,下载并上传cgi,同时在被害者主机的C盘创建一个文件夹 C:/RaDa/tmp 来保存其下载的文件,并且还将该程序文件RaDa.exe复制到了 C:\RaDa\bin 目录下
      LUnGad.md.png

    • 这个程序会进行DDos攻击,并实现对注册表的读写删除等操作
      LUnRzV.md.png

    • 这个程序还会进行 下载、截屏、睡眠等一系列的操作
      LUnXQK.md.png

    • 回答问题

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

    该二进制文件的摘要为caaa6985a43225a0b3add54f44a0d4c7,并且也得知了它是一个PE可执行文件,同时采用了压缩壳技术(UPX)

    1. 找出并解释这个二进制文件的目的

    该二进制文件是一个后门程序,会通过http协议请求访问页面,并得到受控主机的操作权,同时也可以进行DDos注入buff攻击

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

    该文件会自动安装进C盘中,并修改注册表跟随系统开机自启动。同时会进行修改注册表的操作,还可以解析指令并执行指令

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

    采用了UPX加壳技术,即压缩壳

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

    该二进制文件不具备传染性,也不具备自我复制的能力,所以并不是蠕虫病毒。并未将自己伪装成一个良性程序,所以不是木马软件,推测为一个后门程序。

    1. 给出过去已有的具有相似功能的其他工具

    木马Bobax、海阳顶端、木马Setiri、Mirai(使用一系列物联网设备对全球各种目标发动DDoS攻击)等

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

    该二进制文件于2004年被Raul siles和David Perze所开发。必须在明文条件,即已经脱壳处理的条件下才可以找到。

    3.4 取证分析实践

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

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

    • 因特网中继聊天(Internet Relay Chat),简称 IRC。IRC 的工作原理非常简单,只需要在自己的 PC 上运行客户端软件,然后通过因特网以IRC 协议连接到一台 IRC 服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流。相当于微信,只占用很小的带宽资源
    • 注册时需发送的消息有三种,分别是口令,昵称和用户信息,注册完成后,客户端就需要使用JOIN信息来加入频道Channel
    • IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。SSL 加密传输在 6697 端口。

    Q2:僵尸网络是什么?僵尸网络通常用于什么?

    • 僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
    • 僵尸网络通常用于:可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或 个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。有拒绝服务攻击、窃取秘密、滥用资源、僵尸网络挖矿、手机僵尸网络

    Q3:蜜罐主机(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
      LUloCj.md.png

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

    • 输入 sudo apt-get install tcpflow安装,输入tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667' 得到三个文件
      LU1tiQ.md.png

    • 使用管道命令 cat 209.196.044.172.06667-172.016.134.191.01 152 | grep -a "^: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个
      LU81US.md.png

    Q5:哪些IP地址被用于攻击蜜罐主机?

    • 输入 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 > 2429.txt;wc -l 2429.txt 可以将统计得到的ip保存进2429.txt中
      LUGuRJ.md.png
      LUGls1.md.png

    Q6:攻击者尝试攻击了那些安全漏洞?

    • 输入 snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii 查看网络分流情况,如图所示,可以看到极大一部分是TCP包,很小一部分是UDP包
      LUG8Z6.md.png

    • 筛选TCP数据包,输入命令 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 可以查看到,TCP端口有135、139、25、445、4899、80.
      iSxZA.png

    • 筛选UDP数据包,输入命令 tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq 查看到UDP端口有137
      ioe5R.png

    • 使用wireshark查看TCP的25、135端口,可以看到只是进行了简单的TCP链接
      iogH0.png
      io9mJ.png

    • 查看139端口,发现了NBSS包和SMB包(客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源。)
      ioXrW.png

    • 查看445端口,发现了PSEXESVC.EXE的可执行文件,这是可以利用远程控制运行被害主机,并且获取其权限,常用于内网渗透

    • 查看80端口 发现了大量的C,结合前面所学知识,有可能攻击者发动缓冲区溢出攻击来获取主机权限。

    • 在源地址为 218.25.147.83 的数据包中,发现了蠕虫病毒攻击

    Q7:那些攻击成功了?是如何成功的?

    • 通过上述分析可知,该攻击的发起者是 218.25.147.83,通过蠕虫病毒攻击实现

    四、问题发现以及解决

    在调用file md5sum等参数的时候,发现windows系统中没有相对应的应用

    • 在官网进行下载,并在环境变量中添加对应的dll库

    五、实践感悟

    • 本次实验难度明显提示,在实验之前我需要弄懂一些例如IDA PRO等软件的使用方法,还要有一定量的汇编语言的知识储备,尤其是在分析二进制文件的过程中,各种各样的寄存器就让我眼花缭乱,只能浅浅的理解一些底层逻辑。通过本次实验,我更好得理解了,如果想要学好网络攻防这门课,重点在于实践,必须动手操作,每一个指令都必须自己去完成,从而提高自身能力。同时我也发现,现在的网络攻击五花八门,我们想要保护自己的系统,首先要学会攻击系统,只有搞清楚恶意代码的原理,才能更好得防范恶意攻击。
  • 相关阅读:
    使用 Visual Studio 来调试 dll 文件
    模拟CRC达到反调试的目的
    [CrackMe]一个关于读取文件并进行运算判断的CrackMe
    VT开启前的检测与开启
    一顿操作之后成功在win7 64版本输出VT是否可用
    C#3.0新增功能09 LINQ 基础06 LINQ 查询操作中的类型关系
    C#3.0新增功能09 LINQ 基础05 使用 LINQ 进行数据转换
    C#3.0新增功能09 LINQ 基础04 基本 LINQ 查询操作
    C#3.0新增功能09 LINQ 基础03 LINQ 和泛型类型
    C#3.0新增功能09 LINQ 基础02 LINQ 查询简介
  • 原文地址:https://www.cnblogs.com/meeyee/p/16156612.html
Copyright © 2020-2023  润新知