zoukankan      html  css  js  c++  java
  • 2018-2019-2 《网络对抗技术》Exp4 恶意代码分析 20165326

    恶意代码分析

    实践目标

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

    目录


    知识点详解

    1.schtask

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

    Schtasks命令详解

    2.sysmon

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

    相关原理实现

    3.恶意代码分析

    • 监控系统
      • 网络连接、文件修改、系统配置、进程变化、核心API
    • 静态分析
      • 文件代码结构分析、反汇编等
    • 动态分析
      • 快照对比、APIHooking、动态跟踪调试

    实验流程

    任务一:系统运行监控

    1.1使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里
    • 创建脚本文件netstatlog.bat,内容如下
    date /t >> c:
    etstatlog.txt //写入日期
    time /t >> c:
    etstatlog.txt //写入时间
    netstat -bn >> c:
    etstatlog.txt //写入netstat执行结果
    
    • 创建文件netstaslog.txt用于记录
    • 使用schtasks命令创建一个新任务:schtasks /create /TN netstat5326 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt"
    /tn TaskName 指定任务的名称。
    /tr TaskRun 指定任务运行的程序或命令。977
    如果忽略该路径,SchTasks.exe 将假定文件在SystemrootSystem32 目录下。
    /sc schedule 指定计划类型
    /mo modifier 指定任务在其计划类型内的运行频率,默认值为 1
    
    • 打开任务计划程序,看到刚刚生成成功的任务准备就绪,打开->属性,最高权限运行->操作,脚本或程序:C: etstatlog.bat,然后开始运行

    • 打开netstatlog.txt一波分析

    • 使用excel表格查看并分析,相关指导

    • 发现以下几个进程运行的很多

      • downloadSDKServer:迅雷的下载程序
      • kxescore:金山毒霸的密保用户的进程,开着这个防护程序就有
      • microsoftEdgeCp.exe:微软浏览器相关组件,上网就会用到
      • SearchUI.exe:cortana的搜索进程,发现了一个win10z的小mimi,这个居然会一直开着昂,可以任务管理器关掉节约点电(没有什么用)
      • vmware-hostd:虚拟机和物理主机联通信道
      • pcdrwi:pc-doctor for windows
      • ……还有一些就是很常见的一些软件的进程就不赘述啦
        其实最有用的应该是svchost.exe这一个,搜索总结了一下,大概是这样的

    我们知道 Windows 和 Windows 的应用软件都 要使用大量的 DLL(Dynamic Link Libraries,动态链接库)文件,这些 DLL文 件一般都要向Windows申请各种各样的Service(服务),而Svchost. exe 就是其中一些服务的通用管理进程名(Generic Host Process Name),简单的说,Svchost.exe是这些服务的总称。每一个Svchost. exe 进程以一个 Group(组)的方式分组管理各种服务,每一个 Svchost.exe服务。
    Svchost.exe在Windows XP的系统目录WindowsSystem32 下,在启动的时候,Svchost.exe根据注册表中的相关信息建立一个 服务列表并根据这个列表加载相关的服务。一般来说,Svchost.exe 总是根据 HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurrentVersionSvchost下面的键值分组管理DLL 申请的服务,这里的每一键值对应一个独立的Svchost.exe进程
    常被病毒冒充的进程名有:svch0st.exe、schvost.exe、scvhost.exe。随着Windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。而系统服务是以动态链接库(DLL)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。
    在任务管理器中只能看到Svchost.exe进程而看不到该进程所包含的服务,要想了解每个 Svchost.exe 进程下到底有什么服务,打开cmd输入:Tasklist / SVC并回车就可以看到每个 Svchost.exe进程及 其所包含的各种服务,其中Image Name :映像名,PID:进程标识,Services:进程所包含的各种服务(一般是缩写)。下面截取了当前部分x进程使用svchost.exe的图,冷静分析,没分析出来啥……这几个看起来都还挺正常的我们下一个

    1.2安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。配置参考
    • 按照配置参考写所需的Sysmoncfg.txt配置文件
    \先用老师的试一下
    <Sysmon schemaversion="4.20"> \版本不一样,根据错误提示进行了修改
      <!-- Capture all hashes -->
      <HashAlgorithms>*</HashAlgorithms>
      <EventFiltering>
        <!-- Log all drivers except if the signature -->
        <!-- contains Microsoft or Windows -->
        <DriverLoad onmatch="exclude">
          <Signature condition="contains">microsoft</Signature>
          <Signature condition="contains">windows</Signature>
        </DriverLoad>
        
        <NetworkConnect onmatch="exclude">  \白名单
          <Image condition="end with">chrome.exe</Image>
          <Image condition="end with">iexplorer.exe</Image>
          <SourcePort condition="is">137</SourcePort>
          <SourceIp condition="is">127.0.0.1</SourceIp>
        </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>
    
    • 使用之前生成的后门程序进行回连(此处使用的是实验二的,payload是……/reverse_https),观察日志中的结果(日志查看:计算机管理->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon),详细信息里能看到,下面是官网上的Sysmon的事件ID对应的意思,
    事件ID 1:流程创建
    进程创建事件提供有关新创建进程的扩展信息。完整命令行提供流程执行的上下文。 ProcessGUID字段是跨域的此过程的唯一值,以使事件关联更容易。散列是文件的完整散列,其中的算法位于HashType字段中。
    事件ID 2:进程更改了文件创建时间
    当进程显式修改文件创建时间时,将注册更改文件创建时间事件。此事件有助于跟踪文件的实际创建时间。攻击者可能会更改后门的文件创建时间,使其看起来像是随操作系统一起安装的。请注意,许多进程合法地更改了文件的创建时间;它不一定表示恶意活动。
    事件ID 3:网络连接
    网络连接事件记录计算机上的TCP / UDP连接。默认情况下禁用它。每个连接都通过ProcessId和ProcessGUID字段链接到进程。该事件还包含源和目标主机名IP地址,端口号和IPv6状态。
    事件ID 4:Sysmon服务状态已更改
    服务状态更改事件报告Sysmon服务的状态(已启动或已停止)。
    事件ID 5:进程终止
    进程终止时,进程终止事件报告。它提供了该过程的UtcTime,ProcessGuid和ProcessId。
    事件ID 6:驱动程序已加载
    驱动程序加载的事件提供有关正在系统上加载的驱动程序的信息。提供配置的哈希值以及签名信息。出于性能原因,签名是异步创建的,并指示加载后文件是否已删除。
    
    • 运行后门程序、msfconsole、监听、获取权限
      • 运行26bc.exe
      • dir
      • getuid
        可以看到如下截图:


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

    任务二:恶意软件分析

    • 所以我为什么要用加密传输,微笑,截图,可以看见有一个连接的过程,猜测以下的传输过程就是来自kali后门的神秘力量
    • 将payload改成tcp看下明文传些什么奇怪的东西(此处无截图)可以从psh/ack下直接看到传输明文
    • 使用sys tracer(注册表分析器x进行分析)我感觉我这里做的有一点问题,还是用两台虚拟机会好一点,一定要快照!以下是运行前后compare的结果
      • 拍摄运行后门前后的两次快照进行compare,我只选择了c盘进行扫描
      • 可以通过Applications->Runnning Processes找到当前运行的程序

    遇到的问题

    • Q:无法直接在c盘下建立文件夹
      • 改权限,使用管理员权限或者直接修改该文件目录的造作属性
      • 使用powershell(管理员),使用Set-Location [目录]进入要创建文件的目录,New-Item [文件名]创建文件,一定要加后缀名!编辑文件,可以使用记事本打开:notepad.exe ./[file]点此查看其它方法
    • Q:win10网页上下载东西下不了?
      • 请Windows defender smartscreen解释一下为什么Microsoft官网下东西都不允许好吧。。在网页的高级设置关掉这个就可以了。

    总结

    回答问题

    • 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
      • 使用计划任务schtasks指令动态监控系统运行,输出到日志进行分析
      • 使用sysmon工具动态监控系统运行,查看日志详细信息
      • systracer跟踪端口
    • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
      • 使用systracer工具进行快照分析注册表信息、文件行为等信息的变化
      • 把程序放在virscan上检测查看行为报告
      • 使用Task list查看任务详细信息

    心得

    分析的时间比较长,这次的实验名称应该叫“当我没看电脑的时候它都在干些什么”,总有种《her》的现实版的感觉,跟别的人连IP交换信息都是大猪蹄子hen。这次试验还是学到了很多有用的东西,如何使用一些小工具来分析电脑是否被恶意代码攻击等,深入学习加油

  • 相关阅读:
    Mysql中类型转换函数Cast()的用法
    Spark scala 删除指定列为Na的行
    R语言之变量动态赋值
    MAC 把隔空投送添加到个人收藏边栏
    R查看变量数据类型 typeof()
    R Rstudio生成HTML报告
    Rstudio 添加定时任务
    R Studio编译一个包package
    Linux sed删除文件后几行
    Github添加自我介绍-新建一个和用户名同名的仓库并添加README.md即可
  • 原文地址:https://www.cnblogs.com/Czzzz/p/10666642.html
Copyright © 2011-2022 走看看