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

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

    目录

    实验内容与步骤

    实验过程中遇到的问题

    基础问题回答

    实验总结与体会

    实验内容与步骤

    系统运行监控

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

    • 在windows命令行下输入命令:schtasks /create /TN 20165322netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt"
    • 这行指令的目的是建立一个txt文件,存放每1分钟监测到的哪些程序在使用网络的数据信息。
    • 分析一下上面的指令
      • TN:Task Name,本例中是20165322netstat
      • SC: SChedule type,本例中是MINUTE,以分钟来计时
      • TR: Task Run,要运行的指令是 netstat
      • -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
      • c: etstatlog.txt类似于Linux中的重定向,输出将存放在C盘下的netstatlog.txt文件中
    • 可以看到此时电脑每隔一分钟就会闪一次cmd,但是我们的C盘文件下并没有出现建立的txt文件夹。
    • 打开计算机管理器,选择任务计划程序-找到我们设定的任务名20165322netstat并双击,点击在右边所选项属性栏,常规-安全选项栏中,勾选使用最高权限运行。退出进入c盘即可看到我们生成的txt文件了。此时txt文件里已经开始记录网络数据信息。
    • 我们为了更好的检测它,写一个脚本让他记录日期和时间。由于在C盘不能新建文件,在桌面上新建一个netstatlog.txt,在里面编辑:
      date /t >> c:
      etstatlog.txt
      time /t >> c:
      etstatlog.txt
      netstat -bn >> c:
      etstatlog.txt
      
    • 编辑完成后,另存文件,修改文件名为netstatlog.bat,然后把它拖进C盘里。
    • 同样在计算机管理中找到我们的任务,点击属性->进入操作->编辑。在程序或脚本后选择浏览,选择netstatlog.bat的所在路径,并让添加参数为空。
    • 在属性->条件 里可以看到电源选项下勾选了只有在计算机使用交流电源时启用此任务。这会导致电脑没有连接电源就无法运行任务。所以我们把它去掉。
    • 在计算机管理内,找到创建的任务,右键任务名,并选择运行。就可以看到txt文档里开始记录联网数据了
    • 等待一段时间,最好是一天或者两天(能够较好的监控电脑联网下的状态)
    • 停止任务,并且把存储的数据在excel表格中进行整理,整理过程参考羽昕的博客
    • 结果如图所示
    • 可以看到大多数占用资源的都是win10的系统进程。在安装固态硬盘之前,cpu值常常完全被系统占用,导致电脑卡顿,这点从统计图也能看出来。

    返回目录

    (二)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

    • sysmon是微软Sysinternals套件中的一个工具,使用sysmon工具前首先要配置文件。用法参考使用轻量级工具Sysmon监视你的系统
    • 确定监控对象:我选择的是进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。
    • 用记事本创建一个.xml文件,文件内容根据本机电脑情况修改:
     <Sysmon schemaversion="9.01">
     <!-- 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">iexplore.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">iexplore.exe</Image>
     </FileCreateTime>
      
     <NetworkConnect onmatch="exclude">
       <Image condition="end with">chrome.exe</Image>
       <Image condition="end with">iexplore.exe</Image>
       <SourcePort condition="is">137</SourcePort>
       <SourceIp condition="is">127.0.0.1</SourceIp>
     </NetworkConnect>
    
     <NetworkConnect onmatch="include">  
        <DestinationPort condition="is">5322</DestinationPort>     
       <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是sysmon的版本号,个人根据自己下载情况修改
    • exclude相当于白名单,最好不记录。include相当于黑名单。
    • Image condition这里要根据自己使用的浏览器更改,例如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”。
    • 进程创建时间类似,也是不创建浏览器创建进程的时间。
    • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,并查看目的端口为80(http)、443(https)和传输用5322端口的网络连接。
      • 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
      • 127.0.0.1表示本机IP。
    • 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。
      • explorer.exe是Windows程序管理器或者文件资源管理器
      • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
      • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
      • powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
    • 将.xml放到c盘目录下,并用管理员身份打开cmd,命令行进入sysmon所在路径。
    • 安装sysmon:执行命令sysmon64.exe -i C:sysmon20165322.xml,成功安装结果如下:
    • 如果修改了配置文件,可以使用指令Sysmon.exe -i C:sysmon5322.xml重新配置
    • 打开事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等

    分析实验二中MFS生成的后门文件

    • 打开kali,使用mfs打开监听,并在windows中运行后门程序使之回连成功
    • 这时候查看事件查看器。我们可以找到两个与后门相关的事件。
      • 一个是建立进程,即windows主动运行了后门
      • 接着是后门程序进行了反弹连接的操作
      • 接着我发现系统启动了conhost.exe。这个是命令行程序的宿主进程。简单的说他是微软出于安全考虑,在windows 7和Windows server 2008中引进的新的控制台应用程序处理机制。这个好像和后门没什么关系。
      • 紧接着有一个启动SearchFilterHost.exe事件。SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。

        我尝试在kali控制台输入了shell、dir等命令。kali上是确确实实有反应,能够获取cmd信息的。但是刷新后也并没有找到对应的事件……所以可能事件查看器也不是那么可靠?

    返回目录

    恶意软件分析

    • 静态分析
      • 主要是为了分析恶意代码内部的信息,检测出它有危险的部分
      • 文件扫描(VirusTotal、VirusScan工具等)
      • 文件格式识别(peid、file、FileAnalyzer工具等)
      • 字符串提取(Strings工具等)
      • 反汇编(GDB、IDAPro、VC工具等)
      • 反编译(REC、DCC、JAD工具等)
      • 逻辑结构分析(Ollydbg、IDAPro工具等)
      • 加壳脱壳(UPX、VMUnPacker工具等)

    将exp3中生成的后门在VirusTotal进行扫描

    • 扫描结果可知它的安全级别很低,非常容易被扫描出来。
    • 点击Details可以查看扫描信息。
      • 可以查看几个加密签名属性--sha1、MD5、Authentihash
      • Imphash是用来判断与其他恶意代码相类似的部分
      • 文件类型、大小也能够悉知:在这里是win32.exe文件、大小29.5kb
      • 在magic里可以看到这个恶意代码是用于MS Windows的PE32可执行文件(控制台)Intel 80386 32位系统
      • SSDeep用来检测webshell的接口(这个我也没太弄明白)
      • 最后TRID甚至连对恶意代码的制造和伪装都能够检查出来:upx加壳、c++编译以及库和可执行文件的信息

        除上述内容在页面下方也还有很多关于恶意代码分析的更详细的信息(连版本都能检测出来。。)
    • 动态分析
      • 主要是为了监测恶意软件对被害主机进行了什么操作?对系统做了什么修改?
      • 快照比对(SysTracer、Filesnap、Regsnap工具等)
      • 抓包分析(WireShark工具等)
      • 行为监控(Filemon、Regmon、ProcessExplorer工具等)
      • 沙盒(NormanSandbox、CWSandbox工具等)
      • 动态跟踪调试(Ollydbg、IDAPro工具等)

    使用SysTracer分析恶意软件

    • 下载安装部分参考学姐的博客,在此不做讲述。
    • 安装完成以后先快照一下,点击“take snapshot”。拍摄好以后确定。
    • Kali参考实验二打开msfconsole控制台,完成相关设置后开始监听,Windows运行后门后,拍摄快照
    • 这时候我们主页列表里已经有2个快照数据了。
    • 选中快照2。点击上方“Applications”->左侧“Running Processes”->找到后门进程“zjy_backdoor.exe”->点击“Opened Ports”查看回连地址、远程地址和端口号
    • ctrl选中快照1和快照2.在快照界面“Snapshots”右下角点击“Compare”,比对一下回连前后计算机发生的变化。
    • 所有蓝色标注的地方,就是注册表前后发生变化的地方
    • 所有标绿的部分是新增的注册表部分,标红的是删除的部分
    • 端口连接的变化
    • 在kail下获取windows的截屏screenshot,记录快照
    • 同样用上述方法对比截屏前后的变化
    • 发现变化的有:REG_BINARY(注册表二进制码),变化如下:

    实验过程中遇到的问题

    • 使用SysTracer分析恶意软件时,按快照按钮提示出错如下:
    • 查找资料以后发现是这个软件没有注册使用的话只能使用5次快照,解决方法就只有卸载重装。
      返回目录

    基础问题回答

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

    • 我想监控的是我的系统文件是否有改动。以及他调用了我电脑的什么部分来工作
    • 如果是在windows系统下,可以使用schtasks指令设置一个计划任务。实时监视并统计主机的网络连接情况。
    • 安装软件sysmon,可以通过事件查看器查看该软件记录的主机发生的事件。

    如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

    • 可以利用工具Systracer拍摄快照,比对前后区别,分析改变的注册表及文件等信息。
    • 可以利用Wireshark查看该软件的网路连接情况
    • 可以利用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
      返回目录

    实验总结与体会

    • 通过本次实验,我学会了几种检测自己是否安全的方法。不光是依靠杀软,而是从主机进行的活动以及注册表的变化来判断电脑是否遭到未知后门的侵入。
    • 怀疑自己电脑有病毒、后门时,可以先通过总体的检测,检测本机的网络连接情况和实时活动。确认怀疑到某一个文件后,可以依靠某些软件来监测它在对自己的主机做些什么,依此判断软件是否为恶意软件。
  • 相关阅读:
    [转][Silverlight] aspx页面上传递参数给Silverlight插件的方法
    [C#] 利用cmd远程网内机器,实现文件互传
    [CSS] 对于一个连在一起很长的字符串,在页面上控制换行
    [CSS] 设置input和img在同一行上
    [MySQL] 记MySQL与MS SQL的几点不同
    [JQuery] 利用jquery的ajax调用后台的WebService公共方法和网页的静态方法
    【计算机组成原理】——计算机发展简史
    【计算机组成原理】——计算机的分类
    【JavaScript高级程序设计4th】第1章 什么是JavaScript——总结
    css重置样式表(两种版本)
  • 原文地址:https://www.cnblogs.com/wangyaojia/p/10667258.html
Copyright © 2011-2022 走看看