转载请声明!!!
简介
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的集合。 可以理解为规则.
默认有很多规则是注释掉并没有启用。
内容非常的丰富
123456789101112131415161718192021222324
{ "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 8yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
rpm安装
123
rpm -ivh elasticsearch-6.2.4.rpmrpm -ivh kibana-6.2.4-x86_64.rpmrpm -ivh logstash-6.6.0.rpm
修改es的java环境变量
123
vim /etc/sysconfig/elasticsearch JAVA_HOME=/usr/share/jdk1.8.0_171source /etc/sysconfig/elasticsearch
elk根据自己的一个需要选配。
配置elasticsearch.yml
123456789101112
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
1234567891011121314151617181920
node.name: test # 节点名称path.data: /var/lib/logstash # 数据存储目录path.logs: /var/log/logstash # 日志存储目录pipeline.id: main # pipeline IDpipeline.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开启,这里一定要匹配debugconfig.debug: false # log.format # 日志格式config.support_escapes: false #
kibana.yml
12345
server.port: 5601 # 绑定端口server.host: "127.0.0.1" # 绑定主机server.basePath: "" # server.name: "your-hostname" # hostname名称elasticsearch.url: "http://localhost:9200" # ElasticSearch地址
logstash配置文件
12345678910111213141516171819
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
1234
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpmrpm -ivh mysql80-community-release-el7-1.noarch.rpmyum updateyum install mysql-community-server.x86_64 mysql-community-client.x86_64 -y
启动Mysql服务:systemctl start mysqld
安装的时候自动生成的数据库密码在/var/log/mysqld.log
中
修改密码:
123
mysql> ALTER USER "root"@"localhost" IDENTIFIED BY "Root123...";mysql> flush privileges;mysql> exit
创建数据库create database kolide;
安装redis
1234567
wget http://download.redis.io/redis-stable.tar.gztar zxf redis-stable.tar.gzcd redis-stablemake make installcp redis.conf /etc/redis.confredis-server /etc/redis.conf
或者yum安装redis也可以 启动服务systemctl start redis.service
安装Fleetwget 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
配置证书
12345
openssl genrsa -out /etc/pki/tls/private/server.key 4096openssl req -new -key /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.csropenssl 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
启动服务
1234567891011
/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
123456789101112
/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
123456789101112131415161718
/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
国外资料:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2021-01-18 SSRF——和远程文件包含的区别在于远程文件包含多是包含攻击者的主机文件,SSRF是内网主机的文件
2021-01-18 SSRF中的绕过手段——字节总结得比较好,如何绕过SSRF的保护机制,DNS欺骗,使用IPV6地址,十六进制编码、八进制编码、双字编码、URL编码和混合编码等
2021-01-18 SSRF——服务端请求伪造,根因是file_get_contents,fsockopen,curl_exec函数调用,类似远程文件包含,不过是内网机器
2021-01-18 文件包含——本地文件包含和远程文件包含
2021-01-18 文件包含和目录遍历区别——目标都是信息泄露,但手段一个是利用函数来包含web目录以外的文件,另外一个是对web路径访问权限设置不严格导致
2021-01-18 目录遍历漏洞——本质上是因为php这样的后端代码实现中使用了include这样的模板函数导致
2018-01-18 TensorRT加速 ——NVIDIA终端AI芯片加速用,可以直接利用caffe或TensorFlow生成的模型来predict(inference)