使用Elastic Siem和Zeek搭建網絡監控環境
聲明
由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
前言
Zeek 是一個開源網絡監控框架,它可以收集網絡中的流量并能夠解析協議記錄為json格式日志。通過filebeat+logstash便可以將日志發到siem平臺進行日志的分析,編寫可疑流量告警規則。此外,zeek本身也支持加載自定義的檢測腳本。elastic siem平臺自帶了zeek的日志采集器,可以很方便的采集zeek產生的日志。
網絡環境
虛擬機網卡設置網段192.168.0.0 255.255.0.0
Ubuntu 20.04 192.168.2.201 zeek節點
Ubuntu 20.04 192.168.2.200 Elastic Siem
Windows 2019 192.168.2.123 域控
Windows 2016 192.168.3.130 域機器
安裝zeek的Ubuntu需要開啟網卡的混雜模式,開啟ip轉發
其中Windows機器添加一條路由到路由表,使得兩臺機器間的流量流經zeek節點,確保zeek能抓到流量
Windows 2016上添加
route -p add 192.168.2.0 MASK 255.255.255.0 192.168.2.201 METRIC 2
Windows2019上添加
route -p add 192.168.3.0 MASK 255.255.255.0 192.168.2.201 METRIC 2
安裝
1.安裝Elastic Siem
參考Elastic Edr測試環境搭建
2.安裝zeek
ubuntu上zeek可選擇源碼編譯安裝和apt源安裝,后續裝某些插件可能需要源碼tree,所以推薦使用源碼安裝。源碼下載
git clone -–recursive https://github.com/zeek/zeek
安裝依賴
apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python3-dev swig zlib1g-dev
apt源安裝方法
apt-get install libpcap-dev libssl-dev zlib1g-dev python3 python3-dev cmake make gcc g++ flex swig bison libpcap-dev curl software-properties-common wget echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list apt-get updateapt-get install zeek
默認安裝在/opt/zeek路徑,需要將路徑下的bin目錄添加到PATH環境變量
安裝zeek包管理器方便安裝第三方插件
pip3 install gitpython semantic-versionpip3 install git+git://github.com/zeek/package-manager@masterzkg autoconfig
修改/opt/zeek/etc/node.cfg

修改/opt/zeek/ztc/network.cfg,配置要監控的網段

在/opt/zeek/share/zeek/site/local.zeek添加
@load policy/tuning/json-logs.zeek
使得zeek輸出json格式的日志添加
@load packages
表示加載第三方包
zeekctl deploy
部署運行zeek,查看/opt/zeek/log/current下是否有日志產生。
Zeek日志發送到Siem
在kibana fleet新建策略代理策略,添加fleet_server、zeek集成。zeek集成下更改日志路徑為zeek輸出的路徑

添加代理

在zeek節點上配置elasticsearch的ca證書,運行給出的啟動fleet服務器命令

查看數據流,在儀表板展示zeek的流量數據

添加規則檢測異常流量
以NoPAC攻擊為例,在攻擊過程中,會以去掉 $ 符的域控等敏感的域內機器賬戶名去請求做kerberos的認證并請求票據,例如域控機器賬戶為DC$,則請求的用戶為DC。此時可創建規則,檢測kerberos認證協議中是否有為DC用戶名請求身份證認證票據。新建一條簡單的規則粗略檢測NoPac攻擊
zeek.kerberos.client:"WIN-BLA6KEJV6V7/CATE4CAFE.COM" and not source.address : 192.168.2.123 and related.user: WIN-BLA6KEJV6V7 //WIN-BLA6KEJV6V7是域控機器名,在域內賬戶名為WIN-BLA6KEJV6V7$
規則檢測來自和域控機器名相同的域內用戶發起的源IP不是域控IP的kerberos請求。

規則較為簡略。如果配合ldap協議的檢測,匹配使用ldap協議添加機器賬戶、更改機器賬號samaccountname屬性的流量則更為精準