zoukankan      html  css  js  c++  java
  • 201181308邵壮 Exp4 恶意代码分析

    Exp4 恶意代码分析

    一、实验目标与内容

    1.实践目标

    • 监控你自己系统的运行状态,看有没有可疑的程序在运行。
    • 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件
    • 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    2.实践内容

    2.1 系统运行监控

    • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
    • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点是可疑行为。

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

    • 读取、添加、删除了哪些注册表项
    • 读取、添加、删除了哪些文件
    • 连接了哪些外部IP,传输了什么数据

    二、实践步骤

    1.使用schtasks指令监控系统

    1.使用命令schtasks /create /TN netstat1308 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt" 创建计划任务nestat1308

    上条命令中的参数分别为:

    • TN是TaskName的缩写,我们创建的计划任务名是netstat5308;
    • sc表示计时方式,我们以分钟计时填MINUTE;
    • TR是Task Run,要运行的指令是netstat
    • bnb表示显示可执行文件名,n表示以数字来显示IP和端口;
    • >表示输出重定向,将输出存放在c: etstatlog.txt文件中

    image

    2.在C盘中创建一个名为netstat1308.bat的脚本文件,写入以下内容:

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

    3.打开任务计划程序,可以看到新创建的这个任务:

    4.双击此任务,点击操作->编辑,将程序或脚本改为我们创建的netstat1308.bat文件,点击确定。
    image

    • 在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务” ,那么使用电池电源时就会停止任务。这里根据个人习惯,选择是否勾选。
    • 接着,在“常规”栏下选择“使用最高权限运行” ,否则可能导致文件不能自主更新或者记录里出现权限问题,点击确定保存。
    • 右键点击,运行任务。
    • 第一时间任务就会开始运行,生成所需txt文件,也可以等待一段时间,积累一定数量的所需数据。

    对收集到的数据进行统计。在C盘目录下,出现了一个netstat1308.txt 的文件,可以在其中查看联网数据。
    image
    通过参考学姐的博客将存储的数据导入到excel表中进行整理,按照博客中所述调整添加到报表中的字段即可

    整理好的数据图表如下:

    image

    也可汇总成柱状图观察:

    image

    从图表中我们可以观察出,联网最多的程序是360浏览器和qq,因为过程中一直在使用浏览器查找东西,qq也一直挂着。总体来讲并没有发现什么可以的程序。

    2.使用sysmon工具监控系统

    1.

    下载Sysinternals套件,Sysmon是该套件中的一个工具,可以监控几乎所有的重要操作。

    2.

    确定要监控的目标。对信任的程序设置白名单,让信任程序尽量不要记到日志里,日志多了不好分析。

    3.

    过滤器事件的选项:

      • 进程创建ProcessCreate的过滤事件选项有:
    UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
    
      • 进程创建时间FileCreatTime的过滤事件选项有:
    UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
    
      • 网络连接NetworkConnect的过滤事件选项有:
    UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
    
      • 远程线程创建CreateRemoteThread的过滤事件选项有:
    UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetIm
    

    4.

    明确了要监控的目标后,在Sysmon所在的目录下创建相应的配置文件sysmon20181308.xml了,我的配置文件如下:

    <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">Explorer.exe</Image>
    <Image condition="end with">360se.exe</Image>
    </ProcessCreate>
    
    <FileCreateTime onmatch="exclude" >
    <Image condition="end with">Explorer.exe</Image>
    <Image condition="end with">360se.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
    <Image condition="end with">Explorer.exe</Image>
    <Image condition="end with">360se.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>
    
    

    这里在任务过程中不做太多要求,但要明确各个标签的概念。

    • <Sysmon schemaversion="3.10">中的3.10意味当前Sysmon的版本为3.10版本,这个版本可以右键点击Sysmon,在属性中查看详细信息获知.(版本号会在属性中显示为4.12,但是代码设定为4.12的话会报错,提示真正的版本号为3.10)

    image

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

    • ProcessCreate:进程创建。Image condition要根据自己使用的浏览器更改。由于我使用的是360和edge浏览器,所以在我的配置文件中,排除了(不记录)进程名为msedge.exe和360se.exe的进程。但是要记录以cmd.exe结尾的进程记录。

    • 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 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

    5.

    • 以管理员身份运行CMD在Sysmon64.exe目录下执行.`Sysmon64.exe -i sysmon20181308.xml`

    (Windows+X :以管理员身份运行)(如果修改了配置文件,要运行指令:.Sysmon64.exe -c sysmon20181308.xml)

    运行成功后会跳出sysmon的安装程序。

    image

    弹出窗口后点击agree

    安装成功后结果如下:

    image

    6.

    打开计算机管理,查看事件查看器,在应用程序和服务日志/Microsoft/Windows/Sysmon/Operational中,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别以及详细信息。
    image

    分析实验二生成的后门程序,首先按照exp2执行回连kali

    image

    点击Sysmon-Operational刷新记录,在15:45:43找到运行后门文件Wuhu20181308.exe。同样,在kali中也能看到实际连接时间也为15:45:43。

    image

    kali中执行shell获取cmd。

    image

    同样在事件查看器中可以观察到对应进程。

    image

    它的显示目录在后门所在的目录下,很显然就是我们要找的!

    SysWOW64可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd程序是32位的!

    3.使用VirusTotal分析恶意代码

    • 把生成的后门程序在VirusTotal进行分析(也可以使用VirusScan工具),结果如下:51/69,被杀软查出来的比率还是蛮高的

    image

    • 继续查看基本属性细节等 details 可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。

    image

    4.使用PEiD分析

    • ​ PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
    • 首先我们用它来检查最普通的后门程序Wuhu20181308.exe

    image

    • ​ 接下来检查实验三中进行10次编码的后门程序

    image

    因为虚拟机的问题,实验三的很多后门程序丢失了,所以只能检查少数几个程序,如果检查压缩壳的程序,就会查到压缩壳的相关信息。加密壳的话就检查不出来。可能是库里没有相关信息吧。

    5.使用PE Explorer分析

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

    image

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

    image

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

    image

    相关dll说明

    • kernel32.dll:Windows 中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
    • user32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
    • msvcrt.dll:微软在windows操作系统中提供的C语言运行库执行文件。
    • wsock.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。

    我检查其他几个后门程序后发现,他们都引用了kernel32.dll,可以看出他对于后门程序的重要性。

    6.使用systracer动态分析

    • 下载systracer,安装并进行捕包分析systracer
    • 进入安装选择第二个,next设置端口为1308(后门生成时利用的端口),安装完成后进入界面

    image

    • 捕获五个快照如下:

    在打开后门前先快照一下,点击take snapshot,接着Start

    等待创建完成,成功后默认名称为Snapshot #1

    image

    开启后门程序回连kali,此时创建第二个快照Snapshot #2

    然后kali中输入ls命令,创建第三个快照Snapshot #3

    进行分析:

    点击上方“Applications”->左侧“Running Processes”->找到后门进程“Wuhu20181308.exe”

    image

    在快照界面“Snapshots”右下角点击“Compare”,可以比对一下不同快照间计算机发生的变化:

    所有蓝色标注的地方,就是前后发生变化的地方。例如,我发现不同快照中间的时间,之前设置的联网数据netstat文件进行了修改:
    image
    image
    image

    此外还对注册表中hkey_local_machine根键的System子键进行了修改,修改内容如下:

    image

    • 关于HKEY_LOCAL_MACHINE的介绍:
      • 它保存了注册表里的所有与这台计算机有关的配置信息
      • 被修改的部分是Fastcache,即高速缓冲存储器。HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl这个子键包括了win95控制面板中的信息。不要编辑这些信息,因为一些小程序的改变在很多地方,一个丢失的项会使这个系统变的不稳定。

    此外,一些Systracer未授权的地方我们是没法查看的。

    image

    我们还可以通过查看后门软件的“opened handles”(打开的句柄)来对比他们都做了什么:

    image

    三、实验后问题回答

    1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
    答: 使用schtasks对机器进行监听,在机器运行一段时间后整理监听记录。也可以使用Sysmon对事件进行记录,通过事件查看器的任务类别,判断有没有可以的行为或连接记录。还可以使用Systracer拍摄几个不同时间的快照,对比不同时间的快照判断是否有可疑的增删注册表行为。

    2.如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
    答: 通过systracer工具进行相关的分析,查看它对注册表和文件的修改。还可以使用Process Explorer工具监控相关进程和线程的活动,以及通过进程找出可疑文件的位置。

    四、实验总结和体会

    这次实验其实操作上不是很难,相比之前需要独立操作的实验来讲,这次实验更关注分析,分析程序的运行结果,事件日志等。实验中也遇到了很多的问题,也有很多的困难。有的时候一个软件很难去使用或者难以达到我们想要的效果,我们可以去尝试其他的软件,其他的方式。只要达到我们分析的目的就好了,不必拘泥与前人的模板。当然,有了学长学姐的博客与报告,我们也能少走很多弯路,多了解我们没注意到的点。

  • 相关阅读:
    CF 1006C Three Parts of the Array【双指针/前缀和/后缀和/二分】
    经验笔记二
    CF 1006B Polycarp's Practice【贪心】
    CF 1003D Coins and Queries【位运算/硬币值都为2的幂/贪心】
    CF 1003C Intense Heat【前缀和/精度/双层暴力枚举】
    CF 1003B Binary String Constructing 【构造/找规律/分类讨论】
    CF 1005C Summarize to the Power of Two 【hash/STL-map】
    CF 1005B Delete from the Left 【模拟数组操作/正难则反】
    CF 1005A Tanya and Stairways 【STL】
    CF 1009A Game Shopping 【双指针/模拟】
  • 原文地址:https://www.cnblogs.com/King-King/p/14647244.html
Copyright © 2011-2022 走看看