Part 1: osquery 简介

osquery是适用于 Windows、OSX、Linux 和 FreeBSD 的操作系统工具框架。这些工具使低级操作系统分析和监控既高效又直观。
    osquery中的SQL表表示抽象概念,例如运行进程、加载的内核模块、开放式网络连接、浏览器插件、硬件事件或文件哈希。osqueryi是osquery交互式查询控制台/shell。它是完全独立的,不与守护进程通信,不需要以管理员身份运行。
    osqueryd是一个主机监控守护程序,允许我们计划查询和记录操作系统状态更改。守护进程会随着时间的推移聚合查询结果并生成日志,这些日志根据每个查询指示状态的变化。守护进程还使用OS事件API来记录受监控的文件和目录更改、硬件事件、网络事件等。
    查询包是一组或一组查询,旨在完成一项功能或任务。查询包通常配置有特定的运行计划,以帮助避免对主机造成任何潜在影响。例如,有用于事件响应、漏洞管理、法规遵从性、已知OS X恶意软件等的查询包。

Part 2: 在Linux系统上安装osquery

Osquery 包可用于大多数跨平台操作系统。我们可以根据使用的操作系统从其官方网站(https://osquery.io/downloads/official/5.2.2)下载所需的包。
    我们也可以使用它的 apt 存储库来安装它,因为 osquery 被发布到一个 apt 存储库,而 DEB 的依赖关系非常少,它应该可以在大多数操作系统上运行。可以运行一下命令进行安装:

$ export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY$ sudo apt-get update -y$ sudo apt-get install osquery

Part 3: Osquery 组件和用法

现在我们已经成功安装了 osquery,现在我们可以访问它的三个有用的组件,它们是 osqueryi、osqueryd 和 osqueryctl。
        Osqueryi 是一个完全独立且不与守护进程通信的交互式查询外壳。它不需要以管理员身份运行。它使用 shell 对查询进行原型设计并探索操作系统的当前状态。运行以下命令以查找交互式 shell 可用的所有命令行选项和标志:

osqueryi --help

        osqueryd是主机监控守护进程,它记录操作系统状态变化并允许您安排查询。守护程序随时间聚合查询结果并生成日志,这些日志根据每个查询指示状态更改。

osquery 的第三个组件是osqueryctl,它被操作系统的服务管理器用来启动/停止/重新启动 osqueryd。它是一个帮助脚本,用于测试部署或配置 osquery。

当我们进入osquery的shell后,我们可以输入.tables命令来查询数据库表。

        例如:我们想要查询当前安装在系统中的安全存储库(要过滤安全存储库,只需在查询中过滤名称中带有“security”的那些。)

select name,version,source from apt_sources where name LIKE 'security.ubuntu.com/ubuntu focal-security';

Part 4: 启用事件和系统日志

    OSQuery默认情况下不启用事件。您需要先启用基于事件的表才能看到它们。执行以下命令并尝试访问事件表:

SELECT * FROM file_events;

我们可以发现,这里并没有任何输出结果。我们需要对系统配置进行一些修改以启用事件。我们将修改操作系统的 Syslog 应用程序以允许 osquery 使用和查询系统日志。退出 osquery shell 并使用文本编辑器将以下行添加到文件/etc/rsyslog.conf中。

template(
name="OsqueryCsvFormat"
type="string"
string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n"
)
*.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")

然后,输入命令就可以看到相应的输出:

SELECT name, platform, version, discovery_executions from osquery_packs where active = 1;

Part 5: 文件完整性监控

为了实现文件完整性监控,我们需要创建一个新的查询包,其中包含将用于文件完整性监控的查询和指令。具体可以查看链接。然后我们可以在osquery的shell中输入命令:

SELECT target_path, action FROM file_events;

这是我们可以发现,命令执行成功但没有事件,所以让我们新的终端中触发一些事件,然后就可以有相应的输出:

Part 6: 使用 YARA 进行恶意软件分析

osquery 中有两个与 YARA 相关的表,它们的用途非常不同。第一个表名为 yara_events,使用 osquery 的事件框架来监视文件系统更改,并在文件更改事件触发时执行 YARA。第二个表,刚刚称为yara,是用于执行按需 YARA 扫描的表。

YARA 示例配置:

{// Description of the YARA feature."yara": {"signatures": {// Each key is an arbitrary group name to give the signatures listed"sig_group_1": [ "/Users/wxs/sigs/foo.yar", "/Users/wxs/sigs/bar.yar" ],"sig_group_2": [ "/Users/wxs/sigs/baz.yar" ]},"file_paths": {// Each key is a key from file_paths// The value is a list of signature groups to run when an event fires// These will be watched for and scanned when the event framework// fire off an event to yara_events table"system_binaries": [ "sig_group_1" ],"tmp": [ "sig_group_1", "sig_group_2" ]}},// Paths to watch for filesystem events"file_paths": {"system_binaries": [ "/usr/bin/%", "/usr/sbin/%" ],"tmp": [ "/Users/%/tmp/%%", "/tmp/%" ]}
}

首先要注意的是该file_paths部分,它用于描述监视更改的路径。每个键是任意类别名称,值是路径列表。使用的语法记录在FIM页面上描述的 osquery 通配符规则中。当由 osquery 扩展时,这些路径会被监视更改并由 file_events表处理。

要注意的第二件事是该yara部分,它包含在 osquery 中用于 YARA 的配置。该 yara部分包含两个键:signaturesfile_pathssignatures密钥包含一组任意密钥名称,称为“签名组” 。这些组中的每一个的值都是将在 osquery 中编译和存储的签名文件的路径。签名文件的路径必须是绝对路径(不是相对路径)。该 file_paths键将全局部分中描述的事件的类别名称映射file_paths到扫描时使用的签名分组。

例如,当/usr/bin/和中的文件/usr/sbin/被更改时,它将被扫描sig_group_1,它由foo.yar和组成bar.yar。当/Users/%/tmp/(递归)中的文件更改时,它将使用 sig_group_1和进行扫描sig_group_2,该文件由所有三个签名文件组成。

下面提供了两个 Linux 恶意软件样本的链接。注意:这些Linux恶意软件样本是恶意的,在任何情况下都不应打包、编译或执行

Sample 1: ​​​​​​https://github.com/MalwareSamples/Linux-Malware-Samples/blob/main/e6995b5428e887d790c6b77b32fddc143658ce2125ba192e8255d1ab70db6cacSample 2: https://github.com/MalwareSamples/Linux-Malware-Samples/blob/main/2923843a5ee9f6772b5a2a2c63bf606bd01fcb28bfeaede60a83b49e9a93266b

然后我们需要识别存在的恶意软件字符串用来创建YARA 规则:

恶意软件中存在的字符串不会为您提供全部信息,因为恶意软件样本使用 base64 编码或其他方法进行模糊处理,以保护代码免受恶意软件研究人员或逆向工程的影响。但是,某些字符串未编码,可以提供有关恶意软件的一般情况。(恶意软件分析需要一种调查方法,因为大多数信息都被恶意软件编写者混淆了)。这些字符串以明文形式出现,可能包含系统调用、API 调用或其他硬编码信息(IP 地址、横幅、命令...)等信息。

这里有一段简单的yara rule:

rule sample_rule
{meta:description: "YARA Rule"strings:$a = {6A 40 60 00 68 6A 8D}$b = {8A 4D B0 2B}$c = "DFDSDSDSNEVERSDSDGONNADFDFDGIVEDFDYOUDFDFUPDFDF"condition:$a or $b or $c
}

Meta:Meta标签用于提供有关恶意软件的元数据。meta可以包括恶意软件的描述、作者姓名、日期和哈希值。提供散列值是识别特定变量所必需的。

strings:字符串用于检测恶意软件可能包含的字符串$变量可以初始化为存储字符串或二进制值。

Condition:Condition标签用于告诉YARA如何找到字符串

我们可以使用命令:strings sample_1 来查看恶意软件的字符串。但是如果我们无法在互联网上发现可接受的Yara规则,我们必须制定自己的规则。通过手动开发Yara规则,您可能会编写过于具体或不够详细的规则。在这种情况下,我们可以考虑使用YARGEN,这是一种强大而通用的快速生成YARA规则的方法。yargen从恶意软件文件或目录生成Yara规则。它通过识别恶意软件文件中的字符串并删除良性文件中出现的已知字符串来开发Yara规则。 There is a tip for How to install yarGen.

运行以下命令确保已安装所有依赖项:

sudo pip install pefile cd
sudo pip install scandir lxml naiveBayesClassifier

然后cd 进入YarGen 目录并运行以下命令下载内置数据库。

python3 yarGen.py —-update

要使用包含的数据库生成规则,只需运行以下命令:

python yarGen.py -m PATH_TO_MALWARE_DIRECTORY -o xxxx.yar

此命令将为 PATH_TO_MALWARE_DIRECTORY 下的恶意软件文件扫描并创建规则。将在当前目录中创建一个名为yargen_rules.yar的文件,其中包含生成的规则。

        例如:这里有一个使用yarGen对sample_1创建规则:

Meta Section:

规则的“元”部分包括有关规则的描述、作者、引用、日期和哈希的信息。

Strings Section:

以$s开头的字符串(“非常特定的字符串”)是授权软件中不存在的非常特定的字符串。这些字符串可能包含危险的服务器地址、黑客工具和恶意软件的名称、黑客工具的输出以及常用字符串中的错误。例如,当恶意软件文件试图作为正版软件传递时,可能会包含拼写错误的短语,如“Micorsoft”或“Monitor”。

Condition Section:

在YARA规则中,条件是表示规则额外条件的布尔表达式。

YarGen的条件部分由一个魔法头、文件大小和字符串组成。例如,上述规则中的约束表明,文件还必须满足以下条件才能被归类为“后门”:

1.具有0x457f的魔法头

2.文件小于100KB,

3.“字符串”部分中必须指定8个字符串

然后执行命令:

yara -s -r xxx.yar “Malware_File_Path"

Part 7: 使用 OSQUERY 和 YARA 识别恶意软件样本

我们将 OSquery 与 YARA 集成,我们将使用您的自定义 YARA 规则来识别两个恶意软件样本。带有 OSquery 的 YARA 可用作文件完整性检测和基于签名的检测。在这一部分中,我们将使用我们创建的 YARA 规则执行按需 YARA 扫描以检测恶意软件。参阅 OSquery 文档以获取更多信息。

YARA 配置:

在osquery.conf 文件中进行配置。这是一个示例的osquery 的配置:

{// Description of the YARA feature."yara": {"signatures": {// Each key is an arbitrary group name to give the signatures listed"sig_group_1": [ "/Users/wxs/sigs/foo.yar", "/Users/wxs/sigs/bar.yar" ],"sig_group_2": [ "/Users/wxs/sigs/baz.yar" ]},"file_paths": {// Each key is a key from file_paths// The value is a list of signature groups to run when an event fires// These will be watched for and scanned when the event framework// fire off an event to yara_events table"system_binaries": [ "sig_group_1" ],"tmp": [ "sig_group_1", "sig_group_2" ]}}

我们将利用 YARA 表对上述提到的两个 Linux 恶意软件样本执行按需 YARA 扫描。当所有配置准确无误后,我们可以获得以下类似的输出结果:

Reference: 

[1]https://yara.readthedocs.io/en/stable/gettingstarted.html

[2]https://www.freebuf.com/sectool/238293.html

[3]https://github.com/Neo23x0/yarGen

[4]https://infosecwriteups.com/diving-into-yargen-9e8c00e18b65

[5]https://yara.readthedocs.io/en/v3.4.0/commandline.html

使用 OSquery 和 YARA 进行审计相关推荐

  1. 关于mysql archive存储引擎-专门存储审计和日志数据

    来源:http://60.29.242.49/?p=60 政府还有一个让数据库专家摊上更多事情的职能,就是安全控制和数据审计. 那些管理着海量数据仓库的企业官员常常得回答诸如"何人何时修改了 ...

  2. 菜鸟学习之linux用户行为日志审计方案

    今天学习了了sudo日志审计,专门对使用sudo命令系统的用户记录其执行的相关命令信息 说明:所谓sudo命令日志审计,不记录普通用户操作,而是记录执行sudo命令的用户操作 1.安装sudo命令,s ...

  3. 计算机审计 pdf,计算机审计第三章作业.pdf

    1. 审计软件的审计实施阶段前,包括哪些内容? 答: a. 项目管理 b. 数据准备 c. 审计准备 2. 新建审计项目时,在"项目登记"界面里,在定义'审计时限范围'时,可以创建 ...

  4. SmartAuditor----IT访问审计解决方案

    2007年的消息(只所以现在转发,主要是最近要做IBM TAM ESSO和CITRIX XENAPP中的SMARTAUDITOR相结合整单点登陆.访问控制.审计解决方案) 思杰系统公司(纳斯达克股票代 ...

  5. python cmdb资产_SuperCMDB - 资产管理+跳板审计

    CMDB 介绍 资产录入,查询,管理 资产信息自动搜集 Web Terminal登录 操作审计,录像回放 组件栈 python3.7 Tornado4.5 DRF3.9 MYSQL 部署 一 安装依赖 ...

  6. 数据库审计服务器性能要求,数据库审计技术指标资质要求-.docx

    数据库审计技术指标 资质要求: 提供自主知识产权证明文件(软件著作权.软件产品登记). 提供与需求单位同类HIS系统的三甲医院数据库审计的销售案例. 中标供应商必须在成交结果公示后按照用户要求提供为期 ...

  7. 如何在 Centos8 中安装 Lynis审计工具

    Lynis 是一款开源的安全审计工具,专为 Linux.UNIX 衍生产品(如 FreeBSD 和 OpenBSD)而设计.它用于多种目的,包括安全审计.漏洞检测和合规性测试.利用 Lynis 等审计 ...

  8. Centos8 使用auditd配置系统审计

    系统管理员使用审计来发现安全违规并跟踪其系统上的安全相关信息.根据预先配置的规则和属性,auditd 生成日志条目以记录有关系统上发生的事件信息.管理员使用此信息来分析安全策略出了什么问题,并通过采取 ...

  9. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc

    计算机技术在审计中的应用领域分析.doc 计算机技术在审计中的应用 [ ]审计工作作为我WW民经济屮的重要的一个环节,由于有大量的数据需耍处理, 使得计算机技术在审计领域的大规模推广具有很强的实践意义 ...

最新文章

  1. java field setfont_Java JTextField.setFont方法代碼示例
  2. 外包程序员是如何花 5 年时间从月薪 4 千到年薪近百万?
  3. ALSM_EXCEL_TO_INTERNAL_TABLE
  4. Java Web系列:Spring MVC基础
  5. python 多进程 循环_python 多进程读取同一个循环处理、可以用multiprocessing
  6. 我,宇宙最强编辑器,支持远程开发
  7. 诗与远方:无题(二十八)- 曾经写给妹子的一首诗
  8. Windows 10 设置 Java 环境变量
  9. python list(列表)操作用法总结
  10. 条件独立的理解及举例
  11. 生成对抗网络,从DCGAN到StyleGAN、pixel2pixel,人脸生成和图像翻译。
  12. matlab突然打不开的解决办法
  13. OpenCV边缘检测算法
  14. 北京大学计算机视觉导师,北京大学信息科学技术学院林宙辰研究生导师介绍
  15. TOEFL-Listen-课堂笔记
  16. 虚拟域服务器拒绝连接,远程winrm上的“访问被拒绝”
  17. Tokyo Cabinet及Tokyo Tyrant tcb tch比较分析
  18. SAMSUNG三星70年之崛起与ECS精英的销售“铁三角”
  19. springBoot实体类无法构造
  20. 没事做==无聊==懒惰

热门文章

  1. 被缠上了,小王问我怎么在 Spring Boot 中使用 JDBC 连接 MySQL
  2. Visual Studio Code(VS)
  3. 网络通信学习笔记之 ———Socket网络通信
  4. Servlet的执行原理
  5. 墙裂推荐,2023年最强、最实用的IDEA插件推荐合集
  6. 案例分析:回归-克里金方法生成气温表面图(1)
  7. 编程中的匈牙利命名法
  8. (创建型)2、原型模式(返回原对象的克隆体,不直接返回原对象)
  9. line-height 的作用
  10. 实验4-1-5 统计素数并求和 (20 分)