其他分享
首页 > 其他分享> > 恶意代码安全攻防

恶意代码安全攻防

作者:互联网

恶意代码安全攻防

所属课程 网络攻防实践
课程要求 第九周作业

1. 实践内容

1.1 恶意代码

1.1.1 定义与分类

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

分类:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸程序、内核套件 ,融合型恶意代码。

1.1.2 计算机病毒
1.1.3 网络蠕虫
1.1.4 僵尸程序与僵尸网络
1.1.5 Rootkit

1.2 恶意代码分析方法

分析环境:隔离的分析环境,分为简单连接不同系统平台的计算机的私有局域网段,虚拟蜜网结构,或特定的研究用自动分析环境等。

1.2.1 静态分析技术:
  1. 反病毒软件扫描:使用现成的反病毒软件分析样本代码。
  2. 文件格式识别 :file命令识别大妈文件格式。
  3. 字符串提取分析:利用专用工具(strings)搜查代码中字符串信息,包括恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息、Email地址、库和函数调用等。代码有可能会被strip处理或加壳(将提取出乱码)。
  4. 二进制结构分析 :利用binutils工具获取执行文件编译链接的信息;nm命令查找所用编译器或一些符号。
  5. 代码结构与逻辑分析 :利用IDA Pro 等逆向分析工具获取代码结构(函数调用关系和程序控制流)。
  6. 加壳识别与代码脱壳:对不同壳进行识别并利用相应的脱壳工具进行脱壳。
1.2.2 动态分析技术(激活部分代码):
  1. 基于快照比对:利用RegSnap对恶意代码运行前后的系统快照进行比对分析。
  2. 系统动态行为监控 :针对恶意代码对文件文件系统(工具:Filemon)、运行进程列表、注册表等方面的行为动作进行实时的监视、记录和显示。基于行为通知(Notification) 机制API劫持 (API Hooking) 技术。
  3. 网络协议栈监控 :在本地网络的一台主机利用tcpdump或wireshark对攻击时网络数据进行嗅探。
  4. 沙箱技术 :提供受限制的执行环境,使得在其中运行的代码不能修改用户系统 。
  5. 动态调试:利用动态调试器调试恶意代码。

2. 实践过程

2.1 恶意代码文件类型识别、脱壳与字符串提取
2.1.1rada恶意代码样本的文件格式、运行平台和加壳工具
  1. 使用命令 file RaDa.exe获取其文件格式及运行平台,文件格式问PE32,运行平台为windows:

  1. 使用PEiD工具识别加壳类型,发现加壳类型为UPX:

2.1.1对rada恶意代码样本进行 脱壳处理

使用超级巡警这个软件进行脱壳 ,得到脱壳后的文件Radaunpacked.exe:

2.1.1使用字符串提取工具从中发现rada恶意代码的编写作者

e...strings命令好像不大行,找不到像作者的字符串,这里使用IDA Pro。分析脱壳文件发现作者信息DataRescue sa/nv:

2.2 分析Crackme程序

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

看题目知需要执行这两个程序了。

首先对文件格式进行识别,这两个都是PE32结构:

使用IDA Pro对crackme1.exe进行分析,得到一大堆汇编语句...

没头绪,先执行crackme1.exe,并尝试输入一些字符,根据结果猜测程序通过比对输入与预设字符串,匹配则输出相应信息,故猜想其中存在条件匹配模块,并随之链接输出模块。

故接下来查看函数调用图。

发现从入口开始,链接输出的模块为sub401280,故查看该模块,观察下面代码,推测功能为:在对寄存器内容作出比较匹配后,满足条件即跳入loc4012D,调用strcmp函数比较两个栈内的字符串,进行条件测试,满足条件跳入loc401310,输出“YouknowHowTOSp”:

故猜测输入内容应为 “I know the secret”,测试后结果:

同理对crackme2.exe执行如上操作,其中有段代码比较了“crackmeplease.exe”,然而才跳入信息的验证。否则还会提示“i have an identity”,认证错误,如果不是输入字符有错的话,那就是说上面的“crackmeplease.exe”是运行程序名咯。于是将crackme2.exe改名后进行了验证有结果:

2.3 样本分析实践
1. 提供对这个二进制文件的摘要

使用md5sum RaDa.exe获取该二进制文件的摘要:

一些基本的识别壳以及文件类型上面已经说过,现在使用IDA Pro进行分析:

2.找出并解释这个二进制文件的目的,识别并说明这个二进制文件所具有的不同特性 ,识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术 ,分类,开发作者
开发作者,识别和特性:

上面已经分析过了;

目的,分类:

调出其函数调用图,发现结构有点复杂,不好下手。查看字符串看看有什么可以利用的信息:

根据字符串提供的一些信息,猜想该文件通过网页下载文件到c盘中,然后感染c盘文件。程序执行后又开始“DDoS”远程攻击?猜测以该主机为跳板,继续攻击其他主机?所以猜测该文件可能远程后门控制或为基于http的僵尸程序?

下面这些字符串应该是该程序干了些啥的提示,执行后访问几个ip,进行一些操作后进行了截屏:

尝试运行该软件并看看其干了些什么:主要是建立了RdDa及其他的一些文件,还想使用浏览器访问ip,但由于断网被拒绝了。根据字符串提供的信息,应该是想访问10.10.10.10/RaDa下载一个可执行文件,以进行接下来的攻击。

防止被分析或逆向工程的技术

加壳。UPX壳。

2.3 取证分析

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

因特网中继聊天(Internet Relay Chat),简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。IRC的工作原理非常简单,只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。

发送的消息有三种:口令、昵称、用户信息,格式为USER 、 PASS 、 NICK 。

明文传输端口:6667 ;SSL加密传输端口:6697 。

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

见上文。

3. 蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信

使用wireshark对通信包进行过滤,指令为 ip.src == 172.16.134.191 && tcp.dstport == 6667 ,得到五个ip : 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为服务器的僵尸网络

使用指令ip.dst == 209.196.44.172 && tcp.port == 6667进行筛选,将筛选出的source ip放入python set中,计算该set长度。思路就是这样了,但是资源导出好像有点麻烦,以后有时间再补充吧。

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

难顶,同样是上面的方法。

6,7. 攻击者尝试了哪些安全漏洞? 哪些攻击成功了?是如何成功的?

键盘失灵...很多指令打起来太麻烦了。通过参考同学博客,对响应的tcp端口135,139,25,445,4899,80 ,udp端口137 分别进行数据分析,其中,udp137数据显示ARP查询数据。

tcp135 端口和tcp25端口只是进行连接,没有data交互,应该只是进行了扫描。

tcp139端口为smn服务扫描,多个ip同蜜罐尝试建立网络服务连接。

tcp445端口,这个不用看数据都应该知道有很大可能被攻击了。。忽略连接过程,直接最终连接后的数据流可知过两次攻击ADMDLL注入和PSINFSVC攻击,后者失败了,前者可能成功了吧。

tcp4899端口,这个端口数据交换唯一的特点貌似是诸如以下格式的数据:

tcp 80端口,这个端口交换数据特别多,想来应该是下载些东西。通过最终数据流发现访问的是IIS服务器,那可能的攻击就可以很多了。不过没有分析出什么东西。。不过有同学发现有ip访问了蠕虫网站。

学习问题

  1. 键盘坏了,使用虚拟键盘写作业太慢了,在虚拟机中执行命令就更难了

    解决:等快递中。。

  2. 导出wireshark数据麻烦,直接提取.dat数据字段又得自己写过滤,麻烦

  3. 分析大量数据时,有点烦躁

  4. 不清楚汇编命令

实践总结

分析的有点粗糙。

标签:分析,攻防,exe,恶意代码,端口,安全,主机,IRC
来源: https://www.cnblogs.com/chl233/p/12807488.html