美文网首页
搭建自己的SEIM(Sysmon+Winlogbeat+ELK+

搭建自己的SEIM(Sysmon+Winlogbeat+ELK+

作者: doinb1517 | 来源:发表于2023-03-15 21:21 被阅读0次

    前言

    本篇文章简单介绍下如何使用免费软件搭建自己的SEIM系统

    组件

    日志捕获组件:

    日志捕获组件Sysmon

    下载
    https://learn.microsoft.com/en-us/sysinternals/downloads/Sysmon
    
    安装配置

    下载配置模板

    https://github.com/SwiftOnSecurity/Sysmon-config
    

    将其放到与sysmon同一路径,使用CMD以管理员权限执行

    sysmon.exe -accepteula -i sysmonconfig-export.xml
    

    更新配置文件时,使用

    sysmon.exe -c sysmonconfig-export.xml
    

    日志发送组件Winlogbeat

    下载
    https://www.elastic.co/cn/downloads/beats/winlogbeat
    
    安装配置

    以管理员身份打开 PowerShell,在Winlogbeat路径下执行

    .\install-service-winlogbeat.ps1
    

    遇到以下报错时

    PS C:\Users\doinb\Desktop\Sysmon\winlogbeat-8.6.2-windows-x86_64> .\install-service-winlogbeat.ps1
    .\install-service-winlogbeat.ps1 : 无法加载文件 C:\Users\doinb\Desktop\Sysmon\winlogbeat-8.6.2-windows-x86_64\install-s
    ervice-winlogbeat.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170
    中的 about_Execution_Policies。
    所在位置 行:1 字符: 1
    + .\install-service-winlogbeat.ps1
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : SecurityError: (:) [],PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess
    

    运行以下命令解决

    PS C:\Users\doinb\Desktop\Sysmon\winlogbeat-8.6.2-windows-x86_64> Set-ExecutionPolicy -Scope CurrentUser
    
    位于命令管道位置 1 的 cmdlet Set-ExecutionPolicy
    请为以下参数提供值:
    ExecutionPolicy: RemoteSigned
    
    执行策略更改
    执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
    中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
    [Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): A
    PS C:\Users\doinb\Desktop\Sysmon\winlogbeat-8.6.2-windows-x86_64>
    

    打开winlogbeat.yml,默会收集以下日志,不需要的日志类型可以注释掉

    winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
    
      - name: System
    
      - name: Security
    
      - name: Microsoft-Windows-Sysmon/Operational
    
      - name: Windows PowerShell
        event_id: 400, 403, 600, 800
    
      - name: Microsoft-Windows-PowerShell/Operational
        event_id: 4103, 4104, 4105, 4106
    
      - name: ForwardedEvents
        tags: [forwarded]
    

    根据需要配置ELK,这里以配置Logstash为例

    output.logstash:
      # The Logstash hosts
      hosts: ["ip:5044"]
    
      # Optional SSL. By default is off.
      # List of root certificates for HTTPS server verifications
      #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
    
      # Certificate for SSL client authentication
      #ssl.certificate: "/etc/pki/client/cert.pem"
    
      # Client Certificate Key
      #ssl.key: "/etc/pki/client/cert.key"
    

    修改完winlogbeat.yml之后,PowerShell执行以下指令重新加载配置文件

    .\winlogbeat.exe setup -e
    

    之后就可以启动winlogbeat服务了,winlogbeat会实时将收集的日志文件发送到logstash

    Start-Service winlogbeat
    

    登陆Elasticsearch查看发送过来的数据,先选择management

    01.png

    选择索引管理查看Logstash转发过来的数据

    02.png

    正确找到创建的索引

    03.png

    创建Kibana视图

    04.png

    创建数据视图

    05.png 06.png

    规则导入及编写

    Sigma规则

    Sigma_.png

    Sigma是一种通用且开放的签名格式,以直接的方式描述相关的日志事件。规则格式非常灵活,易于编写,适用于任何类型的日志文件。Sigma提供了一种结构化的形式,研究人员或分析师可以在其中描述他们曾设计开发的检测方法,并与其他安全人员共享。

    Github https://github.com/SigmaHQ/sigma

    我们可以使用官方库中的威胁检测主机收到的威胁,也可以自己编写规则,下面演示一下如何编写自己的sigma规则

    Sigma规则编写测试

    我们以Windows上使用net user /add命令创建用户为例,使用下面的命令创建新用户

    net user admin.123 admin1 /add
    

    使用Windows时间查看器查看事件ID为4720的事件

    07.png
    日志名称:          Security
    来源:            Microsoft-Windows-Security-Auditing
    日期:            2023/3/16 15:31:03
    事件 ID:         4720
    任务类别:          User Account Management
    级别:            信息
    关键字:           审核成功
    用户:            暂缺
    计算机:           DESKTOP-31UM2QN
    描述:
    已创建用户帐户。
    
    使用者:
        安全 ID:      DESKTOP-31UM2QN\doinb
        帐户名:        doinb
        帐户域:        DESKTOP-31UM2QN
        登录 ID:      0x1576CA
    
    新帐户:
        安全 ID:      DESKTOP-31UM2QN\admin.123
        帐户名:        admin.123
        帐户域:        DESKTOP-31UM2QN
    
    属性:
        SAM 帐户名:    admin.123
        显示名称:   <未设置值>
        用户主体名称: -
        主目录:        <未设置值>
        主驱动器:   <未设置值>
        脚本路径:   <未设置值>
        配置文件路径: <未设置值>
        用户工作站:  <未设置值>
        上次设置的密码:<从不>
        帐户过期:   <从不>
        主要组 ID: 513
        允许委托给:  -
        旧 UAC 值:    0x0
        新 UAC 值:    0x15
        用户帐户控制: 
            已禁用的帐户
            '不要求密码' - 已启用
            '普通帐户' - 已启用
        用户参数:   <未设置值>
        SID 历史: -
        登录时间(以小时计):全部
    
    附加信息:
        特权      -
    事件 Xml:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-a5ba-3e3b0328c30d}" />
        <EventID>4720</EventID>
        <Version>0</Version>
        <Level>0</Level>
        <Task>13824</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8020000000000000</Keywords>
        <TimeCreated SystemTime="2023-03-16T07:31:03.6696152Z" />
        <EventRecordID>31488</EventRecordID>
        <Correlation ActivityID="{404e6454-57b5-0001-8d64-4e40b557d901}" />
        <Execution ProcessID="832" ThreadID="5620" />
        <Channel>Security</Channel>
        <Computer>DESKTOP-31UM2QN</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name="TargetUserName">admin.123</Data>
        <Data Name="TargetDomainName">DESKTOP-31UM2QN</Data>
        <Data Name="TargetSid">S-1-5-21-3678678421-903751620-185585966-1001</Data>
        <Data Name="SubjectUserSid">S-1-5-21-3678678421-903751620-185585966-1000</Data>
        <Data Name="SubjectUserName">doinb</Data>
        <Data Name="SubjectDomainName">DESKTOP-31UM2QN</Data>
        <Data Name="SubjectLogonId">0x1576ca</Data>
        <Data Name="PrivilegeList">-</Data>
        <Data Name="SamAccountName">admin.123</Data>
        <Data Name="DisplayName">%%1793</Data>
        <Data Name="UserPrincipalName">-</Data>
        <Data Name="HomeDirectory">%%1793</Data>
        <Data Name="HomePath">%%1793</Data>
        <Data Name="ScriptPath">%%1793</Data>
        <Data Name="ProfilePath">%%1793</Data>
        <Data Name="UserWorkstations">%%1793</Data>
        <Data Name="PasswordLastSet">%%1794</Data>
        <Data Name="AccountExpires">%%1794</Data>
        <Data Name="PrimaryGroupId">513</Data>
        <Data Name="AllowedToDelegateTo">-</Data>
        <Data Name="OldUacValue">0x0</Data>
        <Data Name="NewUacValue">0x15</Data>
        <Data Name="UserAccountControl">
            %%2080
            %%2082
            %%2084</Data>
        <Data Name="UserParameters">%%1793</Data>
        <Data Name="SidHistory">-</Data>
        <Data Name="LogonHours">%%1797</Data>
      </EventData>
    </Event>
    

    我们根据事件ID创建一条Sigma规则

    title: 创建本地用户账户行为
    status: test
    description: 使用net user /add命令创建本地用户帐户
    references: 
      - https://attack.mitre.org/techniques/T1136/001/
    logsource:
        product: windows
        service: security
    detection:
        selection:
            EventID: 4720 #已创建用户帐户。
        condition: selection
    falsepositives:
        - 域控制器日志
        - 由特权帐户管理工具管理的本地用户账户
    level: low
    

    使用sigmac转换Sigma规则为es-dsl查询语句

    PS D:\document\sigma\tools> python .\sigmac  -t es-dsl -c .\config\winlogbeat.yml ..\rules\test_rules\test11.yml
    {
      "query": {
        "constant_score": {
          "filter": {
            "bool": {
              "must": [
                {
                  "match_phrase": {
                    "winlog.channel": "Security"
                  }
                },
                {
                  "match_phrase": {
                    "winlog.event_id": "4720"
                  }
                }
              ]
            }
          }
        }
      }
    }
    
    

    在Elasticsearch开发工具中查询,可以看到成功匹配到了日志。

    08.png

    相关文章

      网友评论

          本文标题:搭建自己的SEIM(Sysmon+Winlogbeat+ELK+

          本文链接:https://www.haomeiwen.com/subject/qucrrdtx.html