domingo, 24 de enero de 2021

TryHackMe: Curso intensivo de pentesting (segunda parte)

 

Esta es la continuación de la entrada anterior, en la que iniciamos el curso intensivo de pentesting de TryHackMe. Aquí finalizamos la parte del curso intensivo. Más adelante iré presentando algunas de las herramientas por separado, y subiendo entradas al blog con tutoriales de cómo utilizarlas pero, por ahora, creo que estos pequeños resúmenes introductorios os pueden ser útiles.

Si queréis saber algo más acerca de alguna de las herramientas tratadas en esta entrada, no dudéis en preguntarme en el apartado de comentarios.

SECCIÓN 4 – HASH CRACKING

INTRODUCCIÓN

En ocasiones, durante un proceso de pentesting, necesitarás obtener el acceso a una base de datos. Cuando investigues la base de datos, a menudo encontrarás una tabla de usuarios, la cual contiene los nombres de usuario y las contraseñas hasheadas. A veces es necesario saber cómo crackear estas contraseñas para conseguir la autenticación en un sitio web (¡o si tienes suerte es posible que la contraseña sirva para ssh!)

SALANDO Y FORMATEANDO

No importa qué herramienta utilices, virtualmente todas ellas tienen el mismo formato. Un archivo con el hash o hashes en el que cada hash aparece separado por una nueva línea.

Ejemplo:

<hash 1>

<hash 2>

<hash 3>

Las “sales” están normalmente añadidas al final del hash con dos puntos y la sal en cuestión. Los ficheros con este tipo de hash siguen la misma convención con cada uno separado por una nueva línea.

Ejemplo:

<hash 1>:<sal>

<hash 2>:<sal>

<hash 3>:<sal>

Nota: Los distintos algoritmos de hashing tratan las sales de forma distinta. Algunos las incluyen delante, y otros detrás. Asegúrate de lo que estás intentando crackear y ten en cuenta esta distinción.

HASHCAT

Hashcat es otra de las herramientas más populares en el cracking de hashes. Es muy reconocida por su versatilidad y su velocidad. Hashcat no tiene autodetección del tipo de hashes, aunque sí tiene distintos modos. Por ejemplo, si estás intentando crackear un hash md5 el “modo” deberá ser 0, mientras que si estás intentando crackear un hash en sha1, el “modo” deberá ser 100.

Aquí puedes encontrar una lista de todos los modos disponibles.

  • ¿Qué modificador configura el modo? Respuesta: -m
  • ¿Qué modificador configura el “modo de ataque”? Respuesta: -a
  • ¿Cuál es el número de modo de ataque para fuerza bruta? Respuesta: 3
  • ¿Cuál es el número del modo para SHA3-512? Respuesta: 17600

Crackea este hash: 56ab24c15b72a457069c5ea42fcfc640

  • Tipo: MD5. Respuesta: happy

Crackea este hash: 4bc9ae2b9236c2ad02d81491dcb51d5f

  • Tipo: MD4. Respuesta: nootnoot

JOHN THE RIPPER

John The Ripper(jtr) es una de las mejores herramientas para crackear hashes disponibles. Soporta diversos formatos de hash y es extremadamente sencilla de utilizar, además de que posee muchas opciones de personalización.

Nota: Existen múltiples variaciones de jtr ahí fuera. Para esta tarea utilizaremos la versión preinstalada en Kali.

Nota 2: Todos los hashes pueden crackearse con el diccionario rockyou.txt

  • ¿Qué modificador permite especificar la lista de palabras a utilizar? Respuesta: --wordlist
  • ¿Qué modificador permite especificar el formato de hash (MD5, SHA1, etc.) a utilizar? Respuesta: --format
  • ¿Cómo especificamos la norma a utilizar? Respuesta: --rules

Crackea este hash: 5d41402abc4b2a76b9719d911017c592

  • Tipo: MD5. Respuesta: hello

Crackea este hash: 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

  • Tipo: SHA1. Respuesta: password

 

SECCIÓN 5 – SQL INJECTION

INTRODUCCIÓN

SQL Injection es el arte de modificar una consulta SQL de modo que podamos obtener acceso a la base de datos objetivo. Esta técnica se utiliza a menudo para obtener datos de usuarios, tales como contraseñas, e-mails, etc. SQL Injection es una de las vulnerabilidades web más comunes, y como tal, vale la pena comprobarlo.

SQLMAP

Sqlmap es, probablemente, la herramienta más popular de SQL Injection que existe. Comprueba varios tipos de inyecciones, y tiene todo un repertorio de opciones de personalización.

  • ¿Cómo especificamos la URL a comprobar? Respuesta: -u
  • ¿Y acerca de qué dork de Google utilizar? Respuesta: -g
  • ¿Cómo se selecciona el parámetro a usar? (Ejemplo: en la url http://ex.com?test=1 el parámetro sería test.) Respuesta: -p
  • ¿Qué modificador establece qué base de datos hay en el backend del host objetivo? (Ejemplo: Si el modificador está configurado a mysql, entonces sqlmap solo testeará inyecciones mysql). Respuesta: --dbms
  • ¿Cómo seleccionamos el nivel de profundidad que sqlmap debe usar? (Cuanto más alto, más preciso y más pruebas en general.) Respuesta: --level
  • ¿Cómo dumpeamos las entradas de la tabla de la base de datos? Respuesta: --dump
  • ¿Qué modificador indica qué base de datos enumeramos? (Sensible a mayúsculas). Respuesta: -D
  • ¿Qué modificador indica qué tabla enumeramos? (Sensible a mayúsculas). Respuesta: -T
  • ¿Qué modificador indica qué columna enumeramos? (Sensible a mayúsculas). Respuesta: -C
  • ¿Cómo le pedimos a sqlmap que intente conseguir una shell interactiva del sistema operativo? Respuesta: --os-shell
  • ¿Qué modificador dumpea todos los datos de cada tabla? Respuesta: --dump-all

UNA NOTA SOBRE SQL INJECTION MANUAL

Ocasionalmente no podrás utilizar sqlmap. Esto se puede deber a varias razones, como que el objetivo tiene configurado un cortafuegos o un límite de consultas. En este caso es importante saber cómo realizar una inyección manual de SQL, aunque sea tan solo para confirmar que es posible hacer SQL Injection a esa web. Puedes encontrar aquí una lista de formas de verificar la inyección de SQL.

APLICACIÓN WEB VULNERABLE

Para demostrar cómo usar sqlmap para comprobar vulnerabilidades y dumpear datos de tablas, te lo mostraré a través de una aplicación web de ejemplo. ¡Despliega la máquina y empecemos!

Nota: Esta tarea utilizará sqlmap. De todas formas, puedes intentar explotarla manualmente si quieres. Genera la consulta completa en cada intento, por lo que puedes saber qué intenta hacer mysql.

  • ¿A cuántos tipos de sqli es vulnerable este sitio? Respuesta: 3
  • ¿Cuál es el nombre de la base de datos? Respuesta: tests
  • ¿Cuántas tablas hay en la base de datos? Respuesta: 2
  • ¿Cuál es el valor de la bandera? Respuesta: found_me

 

SECCIÓN 6 – SAMBA

INTRODUCCIÓN

La mayoría de técnicas de pentesting y herramientas que has visto pueden utilizarse tanto en Windows como en Linux. De todos modos, una de las cosas que encontrarás más a menudo cuando hagas pentesting a máquinas Windows es Samba, por lo que es importante dedicarle una sección.

Nota: Aunque Samba también es multiplataforma, en esta sección nos centraremos principalmente en la enumeración en Windows; algunas de las técnicas que verás aquí se pueden aplicar también en Linux.

SMBMAP

Continuando con la tendencia de que las herramientas que tienen la palabra “map” en su nombre son extremadamente populares, smbmap es una de las mejores formas de enumerar Samba. Smbmap permite a los pentesters ejecutar comandos (con los permisos adecuados), descargar y subir archivos, y es increíblemente útil en la enumeración de smb.

  • ¿Cómo indicamos el nombre con el que autenticarnos? Respuesta: -u
  • ¿Y la contraseña? Respuesta: -p
  • ¿Cómo configuramos el host? Respuesta: -H
  • ¿Qué modificador ejecuta un comando en el servidor (asumiendo que tienes permisos para ello)? Respuesta: -x
  • ¿Cómo especificamos el recurso compartido a enumerar? Respuesta: -s
  • ¿Cómo especificamos el dominio a enumerar? Respuesta: -d
  • ¿Qué modificador descarga un fichero? Respuesta: --download
  • ¿Y para subir un archivo? Respuesta: --upload
  • Dado el nombre de usuario “admin”, la contraseña “password”, y la IP “10.10.10.10”, ¿cómo ejecutarías ipconfig en esa máquina? Respuesta: smbmap -u "admin" -p "password" -H 10.10.10.10 -x "ipconfig"

SMBCLIENT

Smbclient permite hacer la mayoría de cosas que podemos hacer con smbmap, además de ofrecer un prompt interactivo.

  • ¿Cómo especificamos el dominio (workgroup) a utilizar cuando conectamos a un host? Respuesta: -w
  • ¿Cómo especificamos la dirección IP del host? Respuesta: -I
  • ¿Cómo ejecutaríamos el comando “ipconfig” en la máquina objetivo? Respuesta: -c “ipconfig”
  • ¿Cómo especificamos el usuario con el que autenticarnos? Respuesta: -U
  • ¿Cómo especificamos la contraseña con la que autenticarnos? Respuesta: -P
  • ¿Qué modificador le indica a smbclient que no utilice contraseña? Respuesta: -N
  • Una vez en el prompt interactivo, ¿cómo descargamos el fichero test, asumiendo que está en el directorio actual? Respuesta: get test
  • En el prompt interactivo, ¿cómo subimos nuestro fichero /etc/hosts? Respuesta: put /etc/hosts

UNA NOTA ACERCA DE IMPACKET

Impacket es una colección de scripts extremadamente útiles en Windows. Es importante mencionarlo aquí, ya que contiene scripts para usar en Samba que enumeran y obtienen acceso a la shell de las máquinas Windows. Todos los scripts los puedes encontrar aquí.

Nota: impacket tiene scripts que utilizan otros protocolos y servicios además de Samba.


MISCELÁNEA – NOTA ACERCA DE LA ESCALADA DE PRIVILEGIOS

La escalada de privilegios es un tema extenso que sería imposible de tratar debidamente en esta clase de salas. De todos modos, es un tema que es necesario cubrir, por lo que, más que realizar una tarea basada en preguntas, os proporcionaré algunas fuentes.

General:

https://github.com/swisskyrepo/PayloadsAllTheThings (un manojo de herramientas y payloads para cada fase del pentesting).

Linux:

https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/ (un poco antigua, pero sigue siendo útil mirarla).

https://github.com/rebootuser/LinEnum (uno de los scripts más populares para escalada de privilegios).

https://github.com/diego-treitos/linux-smart-enumeration/blob/master/lse.sh (otro script popular).

https://github.com/mzet-/linux-exploit-suggester (un script dedicado a la búsqueda de exploits del kernel).

https://gtfobins.github.io (no puedo constatar la utilidad de este script para escalada de privilegios, si un binario común tiene permisos especiales, puede utilizar este sitio para ver cómo obtener permisos de root con él).

Windows:

https://www.fuzzysecurity.com/tutorials/16.html (dicta algunos comandos y métodos muy útiles para enumerar el host y obtener información).

https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp (un script un poco viejo, pero increíblemente útil).

https://github.com/411Hall/JAWS (un script de enumeración general).

 

SECCIÓN 7 – BUENA SUERTE

A lo largo de este curso has aprendido varias tácticas y acerca de varias herramientas de pentesting. Aquí es donde todo se somete a examen, he configurado un CTF nivel principiante que contiene dos banderas. ¡Buena suerte y a pasarlo bien!

  • ¿Qué hay en user.txt? Respuesta: supernootnoot
  • ¿Qué hay en root.txt? Respuesta: congratulations!!!!


No hay comentarios:

Publicar un comentario