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.


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:


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.


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


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:



El conjunto de opciones completas lo tenemos aquí:


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.


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.


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 !!!
Related Posts Plugin for WordPress, Blogger...