28 abril 2015

OSQuery: Herramienta forense para Linux y Mac OS X



¿Cuántas veces os han venido con un ordenador que “hacía cosas raras” y que parece que "tenía vida propia”? Cuando estás investigando un posible incidente de seguridad, y no se tiene claro qué es lo que está pasando, máxime cuando hablamos de un montón de máquinas, puede ser interesante instalar un agente en cada máquina que remotamente pueda enviarnos (o al que podamos solicitar) información interna sobre el equipo en cuestión.

En esta línea, existe una herramienta llamada OSQuery, que permite realizar estas tareas en entornos Linux (CentOS y Ubuntu) y Mac OS X. Cabe destacar dos cosas muy curiosas: La primera es la interfaz de selección de datos, y es que la herramienta abstrae al usuario de hacer búsquedas entre diferente tipo de ficheros, ejecuciones de comandos, búsquedas en /proc, etc,…. mediante la utilización de SQL a partir de una interfaz de comandos propia. La segunda cosa curiosa es que la empresa encargada de su desarrollo, es nada más y nada menos que Facebook

La interacción con la interfaz es lo más parecido a SQLite, mediante la ejecución de "osqueryi", de manera que para poder ver las tablas a las que podemos hacer consultas, ejecutamos “.schema” y nos salen, entre otras, tablas como las siguientes:

CREATE VIRTUAL TABLE shell_history USING shell_history(username TEXT, command TEXT, history_file TEXT);
CREATE VIRTUAL TABLE process_envs USING process_envs(pid INTEGER, key TEXT, value TEXT);
CREATE VIRTUAL TABLE kernel_extensions USING kernel_extensions(idx INTEGER, refs INTEGER, size BIGINT, wired BIGINT, name TEXT, version TEXT, linked_against TEXT)

Obviamente, la ejecución en un Mac y en un Linux entrega tablas diferentes, aunque hay un subconjunto de ellas bastante grande que es común a ambos sistemas operativos.   


Las diferentes tablas, de las que podéis extraer información, la podéis ver aquí: https://osquery.io/docs/tables/. Se ofrecen separadas entre CentOS, Ubuntu y Mac OS X, así como las que son comunes a dichas plataformas.

Con OSQuery se incluye también "osqueryd" un demonio que permite programar las diversas consultas que más nos interesen, para poder comprobar cómo cambian los valores entregados a lo largo del tiempo, generándose logs agregados que permitan ver las variaciones, siendo de gran ayuda a la hora de entender qué le pasaba a la máquina en un momento determinado.

En el módulo de Linux del curso online de Análisis Forense de Securízame, entre otras, mostré el funcionamiento de esta  herramienta, en un contexto en el que nos interesaba preguntarle en remoto, y de forma programada, diferentes parámetros a un sistema operativo CentOS cada X tiempo. Creo recordar que en este caso una de las consultas que hice era la relación entre direcciones IP y MAC de la tabla ARP del sistema operativo, a fin de poder comprobar si la máquina estaba siendo víctima de un ataque MiTM. Este tipo de soluciones, puede resultar muy útil a la hora de inspeccionar el comportamiento de máquinas vivas. 
Disponéis de toda la información sobre la herramienta en https://osquery.io/