20155326《网络攻防》Exp4 恶意代码分析

基础问题回答:

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

答:首先,可以使用windows自带的schtasks指令设置一个计划任务,每隔一定的时间对主机的联网记录等进行记录。也可以使用sysmon工具,通过修改配置文件,记录相关的日志文件,或是Process Explorer工具,监视进程执行情况。

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

答:启动该程序,利用systracer及wireshark动态分析程序动向,或是利用virscan分析它。

实践目标

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

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

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

实践过程

恶意代码是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。

恶意代码的分析方式有两种:静态分析技术和动态分析技术。在这篇博客里我们静态分析选用的工具是:virscan、PE explorer、PEiD、;动态分析选用的工具是:systracer、wireshark、netstat、sysmon。

使用schtasks指令监控系统运行

先在C盘目录下建立一个netstatlog.bat文件,用来将记录的联网结果格式化输出到netstatlog.txt文件中,netstatlog.bat内容为:

记得要管理员身份运行哦~~

date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt

打开Windows下命令提示符,输入指令schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "c:\netstatlog.bat"指令创建一个每隔五分钟记录计算机联网情况的任务:

这个时候每隔5分钟就会更新一次netstatlog文件,我们可以查看当病毒回连的时候发生了什么:

端口号、ip地址等等都监测并记录的十分清楚。

(PS:才开始的时候建错了导致没有更新。。。要建.bat文件在里面输入date /t >> c:\netstatlog.txt等需要被记录的内容,才会出现新的内容。。)

在静置了两三天后按照学姐的博客中介绍的excel分析方法将记录文件中的记录进行分析:

很奇怪的是我明明等了挺久的,但是协议项统计出来后感觉和大家的差挺多,可能是我没怎么用电脑?哈哈哈

从图中可以看出360se.exe联网最多,360se.exe是“360浏览器”进程,可以使用“任务管理器”进行关闭。

还有与360相关的联网最多的是360tray.exe,从上图来看他是360安全卫士木马防火墙模块。

第二多的是vmware-hosted.exe,我查了一下,没有明确的解释,但我觉得是就是作为一个服务端,让管理中心来控制。

接下来看看哪些外部网络连接最频繁:

通过ip查寻可以看出排名前三的分别是金山云公司、百度网讯以及东南大学。。很好奇为什么会访问东南大学。。

使用sysmon工具监控系统运行

sysmon微软Sysinternals套件中的一个工具,可以从码云项目的附件里进行下载,也可以自己去官网下载,我下载的是Sysmon v7.01,要使用sysmon工具先要配置文件,一开始我直接用的是老师给的配置文件:


<Sysmon schemaversion="3.10">
<!-- 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>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</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 -accepteula –i指令对sysmon进行安装:

可是才开始这里出现了错误:

改成sysmon5326路径后还是错的。

后来输入命令-accepteula -i -n对啦!

之后就可以在任务管理器中看到sysmon.exe已经在运行了

启动之后,便可以到事件查看器里查看相应的日志:

由于sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。

通过收集使用Windows事件集合或SIEM代理生成的事件,然后分析它们,可以识别恶意或异常活动,并了解入侵者和恶意软件在您的网络上如何操作。

所以这里挑出其中一个进行分析,这个是Microsoft-Windows-Sysmon/Operational在创建进程。

查询后,可以看出这是个为命令行程序提供支持的进程:

参考:Conhost.exe是什么进程?为什么会运行?图文详解

这个行为是vs中的一个叫vcpkgsrv.exe的进程终止的行为,Process terminated (rule: ProcessTerminate)

查询百度后得知这应该是vs中的一个智能感知程序,会自动更新,拉低电脑的速度~

这个名叫Sysmon config state changed的行为翻译过来是SYSMON配置状态改变:

这个应该是安装sysmon时输入的命令:

使用virscan分析恶意软件

在virscan网站上查看上次改进后的后门程序的文件行为分析:

可以看到启动回连主机的被打码的IP地址以及端口号,以及检测自身是否被调试和打开事件的行为。

使用systracer工具分析恶意软件

使用systracer工具建立了4个快照,分别是在主机中没有恶意软件时、将恶意软件植入到目标主机中后、恶意软件启动回连时、使用恶意软件获取目标主机的摄像头时:

结果分析:

启动回连时注册表发生变化,看出很多被删除了:

启动回连时,新建了bdoor1.exe应用,可以看见它启用了许多DLL文件:

ntdll.dll:ntdll.dll是Windows系统从ring3到ring0的入口。位于Kernel32.dll和user32.dll中的所有win32 API最终都是调用ntdll.dll中的函数实现的。ntdll.dll中的函-数使用SYSENTRY进入ring0,函数的实现实体在ring0中。

Wow64.dll 是Windows NT kernel的核心接口, 在32位和64位调用之间进行转换, 包括指针和调用栈的操控。

Wow64win.dll 为32位应用程序提供合适的入口指针。

Wow64cpu.dll 负责将处理器在32位和64位的模式之间转换,它可以被发现在C:\位置

Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的权限,RING3层拥有最低的权限。按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据,操作系统工作在RING0层,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,每一层只能访问本层以及权限更低层的数据。

综合以上描述,该程序可以获取到RING0权限,具有较高的侵略性。

ntdll.dll是Windows系统从ring3到ring0的入口。位于Kernel32.dll和user32.dll中的所有win32 API 最终都是调用ntdll.dll中的函数实现的。ntdll.dll中的函数使用SYSENTRY进入ring0,该程序可以获取到RING0权限,具有较高的侵略性。

实验总结与体会

本次实验的重点在于对恶意代码进行分析,通过这次实验,我懂得了以后要是想检测自己的电脑,可以通过这次实验中使用的方法手动监测。同时,弄清楚一个程序是不是病毒,更要熟悉自己的电脑,清楚某些端口号的作用,清楚什么是可疑的动态。实验中遇到的问题都记录到实验过程中啦~~

20155326《网络攻防》Exp4 恶意代码分析的更多相关文章

  1. 2018-2019 20165237网络对抗 Exp4 恶意代码分析

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

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

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

  3. 2018-2019 20165319 网络对抗 Exp4 恶意代码分析

    基础问题回答 1. 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控 答:1.使用Windows自带的schta ...

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

    2018-2019 20165311 网络对抗 Exp4 恶意代码分析 2018-2019 20165311 网络对抗 Exp4 恶意代码分析 实验内容 系统运行监控(2分) 恶意软件分析(1.5分) ...

  5. 2018-2019-2 20165312《网络攻防技术》Exp4 恶意代码分析

    2018-2019-2 20165312<网络攻防技术>Exp4 恶意代码分析 知识点总结 1.有关schtasks schtacks的作用:安排命令和程序定期运行或在指定时间内运行.从计 ...

  6. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  7. 20155310 《网络攻防》Exp4 恶意代码分析

    20155310 <网络攻防>Exp4 恶意代码分析 基础问题 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些, ...

  8. 20155318 《网络攻防》Exp4 恶意代码分析

    20155318 <网络攻防>Exp4 恶意代码分析 基础问题 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什 ...

  9. 20155321 《网络攻防》 Exp4 恶意代码分析

    20155321 <网络攻防> Exp4 恶意代码分析 计划任务监控 在C盘根目录下建立一个netstatlog.bat文件(先把后缀设为txt,保存好内容后记得把后缀改为bat),内容如 ...

随机推荐

  1. Spring线程池的5个要素

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-// ...

  2. 学习笔记:SASS

    SASS: http://www.sass.hk/sass-course.html  SASS 2015-10-10 http://sass.bootcss.com/docs/sass-referen ...

  3. leetcode394

    class Solution { public: string decodeString(string s) { stack<string> chars; stack<int> ...

  4. 20165304 2017-2018-2《Java程序设计》学习总结

    20165304 2017-2018-2<Java程序设计>学习总结 一.每周作业及实验报告链接汇总 1.我期望的师生关系 2.20165304学习基础和C语言基础调查 3.linux系统 ...

  5. Mybatis运行错误:信息: SQLErrorCodes loaded: [DB2, Derby, H2, HDB, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]

    Mybatis运行出现错误提示: 五月 23, 2018 12:07:22 上午 org.springframework.jdbc.support.SQLErrorCodesFactory <i ...

  6. jenkins Manage and Assign Roles使用

    1.安装插件  Role-based Authorization Strategy 2.使用插件 3.进入 Manage and Assign Roles  配置Pattern 匹配项目, 如果要匹配 ...

  7. jquery 中后代遍历之children、find区别

    jquery 中children.find区别 首先看一段HTML代码,如下: <table id="tb"> <tr> <td>0</t ...

  8. servlet 最大线程数探索笔记

    servlet默认是单例模式的,所以是单例多线程的.如果实现了singleservlet是可以多个servlet实例,下面是一个servlet的请求生命周期 1 客户端请求该 Servlet:加载 S ...

  9. php的pid文件指定用户

    比如pid文件指定www用户,首先得有这用户和用户组. 找到pathtophp-fpm.conf文件,修改里面得相关内容. 修改listen.owner=www listen.group=www us ...

  10. hbase--知识点总结2

    --用java操作hbase 1.配置jar包环境 创建hbase项目 --> 新建folder文件夹 --> 将hbase相关jar包全部导入到java项目之中 --> add b ...