初識osquery
osquery是一個由Facebook的開源用於對系統進行查詢,監控以及分析的一款軟件.
osquery對其的說明如下:
osquery將操作系統公開為高性能關系數據庫。這允許您編寫基於SQL的查詢來探索操作系統數據。使用osquery,SQL表表示抽象概念,例如運行進程,加載的內核模塊,開放網絡連接,瀏覽器插件,硬件事件或文件哈希。
目前網上已經有非常多的相關資料供參考,這里整理下:
【初識osquery】:http://www.polaris-lab.com/index.php/archives/617
【Kolide Fleet osquery體驗】: http://0cx.cc/managing-osquery-with-fleet.jspx
【Osquery檢測入侵痕跡】https://evilanne.github.io/2019/02/20/Osquery檢測入侵痕跡/
使用
搭建過程不再重來了,這里不是重點,如果搭建有問題找運維或網絡幫忙解決即可
1、假設某木馬執行后會在tmp目錄釋放指定的文件,這里可以快速對所有主機進行檢查
SELECT * from file where directory="/tmp" and filename="xxx"
查找有私鑰證書的服務器
2、當有1day漏洞暴發時,可快速查找該軟件的服務器進行確認
檢查所有存在某軟件的服務器
SELECT * FROM processes where name like 'systemd';
上面是根據是在運行的進程進行判斷,也可跟進安裝的rpm包進行判斷。
3、檢測反彈shell
SELECT DISTINCT(processes.pid), processes.parent, processes.name, processes.path, processes.cmdline, processes.cwd, processes.root, processes.uid, processes.gid, processes.start_time, process_open_sockets.remote_address, process_open_sockets.remote_port, (SELECT cmdline FROM processes AS parent_cmdline WHERE pid=processes.parent) AS parent_cmdline FROM processes JOIN process_open_sockets USING (pid) LEFT OUTER JOIN process_open_files ON
如果需要告警功能,可將result文件打到logstash進行解析,在elk中配置告警。
更多的功能如文件完整性檢查,后門檢測等請自行摸索,
常見問題
1、如果使用docker部署,docker內的日志會很快打滿,可以自行清理
2、服務端重啟后,客戶端會掉線,此時會恢復一部分,但大部分起不來,這是我這遇到的問題
可以在客戶端上加上定時探活的腳本:
#!/bin/bash
#-*- coding:utf-8 -*-
process_id=$(ps -ef | grep "osqueryd --flagfile" | grep -v "grep" | awk '{print $2}')
result=`echo -e "\n" | telnet X.X.X.X 8080 2> /dev/null | grep Connected | wc -l`
if [ $result ]; then
kill -9 $process_id && nohup /usr/local/osq/launcher --hostname=X.X.X.X:8080 --enroll_secret=TznYHNYSD8ZoFUJOvH4s3pY7ZGuzz2x/ --insecure &
else
echo "無法連接服務器"
fi
或使用運維工具進行手動啟動
ansible XX -m shell -a " pgrep osquery | xargs kill -s 9 && service osqueryd start && nohup /usr/local/osq/launcher --hostname=X.X.X.X:8080 --enroll_secret=TznYHNYSD8ZoFUJOvH4s3pY7ZGuzz2x/ --insecure & "