Encontrar y no neutralizar: escribir pruebas de penetración con Kali Linux

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:



  1. kali.usersys.redhat.com : 30 GB de memoria y 6 CPU virtuales. Este sistema escaneará a la víctima y lanzará ataques.



  2. 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.






All Articles