2018-2019-2 20165312《网络攻防技术》Exp4 恶意代码分析

2018-2019-2 20165312《网络攻防技术》Exp4 恶意代码分析

知识点总结

1.有关schtasks

  • schtacks的作用:安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。
  • 常用参数合集(更多详细的参数讲解可参考博客1博客2
    • /create创建一个新的任务计划
    • /tn taskname指定任务的名称
    • /tr TaskRun指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。如果忽略该路径,将假定文件在SystemrootSystem32目录下。
    • /sc schedule指定计划类型,其有效值有以下几类
      • MINUTEHOURLYDAILYWEEKLYMONTHLY指定计划的时间单位
      • ONCE任务在指定的日期和时间运行一次
      • ONSTART任务在每次系统启动的时候运行。可以指定启动的日期,或下一次系统启动的时候运行任务
      • ONLOGON每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务
      • ONIDLE只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务
    • /mo modifier指定任务在其计划类型内的运行频率,默认值1
    • /s Computer指定远程计算机的名称或 IP 地址,默认值是本地计算机
    • /sd StartDateMM/DD/YYYY格式指定任务启动的日期。默认值是当前日期,只对于 ONCE计划是必需的
  • 实例说明:下面的命令计划MyApp程序从2001年 3月起每五小时运行一次
schtasks /create /sc hourly /mo 5 /sd 03/01/2001 /tn "My App" /tr c:appsmyapp.exe > 1.txt

2.有关Sysmon(参考链接)

  • sysmon的作用:用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
  • sysmon用完整的命令行记录下子进程和父进程的创建行为。其中包括:
    • 记录驱动程序或者加载的DLL镜像的签名及其hash。
    • 记录磁盘和卷的原始数据的读取请求。
    • 记录网络连接,包括每个连接的源进程,IP地址,端口号,主机名和端口名(可选)
    • 如果更改注册表则自动重新加载配置。
    • 具有规则过滤,以便动态包括或排除某些事件。
    • 在加载进程的初期生成事件,能记录在复杂的内核模式运行的恶意软件。
  • 常用参数
    • -c 更新或显示配置
    • -h 指定hash记录的算法
    • -i 安装,可用xml文件来更新配置文件
    • -l 记录加载模块,可指定进程
    • -m 安装事件清单
    • -n 记录网络链接
    • -r 检测证书是否撤销
    • -u 卸载服务和驱动
  • 有关配置文件
    • onmatch只能设置为include/exclude
    • condition根据需求可设置为is/is not/contains/excludes/begin with/end with/less than/more than/Image
    • 事件过滤器
      • ProcessCreate进程创建
      • FileCreateTime进程创建时间
      • NetworkConnect网络链接
      • ProcessTermina进程结束
      • DriverLoad驱动加载
      • ImageLoad镜像加载
      • CreateRemoteTh远程线程创建
      • RawAccessRead驱动器读取
      • ProcessAccess进程访问
      • FileCreate文件创建
      • RegistryEvent注册表事件
      • FileCreateStre 文件流创建
  • 实例说明:下述规则将记录除了chrome之外的所有访问80或443的网络记录
<NetworkConnect onmatch="exclude">      
<Image condition="end with">chrome.exe</Image>    
</NetworkConnect>        
<NetworkConnect onmatch="include">     
<DestinationPort condition="is">80</DestinationPort>      
<DestinationPort condition="is">443</DestinationPort>    
</NetworkConnect>

3.恶意代码分析

  • 静态分析(不运行程序)
    • 扫描:即提取字符串string *
    • 使用反病毒软件来确认程序样本的恶意性,如virustotal
    • 进行二进制结构分析
    • 进行代码结构和逻辑分析
  • 动态分析(运行程序)
    • 行为分析
      • 快照对比
      • 实时监控行为轨迹:APIHooking
    • 动态追踪分析:gdb单步调试程序

Exp4.1系统运行监控

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

  • 使用schtasks指令创建计划任务
schtasks /create /TN task5312-1 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\5312-1.txt"  //b表示显示可执行文件名,n表示以数字来显示IP和端口
![](https://img2018.cnblogs.com/blog/1047583/201904/1047583-20190407171411331-2005281725.png)

  • 在C盘下建立c:\5312-1.bat
date /t >> c:\5312-1.txt
time /t >> c:\5312-1.txt
netstat -bn >> c:\5312-1.txt
  • Windows->计算机管理->任务计划程序,可以看到新创建的任务

  • 双击这个任务

  • 常规->勾选使用最高权限运行

  • 操作->编辑,将其中的程序或脚本改为5312-1.bat,参数可选项为空

  • 条件->电源,默认选项为前两个(你也可以修改成其他的),则表明此任务需要在接通电源且联网状态下运行

  • 运行此任务,则可以查找到C:/5312-1.txt,并且每隔一分钟就会更新数据

  • 我大约让此任务运行了11h,接着使用excel进行分析

  • 创建一个新的excel表格,数据->获取外部数据->自文本->C:/5312-1.txt

  • 数据类型->分隔符号->下一步->标记所有分隔符号

  • 全选协议那一列->插入->数据透视图->新表格

  • 选择“周六”

  • 在字段中去除不需要的字段,注意删去TCP

  • 将“周六”拖到下方的“轴”、“值”

  • 联网信息的统计图如图所示,我们可以从中得知排名前几的分别为:cloudmusic.exevideo.ui.exesvchost.exeWpnServicesogouexplorer.exe

    • cloudmusic.exe是网易云,毕竟我一直在放音乐,不足为奇
    • video.ui.exe是 win10自带的视频播放工具
    • svchost.exe从动态链接库 (DLL) 中运行的服务的通用主机进程名称,听说当svchost.exe长时间占用大量CPU时,一定说明系统出现了问题(有点慌ing)
    • sogouexplorer.exe是搜狗浏览器,可是在这11h内我没有使用过搜狗浏览器,当我打开搜狗浏览器的时候,它竟然占了50%的CPU(wtf???)开始怀疑我的这个浏览器并且准备和它说再见
  • 按照上述同样的方法,制作了外部地址的统计图

Exp4.1.2安装配置sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

  • 根据上述分析的结论,编写以下配置文件5312sysmon.txt,并将其存储在C盘下。
<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">cloudmusic.exe</Image> 
     </ProcessCreate>

     <FileCreateTime onmatch="exclude" >
       <Image condition="end with">cloudmusic.exe</Image>
     </FileCreateTime>

     <NetworkConnect onmatch="exclude">
       <Image condition="end with">cloudmusic.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">WpnService</TargetImage>
       <TargetImage condition="end with">Video.UI.exe</TargetImage>
       <TargetImage condition="end with">svchost.exe</TargetImage>
       <TargetImage condition="end with">SogouExplorer.exe</TargetImage>
       <SourceImage condition="end with">powershell.exe</SourceImage>
     </CreateRemoteThread>
   </EventFiltering>
</Sysmon>
  • 安装并启动sysmon

    • 下载资源
    • 解压缩之后即可使用
    • 用管理员权限打开cmd,进入sysmon所在路径
    • 安装.\Sysmon.exe -i C:\5312sysmon.txt
    • 弹出对话框->点击agree->安装完毕,启动成功

  • 使用sysmon

    • windows->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational。即可查看到根据配置文件的要求记录的新事件,可以通过查看下方栏中的详细信息了解具体的内容。
  • 分析Exp2生成的5312_backdoor.exe

    • 成功进行回连

    • Operational->刷新,更新事件数

    • Operational->查找->5312backdoor.exe,找到相应的日志

    • kail控制台下执行shell获取windows的cmd,再次刷新后发现这样一个进程C:\Windows\SysWOW64\cmd.exe。通过查看详细信息,发现它的parentimage竟然为5312backdoor.exe。所以猜测他俩之间有种联系。通过查阅资料:SysWOW64可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd.exe是32位的。进一步相信了我自己的猜测。

    • shell获取windows下命令行后,输入dir获取目录信息,发现一个多次出现很可以的进程C:\Windows\System32\svchost.exe

    • 我又实验了获取摄像头权限and录制音频等操作,都发现了发现一个多次出现很可以的进程C:\Windows\System32\svchost.exe的身影。在Exp4.1.1中,我也发现了这个可疑进程。看来我的电脑……

Exp4.2恶意软件分析

Exp4.2.1静态分析

  • 使用virustotal20165312-Exp3-2-upxed.exe进行扫描

  • 使用PEid进行外壳检测

    • 检测出来此文件加壳且加壳的版本

    • 查看扩展信息

  • 使用PE explorer查看PE头部的头部信息

    • 导入文件后即可查看到PE头部信息,在《计算机病毒》这门课中老师详细介绍过PE文件头部信息,这里简要写几个

      • machine的值为014ch说明系统为32位
      • number of sections的值为0005h,说明整个文件所包含的节的数量为5
      • time data stamp为时间戳,datavalue记录距离1970年1月1日0时秒数,description表明生成此文件的具体时间
      • size of optional header为可选文件头所包含的字节数,值为00E0h表明为32位
      • characteristics判定文件是.dll/.exe
      • magic判定文件类型,``010Bh```表明为32bit文件
    • View->Data Directories查看PE的数据

    • View->Section Headers查看节头信息

    • tools->disassemble进行反汇编

    • import可以查看导入的.dll

      • kernel32.dll是动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。

Exp4.2.2动态分析

  • 使用SysTracer分析后门软件的运行过程
    • 使用两台虚拟机:kail和windows 7

    • 下载SysTracer

      • 选择第2个

      • 端口号为5312

    • kail和windows 7 连通之后,在进行回连之前,take snapshot 记录快照1

    • 回连成功之后,记录快照2

    • 在kail下获取windows所在目录dir,记录快照3

    • 在kail下获取windows的截屏screenshot,记录快照4

    • 在kail下获取windows的录音record_mic,记录快照5

    • 使用ctrl选择快照1和快照2,点击右下角compare,进行快照之间的比对

      • 注册表的变换(蓝色部分为变换的部分)

      • 进程的变换,最大的变化是新增了5312backdoor.exe

      • 开放端口的变换

      • 查看.dll文件的变换

    • 使用同样的方法可以查看不同快照的区别

  • 使用Process Monitor分析恶意软件
    • Process Monitor可以对系统中的任何文件和注册表操作同时进行监视和记录,通过注册表和文件读写的变化,对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常有用。
    • 下载路径
    • 打开软件之后,即可查看到系统当前所有运行的进程,使用工具栏中望远镜那个图标,查找5312systracer,找到之后双击即可查看详细内容

实验中遇到的问题及解决方法

1.安装sysmon时,遇到如下问题

然后发现自己指令打错了,纠正了错误之后,又尝试了一遍

依旧不行,然后根据提示,发现是权限不够。关闭之后,重新使用管理员权限打开cmd,就ok了!

实验总结

  • 实验感想

这次实验让我知道自己电脑哪个软存在问题,也让我学习了多个扫描工具的使用方法,通过这些扫描工具,让我知道了使用恶意软件时注册表、文件等变化。使用下来,我觉得SysTracer最实用,通过对比不同快照之间的不同,可以清楚发现自己电脑的变化之处。

  • 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
  • 使用schtasks,设置一个计划任务,进行记录,并使用excel进行分析
  • 使用sysmon,修改配置文件,记录相关的日志文件。
  • 使用SysTracer,在不同时间点建立快照,并进行对比。
  • 使用Process Monitor,寻找可疑的进程
  • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
  • 使用PEid判定是否加壳
  • 使用PE explorer查看程序头部信息
  • 使用Wireshark进行抓包分析,监视其与主机进行的通信过程
posted on 2019-04-07 17:28  歌儿  阅读(317)  评论(0编辑  收藏  举报