
轉載請聲明!!!
簡介
osquery是一個由FaceBook開源用於對系統進行查詢、監控以及分析的一款軟件。
支持MacOS
、CentOS
、Ubuntu
、Windows
等操作系統;
將操作系統當作是一個關系型數據庫,使用SQL語句的方式去查詢操作系統中的信息,比如:運行的進程信息、加載內核模塊、網絡連接等等信息。
官網地址:https://osquery.io/
Centos7安裝osquery
安裝yum源
rpm -ivh https://osquery-packages.s3.amazonaws.com/centos7/noarch/osquery-s3-centos7-repo-1-0.0.noarch.rpm
安裝
yum install osquery.x86_64 -y
或者直接在官網上對應版本。
https://osquery.io/downloads/official/3.3.2

配置
cp /usr/share/osquery/osquery.example.conf /etc/osquery/osquery.conf
osquery存在兩種運行模式,分別是osqueryi(交互式模式)、osqueryd(后台進程模式)。
啟動
systemctl start osqueryd
執行
osqueryi
.table
展示當前操作系統中能夠支持的表名
而這些表中的含義無需去記住,只需要查看官網的手冊
https://osquery.io/schema/3.3.2

查看系統信息
select * from system_info;
查看OS版本
select * from os_version;
查看內核信息版本
SELECT * FROM kernel_info;
內存信息
select * from memory_info;
查詢用戶信息
select * from users;
select * from users where uid=0;
檢查計划任務
select * from crontab;
日志默認保存在/var/log/osquery
中
Osqueryd.conf簡單說明
Options
設置osquery daemon的一些配置,日志產生路徑、線程數等
Schedule
設置定時任務

- query:查詢的SQL語句
- interval:查詢間隔,單位時間為秒
- removed: 是否生成減少的記錄
Packs
packs可以看做是一系列schedule的集合。
可以理解為規則.
默認有很多規則是注釋掉並沒有啟用。

內容非常的豐富
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
{ "platform": "windows", "queries": { "CCleaner_Trojan.Floxif": { "query" : "select * from registry where path like 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Piriform\\Agomo%';", "interval" : "3600", "version": "2.2.1", "description" : "(https://sensorstechforum.com/ccleaner-trojan-floxif-malware-how-to-remove/)", "value" : "Artifact used by this malware" }, "CCleaner_Trojan_stage2.Floxif": { "query": "select h.md5, h.sha1, h.sha256, s.name, s.service_type, s.display_name, s.module_path, s.user_account from services s, hash h where h.path = s.module_path and ((s.module_path like '%GeeSetup_x86%' and h.sha256 = 'dc9b5e8aa6ec86db8af0a7aa897ca61db3e5f3d2e0942e319074db1aaccfdc83') or (s.module_path like '%EFACli64%' and h.sha256 = '128aca58be325174f0220bd7ca6030e4e206b4378796e82da460055733bb6f4f') or (s.module_path like '%TSMSISrv%' and h.sha256 = '07fb252d2e853a9b1b32f30ede411f2efbb9f01e4a7782db5eacf3f55cf34902'));", "interval" : "3600", "version": "2.1.0", "description" : "(https://sensorstechforum.com/ccleaner-trojan-floxif-malware-how-to-remove/)", "value" : "Artifact used by this malware" }, "Winsecurity_info_1": { "query" : "select * from programs where name = 'Winsecurity.info';", "interval" : "3600", "version": "2.2.1", "description" : "(https://sensorstechforum.com/windows-infected-2-viruses-scam-remove/)", "value" : "Artifact used by this malware" },
|
可以使用MITRE ATT&CK
框架規則:
https://github.com/teoseller/osquery-attck
非常有意思

osquery+ELK+Kolide Fleet
安裝ELK
-
ElasticSearch:是實時全文搜索和分析引擎,提供搜集、分析、存儲數據三大功能;是一套開放REST和JAVA API等結構提供高效搜索功能,可擴展的分布式系統。它構建於Apache Lucene搜索引擎庫之上。
-
Logstash:是一個用來搜集、分析、過濾日志的工具。它支持幾乎任何類型的日志,包括系統日志、錯誤日志和自定義應用程序日志。它可以從許多來源接收日志,這些來源包括syslog、消息傳遞(例如:RabbitMQ)和JMX,它能夠以多種方式輸出數據,包括電子郵件、WebSocket和ElasticSearch等。
-
Kibana:是一個基於Web的圖形界面,用於搜索、分析和可視化存儲在ElasticSearch指標中的日志數據。它利用Elasticsearch的REST接口來檢索數據,不僅允許用戶創建他們自己的數據的定制儀表板視圖,還允許他們以特殊的方式查詢和過濾數據。
安裝java 8
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
rpm安裝
1 2 3
|
rpm -ivh elasticsearch-6.2.4.rpm rpm -ivh kibana-6.2.4-x86_64.rpm rpm -ivh logstash-6.6.0.rpm
|
修改es的java環境變量
1 2 3
|
vim /etc/sysconfig/elasticsearch JAVA_HOME=/usr/share/jdk1.8.0_171 source /etc/sysconfig/elasticsearch
|
elk根據自己的一個需要選配。
配置elasticsearch.yml
1 2 3 4 5 6 7 8 9 10 11 12
|
cluster.name: my-application # 集群名稱 node.name: node-1 # 節點名稱 node.attr.rack: r1 # 節點屬性 path.data: /var/lib/elasticsearch # 數據存儲目錄 path.logs: /var/log/elasticsearch # 日志存儲目錄 bootstrap.memory_lock: true # 內存鎖定,禁用虛擬內存 network.host: 127.0.0.1 # 綁定主機 http.port: 9200 # 綁定端口 discovery.zen.ping.unicast.hosts: ["host1", "host2"] # 啟動新節點時,傳遞初始主機列表用於發現主機 discovery.zen.minimum_master_nodes: # 配置節點數防止腦裂 gateway.recover_after_nodes: 3 # 在N個節點后阻塞恢復 action.destructive_requires_name: true # 刪除索引需要顯示名稱
|
ogstash.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
node.name: test # 節點名稱 path.data: /var/lib/logstash # 數據存儲目錄 path.logs: /var/log/logstash # 日志存儲目錄 pipeline.id: main # pipeline ID pipeline.workers: 2 # 輸出通道的worker數量,默認為CPU核數 pipeline.batch.size: 125 # 設定批處理數據的大小 pipeline.batch.delay: 50 # 設定批處理數據的延遲 pipeline.unsafe_shutdown: false # path.config: # 過濾配置文件目錄 path.plugins: # 自定義插件目錄 config.string: # config.test_and_exit: false # config.reload.automatic: false # 自動重載被修改的配置文件 config.reload.interval: 3s # 配置文件檢查時間 http.host # 綁定主機 http.port # 綁定端口 log.level: # 日志輸出級別,如果confie.dubug開啟,這里一定要匹配debug config.debug: false # log.format # 日志格式 config.support_escapes: false #
|
kibana.yml
1 2 3 4 5
|
server.port: 5601 # 綁定端口 server.host: "127.0.0.1" # 綁定主機 server.basePath: "" # server.name: "your-hostname" # hostname名稱 elasticsearch.url: "http://localhost:9200" # ElasticSearch地址
|
logstash配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
input { file { path => ["/var/log/httpd/access_log"] type => "httpd" } }
filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } }
output { elasticsearch { hosts => ["127.0.0.1:9200"] index => "logstash-httpd-%{+YYYY.MM.dd}" } }
|
安裝Kolide Fleet
Kolide Fleet是為安全專家量身打造的最先進的主機監控平台。
fleet依賴於mysql以及redis,所以需要安裝mysql和redis
安裝mysql
1 2 3 4
|
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm rpm -ivh mysql80-community-release-el7-1.noarch.rpm yum update yum install mysql-community-server.x86_64 mysql-community-client.x86_64 -y
|
啟動Mysql服務:
systemctl start mysqld
安裝的時候自動生成的數據庫密碼在/var/log/mysqld.log
中
修改密碼:
1 2 3
|
mysql> ALTER USER "root"@"localhost" IDENTIFIED BY "Root123..."; mysql> flush privileges; mysql> exit
|
創建數據庫
create database kolide;
安裝redis
1 2 3 4 5 6 7
|
wget http://download.redis.io/redis-stable.tar.gz tar zxf redis-stable.tar.gz cd redis-stable make make install cp redis.conf /etc/redis.conf redis-server /etc/redis.conf
|
或者yum安裝redis也可以
啟動服務
systemctl start redis.service
安裝Fleet
wget https://dl.kolide.co/bin/fleet_latest.zip
unzip fleet_latest.zip 'linux/*' -d fleet
拷貝執行命令到bin目錄
cp fleet/linux/fleet /usr/bin/fleet
cp fleet/linux/fleetctl /usr/bin/fleetctl
連接數據庫
/usr/bin/fleet prepare db --mysql_address=127.0.0.1:3306 --mysql_database=kolide --mysql_username=root --mysql_password=password
配置證書
1 2 3 4 5
|
openssl genrsa -out /etc/pki/tls/private/server.key 4096
openssl req -new -key /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.csr
openssl x509 -req -days 366 -in /etc/pki/tls/certs/server.csr -signkey /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.cert
|
啟動Fleet Server
創建日志目錄
mkdir /var/log/kolide
啟動服務
1 2 3 4 5 6 7 8 9 10 11
|
/usr/bin/fleet serve \ --mysql_address=127.0.0.1:3306 \ --mysql_database=kolide \ --mysql_username=root \ --mysql_password=password \ --redis_address=127.0.0.1:6379 \ --server_cert=/etc/pki/tls/certs/server.cert \ --server_key=/etc/pki/tls/private/server.key \ --logging_json \ --osquery_result_log_file=/var/log/kolide/osquery_result \ --osquery_status_log_file=/var/log/kolide/osquery_status
|
這個時候會報錯

使用它推薦的--auth_jwt_key
1 2 3 4 5 6 7 8 9 10 11 12
|
/usr/bin/fleet serve \ --mysql_address=127.0.0.1:3306 \ --mysql_database=kolide \ --mysql_username=root \ --mysql_password==password \ --redis_address=127.0.0.1:6379 \ --server_cert=/etc/pki/tls/certs/server.cert \ --server_key=/etc/pki/tls/private/server.key \ --logging_json \ --osquery_result_log_file=/var/log/kolide/osquery_result \ --osquery_status_log_file=/var/log/kolide/osquery_status \ --auth_jwt_key=zJ+TKjgtGqCFX6XcF5SmDDxxxxxxx
|
成功運行,訪問Web界面進行安裝
https://192.168.4.108:8080/
利用osquery添加主機


創建密鑰
echo 'OB+ltcnAmEqykZXNthWNRv4qQMhxxxx' > /var/osquery/enroll_secret
配置證書,證書下載位置如圖,下載完成后進行改名
mv 10.10.10.5_8080.pem /var/osquery/server.pem
執行osqueryd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
/usr/bin/osqueryd \ --enroll_secret_path=/var/osquery/enroll_secret \ --tls_server_certs=/var/osquery/server.pem \ --tls_hostname=10.10.10.5:8080 \ --host_identifier=hostname \ --enroll_tls_endpoint=/api/v1/osquery/enroll \ --config_plugin=tls \ --config_tls_endpoint=/api/v1/osquery/config \ --config_tls_refresh=10 \ --disable_distributed=false \ --distributed_plugin=tls \ --distributed_interval=3 \ --distributed_tls_max_attempts=3 \ --distributed_tls_read_endpoint=/api/v1/osquery/distributed/read \ --distributed_tls_write_endpoint=/api/v1/osquery/distributed/write \ --logger_plugin=tls \ --logger_tls_endpoint=/api/v1/osquery/log \ --logger_tls_period=10
|
然后就添加上了。

可以做的事情特別多
使用Osquery的惡意軟件分析第1部分
https://www.alienvault.com/blogs/labs-research/malware-analysis-using-osquery-part-1
使用Osquery的惡意軟件分析第2部分
https://www.alienvault.com/blogs/labs-research/malware-analysis-using-osquery-part-2
國外資料: