zoukankan      html  css  js  c++  java
  • Exp4 恶意代码分析 20165110

    Exp4 恶意代码分析 20165110

    一、实践目标

    1.是监控你自己系统的运行状态,看有没有可疑的程序在运行。

    2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

    3.假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    二、实践内容

    1.系统运行监控(2分)

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

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

    实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。

    2.恶意软件分析(1.5分)

    分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

    (3)读取、添加、删除了哪些注册表项

    (4)读取、添加、删除了哪些文件

    (5)连接了哪些外部IP,传输了什么数据(抓包分析)

    三、实验内容

    1.任务一(系统运行监控)

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

    首先,使用schtasks指令创建一个计划任务schtasks /create /TN netstat5110 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstat5110.txt"

    图中截图时使用的是MO 5,后来有进行修改

    TN为TaskName的缩写,后面跟计划任务名称;
    sc表示计时方式,后面跟时间单位(此处以分钟计时填MINUTE)
    TR=Task Run,后面跟的是要运行的指令(此处是netstat, netstat用于在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。) 
    netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
    

    在C盘下建立一个文件c: etstat5110.bat(此处需先在桌面建立一个txt文档,将txt文档中输入相应的代码后,通过修改文件的后置名,将.txt修改为.bat然后拖入C盘中,会弹出一个需要使用管理员权限,允许即可)

    注:我尝试过在非C盘目录下建立这个bat文件,最后也成功了,所以这里的位置是可以进行修改的,只需在后面的配置中选中bat所在的位置信息即可。

    随后通过搜索找到任务计划程序,在主界面中找到新创建的任务netstat5110
    双击该任务,选择操作-->编辑-->程序或脚本

    注意:此处一定要勾选使用最高权限运行,否则文件记录中指挥出现请求的操作需要提升。无法正常抓取数据包

    根据个人情况还可在条件中设置其他的属性,比方说只有在计算机使用交流电源时才启动此任务在默认情况下开启,这会造成若使用电池电源时该任务不会进行。

    设置完成后,找到.bat文件,右击使用管理员权限运行后,即可在.bat文件中所配置的地方看到一个netstat5110.txt文件,打开即可看到每隔一分钟扫描的数据(包括:协议,目标地址,源地址,端口,状态,应用程序)

    我运行了24小时,获得了足够多的数据用于分析,我才用Excel来进行数据处理
    首先导入数据(选择数据获取外部数据自文本在数据类型中选择分隔符号,在第二步选择所有的分隔符号,点击完成,然后就可以成功导入数据。

    随后选择插入-->数据透视图,通过筛选选出我们需要的字段
    对24小时时间内启动的的应用软件进行分析

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

    使用Sysmon工具(使用说明
    唔,一开始以为这个时Windows自带的工具,后来发现不是,然后我就跑到官网上下了一个。。。
    首先选择要监控的目标:进程创建、进程创建时间、网络连接、远程线程创建
    接下来要完成配置文件:相关事件过滤器,具体代码如下

    <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">QQBrowser.exe</Image> 
         </ProcessCreate>
    
         <NetworkConnect onmatch="exclude">    //监控不包含的内容,相当于白名单
           <Image condition="end with">QQBrowser.exe</Image>//以...为结束的镜像
           <SourcePort condition="is">137</SourcePort>//源端口
           <SourceIp condition="is">127.0.0.1</SourceIp>//源IP
         </NetworkConnect>
         <NetworkConnect onmatch="include">     //监控中包含的内容,相当于黑名单
           <DestinationPort condition="is">80</DestinationPort>  //目标端口    
           <DestinationPort condition="is">443</DestinationPort>    
         </NetworkConnect>
    //远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。
         <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>
    
        注:监测的具体软件内容
            explorer.exe是Windows程序管理器或者文件资源管理器
            svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL)中运行的服务的通用主机进程名称。
            winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
            powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
    

    将其保存为Sysmon20165110.xml文件
    随后使用Sysmon.exe -i E:大三下网抗实验四Sysmon20165110.xml安装Sysmon

    Sysmon参数介绍

    在Windows环境下搜索应用程序和服务日志,在左侧工具栏中找到Microsoft-->Windows-->Sysmon-->Operational,双击后在中间的工具栏中找到相应的记录后进行点击,可以再下方的工具栏中查看事件的具体信息,包括事件ID、任务类别等。

    随后打开kali攻击机,打开msfconsole设置其LHOST,LPORT后,在Windows端运行相关的后门程序。

    随后查看日志,通过搜索后门程序的名字,可以找到刚才运行的后门程序,

    查看该事件,其类型为“NetworkConetect”。点击详细信息,可以查看到该程序的具体位置、设备型号、源IP和端口,目的IP和端口等。

    任务二(分析该软件在1.启动回连,2.安装到目标机3.及其他任意操作时(如进程迁移或抓屏)对注册表、文件、数据修改)

    1.使用Process Monitor分析

    Process Monitor 是一款由 Sysinternals 公司开发的包含强大的监视和过滤功能的高级 Windows 监视工具,可实时显示文件系统、注册表、进程/线程的活动。
    该软件可以查看到现阶段正在运行各个进程的记录。

    2.使用Process Explorer分析

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

    该截图中可以找到运行的后门程序

    3.使用VirusTotal分析

    将实验三生成的后门程序放入VirusTotal进行分析,可以得到该程序的具体信息:

    程序大小、MD5值、SHA1等

    程序创建修改的事件,程序的名称

    该程序加壳信息

    该程序支持的算法库

    4.使用systracer分析

    分析计算机文件,文件夹和注册表项目改变的系统实用工具.可以在任何想要的时间获取无数个屏幕快照.可以通过比较任何一对想要的屏幕快照,并且观察其间的不同之处.获取屏幕快照通常会持续几分钟的时间,这取决于文件和文件夹的数量和注册表项目的总数.该软件特别推出一个非常高效的分析算法,比较两张屏幕快照可以瞬间完成.
    本实验中我使用了三个快照,
    快照一:正常情况下的Windows系统

    快照二:使用kali攻击Windows并且成功获取权限

    快照三:对Windows进行截屏操作

    接着点击右下角的“Compare”,比较这几个快照之间的不同之处,但是我的这个软件出现了一个非常奇怪的问题,我出现的都是小三角的警告,并没有报出具体是哪个程序造成了差异,也没有显示相应的启动的文件,这个问题我至今还没有解决,我也没法对此进行分析,真是令人头秃。。。

    5.使用Wireshark进行抓包分析

    Kali作为攻击机去获取Windows的权限
    此时Wireshark连接的是本地网络,为了减少其他量的干扰,我断掉了网络连接,仅仅只有不地机器的交互,当kali成功连接上Windows时可以发现这时出现了大量的TCP报文,我们可以发现交互的IP为192.168.168.1(Windows)和192.168.168.128(Kali)交互端口为5110-->51753在截图中我们可以找到多个TCP握手的过程

    接下来我又在Kali中输入dir查看Windows平台中的文件信息时,也出现了大量的TCP报文

    我又进行了击键记录、截屏等操作,同样也可以抓捕到大量的TCP报文信息。

    四、实验后回答问题

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

    答:

    操作:

    监控谁在我不知情的情况下连接了我的电脑以及我连了谁的电脑,即源IP和目的IP,我执行什么操作或者什么在一些有规律的时间点会发生这个未授权的操作,这个操作背后会触发什么程序。

    方法:

    (1)自带的schtasks指令,通过写一个.bat文件标明格式与内容,使用netstat指令每隔一段时间执行,再通过任务计划对该任务进行定位,经过一段时间的数据的收集,可以得到我们想要的数据,对这些数据进行分析,最终得出结论

    (2)通过Vireshark进行抓包实验,通过对上述数据的分析,找到一些可疑的操作,进行钓鱼执法,然后抓包,去具体寻找这个非法授权操作的具体信息。

    (3)还有一个最省心省力的办法,打开某杀毒软件的实时监控系统进行监测,若监测到不轨行为,立刻报告。

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

    答:
    (1)可以使用网页VirusTotal进行分析,查看它的具体内容。

    (2)还可以使用Wireshark进行抓包,来分析它与主机交互产生的报文

    (3)使用使用systracer分析,对比运行前后的快照,找到其不同。

    五、实验中遇到的问题

    1.在schtasks的实践真是一把鼻涕一把泪

    先是无法生成.txt文件,因为我的那个配置文件放的位置有问题,我没有给它放到C盘里面去,然后它就压根不执行netstat操作。。。

    解决方案:将.bat文件放入C盘根目录下

    接着是我无法在C盘中建立文件

    解决方案:现在桌面建好了,然后再拖进去

    接着这段powershell总算是执行了,但是每次都显示“请求的操作需要提升。”

    解决方案:赋予运行该exe管理员权限

    数据导入excel中不能有效分割。。。

    解决方案:选择分隔符来决定表中的内容

    2.使用Sysmon工具


    出现了如图所示的警告

    解决方案:由于Sysmon与我写的脚本文件的版本不匹配导致出错,此处应该改成4.2版本

    3.使用Systracer工具

    神奇的错误,不显示具体内容光显示警告。。。导致我根本没有办法去进行分析。。。

    解决方案:卸了重装 ==

    六、实验总结与体会

    本次实验主要是利用一些工具来对自己的电脑中运行的进程进行一些分析,为了分析恶意代码的一些特征,我们进行了钓鱼执法,用Kali去攻击Windows,在Windows中运行该后门程序。

    我们对这个后门程序主要从两个方面进行分析,一是静态分析,一是动态分析,静态分析是可以使用一些软件和现有的在线资源对软件本身的机器指令进行分析,来判断其是否为病毒;动态分析主要是在程序运行过程中对它所进行的行为进行分析。

    我个人认为动态分析的效果应该会更好一些,因为特征库监测的好坏其实有一个病毒库的问题(在上个实验中,不同的杀毒软件对待同一个病毒的敏感度是不同的),而行为这个是后门程序比较相似的一些特征,虽然指令不同但是最后实现的操作还是一样的(有些程序不运行的时候并不会报出来病毒信息,但是一运行起来有些杀毒软件就可以识别该程序为病毒程序了)。

  • 相关阅读:
    Python 安装Twisted 提示python version 2.7 required,which was not found in the registry
    Openfire Strophe开发中文乱码问题
    css div 垂直居中
    How to create custom methods for use in spring security expression language annotations
    How to check “hasRole” in Java Code with Spring Security?
    Android 显示/隐藏 应用图标
    Android 当媒体变更后,通知其他应用重新扫描
    文件上传那些事儿
    专题:点滴Javascript
    主流动画实现方式总结
  • 原文地址:https://www.cnblogs.com/20165110shiyu/p/10663779.html
Copyright © 2011-2022 走看看