zoukankan      html  css  js  c++  java
  • 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:WindowsSysWOW64cmd.exe。通过查看详细信息,发现它的parentimage竟然为5312backdoor.exe。所以猜测他俩之间有种联系。通过查阅资料:SysWOW64可以在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd.exe是32位的。进一步相信了我自己的猜测。

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

      • 我又实验了获取摄像头权限and录制音频等操作,都发现了发现一个多次出现很可以的进程C:WindowsSystem32svchost.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进行抓包分析,监视其与主机进行的通信过程
  • 相关阅读:
    pymysql
    表查询
    元类
    外键约束
    Mysql知识
    C# windows服务的创建与调试
    JQuery随笔
    jQuery插件开发
    http post和put区别
    NPOI
  • 原文地址:https://www.cnblogs.com/cxgg/p/10666121.html
Copyright © 2011-2022 走看看