20145221高其_恶意代码分析

20145221高其_恶意代码分析

恶意代码

概述

  • 恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最多见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
  • 特征:
    • 恶意的目的,获取靶机权限、用户隐私等
    • 自己是计算机程序,能够执行,并做用于靶机
    • 经过执行发生做用,通常来讲不运行是没问题的

恶意代码分析

  • 在大多数状况下,进行恶意代码分析时,咱们将只有恶意代码的可执行文件自己,而这些文件并非咱们人类可读的。为了了解这些文件的意义,你须要使用各类工具和技巧,而每种只能揭露出少许的信息。因此在实战中,咱们要综合使用各类工具,才能看到一个全貌。
  • 恶意代码分析有两类基本方法:
    • 静态分析:在没有运行恶意代码时对其进行分析的技术
    • 动态分析:相比较静态分析而言,则须要运行恶意代码,经过其产生的行为,如对计算机中注册表、文件的更改,网络的链接等动态数据进行分析,从而肯定其具体行为

恶意代码

恶意代码分析之静态分析

概述

  • 静态分析技术,能够确认一个文件是不是恶意的,提供有关其功能的信息,能够经过一些PE工具箱(PEview,dependency walker,Resource Hacker,PE explorer等)分析其函数连接库、壳的状况、特征库比对等操做,经过这些工具能够快速分析代码的性质,可是针对较为复杂的恶意代码时很大程度上是无效的;
  • 这就须要更为高级的应用技术了,最典型的方法就是逆向工程,经过将可执行文件装载到反汇编器中,查看程序指令,观察恶意代码到底作了什么。由于这些指令是被CPU执行的,因此经过反汇编能够告诉咱们程序具体作了什么,该方法虽然很是高效实用,可是须要综合掌握C语言、汇编、代码结构以及windows操做系统等知识,上手略微困难。

静态分析之特征库比对

  • 该内容在前几篇博客中都有提到,特征库比对是一种静态分析技术,经过对代码与特征库中的特征码进行比对,判断这个文件是不是为恶意代码,若是是则进一步联系到病毒库中对该病毒的描述,从而确认其行为,达到分析的目的
  • 经过VirSCAN.org平台进行分析以下:
  • 点击“文件行为分析”,能够详细地察看是否有敏感行为,能够发现该文件会有网络链接的行为,自行删除注册表键值的行为

静态分析之PE套件使用

  • 这一部份内容在《计算机病毒》课中庞老师作过简单的讲解,应用到对恶意代码的分析再合适不过了,这也就是学科之间的联系吧~

PE explorer

  • 在虚拟机下经过PE explorer打开文件5221.exe,能够查看PE文件编译的一些基本信息,导入导出表等
  • 以下图,能够看到该文件的编译时间、连接器等基本信息
  • 以下图,咱们点击“导入表”,能够查看该文件依赖的dll库
    • WSOCK32.dllWS2_32.dll,是用来建立套接字的dll库,显然,若是这个程序所介绍的功能中不该该有网络链接部分,那么在其动态连接库中还存在这2个库就显得尤其可疑了
    • 另外图中所显示的ADVAPI32.dll库百度可知:是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。
    • 敏感了吧,注册表的操控,想一想72k的一个小程序还操控注册表,一看就不正经了
    • 另外2个不作过多介绍,属于通常程序在win下都会调用的dll库html

PEiD

  • PEiD是一款著名的查壳工具,其功能强大,几乎能够侦测出全部的壳,其数量已超过470种PE文档的加壳类型和签名。
  • 通过上一次(《20145221高其_免杀原理与实践》)的实践学习,知道恶意代码为了掩护假装本身,另外一种经常使用方式就是加壳,经过加壳来达到不被杀毒引擎特征码察觉的目的
  • 因此通常正常的软件是不会为本身加壳的,若是你从网上下载了一个带壳软件,那么你就要当心了,须谨慎使用该软件;接下来就经过PEiD这款工具分析一下5221.exe看看是否带壳(PS:我将网上提供的PEiD下载到win10虚拟机上发现不能打开文件,因此改用XP虚拟机打开了)
  • “什么都没找到 [调试] ”是否是看着挺伤心,这病毒咋没加壳?其实不是这样的,正常的编译话会显示编译器的,既然没找到,说明不能识别该编译器(可能和PEiD版本有关),因此咱们点击一下上图中的Set Info,看看究竟是怎样的编译器使它不能识别
  • 百度一下UPX不难发现,这就是一个压缩壳工具!因此5221.exe多是一款压缩壳病毒git

Dependency Walker

  • Dependency Walker是一款Microsoft Visual C++中提供的很是有用的PE模块依赖性分析工具,能够查看PE模块的导入模块,查看PE模块的导入和导出函数,动态剖析PE模块的模块依赖性,解析C++函数名称
  • 整体来讲,是一款专门分析函数依赖的工具软件,相比PE explorerPE view对dll文件分析更专业,更细致具体,详情以下图
  • 咱们从中看见了,该可执行文件能够对注册表进行删除操做,这也与VirSCAN.org查杀解雇保持一致。

系统运行监控

TCPView查看恶意代码回连先后状况

  • 该工具能够帮咱们实时分析正在联网的进程,因此咱们能够经过查看每一个进程的联网通讯状态,初步判断其行为,例如一个程序应该是单机运行的,若是有网络行为,就显得很可疑了

sysmon工具查看恶意代码回连先后状况

  • Sysmon.exe同目录下创建文件:test.txt,并输入老师指导书中给的XML
  • 管理员身份运行CMD,输入指令:Sysmon.exe -i test.xml,进行安装
  • 输入指令:Sysmon.exe -c test.xml,进行配置
  • 设置好上述,能够进入Applications and Services Logs/Microsoft/Windows/Sysmon/Operational查看日志,这个过程会很慢,由于有大量日志数据
  • 准备好kali,打开木马5221.exe,查看日志,能够经过搜索功能找到
  • 在回连阶段,我找到2个相关的日志记录
    • 建立网络链接:
    • 建立进程:木马极可能假装成电脑自带的explorer.exe进程

使用计划任务schtasks

  • 使用命令C:\schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt" 建立计划任务netstat
  • 以下图所示:

netstat命令设置计划任务

  • 在C盘中建立一个netstat5221.bat文件
    • 其中写入代码
    date /t >> c:\netstat5221.txt
    time /t >> c:\netstat5221.txt
    netstat -bn >> c:\netstat5221.txt
  • 在任务计划程序中,新建一个触发器
  • 新建一个操做,并设置参数:>> c:\netstat5221.txt
  • 并设置一个名称,给予最高权限
  • 回连后,发现记录了如下回连产生的记录

恶意代码分析之动态分析

概述

  • 动态分析技术,是创建在运行代码的基础上的,经过观察恶意代码执行后系统上的行为,例如对系统注册表的分析、文件的分析、网络的链接等行为,进而判断出该代码具体功能,以移除感染。
  • 但上述操做进行以前,必须得有一个前提——创建一个安全的环境,可以避免恶意代码对系统带来风险的前提下,研究运行的恶意代码。因此通常能够用虚拟机创建一个目标靶机,在对恶意代码目的不明的状况下,先对靶机进行快照备份,而后再运行恶意代码监控其行为,这样的动态分析步骤才会对系统有必定的保障。
  • 再高级一点的就是对代码的动态调试了,经过源代码级与汇编代码级的调试器,对恶意代码进行一步一步调试,观察其执行过程当中每一个时刻的内部状态。

动态分析之SysTracer

  • 这个实验建议在虚拟机中完成,虚拟机中文件少、注册表少,易分析

操做思路与步骤:

  • Step0:准备两台虚拟机,kali攻击机,Win10靶机,SysTracer2.10分析软件
  • Step1:打开攻击机msfconsle,开放监听;win10下对注册表、文件、应用状况进行快照,保存为Snapshot #1
  • Step2:win10下打开木马5221.exe,回连kali,win10下再次快照,保存为Snapshot #2
  • Step3:kali中经过msf发送文件给win10靶机,win10下再次快照,保存为Snapshot #3
  • Step4:kali中对win10靶机进行屏幕截图,win10下再次快照,保存为Snapshot #4
  • 经过比较每次快照文件的区别,来判断相应的变化

结果分析

  • 启动回连时注册表发生变化
  • 启动回连时,新建了5221.exe应用,能够看见它启用了许多DLL文件
    • wow64cpu.dll:wow64cpu.dll是一个进程来自Microsoft Corporation。它能够被发如今C:\位置。这是一个潜在的安全风险,它能被病毒恶意修改。
    • wow64win.dll:同上。
    • ntdll.dll:ntdll.dll是Windows系统从ring3到ring0的入口。位于Kernel32.dll和user32.dll中的全部win32 API 最终都是调用ntdll.dll中的函数实现的。ntdll.dll中的函数使用SYSENTRY进入ring0,函数的实现实体在ring0中。
    • Intel的x86处理器是经过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的权限,RING3层拥有最低的权限。按照Intel原有的构想,应用程序工做在RING3层,只能访问RING3层的数据,操做系统工做在RING0层,能够访问全部层的数据,而其余驱动程序位于RING一、RING2层,每一层只能访问本层以及权限更低层的数据。小程序

    • 综合以上描述,该程序能够获取到RING0权限,具备较高的侵略性。
  • 启动回连时开放端口发生变化,以下图所示,由于本地木马5221.exe会链接远程端口443,因此先关闭了443端口,再开放了443端口
  • 安装到目标机时,文件内容监控发现多了个文件
  • 截屏时注册表发生了一些变化

wireshark抓包分析

  • 设置IP过滤格式:ip.src==192.168.18.128 or ip.dst==192.168.18.128以下图所示,捕捉到了靶机回连kali时经过TCP的三次握手协议过程
  • 设置IP过滤格式:ip.src==192.168.18.128 and ip.dst==192.168.18.129以下图所示,捕捉到了靶机kali向虚拟机win7发送文件的数据包

总结与思考

  • 恶意代码不只能够经过一些工具来进行静态分析,并且还能够经过动态的手段来防御。例如咱们电脑自带的Windows Defender,IDS,还有杀软的防御功能,对系统都是一种监控;可是这种监控咱们没法直接看到,一般都是自动处理了,只能留下清除的记录,不过咱们能够经过一些动态监控软件,例如SysTracer、SysinternalsSuite、ProceMonitor等一些工具,能够搜集一段时间内系统注册表、文件等的变化;
  • 若是怀疑一台主机上有恶意代码,应当首先更新病毒库,并对敏感怀疑位置进行病毒查杀,若是没有找到,应该开启相关病毒扫描引擎,对计算机进行动态扫描,而后打开相应的监视器,查看有没有可疑注册表、进程,经过注册表中的可疑项或者进程,右键能够打开文件所在位置,对特定的文件进行详细的静动态分析,最终确认是否为恶意代码;
  • 恶意代码分析是一种解剖恶意代码的艺术,须要了解恶意代码是如何工做的、如何识别它,以及如何打败它消除它,经过此次的实践,对恶意代码的基本分析仍是不算很难的,静态动态的分析方法综合应用,基本上就能够确认一个代码的行为了,根据以上方法,咱们不用过渡依赖于杀毒软件给咱们的杀毒报告,能够对有所怀疑的软件进行自主分析,最后作出本身的决定是否对其查杀。
相关文章
相关标签/搜索