转载请声明!!!
简介
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
国外资料: