新闻详情

新闻详情

首页 / 资讯中心 / 详情

osquery 介绍

发布时间:2026/9/7 1:20:30来源:尧图网络
osquery 介绍
osquery 是适用于 Windows、OS X (macOS) 和 Linux 的操作系统检测框架。这些工具使低级操作系统分析和监控既高效又直观。 osquery 将操作系统公开为高性能关系数据库。 这允许你编写基于 SQL 的查询来探索操作系统数据。 使用 osquerySQL table 表示抽象概念例如正在运行的进程、加载的内核模块、打开的网络连接、浏览器插件、硬件事件或文件哈希。对 OSs 进行查询就像操作数据库一样使用最基本的 SQL 命令对设备进行提问对 OSs 及系统里的资源设备等进行展示SQL 表是通过一个简单的插件和扩展 API 实现的。 已经存在各种表并且正在编写更多表osquery.io/schema。安装要下载最新的稳定版本以及存储库信息和安装说明请访问 osquery.io/downloads。你可以根据自己的操作系统来分别进行安装 Windows, macOS 及 Linux。 简单地说Red Hat, CentOS 及 Fedorabash代码解读复制代码1. curl -L https://pkg.osquery.io/rpm/GPG | tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery 2. yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo 3. yum-config-manager --enable osquery-s3-rpm 4. yum install osquery基于 Debian 及 Ubuntu Linux 发行版sql代码解读复制代码1. echo deb [archamd64] https://pkg.osquery.io/deb deb main | sudo tee /etc/apt/sources.list.d/osquery.list 3. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B 5. sudo apt-get update 6. sudo apt-get install osqueryWindowsarduino代码解读复制代码https://pkg.osquery.io/windows/osquery-4.8.0.msi在今天的演示中我将使用 Ubuntu 20.04 来进行展示。具体安装步骤可以参阅 How to Install and Use Osquery in Ubuntu使用 osqueryiosqueryi 是 osquery 交互式查询控制台/shell。 在这种模式下它是完全独立的不与守护进程通信也不需要以管理员身份运行尽管某些表在以非管理员身份运行时可能返回较少的结果。 使用 osquery shell 对查询进行原型设计并探索操作系统的当前状态。执行 SQL queriesosqueryi 允许你运行元命令和查询 osquery 表。 有关表、类型和列描述的完整列表请参阅 schema API。 有关 SQL 语法帮助请参阅 SQLite 所理解的 SQL。我们可以在自己的 terminal 中运行 osqueryi代码解读复制代码osqueryiruby代码解读复制代码1. liuxgliuxgu:~$ osqueryi 2. Using a virtual database. Need help, type .help 3. osquery接下来我们尝试来做一些 help。首先我们想知道有哪些 table 可以供我们来进行查询dart代码解读复制代码1. osquery .table 2. acpi_tables 3. apparmor_events 4. apparmor_profiles 5. apt_sources 6. arp_cache 7. atom_packages 8. augeas 9. authorized_keys 10. azure_instance_metadata 11. azure_instance_tags 12. block_devices 13. bpf_process_events 14. bpf_socket_events 15. carbon_black_info 16. carves 17. chrome_extension_content_scripts 18. chrome_extensions 19. cpu_time 20. [...]我们可以通过 .table 命令来查询所有的 table。这些表格可以供我们查询使用。接下来我们可以使用如下的命令来查看感兴趣的 table 的 schemamarkdown代码解读复制代码1. osquery .schema routes 2. CREATE TABLE routes(destination TEXT, netmask INTEGER, gateway TEXT, source TEXT, flags INTEGER, interface TEXT, mtu INTEGER, metric INTEGER, type TEXT, hopcount INTEGER, PRIMARY KEY (destination, netmask, gateway, source, flags, interface, mtu, metric, type, hopcount)) WITHOUT ROWID;或者使用如下的命令markdown代码解读复制代码1. osquery pragma table_info(routes); 2. ---------------------------------------------------- 3. | cid | name | type | notnull | dflt_value | pk | 4. ---------------------------------------------------- 5. | 0 | destination | TEXT | 1 | | 1 | 6. | 1 | netmask | INTEGER | 1 | | 2 | 7. | 2 | gateway | TEXT | 1 | | 3 | 8. | 3 | source | TEXT | 1 | | 4 | 9. | 4 | flags | INTEGER | 1 | | 5 | 10. | 5 | interface | TEXT | 1 | | 6 | 11. | 6 | mtu | INTEGER | 1 | | 7 | 12. | 7 | metric | INTEGER | 1 | | 8 | 13. | 8 | type | TEXT | 1 | | 9 | 14. | 9 | hopcount | INTEGER | 1 | | 10 | 15. ----------------------------------------------------我们还可以列出来所有的可用的命令 .helpvbnet代码解读复制代码1. osquery .help 2. Welcome to the osquery shell. Please explore your OS! 3. You are connected to a transient in-memory virtual database. 5. .all [TABLE] Select all from a table 6. .bail ON|OFF Stop after hitting an error 7. .connect PATH Connect to an osquery extension socket 8. .disconnect Disconnect from a connected extension socket 9. .echo ON|OFF Turn command echo on or off 10. .exit Exit this program 11. .features List osquerys features and their statuses 12. .headers ON|OFF Turn display of headers on or off 13. .help Show this message 14. .mode MODE Set output mode where MODE is one of: 15. csv Comma-separated values 16. column Left-aligned columns see .width 17. line One value per line 18. list Values delimited by .separator string 19. pretty Pretty printed SQL results (default) 20. .nullvalue STR Use STRING in place of NULL values 21. .print STR... Print literal STRING 22. .quit Exit this program 23. .schema [TABLE] Show the CREATE statements 24. .separator STR Change separator used by output mode 25. .socket Show the local osquery extensions socket path 26. .show Show the current values for various settings 27. .summary Alias for the show meta command 28. .tables [TABLE] List names of tables 29. .types [SQL] Show result of getQueryColumns for the given query 30. .width [NUM1] Set column widths for column mode 31. .timer ON|OFF Turn the CPU timer measurement on or off如果你想退出那么使用 .exit 命令或者 ^D。接下来我们来做一些简单的 query。列出来所有的用户我们打入如下的命令sql代码解读复制代码SELECT * from users;上面的显示有些凌乱我们可以只显示部分的信息sql代码解读复制代码SELECT username, shell FROM users;我们甚至可以使用 WHERE 来限定特定的条件sql代码解读复制代码SELECT * FROM users WHERE user;我们可以显示我们感兴趣的字段sql代码解读复制代码SELECT username, gid FROM users WHERE user;列出所有的 processes我们可以通过在交互式 shell 中运行以下命令来列出在 ubuntu 中运行的前五个进程sql代码解读复制代码SELECT * FROM processes LIMIT 5;由于系统中有很多进程在运行所以我们使用 LIMIT 关键字只显示了五个进程。我们可以找到特定进程的进程ID例如我们想找到 Java 的进程 ID所以我们将在交互式 shell 中运行以下命令sql代码解读复制代码SELECT pid FROM processes WHERE ;查找 Ubuntu 版本信息我们可以通过在交互式 shell 中运行以下命令来找到我们的 Ubuntu 系统的版本sql代码解读复制代码SELECT * FROM os_version;检查网络接口和 IP 地址我们可以通过在交互式 shell 中运行以下查询来检查 IP 地址、网络接口的子网掩码。vbnet代码解读复制代码1. SELECT interface,address,mask FROM interface_addresses 2. WHERE interface NOT LIKE %lo%;检查登录用户我们还可以通过从 “logged_in_users” 表中查询数据来检查您系统上的登录用户。 运行以下命令以查找已登录的用户。sql代码解读复制代码SELECT user,host,time FROM logged_in_users WHERE tty NOT LIKE -;检查系统内存我们还可以通过在交互式 shell 中运行一些基于 SQL 的命令来检查总内存、空闲内存缓存内存等。 要检查总内存请运行以下命令。 这将为我们提供系统的总内存以字节为单位。sql代码解读复制代码SELECT memory_total FROM memory_info;我们还可以通过运行以下查询使用 memory_info 表检查系统的缓存内存。csharp代码解读复制代码select cached from memory_info;列出 groups我们可以通过在交互式 shell 中运行以下查询来找到系统中的所有组sql代码解读复制代码SELECT * FROM groups;显示监听端口我们可以通过在交互式 shell 中运行以下命令来显示我们系统的所有监听端口sql代码解读复制代码SELECT * FROM listening_ports;我们还可以通过在交互式 shell 中运行以下命令来检查端口是否正在侦听ini代码解读复制代码SELECT port, address, path,family,protocol FROM listening_ports WHERE port9200;检测一个正在运行的进程但是没有 binary 在磁盘上ini代码解读复制代码SELECT name, path, pid FROM processes WHERE on_disk 0;这通常是一个病毒。检测一个用户的登录时间sql代码解读复制代码1. SELECT * FROM last 2. WHERE username liuxg 3. AND time (( SELECT unix_time FROM time ) - 3600 );寻找侦听网络端口的新进程vbnet代码解读复制代码SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid listening.pid;查找 Python 安装的包csharp代码解读复制代码select name, version from python_packages;查找已经装载的 kernel 模块csharp代码解读复制代码select name from kernel_modules;查找消耗 CPU 最高的5个进程sql代码解读复制代码1. SELECT pid, uid, name, ROUND(( 2. (user_time system_time) / (cpu_time.tsb - cpu_time.itsb) 3. ) * 100, 2) AS percentage 4. FROM processes, ( 5. SELECT ( 6. SUM(user) SUM(nice) SUM(system) SUM(idle) * 1.0) AS tsb, 7. SUM(COALESCE(idle, 0)) SUM(COALESCE(iowait, 0)) AS itsb 8. FROM cpu_time 9. ) AS cpu_time 10. ORDER BY user_timesystem_time DESC 11. LIMIT 5;如上所示那个 java 进程就是 Elasticsearch 运行的进程。它占用的 CPU 时间比较多。对 Chrome 浏览器中的插件进行查询sql代码解读复制代码1. SELECT ext.name, ext.description, ext.version 2. FROM users 3. JOIN chrome_extensions ext using (uid);运动 osqueryd在有些时候我们希望运行 osquery 并让它作为一个服务一直运行并定期收集信息。这些信息可以写到一个日志文件中。为了能到这个目的我们必须创建一个 osquery 的配置文件。这个配置文件依赖于不同的操作系统它的位置有所改变javascript代码解读复制代码1. Windows: C:\Program Files\osquery\osquery.conf 2. Linux: /etc/osquery/osquery.conf and /etc/osquery/osquery.conf.d/ 3. macOS: /var/osquery/osquery.conf and /var/osquery/osquery.conf.d/你可以使用 --config_path/path/to/osquery.conf 覆盖文件系统插件的路径。针对 Linux 系统我们可以创建如下的文件/etc/osquery/osquery.confruby代码解读复制代码1. liuxgliuxgu:~$ ls /etc/osquery/osquery.conf 2. /etc/osquery/osquery.conf 3. liuxgliuxgu:~$ cat /etc/osquery/osquery.conf 4. { 5. options: { 6. config_plugin: filesystem, 7. logger_plugin: filesystem, 8. utc: true 9. }, 11. schedule: { 12. system_info: { 13. query: SELECT hostname, cpu_brand, physical_memory FROM system_info;, 14. interval: 20 15. }, 16. high_load_average: { 17. query: SELECT period, average, 70% AS threshold FROM load_average WHERE period 15m AND average 0.7;, 18. interval: 10, 19. description: Report if load charge is over 70 percent. 20. }, 21. low_free_memory: { 22. query: SELECT memory_total, memory_free, CAST(memory_free AS real) / memory_total AS memory_free_perc, 10% AS threshold FROM memory_info WHERE memory_free_perc 0.1;, 23. interval: 60, 24. description: Free RAM is under 10%. 25. } 26. } 27. }在上面的 schedule 里定义的时间间隔是以秒来计算的。它们定期收集信息并生成日志。我们来启动 osquerydmarkdown代码解读复制代码1. systemctl enable osqueryd 2. systemctl start osqueryd我们接下来进入到如下的路径ruby代码解读复制代码1. liuxgliuxgu:~$ cd /var/log/osquery/ 2. liuxgliuxgu:/var/log/osquery$ ls 3. osqueryd.INFO osqueryd.INFO.20220428-150819.82777 osqueryd.results.log 4. liuxgliuxgu:/var/log/osquery$我们差其中的 osqueryd.results.log 内容我们可以看到有些已经被收集起来的信息。这些信息可以被传送到一些系统中做更进一步的分析。结论Osquery 是一个非常有用的软件实用程序可用于查找有关你的系统的任何类型的信息。 如果你已经了解基于 SQL 的查询那么它对你来说非常容易使用或者如果你不了解基于 SQL 的查询那么我已尽力向你展示一些对查找数据有用的主要查询。 你可以通过运行类似的查询从任何表中找到任何类型的数据。在将来的文章中我将详细讲述如何使用 Elastic Agent来获取 osquery 信息。敬请期待参考【1】 Demos/Osquery at main · OpenSecureCo/Demos · GitHub作者Elasticsearch链接https://juejin.cn/post/7091637645234667534来源稀土掘金著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

毕业论文文本高效整理与修改的完整实战指南 2026/9/7 2:41:41

毕业论文文本高效整理与修改的完整实战指南

引言:毕业论文修改为什么这么难 毕业论文的文本修改和格式整理,几乎是每位毕业生都要经历的一场"持久战"。面对动辄数万字的文稿,很多人都会陷入反复修改、反复返工的循环。究其原因,往往不是写作能力不足,…

阅读更多 →
毕业论文写作效率提升指南:从琐事缠身到高效产出 2026/9/7 2:41:41

毕业论文写作效率提升指南:从琐事缠身到高效产出

引言 毕业论文写作是一场持久战,而真正让人疲惫的往往不是核心研究本身,而是那些反复出现、看似不起眼的琐碎事务。作为一名正在撰写毕业论文的大学生,我时常感到时间在论文写作中被琐事吞噬——格式调整、文献整理、反复修改、人工核对………

阅读更多 →
python的图论工业场景模拟第八十三篇:最低电费成本路径规划(非时间权重),任务:权重切换为电费,求成本最低路径,图建模说明:有向带权图,权重=cost,核心点:自定义权重Dijkstra 2026/9/7 2:41:41

python的图论工业场景模拟第八十三篇:最低电费成本路径规划(非时间权重),任务:权重切换为电费,求成本最低路径,图建模说明:有向带权图,权重=cost,核心点:自定义权重Dijkstra

最低电费成本路径规划:把"最短路"换成"最省钱路" "某锂电池工厂的 AGV 调度系统一直用最短距离做路径规划,后来能源部门找上门来:你们每天让车跑的路线,电费比隔壁车间高 30%——因为你们专门挑电价贵的…

阅读更多 →
毕业论文修改与格式整理:一套高效可复用的方法论 2026/9/7 2:41:41

毕业论文修改与格式整理:一套高效可复用的方法论

引言 毕业论文的写作是一场持久战,而修改文本与整理格式往往是其中最耗时、也最容易让人崩溃的环节。许多同学在初稿完成后,面对满屏的批注和格式问题,常常感到无从下手。其实,论文修改并非无章可循,只要掌握一套系统…

阅读更多 →
python的图论工业场景模拟第八十二篇:路网边介数中心性与拥堵预警,任务:算各路段被最短路经过频率,定位拥堵瓶颈,图建模说明:有向带权图,核心点:edge_betweenness_centralit 2026/9/7 2:41:41

python的图论工业场景模拟第八十二篇:路网边介数中心性与拥堵预警,任务:算各路段被最短路经过频率,定位拥堵瓶颈,图建模说明:有向带权图,核心点:edge_betweenness_centralit

路网边介数中心性与拥堵预警:找出那条"必经之路""某汽车总装车间的 AGV 调度系统运行半年后,我们发现一个奇怪现象:3号通道总是堵,而其他通道却很空闲。一开始以为是那辆车的问题,后来统计发现——全车…

阅读更多 →
基于STM32的智能指纹门禁系统设计:从硬件搭建到状态机调试全解析 2026/9/7 2:38:40

基于STM32的智能指纹门禁系统设计:从硬件搭建到状态机调试全解析

简介:基于STM32的智能指纹门禁系统设计PDF,是一份面向嵌入式开发者、智能系统研究人员及物联网相关专业学生的技术文献,重点解决传统门禁因采用通话、固定密码等方式而存在的适应性与安全性不足问题。资源仅含1个PDF文件,整体约1.…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞