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

一、实验目标

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

二、实验内容

任务一:系统运行监控

  • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里
  • 运行一段时间并分析该文件,综述一下分析结果,找出所有连网的程序连了哪里,干了什么,是否合适
  • 进一步分析可以有针对性的抓包
  • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点可疑行为
  • 实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行,从大量数据中理出规律、找出问题

任务二:恶意软件分析

  • 分析该软件在启动回连、安装到目标机及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)
    • 读取、添加、删除了哪些注册表项
    • 读取、添加、删除了哪些文件
    • 连接了哪些外部IP,传输了什么数据(抓包分析)

三、基础知识

schtasks简单实现

  • 每1分钟记录有哪些程序在连网:schtasks /create /TN netstat5217 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt
    • TN:Task Name,本例中时netstat
    • SC:表示计时方式,我们以分钟计时填MINUTE
    • MO:MOdifier
    • TR:Task Run,要运行的指令是 netstat
    • bn:b表示显示可执行文件名,n表示以数字来显示IP和端口
    • >:表示输出重定向,将输出存放在c: etstatlog.txt文件中

schtasks批处理

  • 在C盘下添加文件netstatlog.bat
date /t >> c:
etstatlog.txt
time /t >> c:
etstatlog.txt
netstat -bn >> c:
etstatlog.txt
  • 在图形界面打开计划任务,将每分钟执行指令改为c: etstatlog.bat
  • 然后就可以在netstat.txt文件下看到输出,多了日期和时间,看起来更方便

数据处理方法

  • 可以把这样的日志copy到Linux,用grep,cut等文本处理工具来分析
  • 在windows里的话,最好复制到excel中,再看如何统计分析
  • 目的是为了找出哪些软件连网最多,都连接了哪些IP,把没用的重复项都去掉

sysmon

  • Sysmon是微软Sysinternals套件中的一个工具。可以监控几乎所有的重要操作
  • 基本操作包括几步
    • 确定要监控的目标:确定好过滤条件,让信任的程序尽量不要记到日志里去
    • 写好配置文件:想记录的所有网络连接可写为<NetworkConnect>*</NetworkConnect>。exclude相当于白名单,不用记录。include相当于黑名单
    • 安装sysmon:sysmon.exe -i config_file_name(修改完配置文件后也需执行改指令进行更新)
    • 在事件查看器里找到日志

恶意软件分析

  • 静态分析

    • 文件扫描(VirusTotal、VirusScan工具等)
    • 文件格式识别(peid、file、FileAnalyzer工具等)
    • 字符串提取(Strings工具等)
    • 反汇编(GDB、IDAPro、VC工具等)
    • 反编译(REC、DCC、JAD工具等)
    • 逻辑结构分析(Ollydbg、IDAPro工具等)
    • 加壳脱壳(UPX、VMUnPacker工具等)
  • 动态分析

    • 快照比对(SysTracer、Filesnap、Regsnap工具等)
    • 抓包分析(WireShark工具等)
    • 行为监控(Filemon、Regmon、ProcessExplorer工具等)
    • 沙盒(NormanSandbox、CWSandbox工具等)
    • 动态跟踪调试(Ollydbg、IDAPro工具等)

四、实验任务

1.系统运行监控

schtasks监控系统

  • schtasks添加计划任务

  • 编写脚本netstat5217.bat,进行批处理

  • 在任务计划程序找到计划任务

  • 编辑计划任务,以正确运行脚本

  • 执行一段时间后,打开记录的位置netstat20175217.txt,即可查看到本机在该时间段内的联网记录

  • 将数据导入Excel中,并生成相应的数据统计图

分析:

  • Firefox、Chrome两大浏览器使用的最多,这个没什么问题
  • WPS使用也很多,这个就很神奇了,我今天都在做实验,就没开过WPS,说明它平时一直在后台运行...
  • 然后是VMware,这个很正常,今天一直在开虚拟机
  • 然后就是迅雷,今天一直在下软件,这个也可以理解
  • 接下来就是QQ、微信、丁丁几大社交聊天软件,这个也正常
  • 然后就是explorer.exe,这是个程序管理器或者文件资源管理器,它用于管理Windows图形壳,包括桌面和文件管理,也有可能是恶意程序,因为我今天运行后门程序太多次了,所以我怀疑后门程序和这个explorer有关
  • 最后就是我的后门程序upx_5217_2.exe

sysmon监控系统

  • 明确各部分要过滤的条件,配置xml文件sysmon20175217.xml

  • include:记录

  • exclude:排除

  • ProcessCreate:进程创建,这里的进程名排除(不记录)浏览器结尾的进程,包含了cmd结尾的进程

  • NetworlConnect:网络连接,过滤掉浏览器的网络连接、本机网络连接和目的端口为137(提供局域网中ID或IP查询服务)的连接服务。包含目的端口为80(http)和443(https)的网络连接

  • FileCreatTime:进程创建时间,这里排除(不记录)浏览器

  • CreateRemote:远程线程创建,包含(记录)线程:

    • explorer.exe:Windows程序管理器或者文件资源管理器
    • svchost.exe:一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称
    • winlogon.exe:Windows NT 用户登陆程序,用于管理用户登录和退出
    • powershell.exe:专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用
  • 安装sysmon:Sysmon64.exe -i sysmon20175217.xml

  • 在“事件查看器”中选择日志的位置应用和服务日志/Microsoft/Windows/Sysmon/Operational,我们可以看到记录的事件的ID、任务类别、详细信息等

2.恶意软件分析

  • 使用实验三产生的加壳后门程序进行分析

静态分析

文件扫描——virustotal

  • 把生成的恶意代码放在VirusTotal进行分析(也可以使用VirusScan工具)

  • 可查看到软件恶意代码的详细属性

字符串提取——Strings工具

  • 安装String工具,并输入strings -a 文件名提取文件中全部字符串

  • 通过分析提取出的字符串,可以发现大量可疑的请求连接的字符

  • 以及一些可疑URL信息

文件格式识别——peid

  • 可检测出文件的压缩壳

动态分析

快照对比——systracer

  • 下载SysTracer工具

  • 点击右侧的take snapshot,存储快照

    • 快照一:未移植后门程序,保存为Snapshot #1
    • 快照二:移植后门程序,保存为Snapshot #2
    • 快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
    • 快照四:在kali中使用dir指令,保存为Snapshot #4
    • 快照五:在kali中使用record_mic指令,保存为Snapshot #5

  • 通过右下角的compare键或者View Differences Lists比对各快照,可以选择Only Difference只查看不同的项

  • 对比快照一快照二(植入后门程序),增加了我的后门程序upx_5217_2.exe,而且一些文件进行了更新、增加了一些键值,说明植入的文件对系统进行了一些修改

  • 对比快照二快照三(后门启动前与启动后):

    • 可以看到新增的后门进程,而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议
    • 而且该后门程序生成了很多文件、目录和键值
    • c:WindowsPrefetch目录下增加了相关的文件
  • 对比快照三快照四(kali上执行dir指令):

    • key_local_machine根键中的内容进行了修改
    • c:Program FilesSysTracerdata新增了snap文件
  • 对比快照四快照五(kali上执行record_mic指令)

    • 注册表项出现变化
    • 新建了很多连接,其中有与后门程序相关的Apache HTTP Server

抓包分析——wireshark

  • 对回连过程进行捕包,过滤条件为虚拟机IP地址192.168.228.128,可以看到回连过程的三次握手

  • 使用dir查看文件,可发现多出了许多PSH+ACK包,可以判断有数据在传输

  • 使用getuid进行提权操作,发现增加了几个数据包

行为监控——ProcessExplorer

  • 在进行回连时,我们可以在cmd.exe的子程序中看到我们的程序,由此我们可以知道该程序是在命令行中运行的

  • 也可以详细查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等

五、实验后回答问题

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

  • 使用schtasks,设置一个计划任务,监视系统程序的运行情况
  • 使用Sysmon,编写配置文件,记录有关的系统日志
  • 使用Process Explorer,监视进程执行情况
  • 使用systracer,对比不同快照,查看是否有可疑行为

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

  • 静态分析

    • 使用virscan或virustotal,对恶意软件进行分析
    • 使用PEiD,查看恶意软件是否加壳,加的什么壳
    • 使用String工具,分析恶意程序是否包含可疑字符串
  • 动态分析

    • 使用systracer,针对恶意软件进行分析
    • 使用Wireshark,捕包分析恶意软件的通信过程
    • 使用Process Explorer,监视文件系统、注册表,分析恶意软件的活动

六、实验中遇到的问题

问题一:无法启动sysmon

解决一:原因是权限不够,以管理员身份运行cmd即可

问题二:使用systracer时无法显示端口信息

解决二:可能是版本不对,之前用的是2.6版,重新下载了2.1版就OK了

七、实验心得体会

       这次实验做的是系统程序监控和恶意代码分析,周一听课的时候觉得没什么难的,但真正操作起来发现困难到爆炸,可能是之前做的太顺了,这次基本是每搞一个软件都会卡住。最后通过向同学求助以及自己艰难的摸索终于把软件都搞定了。然后又出现了难题,不会分析,所以又开始疯狂查资料、翻博客、问小伙伴。最后,通过自己的理解,艰难的分析出了个大概的结果吧。
       这次实验虽然使我对系统的监控和恶意代码的分析有了一定的理解,但是还是没有办法详细、准确地分析,只能爬到需要的数据,爬到数据也只能分析个大概。根本原因还是自己对这些数据的分析能力,也就是具体分析这一块的知识学习还不够吧,以后也会加强这一部分的理解吧,争取做的更好。

八、参考链接

原文地址:https://www.cnblogs.com/wyf20175217/p/12702402.html