首页 > 其他分享 > Exp4 恶意代码分析

Exp4 恶意代码分析

时间:2023-04-06 22:45:50浏览次数:36  
标签:分析 exe 快照 Windows 恶意代码 程序 Exp4

一、实验目的

1.是监控你自己系统的运行状态,看有没有可疑的程序在运行。

2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

3.假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

二、实验内容

1.系统运行监控

(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。

(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

2.恶意软件分析

分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

(3)读取、添加、删除了哪些注册表项。

(4)读取、添加、删除了哪些文件。

(5)连接了哪些外部IP,传输了什么数据(抓包分析)。

三、实验过程

1.使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)

在命令行中输入以下命令,创建任务计划netstat1203。schtasks /create /TN netstat1203 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt

在C盘中创建一个脚本文件 netstat1203.bat
因为不能直接写入.bat文件,所以我在C盘创建了一个netstat1203.txt文本文件,并写入以下内容:

date /t >> c:\netstat1203.txt 
time /t >> c:\netstat1203.txt 
netstat -bn >> c:\netstat1203.txt

修改后缀名为.bat

在Windows的任务计划程序中,可以查看到新创建的任务:

双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的 netstat1203.bat 批处理文件的位置,点击确定。

在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务”,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。

右键点击运行

这时可以看到C盘下出现了文件netstat1203.txt

在wps的Excel表格中分析记录的数据,导入文本数据

新建excel文件->选择上方“数据”->选择“导入数据”->选择“导入数据”->选择“直接打开数据文件”

创建数据透视图

分析:

从图中可以看出位居第一位的是TCP,连接的外部地址是我打开的相关页面的,大多为http和https连接;

从图中可以看出位居第二位的是360tray.exe,这个是360安全卫士木马防火墙模块;他是和360安全卫士一起运行的。

第三多的就是我的chrome.exe,他是chrome浏览器。

第四多的是svchost.exe是系统共享进程,我们可以把他理解为一个宿主或者容器,本身没有任何服务功能。以及WeChat.exe,我的微信一直在登录状态。

2.使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。)

编写xml配置文件:

在sysmon所在的文件夹下:

<Sysmon schemaversion="3.10">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <ProcessCreate onmatch="exclude">     
      <Image condition="end with">chrome.exe</Image> 
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.exe</Image>
      <SourcePort condition="is">137</SourcePort>
      <SourceIp condition="is">127.0.0.1</SourceIp>
    </NetworkConnect>
    <NetworkConnect onmatch="include">     
      <DestinationPort condition="is">80</DestinationPort>      
      <DestinationPort condition="is">443</DestinationPort>    
    </NetworkConnect>

    <CreateRemoteThread onmatch="include">
      <TargetImage condition="end with">explorer.exe</TargetImage>
      <TargetImage condition="end with">svchost.exe</TargetImage>
      <TargetImage condition="end with">winlogon.exe</TargetImage>
      <SourceImage condition="end with">powershell.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>

参数解释:

exclude:相当于白名单,不用记录。include相当于黑名单。

ProcessCreate:进程创建。Image condition要根据自己使用的浏览器更改。由于我使用的是Chrome浏览器,所以在我的配置文件中,排除了(不记录)进程名为Chorme.exe的进程。但是要记录以cmd.exe结尾的进程记录。(大家如果有用别的浏览器的:比如Edge,在这里可以替换)

FileCreatTime:进程创建时间。这里排除(不记录)浏览器进程的创建时间。

NetworkConnect:网络连接。过滤掉(不记录)浏览器的网络连接,源IP地址为127.0.0.1、源端口为137的连接服务。包含(记录)目的端口为80(http)和443(https)的网络连接。

137端口:提供局域网中ID或IP查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。

127.0.0.1:环回地址,表示本机。

CreateRemote:远程线程创建。记录的线程如下:

explorer.exe:Windows程序管理器或者文件资源管理器

svchost.exe:一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。

winlogon.exe:Windows NT 用户登陆程序,用于管理用户登录和退出。

powershell.exe:专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

启动sysmon(要以管理员的身份运行命令行)

进入sysmon的文件夹之后,输入命令Sysmon64.exe -i sysmon20201203.xml,安装sysmon,结果如下

使用事件查看器分析进程

查看路径为/Microsoft/Windows/Sysmon/Operational

在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、级别、任务类别、详细信息等。

运行我们在实验二中生成的后门程序20201203_veil_upx.exe,并启动回连到kali虚拟机中。我们可以在事件查看器中找到此条日志

随后,我在msf监听环境下,输入了shell指令,获得了Windows的cmd

生成日志如下:

在获取到命令行后,还出现一条有关conhost.exe的记录

conhost.exe进程是微软为其Vista以及Win7、Windows 2008(服务器版)系统定义的系统文件,在系统中被称为“控制台窗口主机”。其功能主要是为命令行程序(cmd.exe)提供类似于csrss.exe进程的图形子系统等功能支持。

然后我又输入了ipconfig指令,日志如下:

此时的路径变为了SysWOW64,SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方。
Windows下面的命令行是64位的,而kali回连获得的是32位的,所以会出现此条日志。
在事件查看器中,我们还可以发现许多svchost.exe的记录。svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且是不能被结束的。许多服务通过注入到该程序中启动,所以会有多个该文件的进程。

3.使用VirusTotal分析恶意软件

把keli之前生成的后门程序(已接收到win主机里的)在VirusTotal进行分析(也可以使用VirusScan工具),结果如下:41/69,被杀软查出来的比率还是蛮高的

继续查看此恶意软件的基本属性,可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。

还可以看到此软件的头部、各个节的相关信息,以及引入的动态链接库

4.静态分析——PEiD软件分析恶意软件

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。

扫描模式
正常扫描模式:可在PE文档的入口点扫描所有记录的签名;

深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;

核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。

查看实验二中生成的普通后门文件

软件显示UPX v0.89.6 -v1.02 / v1.05 -v1.22,这个后门软件是加壳过的,PEID显示出了加壳信息。
通过查询资料显示若没有加壳,则显示yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)。

5.使用PE Explorer进行分析

PE Explorer是一款资源编辑器,它支持直接查看、修改软件的资源,包括菜单、对话框、字符串表等,软件还具备有W32DASM 软件的反编译能力和PEditor软件的PE文件头编辑功能。
我们用它打开20201203_veil_upx.exe,我们可以看到这个软件的文件头信息(基本信息),比如节对齐粒度、文件对齐粒度、时间戳、映像基址ImageBase等等

我们通过视图还可以查看数据目录、节头等详细信息

数据目录

节头信息

通过视图——引入可以查看此软件引用的dll

msvcrt.dll:微软在windows操作系统中提供的C语言运行库执行文件。
kernel32.dll:Windows 中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
advapi32.dll是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。xp系统一般位于C:\WINDOWS\system32\目录下,大小659KB。
wsock32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。

6.使用Systracer动态分析

点击右侧的take snapshot,拍摄快照。点击start开始,不用点击stop,当拍摄完毕会自动停止。

我们总共截了以下五张快照:

  • 快照一:未移植后门程序,保存为Snapshot #1
  • 快照二:运行后门程序并在kali中实现回连,保存为Snapshot #2
  • 快照三:在kali中使用dir指令,保存为Snapshot #3

接下来我们对比快照,分析恶意软件在执行过程中系统有哪些变化

  • 通过右下角的compare键或者View Differences Lists比对各快照,可以选择Only Difference只查看不同的项,在右下角可以选择对比哪两张快照

对比快照一和快照二(后门程序运行前后)

  • 点击View Differences Lists——>选中Only differences——>选中Opened Ports

  • 可以看到新增开放了我们的后门程序20201203_veil_upx.exe连接的本地地址和目标地址以及端口号

  • 在Opened Handlers中,我们可以看到增加了一些和后门有关的文件,也删除了一些文件,发生了键值的变化

loaded dll中,查看启动后门程序后增加或删除的dll文件

running processes中,点击 20201217_veil_upx.exe可以与看到与此后门程序相关的系统进程。

对比快照2和快照3 (3运行了dir指令)

在opened ports中看到主机端口与虚拟机ip及相关端口间的交互

7.使用wireshark抓包分析恶意软件

运行后门20201203_veil_upx.exe,在kali中回连。把过滤规则设置为ip.addr == 192.168.113.130 and tcp,只留下与kali机有关的包

我们可以看到前三个包为TCP连接的三次握手

在kali中输入dir,发现wireshark又捕获到了许多PSH+ACK包,可以判断有数据在传输.

四、实验后思考问题

1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。

  • 使用windows自带的schtasks指令,设置一个计划任务,监视系统进程的运行情况。在一段时间后,将所得数据在Excel中得到数据透视图,继续进行分析。
  • 使用Sysmon,编写配置文件,记录有关的系统日志
  • 受到实验的启发,我们可以在系统里安装一个审计系统,将其开机自启。将产生的一些日志输出出来,遇到有恶意或者不符合常理的行为,基于报警。

2.如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

静态分析法:

  • 恶意代码扫描 标识已知恶意代码
  • 文件格式识别 确定攻击平台和类型
  • 字符串提取 寻找恶意代码分析线索
  • 二进制结构分析 初步了解二进制文件结构
  • 反汇编 二进制代码->汇编代码
  • 反编译 汇编代码->高级语言
  • 代码结构与逻辑分析 分析二进制代码组,理解二进制代码逻辑成结构
  • 加壳识别和代码脱壳 识别是否加壳及类型;对抗代码混淆恢复原始代码

动态分析法:

  • 快照比对 获取恶意代码行为结果
  • 动态行为监控(APIHooking) 实时监控恶意代码动态行为轨迹
  • 网络监控 分析恶意代码网络监听端口及发起网络会话
  • 沙盒(sandbox) 在受控环境下进行完整的恶意代码动态行为监控与分析
  • 动态跟踪调试 单步调试恶意代码程序,理解程序结构和逻辑

五、实验体会

在本次实验的过程当中的难点是对一些工具的使用,因为之前重来没有接触过sysmon和PEiD等软件,所以使用的过程中很吃力,在对软件产生的结果进行分析的时候需要查阅大量的资料,在查询资料的过程中也收获了很多,恶意代码的内部给剖析的很明确,增进了我的理解。最后通过wireshark抓包,使后门软件的恶意行为直观的展示出来。但整体上还比较顺利,每次实验都会收获和学习好多东西,感觉很充实。

标签:分析,exe,快照,Windows,恶意代码,程序,Exp4
From: https://www.cnblogs.com/1314liyang/p/17294357.html

相关文章

  • flask请求上下文分析,源码request原理,wtforms,精确导出依赖,函数和方法,threading.locl对
    内容回顾蓝图第一步:导入第二步:实例化得到对象,可以指定static和templates第三步:app中注册蓝图,注册蓝图时,可以指定前缀第四步:使用蓝图,注册路由,注册请求扩展g对象当次请求的全局对象,在当次请求中可以放值和取值跟session的区别是session可以在多次请求中使用,g对象只在当次请......
  • Set Cover问题的贪心近似算法分析
    问题描述全集\(U=\{e_1,e_2,...,e_n\}\)被划分为一系列的子集\(S=\{S_1,S_2,...,S_k\}\)。且存在一个cost函数\(c:S\rightarrow\mathbb{R}^+\)。目标是挑选子集使其覆盖所有全集\(U\)的元素同时cost最小问题算法该问题是经典的NPC问题。给出其中一......
  • Exp4 恶意代码分析
    Exp4恶意代码分析目录Exp4恶意代码分析实验过程1.系统运行监控1.1使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)1.2使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设......
  • 恶意代码分析
    恶意代码分析基础问题回答如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。监视系统的网络流量以识别任何可疑活动。这可以使用网络监控工具(如Wireshark或tcpdump)来完成。监视......
  • 回归分析-线性回归
    使用kaggle比赛中的公开数据IceCreamData数据来完成温度和销售利润的线性关系。本实例使用python来仿真实现。1.下载数据,IceCreamData需要注册和下载到本地。大体背景是你拥有一家冰淇淋公司,你想创建一个模型,可以根据外部空气温度(度)预测每天的收入。2.导入数据importpan......
  • 网络对抗实验四 恶意代码分析--20201313
    Exp4恶意代码分析目录Exp4恶意代码分析一、实践基础1、实践目的2、实践内容3、实践原理二、实践内容系统运行监控(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。(2)安装配置sysinternals里的sysmon工具,设......
  • Exp4 恶意代码分析 实验报告—20201229赵斌
    Exp4恶意代码分析实验报告—20201229赵斌一、实验目标1.监控自己系统的运行状态,看有没有可疑的程序在运行。2.分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。3.假定将来工作中你觉得自己的主机有问题,就可以用实验......
  • 时间复杂度和空间复杂度分析
    1.七种时间复杂度__上  2.七种时间复杂度__下  3.例题1+n  4.递归的四种情况:后续需要对每一条做出详细描述  5.思考题  ......
  • flask之请求上下文分析之导出项目依赖-函数和方法的区别-threading.local对象-偏函数-
    目录flask之请求上下文分析之导出项目依赖-函数和方法的区别-threading.local对象-偏函数-flask整个生命执行流程--wtforms今日内容详细1请求上下文分析(源码:request原理)1.1导出项目的依赖1.2函数和方法1.3threading.local对象1.4偏函数1.5flask整个生命执行流程(1.1.4版本......
  • flask-day4——pipreqs模块、函数和方法的区别、threading.local对象、偏函数、flask
    目录一、请求上下文分析(源码:request原理)1.1导出项目的依赖(pipreqs模块)1.2函数和方法1.3threading.local对象代码演示自定义封装local,实现兼容线程和协程1.4偏函数1.5flask整个生命执行流程(1.1.4版本为例)二、wtforms(了解)三、作业1、为什么有了gil锁还要互斥锁2、什么是进程,线......