miércoles, 28 de enero de 2015

Puerto TCP 32764 o una puerta abierta en numerosos routers de Cisco, ¿bug masivo o backdoor intencionado?

Hace tiempo alguien se extrañó al ver que en su router Netgear estaba abierto el puerto TCP 32764... pero es ahora a principios de año cuando el francés Eloi Vanderbeken ha alertado a la Comunidad al advertir la presencia de un backdoor corriendo en este puerto en numerosos routers Netgear, Linksys y Cisco.

Después de un análisis de firmware, Vanderbeken descubrió numerosas vulnerabilidades como desbordamientos de memoria basados en pila o path traversal, llegando a conseguir el acceso y control total del dispositivo (shell) a través de este puerto sin ningún tipo de autenticación. Así mismo se podrían realizar denegaciones de servicio, pudiendo resetear la configuración de fábrica o la obtención de la configuración del sistema (routercfg.cfg).

En el repositorio GitHub de Vanderbeken podrás encontrar un listado de los modelos de routers vulnerables ya confirmados así como una descripción de la vulnerabilidad y la PoC correspondientes:


https://github.com/elvanderb/TCP-32764
  
Ante eso, Cisco ha tenido que confirmar finalmente la existencia de esta puerta trasera indocumentada en varios de sus routers que podrían permitir a un atacante remoto "obtener acceso de root en un dispositivo afectado" por medio de lo que llaman "una interfaz de prueba indocumentada en el servicio TCP 32764".

"Un atacante podría aprovechar esta vulnerabilidad mediante el acceso al dispositivo afectado desde la interfaz de la LAN y ejecutar arbitrariamente comandos en el sistema operativo subyacente. Un exploit podría permitir al atacante acceder a las credenciales de usuario de la cuenta de administrador del dispositivo, y leer la configuración del dispositivo" afirmó la empresa.

¿Realmente se trata de un fallo y olvidaron eliminar un "interfaz de prueba" en NUMEROSAS versiones de firmware de NUMEROSOS dispositivos? Ni de cagando Cuesta creerlo... así que parece tratarse de otro backdoor que nos regala el fabricante...


Fuentes:
Cisco Discloses Existence of Undocumented Backdoor in Routers 
Acceso remoto no documentado en routers DSL Linksys y Netgear 
Backdoor found in many consumer routers and WAPs (Port 32764 vulnerability) 
Netgear, Linksys and many other Wireless Routers have a backdoor 
CVE-2014-0659

martes, 27 de enero de 2015

Maldrone, el primer malware (conocido) para drones

El experto de seguridad Rahul Sasi (@fb1h2s) ha descubierto y explotado un backdoor en Parrot AR, un popular cuadricóptero que puede ser controlado fácilmente mediante un smartphone.

AR Drone posee un 9-DOF*, un sensor de ultrasonidos (baja altitud), un sensor de presión (altitud alta) y un sensor GPS.

*"Degrees Of Freedom" o "DOF" es una serie de ejes y sensores combinados para el equilibrio de un avión, un helicóptero o un robot.
Un 9-DOF es un 6-DOF (acelerómetros de 3 ejes combinados con un giroscopio de 3 ejes) combinado con un magnetotérmico (brújula).


El AR Drone tiene un binario llamado program.elf que controla el dron entero usado los datos de estos sensores. Este pequeño programa es suficiente para llevar acabo aterrizajes automáticos, estabilidad en vuelo y otras operaciones. El acceso a estos sensores se realiza mediante puertos serie:

/dev/ttyO0 —> rotors and leds
/dev/ttyO1 —> Nav board
/dev/ttyPA1 — > Motor driver
/dev/ttyPA2 —> accelerometer, gyrometer, and sonar sensors
/dev/video0 -->
/dev/video1 — > video4linux2 devices
/dev/i2c-0
/dev/i2c-1
/dev/i2c-2
/dev/usb-i2c

AR Drone también tiene una API de alto nivel, de código abierto, que permite controlar el dron mediante comandos AT y que podría aprovecharse para construir el backdoor más fácilmente, si bien Rahul quería controlar drones y robots en general y por lo tanto su objetivo fue interacturar directamente con los sensores y datos de navegación. Por ello la idea del backdoor se centra directamente en el binario program.elf:

Paso 1: matar program.elf
Paso 2: instalar un proxy de puertos serie para la navboard y otros
Paso 3: redireccionar la comunicación de los puertos serie reales a los puertos serie falsos
Paso 4: parchear el binario program.elf para que use los puertos serie del proxy
Paso 5: Maldrone se comunica con los puertos de serie directamente

En la próxima conferencia Nullcon se dará mayor detalle técnico, aunque parece que Maldrone [MALware DRONE] ya podría secuestrar a distancia drones:

"Una vez que mi programa detiene los controladores reales de los drones, hace que los motores se paren y el dron cae como un ladrillo", dijo Sasi. "Pero mi puerta trasera devuelve al instante el control por lo que si el dron vuela alto en el aire, los motores pueden arrancar otra vez y Maldrone puede evitar que se caiga".

Rahul Sasi también proporciona una prueba de concepto-video para demostrar su eficacia:



 
"En este video mostramos cómo infectar un avión no tripulado con Maldrone, esperando una conexión tcp inversa. Una vez establecida la conexión, podemos interactuar con el software, así como con los drivers/sensores del avión no tripulado directamente. Existe un programa de pilotaje de AR drone. Nuestras puertas traseras matan al piloto automático y toma el control. El Backdoor es persistente a través de reajustes":

Fuentes:
http://garage4hackers.com/entry.php?b=3105
http://thehackernews.com/2015/01/MalDrone-backdoor-drone-malware.html
http://securityaffairs.co/wordpress/32767/hacking/maldrone-malware-for-drones.html

lunes, 19 de enero de 2015

Apps mágicas para hackear Facebook

Conseguir la contraseña de Facebook de una cuenta es una de las peticiones más usuales que se suele recibir de la gente que busca solucionar sus problemas invadiendo la intimidad de las personas cercanas. Hay una gran demanda para este tipo de servicios, y por ende aparece la oferta de este tipo de servicios por medio de muchas maneras, casi todas con el fin de engañar al que busca hackear Facebook. Desde engaños al uso de "págame y ya me pongo yo a conseguirte la contraseña que yo hago unos troyanos superfuertes", hasta las típicas falsas apps mágicas que se comercializan para espiar WhatsApp en las que supuestamente pones un número de teléfono y al instante te da las conversaciones que de la otra persona. 

Figura 1: Apps mágicas para hackear Facebook
Estas apps mágicas para espiar son algo muy utilizado en el mundo del fraude online, y en casos como las apps mágicas para WhatsApp han generado auténticos negocios como hemos visto en el pasado. Hoy yo venía a hablaros de una de esas apps mágicas para hackear. En concreto de una App mágica para Hackear Facebook que me encontré ayer jugando con nuestra plataforma Path 5.
Figura 2: FaceHack, una app para robar passwords de Facebook con 0days de SQL Injection y Brute Force
La encontré mientras buscaba apps hablaran de SQL Injection y me llamó poderosamente la atención.  "¿Una app para hackear Facebook que está relacionada con SQL Injection? Esto hay que verlo". Tal y como se puede ver en la imagen de arriba, el crespón negro indica que la app fue retirada de Google Play hace varios meses, pero lo bueno de Path 5 es que nos hace el archivado automático de todas las apps y todas las versiones, así que podría jugar con ella.
Figura 3: Descripción, descargas e información de FaceHack en Google Play
El asunto del SQL Injection aparecía en la descripción, donde los autores presumen de que son unos tipos son unos mega hax0RDs con capacidades superiores a las que tienen los ingenieros de seguridad de Facebook y todos los investigadores que participan en el Bug Bounty y son capacidades de sacar las passwords usando Fuerza Bruta y bugs de SQL Injection que solo ellos tienen. Tiene gracia, pero ya que vas a meter una trola a alguien, que sea a lo grande, ¿no?. De hecho no será la primera vez que alguna gran empresa como Apple se come ataques de Brute Force en sus servidores o bugs de SQL Injection en sitios de renombre.
Aún así, publicar un par de 0days de Facebook en una app en Google Play no parece lo más inteligente para un hax0RD del nivel de estos autores, así que la trola canta muchísimo, así que decidí descargarla y darle un vistazo. Primero una descompresión del APK, luego una extracción del código con dex2jar para sacar los ficheros .class y luego usando JAD y Show My Code a leer un poco el código de la app y para ver la magia.
Al extraer el código se podía ver que la parte del ataque SQL Injection la tenían en una rama completamente a parte, así que me fui a ver qué hacían por allí. La función que más me gustó fue esta de DoSomeTasks para tener entretenido al usuario de la app.
Figura 4: Función para hacer cosas
Esta función se llamaba de vez en cuando con algunos retardos de tiempo para que se viera lo duro y cansado que era el trabajo de esta pobre app tratando de sacar la contraseña de la víctima.
Figura 5: Retardos de tiempo periódicos en la app
Eso sí, la contraseña la saca, y la saca con emoción. Al estilo que buscan los periodistas cuando graban un reportaje para la tele. Visualizando la tensión poco a poco por pantalla. Primero intentando conectar una vez con mucha dificultad.
Figura 6: Tensión, se está intentando conectar a...¿a qué?
Lugo intentándolo otra vez, para al final conseguirlo y poder sacar por pantalla la password de la víctima que esta app mágica va a sacar para el atacante.
Figura 7: Se conecta a la segunda... y ¿obtiene una password? ¿De dónde?
Cuando sale la contraseña, se la saca de una variable que se llama Str. What? Str? ¿De dónde ha salido ese Str con una password? Había que encontrar ese Str, así que a buscar la variable por todo el programa. Y ahí está, es mágico.
Figura 8: Sacando la password como los magos de la tele
Como se puede ver, lo único que hace es tirar un dado y sacar una contraseña Random para mostrársela al usuario y listo. ¡Eso sí es magia! Alguno podrá pensar que esto es una locura, pero... ¿no hacen esto los magos todos los días en los programas de consultorio de magia en la tele y son legales y pagan sus impuestos? Eso sí, por pantalla tiran comandos SQL para que se vea el SQL Injection.
Figura 9: Ahí está el SQL Injection... ¡escéptico!
Lo cierto es que el ataque de Brute Force era similar, así que fui a capón en busca de la variable Str para ver cómo lo hacía en la otra rama del ataque, para ver que era exactamente el mismo juego de magia e imaginación.
Figura 10: El Str del Brute Force y las funciones de publicidad e Mobile Core
¿Y todo por qué? Pues para monetizar el uso de la app con publicidad de Mobile Core, que no olvidéis que en la descripción de esta app se puede ver que tenía ya más de 10.000 descargas de usuarios que buscaban robar passwords de otros.
Figura 11: El mismo truco en versión desktop para Windows
Por supuesto, el truco este de la app mágica para hackear Faceook existe también en versión escritorio, e incluso hay un vídeo demostrativo de FaceHacker 2014 que demuestra como se obtienen las passwords. Unos crack de los efectos especiales en vídeo.

domingo, 18 de enero de 2015

KeySweeper: Keylogger Arduino para teclados inalámbricos de Microsoft

KeySweeper es un dispositivo basado en una placa Arduino que, camuflado en la carcasa de un simple cargador USB, se encarga de espiar y capturar todas las pulsaciones que se realicen en un teclado inalámbrico de Microsoft cercano. El autor es Samy, creador también de de BadUSB con USBdriveby en Mac OS X




El equipo se basa en otros proyectos que conseguían vulnerar la transmisión inalámbrica de los teclados, aunque su peculiaridad es la capacidad de ocultarse en dicho cuerpo y la de poder seguir funcionando durante varios minutos sin estar enchufado gracias a la batería interna que dispone. Para ello cuenta también con un módulo de Adafruit que permite tener conexión de datos con una tarjeta SIM y así poder enviar por SMS los registros, aunque este tipo de conexión y componente es totalmente opcional, ya que los datos se guardarán en una memoria interna e incluso se podrán revisar en tiempo real a través de una web. Lo mejor es que el cargador USB en el que se aloja seguiría funcionando, por lo que podríamos mantener enchufado un dispositivo y no levantar ningún tipo de sospechas.




El código fuente de KeySweeper está disponible en github:


Existen múltiples partes a KeySweeper. El código principal está instalado en el microcontrolador, mientras que un motor basado en la web usando jQuery y PHP registra todas las pulsaciones de teclado y proporciona una interfaz web para el seguimiento en vivo de los teclados víctima.



Hardware

  • Arduino Pro Mini / Teensy
  • Nordic nRF24L01+
  • Adafruit FONA GSM board (Opcional)
  • AC USB 5v 1A charger
  • Winbond W25Q80BV SPI Flash chip
  • 3.7v Lithium Polymer/Ion (Lipo/Lion) battery


Vídeo - Demo




Fuente

viernes, 16 de enero de 2015

Fortificación SSL en servidores web Apache e IIS

 
Tener SSL activado en tu sitio web no es siempre sinónimo de seguridad. BEAST, CRIME y Heartbleed nos recuerdan la necesidad de fortificar estas configuraciones para que usar un protocolo cifrado realmente sea efectivo. 

En el blog 'Root is the Limit', el cual les recomiendo visitar, se especifican unos sencillos pasos para asegurar SSL tanto en Apache como en IIS, que aquí hemos querido también recopilar:
  1. APACHE

Eliminar el uso de cifrados obsoletos

En las directivas de configuración del servidor permitiremos el uso de todos los cifrados excepto SSLv2 y SSLv3 con la siguiente directiva:


SSLProtocol All -SSLv2 -SSLv3 

CRIME

El ataque CRIME gira en torno a la fuga de información cuando los datos se comprimen antes de ser cifrados. Puedes leer más sobre el ataque aquí.

La forma más sencilla de mitigar este ataque consiste en deshabilitar la compresión SSL:


SSLCompression off 

Cipher Suite

La configuración recomendada por Fundación Mozilla es la siguiente (ten en cuenta esta configuración no es compatible con los navegadores más antiguos, como Internet Explorer 8):


SSLCipherSuite AES256+EECDH:AES256+EDH:!aNULL:!eNULL 

Esto tiene la ventaja de permitir Perfect Forward Secrecy. La EFF detalla la importancia de PFS aquí.

HTTP Strict Transport Security

Esta configuración en el servidor instruye a los agentes de usuario (o navegadores) inyectándoles una cabecera para que sólo hagan conexiones HTTPS al servidor web. OWASP lo detalla aquí.

En primer lugar, tenemos que asegurarnos de que tenemos el módulo headers habilitado. Podemos editar los archivos de configuración del Apache o httpd y añadir:


LoadModule headers_module modules/mod_headers.so 

El último parámetro "modules/mod_headers.so" es la ruta real al archivo mod_headers.so en tu sistema y puede variar. Si lo hace, puedes encontrarlo con:


locate mod_headers.so

Después de esto, podemos volver al archivo conf SSL original que estábamos editando y añadimos:


Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

El "max-age" es la cantidad de tiempo en segundos para que el agente de usuario continúe solicitando este recurso sólo en HTTPS.

Finalmente reiniciamos Apache y probamos: https://www.ssllabs.com/ssltest.

2. IIS

Eliminar el uso de cifrados obsoletos

En primer lugar, tenemos que desactivar el uso de los cifrados mas antiguos y permitir el uso de los más preferibles y seguros.

Desactivación de los desaprobados:

Desactivar PCT 1.0:


# Disable PCT 1.0
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force 

Desactivar SSLv2:


# Disable SSL 2.0 (PCI Compliance)
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force 

Desactivar SSLv3:


# Disable SSL 3.0 (PCI Compliance)
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force 

Desactivar cifrados inseguros:


 # Disable insecure ciphers
$insecureCiphers = 'NULL','RC2 40/128','RC2 56/128','RC2 128/128','RC4 40/128','RC4 56/128','RC4 64/128','DES 56/56'
Foreach ($insecureCipher in $insecureCiphers) {
  $key = (Get-Item HKLM:\).OpenSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers', $true).CreateSubKey($insecureCipher)
  $key.SetValue('Enabled', 0, 'DWord')
  $key.close()
  Write-Host "$insecureCipher has been disabled"
}

Desactivar Multi-Protocol Unified Hello:


 # Disable Multi-Protocol Unified Hello
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified 

Ahora vamos a activar los más nuevos y seguros:

Añadir y activar TLSv1.1:


# Add and Enable TLS 1.1 for client and server SCHANNEL communications
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force 

Añadir y activar TLSv1.2:


# Add and Enable TLS 1.2 for client and server SCHANNEL communications
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force 

Activar los cifrados más nuevos y seguros:


# Enable new secure ciphers
$secureCiphers = 'RC4 128/128','Triple DES 168/168','AES 128/128','AES 256/256'
Foreach ($secureCipher in $secureCiphers) {
  $key = (Get-Item HKLM:\).OpenSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers', $true).CreateSubKey($secureCipher)
  New-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\$secureCipher" -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
  $key.close()
  Write-Host "$secureCipher has been enabled"
} 

Fortificaciones adicionales:


# Set hashes configuration
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\SHA' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\SHA' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
# Set KeyExchangeAlgorithms configuration
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\PKCS' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\PKCS' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force 

Y, por último, cambiamos el orden de las suites de cifrado para permitir Perfect Forward Secrecy:


# Set cipher suites order as secure as possible (Enables Perfect Forward Secrecy)
New-ItemProperty -path 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002' -name 'Functions' -value 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA' -PropertyType 'String' -Force 

Una vez realizados todos estos cambios es necesario reiniciar el servidor para que surtan efecto. Después, se recomienda volver a probar la configuración de SSL. Recuerda que la desactivación de SSLv3 elimina la compatibilidad con navegadores antiguos como IE8.

El último cambio es permitir HTTP Strict Transport Security. Dado que esta es sólo una cabecera, podemos editar el archivo web.config. Muchos afirman que este cambio a través de IIS no sigue exactamente la especificación pero, aún así, activa la función.

En el archivo web.config, añade estas líneas:


<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Strict-Transport-Security" value="max-age=31536000"/>
        </customHeaders>
    </httpProtocol>
</system.webServer>

* NOTA * Lo más probable es que tu web.config tenga ya las etiquetas system.webServer por lo que se pueden omitir esas etiquetas y colocar el resto entre las que ya están.

A continuación tienes el script completo. Tener en cuenta que ha sido probado para IIS8 y que las versiones anteriores podrían no soportar TLSv1.2 (por ej.  W2k3).


# Copyright 2014, Alexander Hass
# http://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12

# Add and Enable SSL 3.0 for client and server SCHANNEL communications
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force

# Add and Enable TLS 1.0 for client and server SCHANNEL communications
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force

# Add and Enable TLS 1.1 for client and server SCHANNEL communications
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force

# Add and Enable TLS 1.2 for client and server SCHANNEL communications
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force

# Disable Multi-Protocol Unified Hello
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force

# Disable PCT 1.0
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0' -Force
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force

# Disable SSL 2.0 (PCI Compliance)
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force

# WARNING: If you disable SSL 3.0 the you may lock out some people still using
# Windows XP with IE6/7. Without SSL 3.0 enabled, there is no protocol available
# for these people to fall back. Safer shopping certifications may require that
# you disable SSLv3. I suspect in mid 2015 this can safely disabled.
#
# Disable SSL 3.0 (PCI Compliance)
#md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -Force
#New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' -name Enabled -value 0 -PropertyType 'DWord' -Force

# Disable insecure ciphers
$insecureCiphers = 'NULL','RC2 40/128','RC2 56/128','RC2 128/128','RC4 40/128','RC4 56/128','RC4 64/128','DES 56/56'
Foreach ($insecureCipher in $insecureCiphers) {
  $key = (Get-Item HKLM:\).OpenSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers', $true).CreateSubKey($insecureCipher)
  $key.SetValue('Enabled', 0, 'DWord')
  $key.close()
  Write-Host "$insecureCipher has been disabled"
}

# Enable new secure ciphers
$secureCiphers = 'RC4 128/128','Triple DES 168/168','AES 128/128','AES 256/256'
Foreach ($secureCipher in $secureCiphers) {
  $key = (Get-Item HKLM:\).OpenSubKey('SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers', $true).CreateSubKey($secureCipher)
  New-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\$secureCipher" -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
  $key.close()
  Write-Host "$secureCipher has been enabled"
}

# Set hashes configuration
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force

md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\SHA' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\SHA' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force

# Set KeyExchangeAlgorithms configuration
md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force

md 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\PKCS' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\PKCS' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force

# Set cipher suites order as secure as possible (Enables Perfect Forward Secrecy)
New-ItemProperty -path 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002' -name 'Functions' -value 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA' -PropertyType 'String' -Force

Write-Host 'After the system has been rebooted you can verify your server configuration at https://www.ssllabs.com/ssltest/'
Write-Host -ForegroundColor Red 'A computer restart is required to apply settings. Restart computer now?'
Restart-Computer -Force -Confirm

martes, 13 de enero de 2015

Un "hack" con Latch para controlar accesos a Facebook

Autor: Javier Espinosa
Ingeniero "Latch" en Eleven Paths


Desde que se lanzó Latch hace ya un año, incontables han sido los comentarios de gente que se han preguntado si es posible utilizar Latch con los servicios de Internet más utilizados como Facebook, Gmail, Twitter, o para cuándo estaría Latch disponible en estos servicios. Es difícil de decir, cuando esas compañías integra cada una de ellas sus propias soluciones - y algunas de ellas no están disponibles ni tan siquiera en todos los países - como el OTP de Twitter en España y Latinoamérica. A nosotros nos encantaría que lo hicieran, pero mientras tanto, como también nos gusta jugar con la tecnología y aportar soluciones, yo me he hecho un hack para que si en algún momento alguien quiere ser avisado vía Latch en el momento en que alguien acceda a tu Facebook.


Figura 1: Un "hack" con Latch para controlar accessos a Facebook

Como sabéis Latch es sumamente fácil de integrar gracias a sus plugins y SDKs, por eso su variedad de usos y utilidades llegan tan lejos como las ideas de aquellos que decidan integrarlo. En este sentido ya hemos visto integraciones muy interesantes, desde para controlar cerrojos físicos a securizar un lector de DNI­e en el acceso a un recinto, pasando por integrar los routers OpenWRT, el uso de conexiones bluetooth, un servidor FTP, archivos con dos llaves, los propios sistemas OS X, el hot-plug de dispositivos USB o el login en Active Directory. Por eso decidimos premiar los mejores plugins en el concurso que termina esta semana.

Sesiones Activas en Facebook

Hoy vamos a ver cómo podemos añadir una protección extra en nuestra cuenta de Facebook sin necesidad de que este servicio haya realizado la integración con Latch, haciendo un hack para los amigos de hacer cosas curiosas con la tecnología. Para ello, vamos a hacer uso de la función “Dónde has iniciado sesión” que incorpora Facebook en su área de seguridad, dentro del perfil del usuario. En esta sección podemos ver información de que sesiones tenemos abiertas en cada momento, y desde qué dispositivos y plataformas se han abierto; pero sobre todo y lo más importante, incorpora unos enlaces que nos permite cerrar bien todas las sesiones abiertas o bien aquellas concretas que deseemos.

Figura 2: Sesiones abiertas en Facebook

Esto es lo que vamos a utilizar como comprobación y reacción a Latch. Es fácil caer en la cuenta que lo único que tenemos que hacer es monitorizar esta página y en el momento en que se detecte una nueva sesión, realizar una consulta a Latch para determinar si la mantenemos abierta o la invalidamos.

Paso 1: Creación de aplicación Latch para Facebook y el pareado

Por supuesto, lo primero que tenemos que hacer es crear nuestra aplicación en el área de desarrolladores de Latch para obtener tanto un Application Id como un Secreto, la configuraremos con OTP deshabilitado porque no vamos a hacer desafío respuesta con un código.

Figura 3: Creando la aplicación Latch en el Area de desarrolladores de Latch

Con la aplicación creada y, o bien mediante una llamada cURL o bien mediante cualquiera de los SDKs de Latch, realizaremos un pequeño script de pareado donde emparejaremos nuestra cuenta de Latch con esta nueva aplicación. Sirva de ejemplo el siguiente código PHP.

Figura 4: Código de PHP para obtener un pareado con un usuario de Latch

Tras ejecutar el script, obtendremos el AccountId de este usuario. Éste será el AccountId que debemos guardar ya que será sobre el que se deberán realizar las consultas de estado a los servidores de Latch posteriormente. 

Paso 2: Obteniendo las sesiones abiertas en Facebook

Configurada la cuenta de Latch, lo que tenemos que hacer es un servicio que constantemente consulte la siguiente URL, parsear su contenido y extraer en nuestro programa la información de las sesiones abiertas en Facebook:

Este trabajo también podemos realizarlo sobre la URL para la versión de móviles, cuyo contenido es menor y por tanto el proceso será mucho más eficiente en tiempo:


Para realizar esta tarea tenemos múltiples posibilidades, desde scripts que hagan llamadas curl a herramientas de automatización como por ejemplo el Web­driver de Selenium; lógicamente esta última opción ofrece peor performance puesto que estamos innecesariamente renderizando el contenido, pero ilustra mejor esta prueba de concepto. Hay que tener en cuenta que haciendo esto, estamos abriendo una nueva sesión que no deberemos cerrar, para mantener activo el servicio. En cada iteración y carga de dicha URL nuestro servicio deberá:
1. Comprobar las sesiones activas
2. Si aparece una sesión que no tuviéramos almacenada, realizar una llamada de status a la API de Latch.
3. Si la llamada devuelve status “off”, terminar la nueva sesión, en caso contrario almacenarla como sesión abierta.
4. Comprobar si alguna de nuestras sesiones abiertas ya no existe, para eliminarla.
5. Repetir el proceso volviendo a cargar el contenido.
Paso 3: Automatizando con Selenium

Como se ve a continuación podemos realizar en pocas lineas esta tarea con Selenium utilizando el WebDriver de Mozilla Firefox. El propio programa se encargara de lanzar el navegador, únicamente necesitamos tener instalado Firefox en nuestro equipo. El código completo de esta prueba de concepto puede consultarse aquí Hack de Latch para Facebook:

Figura 5: Automatización de Selnium para consultar Latch y bloquear sesiones Facebook
Con esto no estamos bloqueando el acceso a nuestra cuenta, pero si que nos servirá a modo de alertas para saber cuando se ha producido un acceso no autorizado y mitigar su efecto invalidando la sesión y dándonos prisa para cambiar todas las contraseñas.

El usuario será expulsado a los pocos segundos automáticamente o si intenta realizar cualquier acción como por ejemplo leer los mensajes se le redirigirá a la pantalla de login. En el siguiente vídeo podéis ver el funcionamiento de la monitorización con Selenium (parte izquierda) y de un intento de acceso teniendo Latch bloqueado (parte derecha).

Figura 6: Vídeo demostrativo de esta Prueba de Concepto de bloqueo de Facebook con Latch
Este hack se podría utilizar como sistema de alerta, no necesariamente con Selenium, sino con cualquier programa a medida que dejemos funcionando en un servidor en la cloud que nos sirva de "Vigilante" y que pueda usarse, por ejemplo, como forma de Control Parental del uso de Facebook en menores. Recuerda que en Facebook puedes activar el Generador de códigos de la app de Facebook para el terminal móvil, que protege contra conexiones infrecuentes.

Otros hacks posibles con Latch de forma similar

Adicionalmente podríamos utilizar todo el potencial de Latch, añadiendo operaciones para distintos tipos de sesiones dependiendo de dispositivos móviles, equipo de conexión, horas, ubicaciones o direcciones IP ya que toda esta información está disponible. Este mismo concepto, se puede aplicar también de forma análoga en cuentas de Google / Gmail, donde en la parte inferior de nuestra bandeja de entrada, encontraremos un enlace “Información detallada”.

Figura 7: Actividad de cuenta de Google (Gmail)

A través de este enlace podemos abrir una ventana con información de las sesiones activas. En este caso, no podemos cerrarlas individualmente, pero sí podremos invalidarlas todas, haciendo clic en el botón. Cómo veis las posibilidades de integración con Latch son múltiples. En una próxima entrada veremos cómo establecer un sistema de alertas en nuestra cuenta de Twitter con Latch, mientras tanto recordar que aún quedan algún tiempo para participar en el Concurso de plugins de Latch, donde se pueden ganar hasta 10.000$ con ideas - tal vez - como esta.


Fuente

sábado, 10 de enero de 2015

Crackeando redes WPA y WPA2 sin diccionario

Utilizar ingeniería social para crackear redes WPA y WPA2 sin diccionario no es una técnica nueva, pero como con casi toda técnica cuando se automatiza y se facilita su uso se incrementa su popularidad (¿alguien recuerda firesheep?), hoy varios medios se han hecho eco de la herramienta WiFiPhisher publicada en el sitio The Hacker News y la anuncian como si se tratara de una gran novedad. Lo que seguramente desconocen es que ya existían este tipo de herramientas hace años e incluso herramientas creadas por latinos como LINSET (Linset Is Not a Social Enginering Tool) del usuario vk496 de la comunidad SeguridadWireless supera con creses las prestaciones del ya famoso WiFiPhisher.

 

¿Como crackear redes WPA y WPA2 sin diccionario usando estos scripts?


El funcionamiento de todos los scripts de este tipo es básicamente el mismo y siguen el siguiente proceso:
  • Escanea la red buscando redes cercanas.
  • Nos arrojan el listado de redes disponibles (algunos filtran solo redes WPA y WPA2 otros no).
  • Después de seleccionar la red, intenta capturar el handshake (algunos permiten el uso sin el handshake)
  • Con el handshake se crea un falso ap con el mismo nombre que el original y se lanza un ataque DoS a los clientes conectados (buscando que se conecten al falso ap)
  • El script monta un server DHCP sobre la red falsa para que cada petición que haga la victima lo mande a un portal cautivo donde se pregunta la clave (algunos personalizan este portal según la marca del router victima)
  • Se verifica que la contraseña ingresada sea la correcta comparándola con el handshake (algunos permiten capturar simplemente la petición enviada)
  • Si la clave es correcta se detiene el ataque DoS, se baja el servidor web/DHCP y el falso AP y los usuarios pueden volverse a conectar al AP real.
  • El script limpia los temporales creados, limpia iptables, detiene los servicios y deja el sistema como antes de ejecutarse.

¿Por que usar LINSET para crackear redes WPA y WPA2 sin diccionario? 

 

  • Esta escrito nativamente en español
  • Es un solo archivo en el que ingeniosamente incluyen otros (al igual que en las viejas eZines)
  • Tiene soporte de una comunidad (SeguridadWireless)
  • Identifica el fabricante del router y si tiene una pagina para ese fabricante la selecciona
  • Tiene varios idiomas para los portales cautivos
  • Utiliza varios métodos para capturar el handshake
  • Tiene mas tiempo de desarrollo y esta mas maduro
  • Esta integrada en nuestro curso De 0 a Ninja en Seguridad Inalámbrica

¿Por que usar WiFiPhisher para crackear redes WPA y WPA2 sin diccionario?

 

  • Instala automáticamente las dependencias que hacen falta
  • Al tener los archivos separados es mucho mas fácil personalizar el portal cautivo
  • Recibe parámetros lo que permite automatizar un ataque
  • No es necesario capturar el handshake (pero nos pueden meter cualquier clave)
  • Ha ganado mucha free-press posiblemente se vuelva popular y mejore rápidamente

Este es el típico caso donde un proyecto latino que es muy superior es opacado por la falta de promoción por un proyecto europeo que apenas inicia y se dice “novedoso” pero realmente esta re-escribiendo la rueda.

domingo, 4 de enero de 2015

iDict, una herramienta de fuerza bruta para obtener contraseñas de usuarios de iCloud

@Pr0x13 pone a nuestra disposición un pequeño proyecto en Github con una herramienta en php para realizar ataques de diccionario contra IDs de iCloud de Apple, evadiendo las restricciones de bloqueo de cuentas y autenticación secundaria en cualquier cuenta.

Para usarlo simplemente hay que descargar y descomprimir la carpeta en el htdocs del servidor web (probado en XAMP) e instalar CURL en tu SO.
No olvides también habilitar la extensión CURL descomentando la siguiente línea en tu fichero php.ini:

;extension=php_curl.dll

Después ve a http://127.0.0.1/iDict/ en tu navegador web (preferiblemente Firefox, Chrome o Safari).
 

 
Wordlist.txt es de iBrute y satisface los requisitos de contraseña de iCloud

Su autor y por supuesto también nosotros no se hacen responsables de su uso (comprueba las restricciones de tu país). 
 
Actualización: publicada iDictPy, una (irónica lol!) versión en python https://github.com/Pilfer/iDictPy


Fuente