2019-2020-2 网络对抗技术 20175209 Exp4 恶意代码分析

2019-2020-2 网络对抗技术 20175209 Exp4 恶意代码分析

一、实验原理

1. 实践目标

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

2. 实践内容描述

  • 系统运行监控

    • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
    • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
  • 分析该软件在启动回连、安装到目标机及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

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

3. 实验问题回答

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

    • 使用windows自带的schtasks指令设置一个计划任务,发现网络连接异常
    • 使用Sysmon,编写配置文件,记录有关的系统日志
    • 使用Process Explorer工具,监视进程执行情况。
    • 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
    • 使用Systracer拍摄快照,对比不同快照,查看是否有可疑的增删注册表、启动项的行为。
    • 使用wireshark查看自己计算机的端口开放情况,查看未知端口进行可疑的数据传输
  • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

    • 使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
    • 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
    • 使用PEiD查看程序是否加壳,加的什么壳
    • 使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。

二、实验过程

系统运行监控

使用schtasks指令监控系统

  • 使用schtasks指令。schtasks.exe是安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。

    • 命令为:schtasks /create /TN netstat5318 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt" 创建计划任务netstat5209

      • TN是TaskName的缩写,我们创建的计划任务名是netstat5318;
      • sc 表示计时方式,我们以分钟计时填MINUTE;
      • TR 表示Task Run,要运行的指令是 netstat
      • bn ,其中b表示显示可执行文件名,n表示以数字来显示IP和端口;
      • > 表示输出重定向,将输出存放在c:\netstatlog.txt文件中
  • 在C盘中创建一个脚本文件netstat5318.bat(在C盘中创建需要权限,因此在其他地方创建完后在通过权限复制到C盘中),写入如下内容

date /t >> c:\netstat5209.txt 
time /t >> c:\netstat5209.txt 
netstat -bn >> c:\netstat5209.txt
  • 在Windows的任务计划程序中,可以查看到新创建的任务:

  • 双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的netstat5209.bat批处理文件,将可选参数清空,点击确定。

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

  • 接着,在常规栏下选择使用最高权限运行 ,点击确定保存。

  • 等待了足够长的时间后,可以选择终止计划任务,然后对收集到的数据进行统计,参考鲸鱼学姐的博客,使用Excel对统计的数据进行分析

    • 统计的数据如下:

    • 得到的柱状图如下:

  • 从得到的统计数据看,除了Windows系统的运行程序外,使用网络最多的是钉钉,其次是360浏览器和VMWare虚拟机,此外还包括QQ,微信,360壁纸等应用程序,除了应用程序外,还包括一些Windows的系统程序NLaSvc,PlacesServer.exe以及360的运行插件360se.exe等。

使用sysmon工具监控系统

       sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。使用sysmon工具前首先要配置文件。

  • 过滤器事件的选项:

    • 进程创建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, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 下载老师所给的资源SysinternalsSuite.zip,解压。sysmon就在解压好的文件夹中。

  • 在sysmon所在目录下创建配置文件sysmon20175209.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">chrome.exe</Image> 
            <Image condition="end with">firefox.exe</Image> 
        </ProcessCreate> 
        
        <ProcessCreate onmatch="include">
            <ParentImage condition="end with">cmd.exe</ParentImage>
        </ProcessCreate> 
        
        <FileCreateTime onmatch="exclude" > 
            <Image condition="end with">chrome.exe</Image> 
            <Image condition="end with">firefox.exe</Image> 
        </FileCreateTime> 
        
        <NetworkConnect onmatch="exclude"> 
            <Image condition="end with">chrome.exe</Image> 
            <Image condition="end with">firefox.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">firefox.exe</TargetImage> 
            <TargetImage condition="end with">winlogon.exe</TargetImage> 
            <SourceImage condition="end with">powershell.exe</SourceImage> 
        </CreateRemoteThread> 
    </EventFiltering> 
</Sysmon>
  • 参数说明:

    • ProcessCreate表示进程创建,
    • NetworlConnect是网络连接,
    • CreateRemote是远程线程创建,
    • FileCreate Time是进程创建时间。
    • 在onmatch后面跟的参数include和exclude分别表示“免检”和“必检”名单。免检名单中在统计时忽略掉,必检名单在检测时需要进行匹配。
  • 使用管理员权限运行cmd,进入sysmon所在文件夹中,执行如下命令:Sysmon.exe -i sysmon20175209.xml

  • 事件查看器(本地)->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational 可以查看到按照配置文件中的配置信息所记录的一些信息,日志的第一条就是打开配置文件(这里忘记截图了,后来清楚日志的时候就找不到了)

  • 利用实验三中生成的后门程序进行分析

    • 后门程序启动回连到kali

    • 打开事件查看器 ,根据运行时间可以很容易地找到刚刚运行的后门的相关信息。

    • 使用getuid 指令,在事件查看器中传了如下信息:

    • SearchFilterHost.exe 是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。

    • 接下来使用dir webcam_snap 指令后,发现时间查看其中均没有什么变化,我再次尝试了getuid 指令,发现这一次也没有出现变化。这是为什么呢?

恶意软件分析

  • 静态分析

    • 文件扫描(VirusTotal、VirusScan工具等)
    • 文件格式识别(peid、file、FileAnalyzer工具等)
    • 字符串提取(Strings工具等)
    • 反汇编(GDB、IDAPro、VC工具等)
    • 反编译(REC、DCC、JAD工具等)
    • 逻辑结构分析(Ollydbg、IDAPro工具等)
    • 加壳脱壳(UPX、VMUnPacker工具等)
  • 动态分析

    • 快照比对(SysTracer、Filesnap、Regsnap工具等)
    • 抓包分析(WireShark工具等)
    • 行为监控(Filemon、Regmon、ProcessExplorer工具等)
    • 沙盒(NormanSandbox、CWSandbox工具等)
    • 动态跟踪调试(Ollydbg、IDAPro工具等)

静态——使用PEiD分析恶意软件

  • 查看没有加壳的后门程序,发现什么也没有发现哈哈

  • 查看经过压缩壳的后门程序,可以查看到压缩壳的版本

  • 查看经过加密壳的后门程序

  • 查看经过压缩壳和加密壳的程序,发现什么都没有发现,说明了该软件无法检测到加密壳。

静态——使用VirusTotal分析恶意软件

  • 使用VirusTotal分析恶意代码基本信息如下:

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

  • 算法库支持情况如下:

静态——使用PE Explorer分析恶意软件

PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。

  • 看文件引用的dll库,可以通过视图->引入 进行查看,如下图所示

    • KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
    • msvcrt.dll:是微软编译软件的函数库。

动态——使用wireshark抓包分析恶意软件分析

  • 设置过滤条件为ip.addr==192.168.1.105&&ip.addr==192.168.1.102 从启用回连开始检测捕包情况。

  • 开始回连的时候发现了大量的TCP数据包,最前面的三个包是建立三次握手连接的过程

  • 接下来使用dir 指令查看当前目录,发现传输了大量的数据,传输的数据包括Windows向Kali发出TCP同步请求包SYN,Kali给Windows发出的SYN同步请求包和确认包ACK,Kali给Windows传的ACK包、PSH+ACK包等等(PSH表示有DATA数据传输)

  • 执行getuid指令记录如下:

  • 执行webcam_snap 指令出现了很多条记录,具体数目的多少应该和图片的内容相关:

  • 执行exit 指令,发送了[PSH, ACK]包:

动态——使用Process Monitor分析恶意软件

Process Monitor 是一款由 Sysinternals 公司开发的包含强大的监视和过滤功能的高级 Windows 监视工具,可实时显示文件系统、注册表、进程/线程的活动。

  • 开启软件可以看到各个进行的详细记录,通过查找功能(那个小小的望远镜)查看到后门程序的进程,注意全字符匹配。

  • 可以看到进程的详细信息如下:

  • 后门程序引用的库如下:

动态——使用Process Explorer分析恶意软件

Process Explorer是由Sysinternals开发的Windows系统和应用程序监视工具,目前已并入微软旗下。不仅结合了Filemon(文件监视器)和Regmon(注册表监视器)两个工具的功能,还增加了多项重要的增强功能。包括稳定性和性能改进、强大的过滤选项、修正的进程树对话框(增加了进程存活时间图表)、可根据点击位置变换的右击菜单过滤条目、集成带源代码存储的堆栈跟踪对话框、更快的堆栈跟踪、可在 64位 Windows 上加载 32位 日志文件的能力、监视映像(DLL和内核模式驱动程序)加载、系统引导时记录所有操作等。

  • 使用动态软件进行监测分析时,后门程序必须处于回连的状态,开始的时候就因为没有回连后门程序导致搜索了很长时间都没有搜索到。

  • 在 Process Explorer工具中查找到程序记录,我们可以看到这个程序运行时子程序中有conhost.exe 这个程序。

  • 也可以详细查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等。

动态——使用systracer分析恶意软件

  • 这一部分在Windows7虚拟机中进行,将后门程序传输到虚拟机中,使用systracer捕获快照进行分析

  • 捕获五个快照如下:

    • 快照一:未移植后门程序,保存为Snapshot #1
    • 快照二:移植后门程序,保存为Snapshot #2
    • 快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
    • 快照四:在kali中执行dir 指令,保存为Snapshot #4
    • 快照五:在kali中执行exit 指令,保存为Snapshot #5
  • 通过右下角的compare 键或者View Differences Lists 比对各快照,可以选择Only Difference 对比不同的项

    • 对比快照一和快照二:

      • 增加了后门程序exp4_upxed.exe

      • 可以看到增加了一些键值和文件

    • 对比快照二和快照三:

      • 可以看到新增的后门进程,而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议:

      • 后门程序生成了一些文件,增加了很多键值

    • 对比快照三和快照四:

      • 对根键中的内容进行修改,对注册表中的配置信息进行了修改
    • 对比快照四和快照五:

      • 可以发现后门程序的的删除记录以及相关联的注册表项和启动项都被删除

三、实验中遇到的问题

Qusetion1 安装Sysmon时出现的问题

  • 在安装时出现了权限不足的问题

    • 在管理员权限下运行终端即可运行
  • 在安装编写配置文件时首先查看了Sysmon.exe的版本如下:

  • 在编写配置文件时开始将版本号设置成了查看出来的,但是在实际执行安装命令的时候却出现了版本错误的问题

    • 没办法按照给出了错误提示之后再把配置文件中的内容改成提示的版本号即可

Question2 记录文件查找不到

  • 在进行系统状态监测时,发现开始执行半个小时过去了,在C盘中无法查看到用于记录的文件netstat5209.txt
  • 原因是进程没有向C盘写入文件的选线,监测的记录无法写入到指定位置,因此需要勾选以最高权限运行,这样就能够看到写入的文件了

Question3 下载Process Monitor后无法使用的问题

  • 使用下载的最新版Process Monitor开启式出现了设备无法连接的问题
  • 使用老师给的压缩包中的程序。

Qusetion4 虚拟机中无法成功回连后门程序的问题

  • 实验中将后门程序传输到虚拟机中却发现无法成功回连,开始以为是传输失败,但查看后门程序的详细信息后发现和主机中的并没有区别,后来发现是因为虚拟机用于其他的实验,对防火墙的出入站设置了新规则,而ping命令是基于ICMP协议的,需要经过防火墙,因此需要将防防火墙关闭才能成功回连。

四、实验心得体会

       本次实验是对自己的电脑进行监控并找出潜在的恶意代码,注重于防护与监控这方面的实验。和前三次实验以攻击为主的实验不同。
       本次实验中涉及到了大量的检测工具,这些检测工具可以对后门程序进行不同方面的分析,能够更加清晰的认识到后门程序的组成和执行等。当然,对于文件中查出来的文件和注册表等都并不是很熟悉,还需要很多知识要学习。

五、参考链接

学姐的博客
学长的博客
鲸鱼学姐的博客
使用轻量级工具Sysmon监视你的系统
老师给的参考链接

posted @ 2020-04-14 16:39  5209wzh  阅读(492)  评论(0编辑  收藏  举报