adding osquery file set
This commit is contained in:
parent
f8ba3d56e5
commit
25e1aa4d73
9
osquery/Readme.txt
Normal file
9
osquery/Readme.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
This is a lab file set to make osquery do the following
|
||||||
|
|
||||||
|
|
||||||
|
* detect hidden files and processes
|
||||||
|
* report new cron jobs
|
||||||
|
* ... cover parts of ATT&CK matrix, that make sense for the lab
|
||||||
|
* detection engineering
|
||||||
|
* log the results as JSON
|
||||||
|
* Logrotate management
|
62
osquery/configure_osquery.yaml
Normal file
62
osquery/configure_osquery.yaml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
- name: Configure osquery on the local system
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
become: yes
|
||||||
|
tasks:
|
||||||
|
- name: Install osquery
|
||||||
|
apt:
|
||||||
|
name: osquery
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Create osquery user
|
||||||
|
user:
|
||||||
|
name: osquery
|
||||||
|
system: yes
|
||||||
|
create_home: no
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Copy osquery.flags file
|
||||||
|
copy:
|
||||||
|
src: osquery.flags
|
||||||
|
dest: /etc/osquery/osquery.flags
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Copy osquery.conf file
|
||||||
|
copy:
|
||||||
|
src: osquery.conf
|
||||||
|
dest: /etc/osquery/osquery.conf
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Create log directory
|
||||||
|
file:
|
||||||
|
path: /var/log/osquery
|
||||||
|
state: directory
|
||||||
|
owner: osquery
|
||||||
|
group: osquery
|
||||||
|
mode: 0750
|
||||||
|
|
||||||
|
- name: Set up logrotate
|
||||||
|
copy:
|
||||||
|
content: |
|
||||||
|
/var/log/osquery/osqueryd.{INFO,ERROR,WARNING}* /var/log/osquery/osqueryd.results.log {
|
||||||
|
daily
|
||||||
|
rotate 3
|
||||||
|
compress
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
create 0640 osquery osquery
|
||||||
|
postrotate
|
||||||
|
systemctl restart osqueryd > /dev/null 2>&1 || true
|
||||||
|
endscript
|
||||||
|
}
|
||||||
|
dest: /etc/logrotate.d/osquery
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
|
28
osquery/install_osquery.yaml
Normal file
28
osquery/install_osquery.yaml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
- name: Install osquery on Ubuntu 20.04 LTS
|
||||||
|
hosts: localhost
|
||||||
|
become: yes
|
||||||
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
|
- name: Ensure /etc/apt/keyrings directory exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/apt/keyrings
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Download osquery public key
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://pkg.osquery.io/deb/pubkey.gpg
|
||||||
|
dest: /etc/apt/keyrings/osquery.asc
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Add osquery repository
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: 'deb [arch=amd64 signed-by=/etc/apt/keyrings/osquery.asc] https://pkg.osquery.io/deb deb main'
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Install osquery
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: osquery
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
55
osquery/osquery.conf
Normal file
55
osquery/osquery.conf
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"options": {
|
||||||
|
"disable_events": "false",
|
||||||
|
"utc": "true",
|
||||||
|
"logger_mode": "0640",
|
||||||
|
"logger_format": "json"
|
||||||
|
},
|
||||||
|
"schedule": {
|
||||||
|
"scheduled_task_persistence": {
|
||||||
|
"query": "SELECT path, name, action, enabled, hidden FROM scheduled_tasks;",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"startup_items": {
|
||||||
|
"query": "SELECT name, path, status, source FROM startup_items;",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"services_persistence": {
|
||||||
|
"query": "SELECT name, display_name, path, start_type, status FROM services WHERE start_type IN ('AUTO_START', 'DEMAND_START');",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"system_cron_jobs": {
|
||||||
|
"query": "SELECT command, path, interval, time FROM crontab;",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"user_cron_jobs": {
|
||||||
|
"query": "SELECT username, command, path, interval, time FROM crontab WHERE username != 'root';",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"logon_scripts": {
|
||||||
|
"query": "SELECT script_path, username FROM logon_scripts;",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"setuid_files": {
|
||||||
|
"query": "SELECT path, uid, gid, mode, size, atime, mtime, ctime FROM file WHERE (mode & '04000') = '04000';",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"setgid_files": {
|
||||||
|
"query": "SELECT path, uid, gid, mode, size, atime, mtime, ctime FROM file WHERE (mode & '02000') = '02000';",
|
||||||
|
"interval": 3600
|
||||||
|
},
|
||||||
|
"privilege_escalation_processes": {
|
||||||
|
"query": "SELECT pid, name, path, cmdline, uid, gid, euid, egid, suid, sgid, cwd, start_time FROM processes WHERE (uid != euid OR gid != egid);",
|
||||||
|
"interval": 300
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"decorators": {
|
||||||
|
"load": [
|
||||||
|
"SELECT uuid AS host_uuid FROM system_info;",
|
||||||
|
"SELECT hostname FROM system_info;",
|
||||||
|
"SELECT user AS username FROM logged_in_users WHERE user NOT IN ('_mbsetupuser', 'root') ORDER BY time DESC LIMIT 1;"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packs": {}
|
||||||
|
}
|
||||||
|
|
2
osquery/osquery.flags
Normal file
2
osquery/osquery.flags
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
--config_path=/etc/osquery/osquery.conf
|
||||||
|
--logger_path=/var/log/osquery
|
10
osquery/run.sh
Executable file
10
osquery/run.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "Usage: $0 <playbook_file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
playbook_file=$1
|
||||||
|
|
||||||
|
ansible-playbook $playbook_file --ask-become-pass
|
Loading…
Reference in New Issue
Block a user