10

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

 4 years ago
source link: https://www.infoq.cn/article/Gkms7FaVG6wbVcfQobaM
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 权限) 到放置路径下运行

2yErmeR.png!web

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

默认配置

bqAnyez.png!web

上传配置

3qMbUnM.png!web

配置检查

QRjEFbj.png!web

在上面我们看到了不同标识的 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

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

复制代码

<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 软件已被列入白名单):

EJzqMrE.png!web

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

VRFvaeE.png!web

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

Network Event

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

363QZnV.jpg!web

通过 CMD 对自己进行 ping 操作

yuIvuuN.jpg!web

日志记录

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

FFVr6zj.png!web

总结

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK