jueves, 22 de diciembre de 2016

¡¡Da igual que te escondas!!

Hace tiempo analizando un archivo con extensión con ".js", se encontró que aunque la forma de actuar del archivo era la típica de un lanzador (lanzamiento de un script en powershell que se intenta conectar con algún recurso en Internet), no se descubría la URL completa  porque la resolución DNS no se producía por la inexistencia del dominio dentro de los servidores DNS.

Añadir que además, el código del propio archivo ".js" daba un grado de codificación impropio de un archivo de esa extensión, por lo que se impedía de un manera rápida obtener la URL completa.

Código del archivo con extensión ".js"

Código ejecutado tras lanzar el archivo con extensión ".js"

Por lo anterior, se procedió a extraer la línea de comando anterior para analizar su contenido.


Contenido de la línea extraída anteriormente

Tras realizar al análisis del código se pudo ver dos secciones distintas:

1.- Definición de variables.
2.- Expresión que es invocada y que está formada por la un conjunto de las variables anteriormente definidas


Secciones anteriormente comentadas

Para saber el código que se esconde tras la expresión, se procedió a desarrollar un código HTML que ejecutase código javascript y que mostrara la expresión buscada, por pantalla.

Primeras líneas de código HTML desarrollado
Últimas líneas de código HTML desarrollado

El resultado de tal código fue.


 ¡¡¡Eureka!!!


Lo que hagas con la información es cosa tuya, no mía ... pero ten conciencia.

lunes, 19 de diciembre de 2016

Me sigue faltando espacio de almacenamiento para mi diccionario.

Hace tiempo, realizado una auditoria web se encontraron pistas sobre la política manejada para usuarios y contraseñas.

Más concretamente:

1.- El usuario debía de tener hasta 8 caracteres.

Definición del campo Usuario.

2.- La contraseña debía de tener hasta 8 caracteres.

Definición del campo Password.

Revisando aún más en profundidad, se encontró código para comprobar la validación de los anteriores campos. Más concretamente:

1.- El usuario debe contener entre 3 y 8 caracteres, que además debe manejar un juego de caracteres que admite números, letras mayúsculas y el carácter "_"

Llamada a una función que debe chequear la longitud del usuario introducido

Llamada a una función que debe chequear los caracteres del usuario introducido
.
Diccionario utilizado para los caracteres del usuario introducido

2.- La contraseña debe contener entre 1 y 8 caracteres, que debe manejar un juego de caracteres que admite números, letras mayúsculas y minúsculas.

Llamada a una función que debe chequear los caracteres de la contraseña  introducida

Diccionario utilizado para los caracteres de la contraseña  introducida

En vista de estos datos, lo más seguro es que pensemos en elaborar un diccionario para realizar un ataque con el objetivo de averiguar usuarios/contraseñas. Pero, si hacemos eso, obtendremos un "pequeño problema" ...

El problema es que el diccionario -archivo que contiene todos los posibles patrones en función de la política de usuario/contraseñas encontrados-  es terriblemente grande como para tenerlo almacenarlo en una máquina.

Veamos la generación de los dos diccionarios que necesitaríamos en el anterior caso mediante la herramienta: Crunch.

1.- Para ello comprobamos y/o creamos los juegos de caracteres con los que vamos a crear los diccionarios que necesitamos. Para ello revisamos el archivo que "Crunch" posee para la definición de los susodichos juegos de caracteres y crearemos los juegos de caracteres que necesitamos.

Conjuntos de caracteres almacenados en la ubicación: /usr/share/crunch

Creación del conjunto de caracteres almacenados para generar el diccionario de los posibles usuarios y contraseñas.

Conjunto de caracteres cargados en el archivo de caracteres manejados por Crunch

NOTA: La creación de juegos de caracteres en el archivo que trae por defecto "crunch" implica trabajar con un usuario con permisos de administración. Añadir que los conjuntos de caracteres, si van a ser definidos con un nombre compuesto, NO pueden ir separados por el espacio en blanco.

2.- Creamos los diccionarios en función de los juegos de caracteres creados y en función del conocimiento que tenemos de la política de usuarios y contraseñas encontrados.

Espacio necesario para almacenar el diccionario para el campo "Usuario"

Espacio necesario para almacenar el diccionario para el campo "Contraseña"

¡Qué suerte el que tenga tal tamaño de almacenamiento!

Para el resto, tendremos que concretar la política de generación del diccionario a utilizar mediante el uso de un patrón para asíi obtener un diccionario que necesite menos espacio de disco, o utilizar cualquier otra herramienta que permitan lanzar ataques de diccionario previa definición de la política del diccionario a utilizar (número de caracteres, juego de caracteres, patrón, etc.)


Lo que hagas con la información es cosa tuya, no mía ... pero ten conciencia.

jueves, 1 de diciembre de 2016

Script: CazandoSMB.sh

Hace tiempo desarrolle un pequeño script en bash para obtener información vía protocolo SMB, además de parsear la información relativa a recursos compartidos y comprobar si tenemos lo que hay para acceder para acceder a los mismos sin necesidad de credenciales.

El script se basa en:

1.- Nmap
2.- SmbClient

Entre otras cosas el script obtiene información sobre:

1.- Sistema Operativo
2.- Recursos compartidos
3.- Usuarios
4.- Procesos
5.- Dominios
6.- Grupos
7.- Sesiones

De la información obtenida, y mediante el script: "Parsea-SMB.sh", se parsea/trata la información relativa al Sistema Operativo y a los recursos compartidos. Además de intentar acceder remotamente a los recursos compartidos para los que el "nmap" determina que tenemos permiso de R (read) y/o R/W (read/write) , mediante el uso del programa: "smbclient".

Información obtenida:

1.- Información aportada por el Nmap en formato "xml" y que poseen el formato: <IP>-SMB.xml.

2.- Informe parseado con toda la información obtenida respecto al sistema operativo y los recursos compartidos por cada dirección IP encontrada con los puertos vinculados al protocolo SMB abiertos. El archivo posee el nombre: InformacionSMB.info.

3.- Informe parseado con toda la información obtenida respecto al sistema operativo y los recursos compartidos sobre los que se tiene permisos de R y R/W por cada IP encontrada con los puertos vinculados al protocolo SMB. El archivo posee el nombre: InformacionSMB-DeInteres.info.

4.- Informe parseado con toda la información obtenida respecto al sistema operativo y los recursos compartidos sobre los que se tiene permisos de R y R/W, y que además se ha podido acceder remotamente, por cada IP encontrada con los puertos vinculados al protocolo SMB. El archivo posee el nombre: InformacionSMB-Accedidos.info.

Código del script: CazandoSMB.sh
 
   
 
Código del script: Parsea-SMB.sh

Lo que hagas con la información es cosa tuya, no mía ... pero ten conciencia.

viernes, 25 de noviembre de 2016

Monta un servidor web en menos de 1 minuto.

Si te descargas un exploit basado en código PHP, la mejor manera de ejecutarlo sin necesidad de configurar un servidor web capaz de interpretar código PHP es utilizar el siguiente comando:

php -S <dirección IP>:<puerto>

NOTA: Por supuesto es necesario tener instalado PHP

Este comando permite montar un servidor web capaz de interpretar código PHP sobre el directorio sobre el que se ejecuta. Si le añades la opción: -t <directorio>, montará el servicio web sobre el directorio especificado.

Ejemplo: php 127.0.0.1:3535 -t .

NOTA: Es necesario ejecutar el comando con permiso de: root, para poder utilizar puertos inferiores al 8081. Para los demás, no es necesario ejecutar el comando  como "root"

Más información:
                http://stackoverflow.com/questions/12235876/python-simplehttpserver-with-php
                http://serverfault.com/questions/338394/how-to-run-php-with-simplehttpserver

Ejecución del exploit basado en PHP con nombre: 38534.php, descargado desde la base de datos de exploits: https://www.exploit-db.com/


Se aprovecha este espacio para comentar la existencia del script de python de nombre: SimpleHTTPserver.

Dicho script te permite, al igual que se ha comentado anteriormente, generar un servidor web del directorio desde donde se ejecute mediante el comando:

python -m SimpleHTTPserver <puerto>

NOTA: Al solicitar la raíz del servidor web montado, obtendremos un listado del contenido del directorio sobre el que hemos montado el servidor web.

IMPORTANTE: NO interpreta  código .php

Más información
                https://creadpag.wordpress.com/2016/01/09/como-utilizar-simplehttpserver-en-kali-linux-2-0/

Ejecución del script de python: SimpleHTTPserver.


martes, 15 de noviembre de 2016

Una fina línea entre el bien y el mal.

Hace tiempo me solicitaron un documento ofimático que enviara información a un servicio web, el cual procesaría la información y elaboraría estadísticas sobre el grado de concienciación del entorno sobre el cual se distribuyera el archivo.

El concepto que se utilizo: Data Leak, y  el código de prueba que desarrollé coge parte del código de lo que hacen la totalidad de los downloader, pero en sentido inverso. Los downloaders descargan el malware que infectará el host, para lo cual solicitan el recurso mediante una macro que se ejecuta al abrir un documento, nuestro código recoge información del sistema y la envía al servidor mediante una macro que se ejecuta al abrir un documento.

NOTA: La macro ejecutará automáticamente la macro con nombre: AutoOpen, y no otra.

El siguiente código no es el código integro, sino la base utilizada para la comunicación con el servidor web. Y que radica en tres puntos:

1.- Objeto basado en "msxml2.XMLHTTP".
2.- Definición de los parámetros de envío.
3.- Establecimiento del canal y envío de datos.


Código base desarrollado


Una PoC...


Código para establecer la comunicación con nuestro servidor de estadísticas


Comunicación recibida en el servidor de estadísticas.


Lo que hagas con la información es cosa tuya, no mía ... pero ten conciencia.

PD: Muchas gracias Ismael González por el comentario.

lunes, 24 de octubre de 2016

URGENTE!!!!. Ransomware!!!!.

De manera urgente se informa de una nueva propagación de ransomware a través de los siguientes archivos:

Nombre:             ORDER_985.js  
MD5:                  756DBEC9003F1383854C54FD75D34733
VirusTotal:         11/49

Nombre:             EMAIL_20087.js
MD5:                  70A0E48D3EAAF218CE0F106E22574456
VirusTotal:         22/54

Nombre:             SHOP_30089.js
MD5:                  3384FC28C733626B62F80FAE43AF117E
VirusTotal:         18/53

Nombre:             SHOP_5689.js
MD5:                  76FC21CE41C534B94BEA7E1A7BCE327C
VirusTotal:         24/55

Nombre:             LOVE_6164.js
MD5:                  5C2B21A2FC369DE68910F949C59DAD7D
VirusTotal:         Sin datos

Estos archivos javascript son downloader. Las URLs desde donde descargan son:

www.injusticeil.top/user.php?f=<digito>.dat
www.importantxc.top/user.php?f=<digito>.dat
www.unnaturaldc.top/user.php?f==<digito>.dat

NOTA: El nombre del archivo ".dat" es un dígito, no se descartan otros posibles combinaciones.

Las cuales se encuentran activas, y permiten descargar dos ejecutables distintos:

Nombre:             Roaming.exe
MD5:                  8D54B0EA871C5536B236E658575CF809
VirusTotal:         7/56

Nombre:             Roaming.exe
MD5:                  0AFB7AEF27FCE860AD0E86AEDEBE45A9
VirusTotal:         Sin datos

Estos archivos una vez lanzados reportaran información hacía las siguientes URLs:

91.200.14.124/linuxsucks.php
185.102.136.77/linuxsucks.php
109.234.35.215/linuxsucks.php

Actualmente se encuentran activas todas las URLs.

ACTUALIZACIÓN

En la siguiente URL se informa se aporta más información sobre el mismo ransomware

http://blog.dynamoo.com/2016/10/malware-spam-fake-receipt-leads-to.html

ACTUALIZACIÓN del 25/10/2016

Nuevos archivos han sido detectados:

Nombre:             EURO_16851.js
Hash md5:          49D6D5061DF8AD438EC65CCD3ECF3D62
VirusTotal:         Sin datos

Nombre:             SHOP_7874.js
Hash md5:          79AC56F7DDEC84230865285D8B53FE21
VirusTotal:         3/55

Nombre:             SHOP_30971.js
Hash md5:          B7FAFF528AAE5072260CCE5E2B847052
VirusTotal:         4/54

Nombre:             ALERT_18376.js
Hash md5:          F5BB88DE35A093E333EE26DB1CE0AA70
VirusTotal:         Sin datos

Nombre:             ONLINE_20141.js
Hash md5:          166764A43A748323A6FAF1DDD640F8B4
VirusTotal:         Sin datos

Nombre:             ONLINE_21702.js
Hash md5:          504A6B3C1991E8F3022047DB766C0A8C
VirusTotal:         1/54

Nombre:             MONEY_14896.js
Hash md5:          264F8CA72B0C5322AD9016227809EDE6
VirusTotal:         Sin datos

Nombre:             INFO_2511.js
Hash md5:          9BBD90333BEC5D657E595E2F63A824DD
VirusTotal:         1/55

Nombre:             MONEY_3336.js
Hash md5:          72B990A33B8285746221B1EEE5C7E81B
VirusTotal:         Sin datos

Nombre:             EMAIL_14142.js
Hash md5:          6AE96DD0D97A06375AC39FDE9AF92B79
VirusTotal:         Sin datos

Nombre:             BALLANCE_16862.js
Hash md5:          0C1875601DAD18D7C45AA2AC9A1FC016 
VirusTotal:         2/55

Nombre:             ONLINE_5338.js
Hash md5:          5F236F391A762EB874F6026D23855932
VirusTotal:         Sin datos

Nuevos archivos  downloader. Las URLs desde donde descargan son:

vegetablecs.top/user.php?f=<digito>.dat
sonyserofa.top/user.php?f=<digito>.dat

NOTA: El nombre del archivo ".dat" es un digito, no se descartan otros posibles combinaciones.

Las cuales se encuentran activas, y permiten descargar el siguiente ejecutable:

Nombre:             Roaming.exe
MD5:                 EF3E66188F20CCCBF1FDD9B43B161CB8
VirusTotal:         Sin datos

Los nuevos C2C:

77.123.137.221/linuxsucks.php --- No se encuentra activa

mehksltbkd.info/linuxsucks.php (69.195.129.70) --- Se encuentra activa

miércoles, 5 de octubre de 2016

Nuestro BOT ha crecido!!!

En estos días se ha recibido varios archivos para analizar.

Los datos de los susodichos son:

Nombre:  blood.dat
Md5: BF8A28BD6F426C4AC7A6295A9C120A0D

Nombre: config.dat
Md5: BF8A28BD6F426C4AC7A6295A9C120A0D

Nombre: system.vbs
Md5: FBD2172DD8B2A745188D53ECC151FF0F

El primero que se reviso es el último de los archivos comentados: system.vbs

En él se encontró el siguiente código:










Código encontrado en el archivo: system.vbs

En visto del código visualizado y de que los otros dos ficheros son en definitiva el mismo, se selecciono uno al azar para descrifrarlo, tal y como se hizo en la entrada anterior a esta: http://4null0.blogspot.com.es/2016/09/botnet-de-verano-para-mi.html


























Archivo: blood.dat, antes de descifrarlo




























Archivo: blood.dat, después de descifrarlo

Se revisó el código, encontrando tantas similitudes con el analizado en la serie de entradas:


, que se puede decir que estamos ante una nueva versión del bot (de 34.12 se ha pasado a la 39.13).



















Versión de código del bot


Por lo que sólo se procederá a comentar los datos de interés, de este

1.- Se crean/modifican las siguientes claves de registro

HKCU\Software\Microsoft\Windows Script Host\Settings\Timeout=0
HKCU\Software\Policies\Microsoft\Windows\System\DisableCMD=0
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\disabletaskmgr=0
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run\rescue=%allusersprofile%\rescue.vbe
HKLM\software\microsoft\windows\currentversion\policies\system\consentpromptbehavioradmin=0
HKLM\software\microsoft\windows\currentversion\policies\system\enablelua=0


2.- Se crean/modifican las siguientes claves de registro para auto-defensa

HKEY_CLASSES_ROOT\Applications\Notepad2.exe\shell\open\command=%SystemRoot%\System32\Notepad.exe
HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\open\command=%SystemRoot%\System32\Notepad.exe
HKEY_CLASSES_ROOT\Batfile\Shell\Edit\Command=%SystemRoot%\System32\Notepad.exe
HKEY_CLASSES_ROOT\VBEFile\Shell\Edit\Command\=%SystemRoot%\System32\Notepad.exe

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden=2
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools=0
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden=0

3.- Se crean las siguientes carpetas y archivos

%systemdrive%\security\blood.dat
%systemdrive%\security\svchost.exe
%systemdrive%\security\zoneh.dat
%systemdrive%\security\zoneh.exe
%systemdrive%\security\bump.jpg
%systemdrive%\security\bump.vbe
%systemdrive%\security\av.jpg
%systemdrive%\security\av.bat
%systemdrive%\security\system.jpg
%systemdrive%\security\system.exe
%systemdrive%\security\explorer.jpg
%systemdrive%\security\explorer.exe
%systemdrive%\security\update.jpg
%systemdrive%\security\update.exe
%systemdrive%\kernel\update.jpg
%systemdrive%\kernel\update.exe
%systemdrive%\kernel\explorer.jpg
%systemdrive%\kernel\explorer.exe
%systemdrive%\kernel\system.jpg
%systemdrive%\kernel\system.exe
%systemdrive%\kernel\av.jpg
%systemdrive%\kernel\av.bat
%systemdrive%\kernel\bump.jpg
%systemdrive%\kernel\bump.vbe
%systemdrive%\kernel\zoneh.dat
%systemdrive%\kernel\zoneh.exe
%systemdrive%\kernel\blood.dat
%systemdrive%\kernel\svchost.exe
%systemdrive%\kernel\r00t3r
%systemroot%\system32\system\msg\config.txt
%temp%\uac.bat
%temp%\ADMIN.vbe
%temp%\CPBA.bat
%temp%\tp.vbe
%temp%\tmp.bat
%temp%\booter.dat
%temp%\reskp.exe

4.- Peticiones hacía Internet (URLs)

http://sauvegarde.1x.biz/booter.dat
http://registered.co.nf/sat39/index.php
http://zoneh.me.pn/zoneh.dat
http://users2.Jabry.com/mysiteweb2/bump.jpg
http://newsonline.125mb.com/av.jpg
http://mysiteweb.eu5.org/system.jpg
http://mysiteweb.freezoy.com/explorer.jpg
http://babybot.125mb.com/update.jpg

5.- Método de propagación

El método de propagación se realiza a través de las unidades compartidas/pendrives que tenga enlazadas el host.

A esas unidades compartidas/drives se copian los archivos ".dat" de las carpetas:

1.- %systemdrive%\security
2.- %systemdrive%\kernel

Se renombran y se establecen los atributos del sistema y ocultos, y por último, se crean enlaces por cada archivo encontrado y se ocultan los archivos originales.

RESPUESTA DEL ENTORNO AV

Según VirusTotal y sus motores, SÓLO 11 de 56 motores, califican a el archivo con md5: BF8A28BD6F426C4AC7A6295A9C120A0D, como malicioso.

Si se tiene constancia de dicho archivo en VirusTotal desde hace más de un año.

Más información:

https://virustotal.com/es/file/b41a2670d3beb228e811c6925e2ecae91c1c96610bbb86c3926eeb9d452b3aa4/analysis/