SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
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
osqueryi basics
=> crontab
=> curl
=> curl_certificate
=> deb_packages
=> device_file
=> device_hash
=> device_partitions
=> disk_encryption
=> dns_resolvers
=> docker_container_labels
=> docker_container_mounts
=> docker_container_networks
=> docker_container_ports
...
osquery> .tables
=> acpi_tables
=> apt_sources
=> arp_cache
=> augeas
=> authorized_keys
=> block_devices
=> carbon_black_info
=> carves
=> chrome_extensions
=> cpu_time
=> cpuid
osqueryi basics
osqueryi basics
osquery> pragma table_info(‘system_info’);
+-----+--------------------+---------+---------+------------+----+
| cid | name | type | notnull | dflt_value | pk |
+-----+--------------------+---------+---------+------------+----+
| 0 | hostname | TEXT | 0 | | 0 |
| 1 | uuid | TEXT | 0 | | 0 |
| 2 | cpu_type | TEXT | 0 | | 0 |
| 3 | cpu_subtype | TEXT | 0 | | 0 |
| 4 | cpu_brand | TEXT | 0 | | 0 |
| 5 | cpu_physical_cores | INTEGER | 0 | | 0 |
| 6 | cpu_logical_cores | INTEGER | 0 | | 0 |
| 7 | cpu_microcode | TEXT | 0 | | 0 |
Tablas de osquery
▪ 229 tablas en la versión 3.3.2
▪ 4 plataformas diferentes
▫ Mac, windows, linux y freebsd
▪ Datos fáciles de recoger y correlar
https://osquery.io/schema/3.3.2
https://osquery.io/schema/3.3.2
▪ acpi_tables
▪ arp_cache
▪ apps
▪ authorized_keys
▪ autoexec
▪ battery
▪ block_devices
▪ browser_plugins
▪ certificates
▪ cpu_time
...
▪ cpu_info
▪ crontab
▪ cups_jobs
▪ deb_packages
▪ disk_info
▪ dns_resolvers
▪ docker_info
▪ drivers
▪ etc_hosts
▪ elf_info
...
▪ etc_services
▪ event_taps
▪ file
▪ iptables
▪ kernel_info
▪ known_hosts
▪ launchd
▪ mounts
▪ preferences
...
¡Y muchas más!
Tablas de osquery
Ejecución de tablas al invocar
osquery> SELECT datetime FROM time;
+----------------------+
| datetime |
+----------------------+
| 2019-03-01T04:16:07Z |
+----------------------+
...
Ejecución de tablas al invocar
osquery> SELECT datetime FROM time;
+----------------------+
| datetime |
+----------------------+
| 2019-03-01T04:20:18Z |
+----------------------+
...
Ejecución de tablas al invocar
SELECT datetime FROM time;
2019-03-01T04:16:07Z
...
SELECT datetime FROM time;
2019-03-01T04:20:18Z
Tablas con parámetros
osquery> SELECT directory FROM file WHERE path =
‘/etc/issue’;
+-----------+
| directory |
+-----------+
| /etc |
+-----------+
Tablas con parámetros
osquery> SELECT md5 FROM file JOIN hash USING
(path) WHERE path = ‘/etc/issue’;
+----------------------------------+
| md5 |
+----------------------------------+
| b954418e6a50d4d4cb8f02776d867550 |
+----------------------------------+
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
$ osqueryd --flagfile /etc/osquery/osquery.flags
▪ Muy común usar chef/puppet para flags
$ osqueryd/osqueryi --help
osquery.conf - options
$ osquery[d-i] --config_path /path/to/osquery.conf
"options": {
"config_plugin": "filesystem",
"logger_plugin": "filesystem",
"schedule_splay_percent": "10",
"utc": "true"
...
}
osquery.conf - decorators
"decorators": {
"load": [
"SELECT uuid FROM system_info;"
],
"always": [
"SELECT pid FROM osquery_info;"
]
}
Scheduled queries
query: La consulta que se va a ejecutar
interval: Frecuencia de ejecución en segundos
platform: Limita la consulta a ésta plataforma
shard: Ejecuta la consulta en éste % de hosts
snapshot: Devuelve todos los resultados siempre
osquery.conf - schedule
"schedule": {
"example_query1": {
"query": "SELECT * FROM users;",
"interval": 60
},
"example_query2": {
"query": "SELECT * FROM processes;",
"interval": 3600
},
}
Query packs
query: La consulta que se va a ejecutar
interval: Frecuencia de ejecución en segundos
version: Versión de osquery para ejecutar
description: Descripción de la consulta
value: Detalles de por qué ésta consulta
osquery.conf - packs
"packs": {
"osquery-monitoring": "osquery-monitoring.conf",
"incident-response": "incident-response.conf",
"it-compliance": "it-compliance.conf",
"osx-attacks": "osx-attacks.conf",
"vuln-management": "vuln-management.conf"
"hardware-monitoring": "hardware-monitoring.conf",
"ossec-rootkit": "ossec-rootkit.conf",
"windows-hardening": "windows-hardening.conf",
"windows-attacks": "windows-attacks.conf"
},
osquery.conf - packs
// incident-response.conf
"queries": {
"launchd": {
"query" : "select * from launchd;",
"interval" : "3600",
"platform" : "darwin",
"version" : "1.4.5",
},
...
osqueryd watchdog
▪ Por defecto osqueryd corre en un único hilo
▪ Periódicamente se analiza el uso de CPU/memoria
▪ reiniciar si: > 60% uso de CPU durante 9 s
▪ reiniciar si: > 200M memoria asignada
API remota de osqueryd
▪ Algunas opciones de endpoint TLS disponibles
➔ Uptycs
➔ Kolide
➔ CB LiveOps
➔ AlienVault
➔ Zentral
➔ Doorman
➔ SGT
➔ Zentral
➔ Windmill
➔ Kolide
API remota de osqueryd
▪ Plugin TLS permite la gestión centralizada de osquery
--tls_client_cert Optional path to a TLS client-auth PEM certificate
--tls_client_key Optional path to a TLS client-auth PEM private key
--tls_hostname TLS/HTTPS hostname for Config, Logger, and Enroll
--tls_server_certs Optional path to a TLS server PEM certificate(s)
bundle
Endpoint TLS para osquery
...
Resultados
Logs
Configuración
TLS endpoint
Endpoint TLS básico
▪ Enroll
POST /path/to/enroll
▪ Configuración
POST /path/to/config
https://osquery.readthedocs.io/en/stable/deployment/remote/
▪ Logs
POST /path/to/log
▪ Extras
(On-demand queries)
(File carving)
...
▪ Consultas de osquery en tiempo (casi) real
➔ Los resultados se reciben inmediatamente
➔ Muy útil en investigaciones
TLS endpoint: On-demand queries
// on-demand queries osquery flags
--disable_distributed=false
--distributed_interval=10
--distributed_plugin=tls
--distributed_tls_max_attempts=3
--distributed_tls_read_endpoint=/path/to/read
--distributed_tls_write_endpoint=/path/to/write
TLS endpoint: On-demand queries
TLS Endpoint: File carving
▪ Extracción de ficheros a través de osquery
➔ Recibidos inmediatamente
➔ Ficheros o directorios completos
SELECT * FROM carves WHERE carve=1 AND path LIKE
'/home/user/%%';
TLS Endpoint: File carving
// file carving osquery flags
--disable_carver=false
--carver_disable_function=false
--carver_start_endpoint=/path/to/start
--carver_continue_endpoint=/path/to/continue
osctrl: Arquitectura de servicios
Resultados
Logs
Configuración
osctrl-tls
osctrl-admin
operator
▪ Servicio TLS endpoint para nodos de osquery
▪ En internet sin autenticación
▪ Pensado para escalar proporcionalmente
osctrl-tls
Logs / Resultados
Configuración
osctrl-admin
▪ Servicio de administración del TLS endpoint
▪ Comunicación con osctrl-tls mediante DB
▪ Puede estar en una red privada, detrás de VPN
osctrl-tlsosctrl-adminoperator
osctrl-cli
▪ Línea de comandos para osctrl
▪ Utilidad para evitar acciones directas en la DB
▪ Pensada para automatizar tareas
Demostración!
osctrl TODO
▪ Loggers para ELK, Kinesis, Kafka…
▫ Idealmente con un sistema modular
▪ Soporte de s3 para file carving
▪ Caché con Redis para osctrl-tls
▪ Documentación y tests
Bonus: osquery avanzado
▪ FIM (File Integrity Monitoring)
▪ Tablas de eventos / audit
▪ Extensiones de osquery (C/C++, Go, Python)
▪ Tablas custom con ATC (Automated Table
Construction)
Documentación osquery
▪ Wiki
https://osquery.readthedocs.io
▪ Código
https://osquery.io
https://osquery-slack.herokuapp.com
¿Alguna pregunta?
¡Muchas gracias!
@javutin @javuto

Más contenido relacionado

La actualidad más candente

Amazon Virtual Private Cloud VPC Architecture AWS Web Services
Amazon Virtual Private Cloud VPC Architecture AWS Web ServicesAmazon Virtual Private Cloud VPC Architecture AWS Web Services
Amazon Virtual Private Cloud VPC Architecture AWS Web Services
Robert Wilson
 

La actualidad más candente (20)

Aws multi-region High Availability
Aws multi-region High Availability Aws multi-region High Availability
Aws multi-region High Availability
 
Liquibase
LiquibaseLiquibase
Liquibase
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기
 
Database versioning with liquibase
Database versioning with liquibaseDatabase versioning with liquibase
Database versioning with liquibase
 
Release and patching strategy
Release and patching strategyRelease and patching strategy
Release and patching strategy
 
XXE: How to become a Jedi
XXE: How to become a JediXXE: How to become a Jedi
XXE: How to become a Jedi
 
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar SeriesImproving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
Improving Infrastructure Governance on AWS - AWS June 2016 Webinar Series
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com Rancher
 
AWS January 2016 Webinar Series - Managing your Infrastructure as Code
AWS January 2016 Webinar Series - Managing your Infrastructure as CodeAWS January 2016 Webinar Series - Managing your Infrastructure as Code
AWS January 2016 Webinar Series - Managing your Infrastructure as Code
 
Microsoft Azure
Microsoft AzureMicrosoft Azure
Microsoft Azure
 
IaC.pptx
IaC.pptxIaC.pptx
IaC.pptx
 
AWS Power Tools: Advanced AWS CloudFormation and CLI
AWS Power Tools: Advanced AWS CloudFormation and CLIAWS Power Tools: Advanced AWS CloudFormation and CLI
AWS Power Tools: Advanced AWS CloudFormation and CLI
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With Liquibase
 
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration  AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
AWS Webcast - Amazon RDS for Oracle: Best Practices and Migration
 
Daos
DaosDaos
Daos
 
Docker Security workshop slides
Docker Security workshop slidesDocker Security workshop slides
Docker Security workshop slides
 
Amazon Virtual Private Cloud VPC Architecture AWS Web Services
Amazon Virtual Private Cloud VPC Architecture AWS Web ServicesAmazon Virtual Private Cloud VPC Architecture AWS Web Services
Amazon Virtual Private Cloud VPC Architecture AWS Web Services
 
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 

Similar a Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]

Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
wcuestas
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listener
yt f
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
Jaime Irurzun
 

Similar a Javier Marcos - Detección de amenazas a escala con osquery [rooted2019] (20)

Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQL
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 
Conferencia Innovación en Técnicas de Ethical Hacking
Conferencia Innovación en Técnicas de Ethical HackingConferencia Innovación en Técnicas de Ethical Hacking
Conferencia Innovación en Técnicas de Ethical Hacking
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Nagios
NagiosNagios
Nagios
 
Depuración Avanzada Con Win Dbg Y Vs 2010 (Extendida)
Depuración Avanzada Con Win Dbg Y Vs 2010 (Extendida)Depuración Avanzada Con Win Dbg Y Vs 2010 (Extendida)
Depuración Avanzada Con Win Dbg Y Vs 2010 (Extendida)
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listener
 
Presentacion Demo Open Solaris
Presentacion Demo Open SolarisPresentacion Demo Open Solaris
Presentacion Demo Open Solaris
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
Trabajo zabbix
Trabajo zabbixTrabajo zabbix
Trabajo zabbix
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
José Luis Verdeguer - FreePBX for fun & profit [Rooted CON 2013]
José Luis Verdeguer - FreePBX for fun & profit [Rooted CON 2013]José Luis Verdeguer - FreePBX for fun & profit [Rooted CON 2013]
José Luis Verdeguer - FreePBX for fun & profit [Rooted CON 2013]
 

Más de RootedCON

Más de RootedCON (20)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 

Último (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]

  • 1. Detección de amenazas a escala con osquery Javier Marcos @javutin
  • 2. ▪ Detección / IR / Ingeniería de Seguridad ▪ Open source contributor (github.com/javuto) ▪ (ex) ▪ (ahora) $ whoami
  • 3. Parte 1: Desmitificando osquery ▪ ¿Qué es osquery? ▪ Introducción al CLI: osqueryi ▪ Tablas en osquery ▪ Ejemplos Agenda
  • 4. Agenda Parte 2: Uso de osquery a escala ▪ ¿Necesitas un demonio? osqueryd! ▪ Configuración y flags ▪ Scheduled queries y packs ▪ Rendimiento
  • 5. 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
  • 6. ¿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
  • 8. ¿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?
  • 9. ¿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
  • 10. ¿Por qué usar SQL? SELECT pid,name,uid FROM processes [concepto]
  • 11. ¿Por qué usar SQL? SELECT pid,name,uid FROM processes [atributos] [concepto]
  • 12. ¿Por qué usar SQL? SELECT pid,name,uid FROM processes WHERE uid != 0 [restricciones] [concepto][atributos]
  • 13. ¿Por qué usar SQL? WHERE uid != 0 [join] JOIN users ON processes.uid=users.uid SELECT pid,name,uid FROM processes [concepto][atributos] [restricciones]
  • 14. 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/
  • 15. 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 osqueryi basics
  • 16. => crontab => curl => curl_certificate => deb_packages => device_file => device_hash => device_partitions => disk_encryption => dns_resolvers => docker_container_labels => docker_container_mounts => docker_container_networks => docker_container_ports ... osquery> .tables => acpi_tables => apt_sources => arp_cache => augeas => authorized_keys => block_devices => carbon_black_info => carves => chrome_extensions => cpu_time => cpuid osqueryi basics
  • 17. osqueryi basics osquery> pragma table_info(‘system_info’); +-----+--------------------+---------+---------+------------+----+ | cid | name | type | notnull | dflt_value | pk | +-----+--------------------+---------+---------+------------+----+ | 0 | hostname | TEXT | 0 | | 0 | | 1 | uuid | TEXT | 0 | | 0 | | 2 | cpu_type | TEXT | 0 | | 0 | | 3 | cpu_subtype | TEXT | 0 | | 0 | | 4 | cpu_brand | TEXT | 0 | | 0 | | 5 | cpu_physical_cores | INTEGER | 0 | | 0 | | 6 | cpu_logical_cores | INTEGER | 0 | | 0 | | 7 | cpu_microcode | TEXT | 0 | | 0 |
  • 18. Tablas de osquery ▪ 229 tablas en la versión 3.3.2 ▪ 4 plataformas diferentes ▫ Mac, windows, linux y freebsd ▪ Datos fáciles de recoger y correlar https://osquery.io/schema/3.3.2
  • 19. https://osquery.io/schema/3.3.2 ▪ acpi_tables ▪ arp_cache ▪ apps ▪ authorized_keys ▪ autoexec ▪ battery ▪ block_devices ▪ browser_plugins ▪ certificates ▪ cpu_time ... ▪ cpu_info ▪ crontab ▪ cups_jobs ▪ deb_packages ▪ disk_info ▪ dns_resolvers ▪ docker_info ▪ drivers ▪ etc_hosts ▪ elf_info ... ▪ etc_services ▪ event_taps ▪ file ▪ iptables ▪ kernel_info ▪ known_hosts ▪ launchd ▪ mounts ▪ preferences ... ¡Y muchas más! Tablas de osquery
  • 20. Ejecución de tablas al invocar osquery> SELECT datetime FROM time; +----------------------+ | datetime | +----------------------+ | 2019-03-01T04:16:07Z | +----------------------+ ...
  • 21.
  • 22. Ejecución de tablas al invocar osquery> SELECT datetime FROM time; +----------------------+ | datetime | +----------------------+ | 2019-03-01T04:20:18Z | +----------------------+ ...
  • 23. Ejecución de tablas al invocar SELECT datetime FROM time; 2019-03-01T04:16:07Z ... SELECT datetime FROM time; 2019-03-01T04:20:18Z
  • 24. Tablas con parámetros osquery> SELECT directory FROM file WHERE path = ‘/etc/issue’; +-----------+ | directory | +-----------+ | /etc | +-----------+
  • 25. Tablas con parámetros osquery> SELECT md5 FROM file JOIN hash USING (path) WHERE path = ‘/etc/issue’; +----------------------------------+ | md5 | +----------------------------------+ | b954418e6a50d4d4cb8f02776d867550 | +----------------------------------+
  • 26. Ejemplos de tablas básicas osquery> SELECT * FROM rpm_packages; osquery> SELECT * FROM users; osquery> SELECT * FROM kernel_modules; osquery> SELECT * FROM startup_items;
  • 27. ¡Ejemplos! ▪ ¿Cuál es el hostname del sistema? ▪ ¿Qué usuarios hay en el sistema? ▪ ¿Qué procesos están corriendo?
  • 28. ¡Ejemplos! ▪ ¿Cuál es el hostname del sistema? ▪ ¿Qué usuarios hay en el sistema? ▪ ¿Qué procesos están corriendo? SELECT hostname FROM system_info;
  • 29. ¡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;
  • 30. ¡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;
  • 31. ¡Ejemplos! ▪ ¿Cuál es el usuario y la shell de los procesos que están corriendo?
  • 32. ¡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;
  • 33. 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/
  • 34. El demonio osqueryd casos de uso para respuesta a incidentes gestión centralizada (backend) sistema operativo, usuarios, servicios configuración logging osqueryd
  • 35. osquery.flags ▪ Flag para inicializar la configuración $ osqueryd --flagfile /etc/osquery/osquery.flags ▪ Muy común usar chef/puppet para flags $ osqueryd/osqueryi --help
  • 36. osquery.conf - options $ osquery[d-i] --config_path /path/to/osquery.conf "options": { "config_plugin": "filesystem", "logger_plugin": "filesystem", "schedule_splay_percent": "10", "utc": "true" ... }
  • 37. osquery.conf - decorators "decorators": { "load": [ "SELECT uuid FROM system_info;" ], "always": [ "SELECT pid FROM osquery_info;" ] }
  • 38. Scheduled queries query: La consulta que se va a ejecutar interval: Frecuencia de ejecución en segundos platform: Limita la consulta a ésta plataforma shard: Ejecuta la consulta en éste % de hosts snapshot: Devuelve todos los resultados siempre
  • 39. osquery.conf - schedule "schedule": { "example_query1": { "query": "SELECT * FROM users;", "interval": 60 }, "example_query2": { "query": "SELECT * FROM processes;", "interval": 3600 }, }
  • 40. Query packs query: La consulta que se va a ejecutar interval: Frecuencia de ejecución en segundos version: Versión de osquery para ejecutar description: Descripción de la consulta value: Detalles de por qué ésta consulta
  • 41. osquery.conf - packs "packs": { "osquery-monitoring": "osquery-monitoring.conf", "incident-response": "incident-response.conf", "it-compliance": "it-compliance.conf", "osx-attacks": "osx-attacks.conf", "vuln-management": "vuln-management.conf" "hardware-monitoring": "hardware-monitoring.conf", "ossec-rootkit": "ossec-rootkit.conf", "windows-hardening": "windows-hardening.conf", "windows-attacks": "windows-attacks.conf" },
  • 42. osquery.conf - packs // incident-response.conf "queries": { "launchd": { "query" : "select * from launchd;", "interval" : "3600", "platform" : "darwin", "version" : "1.4.5", }, ...
  • 43. osqueryd watchdog ▪ Por defecto osqueryd corre en un único hilo ▪ Periódicamente se analiza el uso de CPU/memoria ▪ reiniciar si: > 60% uso de CPU durante 9 s ▪ reiniciar si: > 200M memoria asignada
  • 44. API remota de osqueryd ▪ Algunas opciones de endpoint TLS disponibles ➔ Uptycs ➔ Kolide ➔ CB LiveOps ➔ AlienVault ➔ Zentral ➔ Doorman ➔ SGT ➔ Zentral ➔ Windmill ➔ Kolide
  • 45. API remota de osqueryd ▪ Plugin TLS permite la gestión centralizada de osquery --tls_client_cert Optional path to a TLS client-auth PEM certificate --tls_client_key Optional path to a TLS client-auth PEM private key --tls_hostname TLS/HTTPS hostname for Config, Logger, and Enroll --tls_server_certs Optional path to a TLS server PEM certificate(s) bundle
  • 46. Endpoint TLS para osquery ... Resultados Logs Configuración TLS endpoint
  • 47. Endpoint TLS básico ▪ Enroll POST /path/to/enroll ▪ Configuración POST /path/to/config https://osquery.readthedocs.io/en/stable/deployment/remote/ ▪ Logs POST /path/to/log ▪ Extras (On-demand queries) (File carving) ...
  • 48. ▪ Consultas de osquery en tiempo (casi) real ➔ Los resultados se reciben inmediatamente ➔ Muy útil en investigaciones TLS endpoint: On-demand queries
  • 49. // on-demand queries osquery flags --disable_distributed=false --distributed_interval=10 --distributed_plugin=tls --distributed_tls_max_attempts=3 --distributed_tls_read_endpoint=/path/to/read --distributed_tls_write_endpoint=/path/to/write TLS endpoint: On-demand queries
  • 50. TLS Endpoint: File carving ▪ Extracción de ficheros a través de osquery ➔ Recibidos inmediatamente ➔ Ficheros o directorios completos SELECT * FROM carves WHERE carve=1 AND path LIKE '/home/user/%%';
  • 51. TLS Endpoint: File carving // file carving osquery flags --disable_carver=false --carver_disable_function=false --carver_start_endpoint=/path/to/start --carver_continue_endpoint=/path/to/continue
  • 52. osctrl: Arquitectura de servicios Resultados Logs Configuración osctrl-tls osctrl-admin operator
  • 53. ▪ Servicio TLS endpoint para nodos de osquery ▪ En internet sin autenticación ▪ Pensado para escalar proporcionalmente osctrl-tls Logs / Resultados Configuración
  • 54. osctrl-admin ▪ Servicio de administración del TLS endpoint ▪ Comunicación con osctrl-tls mediante DB ▪ Puede estar en una red privada, detrás de VPN osctrl-tlsosctrl-adminoperator
  • 55. osctrl-cli ▪ Línea de comandos para osctrl ▪ Utilidad para evitar acciones directas en la DB ▪ Pensada para automatizar tareas
  • 57. osctrl TODO ▪ Loggers para ELK, Kinesis, Kafka… ▫ Idealmente con un sistema modular ▪ Soporte de s3 para file carving ▪ Caché con Redis para osctrl-tls ▪ Documentación y tests
  • 58. Bonus: osquery avanzado ▪ FIM (File Integrity Monitoring) ▪ Tablas de eventos / audit ▪ Extensiones de osquery (C/C++, Go, Python) ▪ Tablas custom con ATC (Automated Table Construction)
  • 59. Documentación osquery ▪ Wiki https://osquery.readthedocs.io ▪ Código https://osquery.io https://osquery-slack.herokuapp.com