“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

Windows Sysinternal 实用内部监控工具:sysmon

  • 2020-02-25
  • 本文字数:2819 字

    阅读完需:约 9 分钟

Windows Sysinternal 实用内部监控工具:sysmon

Sysmon 是 Windows Sysinternals 系列中的一款工具。如果你想实时监控 Windows 系统又对其他第三方软件有顾虑,使用 Sysmon 这款轻量级 Microsoft 自带内部软件是最好的选择。

Sysmon 有啥用?

在打开应用或者任何进程创建的行为发生时,Sysmon 会使用 sha1(默认),MD5,SHA256 或 IMPHASH 记录进程镜像文件的 hash 值,包含进程创建过程中的进程 GUID,每个事件中包含 session 的 GUID。除此之外记录磁盘和卷的读取请求/网络连接(包括每个连接的源进程,IP 地址,端口号,主机名和端口名),重要的是还可在生成初期进程事件能记录在复杂的内核模式运行的恶意软件。

安装步骤

https://download.sysinternals.com/files/Sysmon.zip 下载 Sysmon,打开 CMD(Admin 权限)到放置路径下运行


Sysmon 启动

在实际生产环境应用时,根据不同的配置,这时候自定义监控规则显得尤为重要,又由于避免产生庞大的数据记录,需要通过精简配置来达到高效率日志生成。


Sysmon 提供了 xml 格式的配置文件来让用户自定义过滤规则,配置文件的东西比较多,以下提供一个测试用例。(xml 大小写敏感)


<Sysmon schemaversion="4.23">      <!-- 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>        <!-- Do not log process termination -->        <ProcessTerminate onmatch="include" />        <!-- Log network connection if the destination port equal 443 -->        <!-- or 80, and process isn't InternetExplorer -->        <NetworkConnect onmatch="include">          <DestinationPort>443</DestinationPort>          <DestinationPort>80</DestinationPort>        </NetworkConnect>        <NetworkConnect onmatch="exclude">          <Image condition="end with">iexplore.exe</Image>        </NetworkConnect>      </EventFiltering>    </Sysmon>
复制代码


完成了 XML 的编写,即可上传到 Sysmon

默认配置

上传配置

配置检查


在上面我们看到了不同标识的 tag 用来定义 xml 配置文件,下面列出可选择的事件过滤器(tag)


ProcessCreate进程创建ProcessAccess进程访问
FileCreateTime进程创建时间FileCreate文件创建
NetworkConnect网络链接RegistryEvent注册表事件
ProcessTermina进程结束FileCreateStreamHash文件流创建
DriverLoad驱动加载PipeEvent管道事件
ImageLoad镜像加载WmiEventWMI事件
CreateRemoteThread远程线程创建DNSEvnetDNS事件
RawAccessRead驱动器读取Error报错


具体详细内容可参考 https://technet.microsoft.com/en-us/sysinternals/sysmon。


onmatch 选项只能设置为 include 或 exclude。


condition 根据不同的需求可设置为如下值:


ConditionDescription
IsDefault, values are equals
is notValues are different
ContainsThe field contains this value
ExcludesThe field does not contain this value
begin withThe field begins with this value
end withThe field ends with this value
less thanLexicographical comparison is less than zero
more thanLexicographical comparison is more than zero
ImageMatch an image path (full path or only image name). For example: lsass.exe will match c:\windows\system32\lsass.exe


在实际生产中请根据实际情况调整,以下为个人用例


<Sysmon schemaversion="4.23">  <!-- 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>    <ProcessTerminate onmatch="include" >            <Image condition="end with">MsMpEng.exe</Image>    </ProcessTerminate>    <!-- Log network connection if the destination port equal 443 -->    <!-- or 80, and process isn't InternetExplorer -->    <!--NetworkConnect onmatch="include">      <DestinationPort>443</DestinationPort>      <DestinationPort>80</DestinationPort >    </NetworkConnect -->    <FileCreateTime onmatch="exclude" >      <Image condition="end with">chrome.exe</Image>    </FileCreateTime>    <ImageLoad onmatch="include">      <Signed condition="is">false</Signed>    </ImageLoad>    <!-- Log access rights for lsass.exe or winlogon.exe is not PROCESS_QUERY_INFORMATION -->    <ProcessAccess onmatch="exclude">      <GrantedAccess condition="is">0x1400</GrantedAccess>    </ProcessAccess>    <ProcessAccess onmatch="include">
<TargetImage condition="end with">lsass.exe</TargetImage> <TargetImage condition="end with">winlogon.exe</TargetImage> </ProcessAccess> <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 日志

Process Event

在 EventViewer->Applications and Services ->Microsoft->Windows->Sysmon 即可找到 Sysmon 监控得到的日志,如下图以 QQ 浏览器为例(非 Microsoft 三方软件,因为 Microsoft 软件已被列入白名单):



记录下来 QQ 浏览器访问了进程,属于进程访问事件。



关键的一点就是 GrantedAccess 的值为 0x1410,这个值表示 QQ 浏览器对 lsass 拥有上述受限制的访问权限,包括写进程内存和读进程内存,这样就能获取到用户口令。

Network Event

访问网站,可以看到连接的详细信息,包括 ip,端口,pid 等,如图通过 Sysmon 监控到 Outlook 对网络的访问



通过 CMD 对自己进行 ping 操作


日志记录

目前的恶意软件为了对抗检测很多都有日志删除功能,Sysmon 跟 EventView 的配合可以更好的将日志定制保存位置。


总结

Sysmon 作为 Microsoft 自创配合 Windows 的监控软件,结合其他 Windows 工具能让监控系统变得更容易和更效率,相对于其他第三方的监控软件提供了更安全高效和最轻量级的服务。


作者介绍:


周克,世纪互联蓝云 Office 365 认证服务运维专家 。


2020-02-25 17:546522

评论

发布
暂无评论
发现更多内容

XRP瑞波币系统软件开发|XRP瑞波币APP开发

系统开发

打开数“智”化之门,一字之差带来的思考

京东科技开发者

DevOps IoT 新基建 智能

用 JavaScript 实现一个 TicTacToe 游戏 —— 编程训练

三钻

Java 算法 大前端 游戏开发 七日更

程序员必看的Redis6.0多线程性能测试结果及分析 你看懂了嘛?

比伯

Java 编程 架构 面试

执法监督信息化建设,公安情报指挥一体化合成作战系统开发

t13823115967

智慧公安

判空使用isEmpty()方法真的可行吗?

田维常

Java

Serverless 是一种思想状态

Serverless Devs

Java Serverless 运维 云原生 后端

都 2021 年了,Serverless 能取代微服务吗?

Serverless Devs

Serverless 微服务 运维 云原生 后端

你不好奇 Linux 网络发包过程吗?

小林coding

Linux 操作系统 网络

高性能MySQL

田维常

MySQL

编写令人愉悦的API接口(二)

Geek_42915f

Java APi设计 接口规范

波场智能合约系统开发技术方案丨智能合约DAPP系统开发源码

滴滴内部框架手册:Spring5+SpringMVC3+MyBatis3.X

Java架构追梦

Java spring 架构 mybatis springmvc

顶会两篇论文连发,华为云医疗AI低调中崭露头角

华为云开发者联盟

人工智能 医疗 华为云

阿里P8整理出Nginx笔记:Nginx应用与运维实战核心篇

996小迁

Java nginx 架构 面试

如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?

阿里巴巴云原生

阿里云 容器 运维 云原生

Android uni-app实现音视频通话

anyRTC开发者

uni-app android 音视频 WebRTC 跨平台

现代JavaScript:ES6+ 中的 Imports,Exports,Let,Const 和 Promise

葡萄城技术团队

Java ES6

社区一体化综合平台搭建,智慧平安小区建设解决方案

t13823115967

智慧城市 智慧平安社区平台建设

架构师训练营第 1 期 - 第 11 周 - 命题作业

wgl

极客大学架构师训练营

区块链数字货币多币种钱包开发案例

灵魂一问:数据库连接池到底该怎么配?

Gopher指北

MySQL Go 语言

LeetCode题解:42. 接雨水,暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!

华为云开发者联盟

游戏 场景 崩溃

传统数仓如何转型大数据

数据社

大数据 数据仓库 七日更

大神带你一睹为快!阿里技术官亲自码了“2000页的Spring全家桶笔记”真牛逼!

比伯

Java 编程 程序员 架构 计算机

软件测试的方法

测试人生路

软件测试

ECS实践案例丨逻辑卷的创建和扩容操作指导

华为云开发者联盟

数据库 数据 服务

架构师训练营第 1 期 第 13 周作业

李循律

极客大学架构师训练营

如何阅读别人的源码

熊斌

学习 Code Review 源码阅读 七日更

SpacePX挖矿系统APP开发|SpacePX挖矿软件开发

系统开发

Windows Sysinternal 实用内部监控工具:sysmon_架构_周克_InfoQ精选文章