domingo, 26 de agosto de 2012

[Hack: Ataque dirigido parte.3] Penetrar en una red

Ya preparamos la tarjeta de red en la entrada:
http:\\gonzac-studios.blogspot.com.ar/2012/08/hack-ataque-dirigido-parte1-mejorando.html
E instalamos y configuramos la maquina virtual:

Quizá esta es una de las partes mas entretenida. Hay que aplicar todos los recursos necesarios para poder tener acceso a la red (En caso que la red no esté abierta, obviamente).

INGENIERÍA SOCIAL:
El primer paso es conseguir toda la información que nos pueda ayudar, no estoy hablando de enumeración de sistemas. Sino de ir físicamente al lugar y "preguntar".
Lo mas sencillo seria fingir ir a hacer unos tramites, utilizar el smartphone y preguntar la contraseña para conectarse. Otro caso, conversar mientras se espera y principalmente no demostrar conocimientos informáticos. Si hay algo que aprendí es que la gente se siente orgullosa del lugar donde trabaja y con gusto te termina explicando como se trabaja en el lugar, el sistema y la red. No hace falta estrictamente preguntar por la red, ya que hay que pasar desapercibido. Entonces en este punto anotar "nombres", cualquier otro nombre alternativo o anagrama que represente a la organización, información 2.0 (paginas y redes sociales), fechas y números (teléfonos, dni, etc). Una forma un poco mas "ruidosa" podría ser fingir estar haciendo un informe escolar sobre la organización.
Ahí no termina todo, también en lo posible hay que buscar datos en las redes sociales, nombre de hijos, fecha de cumpleaños e intereses.
Ya con toda esta información tenemos gran cantidad de posibles contraseñas. Para aumentar mas la posibilidad a estas contraseñas añadimos una combinación numérica como, 123 o 123456. Que a mi parecer seria las mas utilizadas. Incluso pueden crear "diccionarios" (lista de palabras a utilizar para fuerza bruta) con las palabras y números para crackear la red.

ANÁLISIS FÍSICO:
Si hasta ahora no consiguieron entrar a la red va a haber que usar técnicas hack para WEP o WPA. Pero para esto habrá que ubicarse relativamente cerca del "punto de acceso", por suerte tenemos nuestra antena o tarjeta de red mejorada (No hace falta que sea una parabólica, puede construirse una guía ondas, o inclusive sustituir la antena que viene por una direccional).

Otro punto importante es observar todo el perímetro, en caso de ver algún enrutador, las computadoras como están conectadas e inclusive las cámaras. Observar toda la zona exterior, y donde nos vamos a ubicar. Ademas, seria recomendable desde un automóvil polarizado o una camioneta tipo van. No por nada se eligieron en las películas, ademas del espacio no quedarás como el loco de la antena, recuerda que la idea seria pasar desapercibido. Muchos dirán que al estar dentro de la estructura metálica del auto, actuará como jaula de faraday bloqueando la señal, pero no es del todo cierto.
Para determinar el angulo de visión de las cámaras hay que tener en cuenta dos factores, el primero, que se utilizan para un mayor rendimiento a corta distancia y segundo que utilizan un lente estándar. Es decir que cada una tienen un angulo aproximadamente de 50º.

Dependiendo de la red, vamos a necesitar quizá bastante tiempo por lo que sería ideal tener una batería de larga duración y un cargador con un conector al encendedor del automóvil, como se vió en la entrada sobre las baterías:
http://gonzac-studios.blogspot.com.ar/2011/11/baterias-de-notebook-upgrade-msi.html

HACK CLAVE WEP:
El cifrado que se utiliza en WEP, no es mas que un RC4. Este es un cifrado de flujo de clave simétrica o privada, es decir que se utiliza una misma clave tanto para cifrar como para descifrar el mensaje. Y se denomina de flujo porque el cifrado se realiza bit a bit, byte a byte expandiendo la clave, a diferencia del cifrado en bloque. Y luego se le aplica una función xor en conjunto con una clave pseudoaleatoria. En el caso de la clave WEP se combina la calve secreta con un vector de inicialización público. Quedando una formula de la siguiente manera
R= Texto (XOR) RC4(IV,k)
Que sirve para cifrar, y luego se invierte para descifrar como toda operación matemática.
¿Como actúa la vulnerabilidad? Pues, es bastante sencillo. Si tenemos un Resultado1 para un X1 (en este caso un texto) y un Resultado2 para un X2, aplicando un poco de matemáticas podemos obtener una equivalencia.
R1 = X1 (xor) RC4(iv,k)
R2 = X2 (xor) RC4(iv,k)
Si, R1 (xor) R2 = [X1 (xor) RC4(iv,k) ] (xor) [X2 (xor) RC4(iv,k)] entonces X1(xor)X2.
Como los iv son aleatorios, mientras mas paquetes se hayan capturados mas posibilidades hay de que se repitan los iv.
Y para el texto plano simplemente se reconoce a partir de la estructura de trafico ip o paquetes broadcast, etc.

En la practica, iniciamos la maquina virtual y arrancamos la placa de red en /Configuración/Dispositivos USB
Abrimos una consola y tecleamos iwconfig para saber la interfaz de nuestra placa, luego iniciamos el modo monitor con airomon-ng start 'interfaz'.

Ahora que sabemos la interfaz del modo monitor, en este caso mon0. Ya podemos capturar los paquetes que viajan.
Tecleamos airodump-ng 'interfaz_monitor' para monitorear las redes, sus datos y los dispositivos conectados.
Paramos la captura con Control+C, y ya tenemos los datos necesarios. De forma parecida, vamos a capturar los paquetes pero filtrando el contenido por el MAC del acces point (BSSID) y el canal por el cual se transmite (columna CH), guardando la información en un archivo pcap. Para lo que tecleamos airodump-ng -c 'canal' --bssid 'mac' -w 'nombre_del_archivo' 'interfaz_monitor'
*Nota: el nombre del acces point (ESSID) no puedo mostrarlo por razones de confidencialidad.

Ahora abrimos otra consola y se debe enviar una falsa autenticacion para asociarse al AP y mas tarde poder inyectar paquetes. Para eso, usamos el comando aireplay-ng -1 'tiempo_de_reasociacion' -e 'nombre_del_Ap(essid)' -a 'mac_del_Ap(bssid)' -h 'nuestra_mac' 'interfaz_monitor' .

A diferencia de otros tutoriales, lo voy a hacer de la forma compleja. Esta se aprovecha de algo llamado en redes, fragmentacion. En resumen, como un paquete tiene que tener una longitud determinada (MTU), si se supera esa cantidad se debe fragmentar en varios paquetes donde cada uno tiene el numero de fragmento y de secuencia. Si recuerdan lo que dije al comienzo, se puede obtener texto plano a partir del tipo de paquetes etc. Un paquete valido posee una cabecera estática LLC del control de enlace lógico en los primeros 8 bytes. A estos datos solo hay que aplicarle la operación XOR. Como se necesita añadirle una sección ICV a los paquetes, solo quedará espacio para 4 bytes por lo que se utiliza la fragmentacion.
aireplay-ng -5 -b 'mac_del_Ap(bssid)' -h 'nuestra_mac' 'interfaz_monitor'
-Nos preguntara si usar el paquete, y respondemos Yes
-Al finalizar, se guardará todo en un archivo xor.

Una vez obtenida la informacion solo hay que crear el paquete que luego se va a inyectar. Para eso usamos la herramienta packetforge de la siguiente forma:
packetforge-ng -0 -a 'mac_del_Ap(bssid)' -h 'nuestra_mac' -k 255.255.255.255 -l 255.255.255.255 -y 'nombre_del_xor' -w 'nombre_del_paquete'
*Nota: la ip -k y -l son la del acces point y una ip valida. Los valores 255, es debido a que se desconoce estos valores.
Luego solo hay que inyectar el paquete con el comando aireplay-ng -2 -h 'nuestra_mac' -r 'nombre_del_paquete' 'interfaz_monitor'.
-Nos preguntará usar ese paquete, y respondemos Yes
Lo único que queda es esperar a atrapar suficientes IVs, que aparecen como #Data en la ventana donde se está corriendo el airodump. Lo ideal es capturar unos 60.000 para estar seguros, pero aveces se puede con solo unos 15.000.
Finalmente corremos el Aircrack para obtener la contraseña, de la siguiente forma: aircrack-ng -s 'nombre_del_archivo(el indicado al comienzo con airodump)*.cap'
-Por fin!, ya tenemos la contraseña. En este caso secfinanzas05

HACK CLAVE WPA:
En las claves wpa se siguió utilizando el algoritmo rc4, pero para protegerlo de ataques se añadió un contador de tramas y un código de redundancia cíclica para comprobar la integridad de las mismas. Esto evita los ataques de replicacion, a lo que ademas añade un bloqueo en caso intentos de ataques. Con el tiempo se fue mejorando, y surgiendo otros tipos como wpa2. Generalmente se utiliza autenticacion PSK, es decir claves pre-compartidas (Existen otros). Su cifrado tkip genera claves diferentes y dinámicas por usuario a partir de un hash aleatorio, la MAC del usuario y un vector de inicializacion.
Debido a esto la única forma de romper la clave es mediante fuerza bruta. Por lo que debemos obtener el denominado "handshake" que se genera y se envía al momento que un 'cliente' se conecta a la red.
Al igual que con la clave wep, iniciamos el modo monitor, luego el airodump para ver las redes, y monitoreamos el trafico hasta capturar el handshake.

--------
Para no esperar tanto tiempo y si hay alguien conectado. Simplemente lo deautentificamos para que se vuelva a conectar y así capturar el handshake.
Una vez que tenemos el cliente, abrimos una nueva consola y tecleamos
aireplay-ng -0 1 -a 'mac_del_Ap(bssid)' -c 'mac_del_cliente(station)' 'interfaz_monitor'
-------
Ya tenemos el hanshake ahora solo queda crackearlo. Pero no lo vamos a hacer a ciegas.
1)Lo ideal si usaron ingeniería social, pueden construir un diccionario con posibles contraseñas.
2)Si ese diccionario no dio resultado, usamos un diccionario de contraseñas mas utilizadas.
3)Si la organización pertenece a algún rubro especifico, utilizamos un diccionario de palabras especificas por ejemplo palabras de informática.
4)Podemos dividir en 2 diccionarios con nombres, uno con nombres de mujeres y otros de hombres.
5)Utilizar un diccionario con palabras comunes, medianamente amplio.
6)Utilizar un diccionario con un rango de números.

Para usar un diccionario con aircrack solo se realiza de la siguiente forma:
aircrack-ng -w 'ruta_del_diccionario' -b 'mac_del_Ap' -a 2 'nomber_archivo'
Sino generando una salida con john the ripper:
john -incremental=digits --stdout | aircrack-ng -w - -b 'mac_del_Ap' -a 2 'nomber_archivo'

REDUCIR EL TIEMPO:
Teniendo el hanshake capturado podemos transportar el archivo generado.
TRABAJO DISTRIBUIDO: Una forma de reducir significativamente el tiempo es utilizando múltiples computadoras que trabajen paralelamente para resolver la contraseña, por lo que conviene siempre tener distintas listas en archivos separados. Una notebook con un procesador de dos núcleos resuelve aproximadamente unas 450 contraseñas por segundo. Si tenemos 3 notebook trabajando al mismo tiempo serian unas 1350 por segundos.
PARALELISMO: Actualmente el desarrollo de las tarjetas gráficas, han creado el termino gpgpu o gpu de propósito general. Si bien el procesador de estas tarjetas no tiene una frecuencia mayor a la de un CPU. Su tecnología de unidades segmentadas, permite que una gran cantidad de unidades funcionales puedan resolver cantidades enormes de cálculos paralelamente. Aplicaciones como pyrit y oclhashcat permiten utilizar el gpu. Tal es la diferencia que una tarjeta NVIDIA Tesla S1070 es capaz de resolver aproximadamente 52.400 contraseñas por segundo.
OVERCLOCKING: Aunque actualmente no se practica con mucha frecuencia debido al uso masivo de portátiles. Este es una buena opción para mejorar algo del rendimiento. Es imprescindible que aunque no se haya modificado el reloj, se mantenga frió el cpu.
LISTAS PRECOMPUTADAS: Las listas PMKs son tablas que utilizan la PMK (clave maestra pareja), que se compone de la clave y el nombre de la red. Es decir que si tenemos un nombre de red genérico podemos usar estas tablas para saltarnos el paso donde aircrack calcula la PMK por cada palabra.

Próxima entrada:

viernes, 10 de agosto de 2012

[Hack: Ataque dirigido parte.2] Preparando la Maquina Virtual

Siguiendo con esta serie de post, la entrada anterior fue 'Mejorando tarjeta wifi usb'. Vamos a preparar la maquina virtual.
En primer lugar hay que descargar e instalar una maquina virtual, esto para poder utilizar otro sistema operativo mientras estamos en windows. En este caso Virtual Box que tiene licencia GPL, es decir que es gratuita: Link de Descarga.
Y el sistema operativo a correr es BackTrack 5, se puede utilizar otra distribucion de linux pero este ya viene con varios programas preinstalados. Ya que es un distro especializado en seguridad: Link de Descarga.
En la pagina hay que elegir la versión, el entorno gráfico, la arquitectura, el tipo de archivo y la forma de descargarlo.

CREAR MAQUINA VIRTUAL:
Una vez instalado VirtualBox, abrimos vamos crear una nueva maquina.
-Las maquinas que aparecen es debido a que ya las tenia creadas.

Damos click en 'Nueva' nos aparecerá otra ventana y le damos siguiente.
En la primer ventana elegimos el nombre y el icono a utilizar. Luego el espacio de la memoria, con 512 es suficiente, si quieren pueden agregar mas memoria.
Finalmente elegir el espacio donde se va a almacenar la maquina virtual.

Una vez elegido para crear un nuevo disco, clickeamos en siguiente, luego en almacenamiento dinámico.

Nos pedirá que indiquemos el tamaño de la partición (mínimo unos 11.5Gb por lo que añadiremos mas espacio), le damos siguiente y luego en 'terminar'.

Ahora solo queda configurarla, para ello seleccionamos la maquina, y vamos a 'Configuración'

En 'sistema' dejamos en primer lugar, CD-Rom y segundo lugar el disco. Luego vamos a 'almacenamiento' y agregamos un nuevo disco seleccionando el icono del CD.

Vamos a abrir, saldrá una nueva ventana, donde debemos clickear en agregar.

Seleccionamos el iso de backtrack, aparecerá en la ventana y le damos a 'seleccionar'.
Ya cargado queda configurar 'Red'. Seleccionamos 'Adaptador puente' y la tarjeta de red.

INSTALAR BACKTRACK:

Luego de haber dado click en iniciar, se abrirá una nueva ventana con nuestra maquina virtual. En la primera pantalla nos dará las distintas opciones para iniciar, sino pasado unos segundos se iniciará solo. Después de cargarse, escribimos 'startx' para el modo gráfico.
Ya estamos en el modo gráfico, hacemos click en el icono de 'Install Backtrack'. Y elegimos el idioma.
*Recordar: Para salir de la maquina virtual solo apretar la tecla control del lado derecho.
Seleccionamos la region donde nos encontramos. Luego elegimos el teclado, para eso ponemos en 'Deducir el mapa del teclado' y alado en 'Deducir'. Y nos pedirá que presionemos una serie de teclas.
Finalmente seleccionar la partición, le damos Adelante e Instalar. Tardará menos de un minuto y se reiniciará.
Antes de que vuelva a bootear desde la imagen del cd, salimos de la maquina con Control derecho y retiramos la imagen. Para ello vamos al menú 'Dispositivos', y en cd/dvd destildamos el iso.
Ya que estamos ahí, aprovechamos para marcar 'Instalar aplicaciones <>'.
Ahora se iniciará el Backtrack y podremos configurarlo e instalar cosas. Nos va a pedir usuario "root", la contraseña "toor" e iniciamos el entorno gráfico con "startx".

Una vez iniciado, abrimos una terminal yendo al icono del cuadrado negro alado de 'System', e instalamos los controladores adicionales. Nos posicionamos en la carpeta con "CD /media/". Si no saben el nombre de la carpeta presionan "ls".
Ahora nuevamente "CD VBOXADDITIONS_*", ejecutamos el instalador "sudo VBoxLinuxAdditions-x86.run" y esperamos que se complete.
Solo queda actualizar e instalar unos programas (deben estar conectados a internet).

PREPARAR METASPLOIT:
Primero hay que corregir unas cosas, antes de actualizar metasploit.
Nos posicionamos en la carpeta de metasploit "CD /opt/metasploit/common/lib/" y hacemos una copia de seguridad de libcrypto y libssl
"mv libcrypto.so.0.9.8 libcrypto.so.0.9.8-backup", "mv libssl.so.0.9.8 libssl.so.0.9.8-backup". Ahora ejecutamos "ln -s /usr/lib/libcrypto.so.0.9.8", "ln -s /usr/lib/libssl.so.0.9.8". Y con eso ya podemos actualizar el metasploit "msfupdate".

Una vez que finalice instalamos postgrest sql, que no es mas que un motor de base de datos que va necesitar metasploit. Para ello ejecutamos "apt-get install postgresql libpq-dev", luego ejecutamos el postgres para añadir un usuario "sudo su postgres -c psql" y añadimos el usuario de la siguiente forma "ALTER USER postgres WITH PASSWORD 'tu_password' ". Finalmente salimos tecleando "\q".

Ahora ya tenemos todo listo para poder usarlo.

miércoles, 1 de agosto de 2012

[Hack: Ataque dirigido parte.1] Mejorando tarjeta wifi usb

En esta serie de entradas voy a mostrar como alguien con solo un poco de conocimiento puede realizar un ataque especifico. No me refiero al pc del vecino (aunque también sirve), sino a un ente o empresa, ya que estos tienen mayor numero de maquinas, por lo tanto mas probable de encontrar un vector de ataque.
-----------------------------------------------
Existen varias ventajas a la hora de usar una tarjeta wifi usb:
-Extender el alcance utilizando un alargue.
-Buscar un Chipset compatible con modo monitor e inyección de paquetes.
-Capacidad de escanear la red desde una maquina virtual. Ya que el adaptador interno puesto como 'adaptador puente' no lo permite.

Para este ejemplo voy a usar el adaptador wireless usb TRENDnet.
En la caja el CD con los drivers para windows, el adaptador y un pequeño alargue usb.

Probando desde Linux, se me ocurrió hacer una prueba: Primero con el adaptador conectado normalmente al usb. Y luego utilizando la concavidad de una tapa para redirigir la señal.
Como se puede apreciar, la diferencia es notoria. Conectado normalmente no llega la señal y dirigiéndolo tenemos muy buena recepción.

Si abrimos el adaptador, del lado izquierdo se observa una simple pista que es utilizada como antena y unas marcas de lo que parece haber sido para un conector hirose en caso de adicionar una antena. Como hace falta resistencias adecuadas, ademas que este tipo de conector es difícil de conseguir, habrá que dejarlo de lado.
Luego tenemos una chapa para la disipación de a un integrado y finalmente el Chipset, en este caso el rtl8187b (Para saber la compatibilidad podemos ir a la pagina de aircrack-ng o a Linux wireless).

MODIFICANDO EL ADAPTADOR:
El desperfecto que tienen estas tarjetas es la disipación. Si ustedes utilizan la notebook y tocan en la zona de la tarjeta wireless se van a dar cuenta que se calienta muchísimo con el uso. Esto por el flujo continuo de información. Si vamos a utilizar algún distro de linux para penetrar alguna red, el flujo de información seria mucho mayor, haciendo que se caliente (aun mas) y se ralentice la respuesta.
Para poder mejorar su rendimiento es necesario mejorar la disipación. El disipador que utilicé era de un integrado de un televisor viejo y calza a la perfección con el tamaño de la plaqueta.
Si se fijan en el chipset coloqué una pequeña lamina de aluminio para igualar la altura con la otra chapa.
Una vez listo, solo resta colocarle pasta disipadora. Para que no se despegue fabrique una abrazadera con la misma lamina de aluminio.
Ahora para enfriarlo se agrega un cooler chico utilizado normalmente para placas de vídeo.

Ya teniendo el adaptador, solo se necesita una antena parabólica. En este caso es una parabólica de 60cm.
En la caja el plato, el soporte para la graduación del angulo y el soporte para el LBN que va a ser nuestro adaptador.

El LBN original de la parabólica tiene un diámetro de 4cm, por lo que se puede usar un caño de pvc chico. Solo hay que marcar la medida del adaptador y cortar para que encaje.

Una vez terminado el adaptador, ya se puede montar y colocar el alargue usb.

Para que la antena se pueda transportar y los ataques puedan ser lanzados desde un automóvil, el cable de alimentación va a utilizar un conector al encendedor del coche de un extremo, y del otro un conector molex de una fuente de alimentación vieja. Lo único que hay que tener en cuenta es la polaridad, el centro es positivo y los laterales negativos. Luego el positivo conectado al cable amarillo y el otro al negro.
Nota: Si no desean transportarla pueden utilizar un transformador de 12v o unas baterías.

Y así mas o menos quedaría la antena ya terminada.

RESULTADOS:
Finalmente dejo la prueba con el adaptador normal (imagen1) y con la antena (imagen2). Se puede observar claramente como se puede captar otras redes.