Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
1,133 views
61 slides
Apr 03, 2019
Slide 1 of 61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
About This Presentation
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Size: 2.35 MB
Language: es
Added: Apr 03, 2019
Slides: 61 pages
Slide Content
Detección de
amenazas a escala
con osquery
Javier Marcos
@javutin
▪Detección / IR / Ingeniería de Seguridad
▪Open source contributor (github.com/javuto)
▪(ex)
▪(ahora)
$ whoami
Parte 1: Desmitificando osquery
▪¿Qué es osquery?
▪Introducción al CLI: osqueryi
▪Tablas en osquery
▪Ejemplos
Agenda
Agenda
Parte 2: Uso de osquery a escala
▪¿Necesitas un demonio? osqueryd!
▪Configuración y flags
▪Scheduled queries y packs
▪Rendimiento
Agenda
Parte 3: Usando la API remota
▪¿Que es un endpoint TLS?
▪Configuración y flags
▪On-demand queries
▪File carving
▪Usando un TLS endpoint
¿Qué es osquery?
▪Exploración de tu sistema operativo usando SQL
▪Monitorización basada en sistemas HIDS
?????? 100% uso de OS API, sin forks de execve ??????
●https://osquery.io
●https://github.com/facebook/osquery
¿Quien usa osquery?
¿Por qué osquery?
▪¿Qué hosts corporativos tienen instalada la
extensión de navegador abc123?
▪¿Cuántos descriptores de archivos se abrieron
ayer por hora en los sistemas de producción?
▪¿Hay alguna máquina enrutando VPN a LAN?
¿Por qué usar SQL?
▪Los conceptos básicos de SQL son universales
▪El lenguaje SQL es muy popular entre devs y
administradores de sistema
SELECT pid,name,uid FROM processes
¿Por qué usar SQL?
SELECT pid,name,uid FROM processes
[concepto]
¿Por qué usar SQL?
SELECT pid,name,uid FROM processes
[atributos] [concepto]
¿Por qué usar SQL?
SELECT pid,name,uid FROM processes
WHERE uid != 0
[restricciones]
[concepto][atributos]
¿Por qué usar SQL?
WHERE uid != 0
[join]
JOIN users ON processes.uid=users.uid
SELECT pid,name,uid FROM processes
[concepto][atributos]
[restricciones]
osqueryi
▪CLI y shell interactiva para lanzar consultas y
ver resultados
▪Para explorar un host local y manualmente
▪Una vez definidas las consultas, se pasa a la
automatización
https://osquery.readthedocs.io/en/stable/introduction/using-osqueryi/
osquery> .help
Welcome to the osquery shell. Please explore your OS!
You are connected to a transient 'in-memory' virtual database.
.all [TABLE] Select all from a table
.bail ON|OFF Stop after hitting an error
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.features List osquery's features and their statuses
.headers ON|OFF Turn display of headers on or off
.help Show this message
Ejemplos de tablas básicas
osquery> SELECT * FROM rpm_packages;
osquery> SELECT * FROM users;
osquery> SELECT * FROM kernel_modules;
osquery> SELECT * FROM startup_items;
¡Ejemplos!
▪¿Cuál es el hostname del sistema?
▪¿Qué usuarios hay en el sistema?
▪¿Qué procesos están corriendo?
¡Ejemplos!
▪¿Cuál es el hostname del sistema?
▪¿Qué usuarios hay en el sistema?
▪¿Qué procesos están corriendo?
SELECT hostname FROM system_info;
¡Ejemplos!
▪¿Cuál es el hostname del sistema?
▪¿Qué usuarios hay en el sistema?
▪¿Qué procesos están corriendo?
SELECT hostname FROM system_info;
SELECT uid, username FROM users;
¡Ejemplos!
▪¿Cuál es el hostname del sistema?
▪¿Qué usuarios hay en el sistema?
▪¿Qué procesos están corriendo?
SELECT hostname FROM system_info;
SELECT uid, username FROM users;
SELECT pid, name, path FROM processes;
¡Ejemplos!
▪¿Cuál es el usuario y la shell de los procesos
que están corriendo?
¡Ejemplos!
▪¿Cuál es el usuario y la shell de los procesos
que están corriendo?
SELECT p.pid, p.name, p.path, u.username,
u.shell FROM processes AS p JOIN users AS u ON
p.uid = u.uid;
El demonio osqueryd
▪Init, systemd, launchd, servicio windows
▪Ejecución de queries programadas
▪Logs de estado y resultados
▪Muchísimas opciones de configuración
https://osquery.readthedocs.io/en/stable/introduction/using-osqueryd/
El demonio osqueryd
casos de uso para respuesta a incidentes
gestión centralizada (backend)
sistema operativo, usuarios, servicios
configuración logging
osqueryd
osquery.flags
▪Flag para inicializar la configuración