首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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大小写敏感)

代码语言:javascript
复制
<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

镜像加载

WmiEvent

WMI事件

CreateRemoteThread

远程线程创建

DNSEvnet

DNS事件

RawAccessRead

驱动器读取

Error

报错

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

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

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

Condition

Description

Is

Default, values are equals

is not

Values are different

Contains

The field contains this value

Excludes

The field does not contain this value

begin with

The field begins with this value

end with

The field ends with this value

less than

Lexicographical comparison is less than zero

more than

Lexicographical comparison is more than zero

Image

Match an image path (full path or only image name). For example: lsass.exe will match c:\windows\system32\lsass.exe

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

代码语言:javascript
复制
<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工具能让监控系统变得更容易和更效率,相对于其他第三方的监控软件提供了更安全高效和最轻量级的服务。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/Gkms7FaVG6wbVcfQobaM
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券