Osquery檢測入侵痕跡——這玩意適合在agent端側使用啊


Osquery檢測入侵痕跡

轉載請聲明!!!

簡介

osquery是一個由FaceBook開源用於對系統進行查詢、監控以及分析的一款軟件。
支持MacOSCentOSUbuntuWindows等操作系統;
將操作系統當作是一個關系型數據庫,使用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

國外資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM