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

一.原理与实践说明

1.实践目标

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

2.实践内容概述

系统运行监控

  • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
  • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

恶意软件分析

分析该软件在启动回连,安装到目标机及其他任意操作时。该后门软件

  • 读取、添加、删除了哪些注册表项
  • 读取、添加、删除了哪些文件
  • 连接了哪些外部IP,传输了什么数据

3.基础问题回答

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

    • 使用windows自带的schtasks指令设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录。
    • 使用sysmon工具,通过修改配置文件,记录相关的日志文件。
    • 使用Process Explorer工具,监视进程执行情况。
    • 使用Process Monitor分析恶意软件,有效利用其筛选和查找功能。
  • 问:如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
    • 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
    • 使用systracer工具分析恶意软件。
    • 使用VirusTotal对疑似恶意文件进行分析。

二.实践过程记录

1.使用schtasks指令监控系统

使用schtasks /create /TN netstat5316 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令创建计划任务netstat5303,如下图所示:

其中,TN是TaskName的缩写,我们创建的计划任务名是netstat5316;sc表示计时方式,我们以分钟计时填MINUTE;TR=Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口。

在C盘中创建一个netstat5303.bat脚本文件(可先创建txt文本文件,使用记事本写入后通过修改文件名来修改文件格式)

在其中写入以下内容:

date /t >> c:\netstat5303.txt

time /t >> c:\netstat5303.txt

netstat -bn >> c:\netstat5303.txt

如下图所示:

打开任务计划程序,可以看到我们新创建的这个任务:

双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的netstat5316.bat批处理文件,确定即可。

任务还有其他属性,点击“条件”选项卡,可以更改相关的设置。比如默认操作为“只有在计算机使用交流电源时才启动此任务”,那么使用电池电源时就会停止任务。这点需要格外注意,如果没有修改默认操作,任务无论如何都无法执行可能只是因为拔掉了电源。

别忘了使用管理员权限运行,否则可能无法写入C盘

执行此脚本一定时间(我执行了大约8小时),就可以在netstat5303.txt文件中查看到本机在该时间段内的联网记录:

当记录的数据足够丰富时,停止任务,将所得数据在excel中进行分析(详细操作参考学姐的博客:20144306《网络对抗》MAL_恶意代码分析)。

除此之外,还可以将所有的外网地址合并汇总,便于统计分析:

如有需要,查看这些可疑的外网IP即可。

2.使用sysmon工具监控系统

sysmon是微软Sysinternals套件中的一个工具,使用sysmon工具前首先要配置文件。根据老师的要求,最少要记录Event 1,2,3三个事件。即进程创建、进程创建时间、网络连接,如下图所示:

参考使用轻量级工具Sysmon监视你的系统这篇文章,创建配置文件Sysmon20155316.xml。

使用Sysmon.exe -i C:\Sysmon20155316.xml安装sysmon。

对配置文件进行修改,将自己感兴趣的过滤器事件和过滤器事件的选项写入。(使用xml文档,是因为其可以按照标签进行缩进和显示,使用Notepad++打开后一目了然。)我修改的配置文件如下:

<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>
<Image condition="end with">firefox.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
<DestinationPort condition="is">80</DestinationPort>
<DestinationPort condition="is">443</DestinationPort>
</NetworkConnect> <NetworkConnect onmatch="include">
<DestinationPort condition="is">5315</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">firefox.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread> <ProcessCreate onmatch="include">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
<Image condition="end with">firefox.exe</Image>
</ProcessCreate> <FileCreateTime onmatch="exclude" >
<Image condition="end with">firefox.exe</Image>
</FileCreateTime> <FileCreateTime onmatch="include" >
<TargetFilename condition="end with">.tmp</TargetFilename>
<TargetFilename condition="end with">.exe</TargetFilename>
</FileCreateTime> </EventFiltering>
</Sysmon>

使用Sysmon.exe -c D:\Sysmon20155316.xml,将sysmon按照修改好的配置文件进行更新。

win10下,左下角开始菜单右击->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational。在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等。

打开kali,运行木马文件,使其回连kali攻击机。查看日志,通过搜索关键字可以找到相关的后门文件:

打开这个事件,可以看到其属于“NetworkContect”。查看详细信息,可以看到这个后门映像文件的具体位置、源IP和端口、目的IP和端口等。

3.使用VirusTotal分析恶意软件

把生成的恶意代码放在VirusTotal进行分析,基本情况如下:

在66个杀软中,有24个报毒,可疑行相当高了。

查看这个恶意代码的基本属性:

可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。(注:TRiD通过读取文件头,根据特征码进行文件类型匹配。)

还可以看到加壳情况:

以及该恶意代码的算法库支持情况:

4.使用Process Monitor分析恶意软件

Process Monitor 是一款由 Sysinternals 公司开发的包含强大的监视和过滤功能的高级 Windows 监视工具,可实时显示文件系统、注册表、进程/线程的活动。

打开软件,可以看出其对各个进程的详细记录:

下图是我的后门进程:

进程的详细信息如下:

5.使用Process Explorer分析恶意软件

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

靶机运行木马,回连攻击机时,我们可以看到Process Explorer对其进行的记录:

6.使用PEiD分析恶意软件

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。

我们先取一个上次实验生成的,没有加壳的木马,其检测结果如下:

使用UPX加壳后,PEiD成功检测出了加壳的相关信息:

7.使用systracer分析恶意软件

此实验建议在两台虚拟机中进行,windows虚拟机文件少,进行快照时间短,且易于分析。

基本步骤如下:

  • 在win7虚拟机安装SysTracer软件
  • 保存快照,命名为Snapshot #1
  • 将木马植入靶机,对靶机注册表、文件等进行快照,保存为Snapshot #2
  • 打开kali的msfconsle,靶机运行木马,回连kali,win7下再次快照,保存为Snapshot #3
  • 在kali中使用dir指令,保存为Snapshot #4
  • 在kali中使用record_mic指令,保存为Snapshot #5

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

对比快照一和快照二:增加了我的后门程序20165316_backdoor.exe,

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

可以看到新增的后门进程,而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议:

而且该后门程序生成了很多文件、目录和键值

在c:\Windows目录下增加了相关的文件

此外,如上图所示,一些Systracer未授权的地方我们是没法查看的。(为啥用了管理员权限还是打不开)

对HKEY_USER和HKEY_CURRENT_USER根键中的Software子键进行了修改(HKEY_CURRENT_USER管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码。):

对比快照三和快照四:kali上执行dir指令

在c:\Windows目录下增加了相关的文件

对比快照四和快照五:kali上执行record_mic指令

注册表项中有以下变化:

新建了连接,其中有与后门程序相关的Apache HTTP Server

进程中增加了这一项,与木马有关

对HKEY_LOCAL_MACHINE根键中的内容进行了修改,与多媒体有关。

此外我们可以通过查看后门软件的“opened handles”(打开的句柄)来对比他们都做了什么

9.使用wireshark抓包分析恶意软件

回连完成后结束捕获,并把过滤规则设置为ip.addr == 192.168.1.147,这里我只想查看和虚拟机IP有关的数据包,所以把没用的包过滤掉

我们可以看到有大量的TCP包,这其中有回连相关的包,之后我有用dir指令查看了靶机的当前目录,传输了很多数据过来:

传输的数据包括Windows向Kali发出TCP同步请求包SYN,Kali给Windows发出的SYN同步请求包和确认包ACK,Kali给Windows传的ACK包、PSH+ACK包等等(PSH表示有DATA数据传输)

三.实践总结及体会

本次实验的内容十分丰富,我们尝试学习和使用了数款用于检测恶意代码的指令或是软件,例如SysTracer、SysinternalsSuite、ProceMonitor等。这些工具都能很好地辅助我们对主机进行监控,以发现恶意行为并进行及时处理。

通过学习了解到,恶意代码的分析方法主要分为静态分析方法和动态分析方法。这两种方法在本次实验中都有所涉及。静态分析方法是指在不执行二进制程序的条件下进行分析,如反汇编分析等,属于逆向工程分析方法。而动态分析方法是指在恶意代码执行的情况下,利用调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程,以便作进一步分析。

虽然恶意代码的分析工具多种多样、日趋完善,但作为计算机用户的我们更不能掉以轻心,而应该时刻保持警惕。要学会如何使用工具,退一步来讲,在不会使用时,如何查找工具的使用方法。

2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析的更多相关文章

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

    2018-2019-2 网络对抗技术 20165232 Exp4 恶意代码分析 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门 ...

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

    - 2018-2019-2 网络对抗技术 20165206 Exp4 恶意代码分析 - 实验任务 1系统运行监控(2分) (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP ...

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

    2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析 实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...

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

    2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析 实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp ...

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

    2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或E ...

  6. 2018-2019-2 20165236 《网络对抗技术》Exp4 恶意代码分析

    2018-2019-2 20165236 <网络对抗技术>Exp4 恶意代码分析 一.1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行; 1.2是分析一个恶意软件, ...

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

    2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

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

    2018-2019-2 网络对抗技术 20165308 Exp4 恶意代码分析 实验过程 一.系统运行监控 (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一 ...

  9. 2018-2019-2 20165205《网络对抗技术》Exp4 恶意代码分析

    2018-2019-2 20165205<网络对抗技术>Exp4 恶意代码分析 实验要求 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中 ...

随机推荐

  1. myeclipse 无法启动Tomcat(程序未设置断点)This kind of launch is configured to open the Debug perspective ...

    myeclipse 中在新建一个项目之后想要运行一下,可是却提示This kind of launch is configured to open the Debug perspective,下面是我 ...

  2. http 协议_DNS_域名解析 DNS 服务器_内容分发网络 CDN_缓存机制_HTML5 浏览器存储技术_cookie_sessionStorage_localStorage

    TCP/IP 协议族 是按层次去划分的 应用层    决定了向用户提供应用服务时通信的活动. FTP 协议(文件传输协议)DNS(域名协议)HTTP(超文本传输协议) 传输层    提供处于网络连接中 ...

  3. (75)Wangdao.com第十三天_JavaScript 包装对象

    包装对象 所谓“包装对象”,就是分别与数值.字符串.布尔值相对应的Number.String.Boolean三个原生对象 这三个原生对象可以把原始类型的值变成(包装成)对象 var v1 = new ...

  4. [LeetCode] Valid Tic-Tac-Toe State 验证井字棋状态

    A Tic-Tac-Toe board is given as a string array board. Return True if and only if it is possible to r ...

  5. ES6 promise学习

    Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大. 1.promise是一构造函数,既然是构造函数,那么我们就可以用 new Promise()得到一个p ...

  6. JavaScript学习day1

    JavaScript 特点: javascript 是一种脚本语言,它的解释器被称为javascript引擎,JavaScript被发明用于在HTML网页上使用,给HTML 网页增加动态功能 由于ja ...

  7. java生成/解析二维码

    package a; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import ...

  8. HDFS基础配置

    HADOOP-3.1.0-----HDFS基础配置 执行步骤:(1)配置集群(2)启动.测试集群增.删.查(3)执行wordcount案例 一.配置集群 1.在 hadoop-env.sh配置文件添加 ...

  9. DS博客作业01--线性表

    1.本周学习总结(0--2分) 1.1思维导图 1.2.谈谈你对线性表的认识及学习体会. 1.线性表的内容上了三星期的课,相对来说内容比较丰富,尤其是链表方面,包含单链表,双链表和循环链表.作为第一部 ...

  10. assert()函数总结 (转)

    assert()函数用法总结 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义为: #include <assert.h> ...