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:\netstatlog.txt"- 这行指令的目的是建立一个txt文件,存放每1分钟监测到的哪些程序在使用网络的数据信息。
- 分析一下上面的指令
- TN:Task Name,本例中是20165322netstat
- SC: SChedule type,本例中是MINUTE,以分钟来计时
- TR: Task Run,要运行的指令是 netstat
- -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口
- c:\netstatlog.txt类似于Linux中的重定向,输出将存放在C盘下的netstatlog.txt文件中
- 可以看到此时电脑每隔一分钟就会闪一次cmd,但是我们的C盘文件下并没有出现建立的txt文件夹。
- 打开计算机管理器,选择任务计划程序-找到我们设定的任务名20165322netstat并双击,点击在右边所选项属性栏,常规-安全选项栏中,勾选使用最高权限运行。退出进入c盘即可看到我们生成的txt文件了。此时txt文件里已经开始记录网络数据信息。
- 我们为了更好的检测它,写一个脚本让他记录日期和时间。由于在C盘不能新建文件,在桌面上新建一个netstatlog.txt,在里面编辑:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.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工具,监视文件系统、注册表、进程/线程的活动。
返回目录
实验总结与体会
- 通过本次实验,我学会了几种检测自己是否安全的方法。不光是依靠杀软,而是从主机进行的活动以及注册表的变化来判断电脑是否遭到未知后门的侵入。
- 怀疑自己电脑有病毒、后门时,可以先通过总体的检测,检测本机的网络连接情况和实时活动。确认怀疑到某一个文件后,可以依靠某些软件来监测它在对自己的主机做些什么,依此判断软件是否为恶意软件。
2018-2019-2 网络对抗技术 20165322 Exp4 恶意代码分析的更多相关文章
- 2018-2019-2 网络对抗技术 20165232 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165232 Exp4 恶意代码分析 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门 ...
- 2018-2019-2 网络对抗技术 20165206 Exp4 恶意代码分析
- 2018-2019-2 网络对抗技术 20165206 Exp4 恶意代码分析 - 实验任务 1系统运行监控(2分) (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP ...
- 2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析 实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...
- 2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165225 Exp4 恶意代码分析 实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp ...
- 2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165336 Exp4 恶意代码分析 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或E ...
- 2018-2019-2 20165236 《网络对抗技术》Exp4 恶意代码分析
2018-2019-2 20165236 <网络对抗技术>Exp4 恶意代码分析 一.1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行; 1.2是分析一个恶意软件, ...
- 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...
- 2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165228 Exp4 恶意代码分析 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...
- 2018-2019-2 网络对抗技术 20165308 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165308 Exp4 恶意代码分析 实验过程 一.系统运行监控 (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一 ...
随机推荐
- guava文档API制作成chm文件
将HTML制作成CHM.EXE需要用到一个小工具“HUGECHM”,将HTML打包成CHM文件 1.下载guava的最新的版本,网址:https://github.com/google/guava/w ...
- C#PrintDocument打印尺寸调整
/// <summary> /// 打印的按钮 /// </summary> /// <param name="sender"></par ...
- 删除Panl控件中窗体的方法
//删除窗体方法 private void CloseFrm() { foreach (Control item in panel1.Controls) { if (item is Form) //判 ...
- Spring-在IDEA2016中创建maven管理的SpringMVC项目
这是一套我自己摸索出来的创建项目方法,基本是用在创建用maven管理的 Spring+SpringMVC+Mybatis的J2EE项目时. 创建一个maven管理的webapp项目 在创建项目时,选择 ...
- JAVA获取5位随机数
package baofoo.utils; import org.junit.Test; import java.text.SimpleDateFormat; import java.util.Dat ...
- JSON 解析的可抛弃
先看例子, json文件中有些元素不是我们想要的,在反序列化时可以当它们不存在,下面例子抛弃了 aaa.ccc这两节. package main import ( "encoding ...
- yum只下载不安装dokcer
yum install --downloadonly --downloaddir=/test/ docker-io 有三个依赖包,如果不知道现后依赖顺序,可以强制安装 哦了
- Web安全相关(四):过多发布(Over Posting)
简介 过多发布的内容相对比较简单,因此,我只打算把原文中的一些关键信息翻译一下.原文链接如下: http://www.asp.net/mvc/overview/getting-started/gett ...
- LeetCode ClimbingStairs
class Solution { public: int climbStairs(int n) { ) ; ; ; ; i<n; i++) { int t = a + b; a = b; b = ...
- BZOJ4513: [Sdoi2016]储能表(数位dp)
题意 题目链接 Sol 一点思路都没有,只会暴力,没想到标算是数位dp??Orz 首先答案可以分成两部分来统计 设 \[ f_{i,j}= \begin{aligned} i\oplus j & ...






















