恶意代码定义与分类
- 恶意代码定义:使计算机按照攻击者的意图执行以达到恶意目标的指令集
- 恶意代码类型:恶意代码可以根据其执行方式、 传播方式和对攻击目标的影响分为计算机病毒、蠕虫、恶总移动代码、 特洛伊木马 、 后门、 僵尸程序、 内核套件等
- 计算机病毒的感染及引导机制:可执行文件、引导扇区、支持宏指令的数据文件
- 计算机病毒的传播机制
计算机病毒
计算机病毒是指编制或者在计算机程序中插入的, 破坏计算机功能或数据、影响计算机仗用, 并能自我复制的一组计算机指令或者程序代码
- 计算机病毒基本特性:感染性、潜伏性、可触发性、破坏性、衍生性
- 计算机病毒的传播渠道包括移动存储、电子邮件及下载、共享目录等。
网络蠕虫
-
网络蠕虫是一种通过网络自主传播的恶意代码
-
网络蠕虫的基本特性:
-
网络蠕虫的组成结构:
后门与木马
- 后门:对千后门工具而言, 攻击者希望它能够持续地在目标系统中运行, 并且在系统重启之 后能够仍然随着系统进行启动, 这样才能够保证他对目标系统的随时控制
- 特洛伊木马:攻击者设计出了无数的木马欺骗和伪装技术方法, 将恶意功能隐藏在木马程序中, 并植入到目标计算机系统中,这些技术包括简单而有效的命名伪装游戏、使用软件包装工具、 攻击软件发布站点、 代码下毒等。
僵尸程序与僵尸网络
- 僵尸网络(botnet)是在网络蠕虫、特洛伊木马、 后门工具等传统恶意代码形态的基础 上发展融合而产生的一种新型攻击方式。
- 僵尸程序的命令与控制机制:①基于IRC协议的命令与控制机制②基于HTTP协议的命令与控制机制③基千P2P协议的命令与控制机制
Rootkit
通过控制目标计算机操作系统的关键组件, 来为攻 击者提供强有力的手段, 用来获取访问并隐藏在系统中
恶意代码静态分析技术
- 反病毒软件扫描:反病毒软件进行扫描的方法充分利用了反病毒业界对恶意代码样本的积累性专业知识、 经验和分 析实践, 能够为你自己的分析提供一些有用的信息帮助。
- 文件格式识别:文件格式识别能够让我们快速地了解待分析样本的文件格式
- 字符串提取分析:利用一些专用的字符串提取工具, 我们可以彻底地搜查目标程序, 并提取出程序中3个或更多的连续可打印字符所组成的全部字符串
- 二进制结构分析:事实上, 我们先前介绍的字符串提取工具 strings 命令只是 binutils家族的一员, 除此之外,binutils还有两个我们经常会使用的命令, 叩nm 和objdump。
- 反汇编与反编译:反汇编与反编译是对二进制程序编译链接的逆过程, 反汇编是把二进制程序的目标代码从二进制机器指令码转换为汇编代码的处理过程, 而反编译则更进一步, 期望将汇 编代码再进一步还原成高级编程语言形式的源代码。
- 代码结构与逻辑分析:在代码结构与逻辑分析过程中, 一些功能强大的逆向分析工具, 如 IDA Pro, 为分析师提供了一些辅助分析功能, 从而帮助分析师更好地理解恶意代码的程序结构与功能逻辑
- 加壳识别与代码脱壳:对于恶意代码的加壳识别,可以使用如PE心、pe-scan 、 PE Sniffer、fileinfo 、 Exeinfo PE 、 DiE、 FastScanner 、 FFl等文件格式识别工具, 这些工具除了能够识别文件格式类型之外,还能给出文件使用的加壳软件、采用的编译器等额外信息。在识别出恶惹代码所使用的加壳工具之后 , 下一步就是进行脱壳, 恢复出恶意代码加壳之前的原有形态,对于常见的加壳工具如UPX、 PEPack、 ASPack等, 拥有相应的脱壳工具
恶意代码动态分析技术
- 基千快照比对的方法和工具:针对恶意代码动态分析的快照比 对方法也是首先对原始的的系统资源列表做一个快照, 然后激活恶意代码并给予充分的运行时间, 之后我们再对恶意代码运行后的系统资源列表进行快照, 并对比两个快照之间的差异, 从而获取恶意代码行为对系统所造成的影响
系统动态行为监控方法
系统动态行为监拧通常基于行为通知(Notification)机制或者API劫持技术(API Hooking)实现
网络协议栈监控方法
对千恶意代码的网络行为,除了从恶意代码运行平台本地的网络协议栈进行监拧之外。
沙箱技术
沙箱技术提供了受限制的执行环境, 使得在沙箱中运行的代码不能够修改用户系统, 从而提供了一个用于运行不可信程序的安全环境。
动态调试技术
动态调试是在程序运行时刻对它的执行过程进行调试 (debugging) 的技术过程
实践任务: 对提供的rada恶意代码样本, 进行文件类型识别, 脱壳与字符串提取, 以获得rada恶意代码的编写作者, 具休操作如下. (I)使用文件格式和类型识别工具, 给出rada恶意代码样本的文件格式、 运行平台和 加壳工具。 (2) 使用超级巡警脱壳机等脱壳软件, 对rada恶意代码样本进行脱壳处理。 (3) 使用字符串提取工具, 对脱壳后的rada恶总代码样本进行分析, 从中发现rada恶意代码的编写作者是谁?
-
文件格式和运行平台:命令为file $path$/rada.exe,如图可以看见它的运行环境,还可以知道它是一个可执行文件,而且具有图形化窗口
-
利用PEiD(查看Windows PE文件的基本信息的工具)查看加壳工具
-
脱壳使用超级巡警脱壳机v1.3 ,截图如下
-
字符串提取:这边对脱壳后的文件进行字符串的提取,这是可以查看到调用的相关函数
实践挑战: 使用 IDA Pro 静态或动态分析 crackmel.exe 与 crackme2.exe, 寻找特定的输入, 使其能够输出成功信息。
-
首先是查看一共需要几个参数,发现只有一个参数时,输出信息不同,确定一个参数
-
对crackme1.exe进行分析,使用IDA打开相应程序
-
查看明文字符串发现有两个没有出现过的答案
-
进入View->Graphs->Function calls 查看调用情况发现401280段出现C语言匹配字符串的函数
-
查看程序段,发现调用strcmp函数,与"I know the secret"进行比较
-
cmd验证(这里之前验证是一个参数,需要调用字符串,要把双引号带上作为一个参数,否则会出错):
crackme2.exe部分:
-
IDA查看明文字符串,发现五个字符串很可疑,猜测仍然为“I know the cecret”,但是不知道用在哪里
-
进入View->Graphs->Function calls 查看调用情况发现401280段出现C语言匹配字符串的函数
-
flow chart 图发现有两个参数和cmd判断参数两个时却有问题,看来事情没有那么简单
- 查看flow chart图 发现过了一层,验证crackmeplease.exe 发现不对,往下看发现其中一个参数是"I know the secret",但是对比flowchart图,发现和上层只差一个add eax,4这里我们明白第一个参数是程序名和crackmeplease.exe比较,于是修改原文件名cmd得出正确结果
回答问题:
- 提供对这个二进制文件的摘要, 包括可以帮助识别同一样本的基本信息。
- 找出并解释这个二进制文件的目的。
- 识别并说明这个二进制文件所具有的不同特性。
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
- 对这个恶意代码样本进行分类(病毒、 蠕虫等), 并给出你的理由。
- 给出过去已有的具有相似功能的其他工具。 奖励问题:
- 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
首先使用MD5对该恶意程序进行摘要信息分析,执行file RaDa.exe分析该恶意程序的运行环境
脱壳过程如实践一,分析:打开监视工具process explorer 和wireshark开启监听,点击运行脱完壳的恶意程序RaDa_unpacked.exe
分析其程序运行详细信息如下:该恶意程序首先使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,下载和上传某些文件,接着在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件,往下发现该恶意程序中可执行DDos拒绝服务攻击,再往下看发现对主机注册表进行了读写和删除操作,接下来执行了上传,下载,休眠,屏幕截图的命令
然后我们打开注册表(路径如上图)查看并未发现有关于RaDa的信息,可以看出恶意程序已经删除了注册表信息
往下看有一条查询受害者主机上可用的网络适配器的数据库查询语句,以及作者信息
把wireshark监听的数据分析一下,可以看到受害主机向目标主机10.10.10.10发送了大量的数据包,但是使用追踪数据流,并没有发现任何信息
1.这个二进制文件摘要信息:
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7 PE格式:运行在Windows 2000, XP and 2003及以上版的操作系统中 使用了UPX加壳工具进行了加壳处理 2.这个恶意文件的目的 该文件是一个http后门程序,当连接上互联网时,该程序就会通过http请求连接到指定主机,进行接受攻击者指令操作
3.识别并说明这个二进制文件所具有的不同特性 其运行时,在C盘下创建了一个RaDa目录,里面一个bin文件夹,一个tmp文件夹,tmp是用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息。bin文件夹里面安装了一个RaDa.exe可执行文件,且我点击运行的文件不在桌面上显示,除非查看进程
4.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术 该文件使用了UPX加壳,不经过脱壳处理是无法进行反编译分析的,直接提取的字符串信息为乱码,所以这边如果在实验三运行原程序,process explorer 也会显示乱码
5.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由 未发现该程序会自我复制和传播,也没有将自己伪装成其他程序,不符合木马和病毒的特征,该程序执行需要通过攻击者远程发送指令 判定其为后门程序
6.给出过去已有的具有相似功能的其他工具 海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接
7.可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下? process explorer图中已给出
- IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息? JRC 一般使用哪些TCP端口?
因特网中继聊天(Internet Relay Chat),简称 IRC 。 IRC 的工作原理非常简单,只要在自己的 PC 上运行客户端软件,然后通过因特网以 IRC 协议连接到一台IRC服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。它往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。 3. 蜜罐主机CIP地址: 172.16.134.191)与哪些IRC服务器进行了通信?
使用 Wireshark 打开被分析的日志文件,设置以下过滤条件: ip.src == 172.16.134.191 && tcp.dstport == 6667
- 在这段观察期间, 多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
打开终端,读取文件,筛选 host 和端口 6667 后进行分流,生成一个 report 文件和两个分流的文件: tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
接着执行以下两条命令,避免出现字符编码问题。
- export LC_COLLATE='C'
- export LC_CTYPE='C'
然后利用如下指令进行搜索有多少主机连接(grep搜索获取昵称输出行sed去除前缀,g表示全局,tr将空格转换为换行,tr -d删除 ,grep -v就是NOT指令,去除空行,sort -u排序并去除重复,wc -l输出行数)
cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]x