Universidad Tecnológica de León Ingeniería en Redes Inteligentes y Ciberseguridad
Asignatura: Hacking Ético
Profesor: José Luis Alejandro Hernández Ramírez
Titulo: Reconocimiento activo
Presenta: Fátima Abigail Porras Noriega
Matrícula: 18002125
Grupo: IRIC901
León, Guanajuato. A 03 de junio de 2021
Reconocimiento Activo | Fatima Abigail Porras Noriega
INTRODUCCIÓN El hacking ético es la modalidad dentro del hackeo que se ocupa de analizar y estudiar las barreras de seguridad de las plataformas digitales de las empresas. Este hacking ético pretende encontrar las deficiencias en los sistemas de las empresas que puedan suponer un riesgo futuro. Los hackers éticos mediante sus conocimientos informáticos se adentran en las entrañas de la web de la empresa para encontrar sus vulnerabilidades. Los hackers conocen los modos de actuación y de pensamiento de los ciber atacantes, por lo que reproducen fidedignamente cómo actuarían y qué buscan los mismos. Así, con esta información la empresa es capaz de reforzar sus debilidades y protegerse frente a futuros ataques. De este modo, y sin hacer ningún daño, el hacking ético ayuda a reforzar las barreras de seguridad de las compañías. El reconocimiento activo es la fase del hacking ético encargada de capturar de información. Se trata de recopilar la mayor cantidad de información posible del objetivo en una auditoria, a más información se obtenga, mayor posibilidad de éxito en el ataque. En esta fase existen dos modos: el activo y el pasivo (el cual ya se abordó anteriormente). El presente informe se enfocará en el reconocimiento activo, el cual comprende el estudio la red para descubrir los equipos individuales, las direcciones IP y los servicios que se prestan. Este proceso implica más riesgo de detección que el reconocimiento pasivo. Ambos reconocimientos, el pasivo y el activo, nos llevan a la consecución de información útil para llevar a cabo el ataque. Esta información facilita descubrir algunas vulnerabilidades y debilidades de los sistemas que gestionan y protegen la información. Casi a diario nos estamos hablando de la importancia de utilizar contraseñas seguras y robustas en todos los sitios, desde nuestro ordenador hasta en las webs donde nos registremos. Cada vez son más las bases de datos con usuarios y contraseñas que circulan por la red y que ponen en peligro la integridad de nuestras redes sociales, correos o tiendas online. Sin embargo, estas bases de datos robadas no son la única amenaza a la que se enfrentan nuestras contraseñas, y es que existen herramientas capaces de crackear contraseñas por fuerza bruta con suma facilidad y conseguir acceso tanto a ordenadores como a webs, y estas herramientas son en las que se concentra el presente informe. De esta manera, en el presente se hará uso en primer lugar de la herramienta wireshark, a muy grandes rasgos, es el analizador de paquetes más conocido y utilizado en todo el mundo con el cual se puede capturar y analizar en detalle todo el tráfico de red que entra y sale de alguna PC. Por otra parte se hará mención de los ataques de fuerza bruta a través de diccionarios, se explicará cómo se lleva a cabo un ataque de fuerza bruta con herramientas como Hydra, una poderosa herramienta la cual permite realizar ataques de fuerza bruta a través de hilos a servicios online como ejemplo, FTP, SSH, Mysql, POP3, Telnet, etc.; Ncrack, una herramienta de craqueo de autenticación en red de alta velocidad, construida para ayudar a las compañías a proteger sus redes probando todos sus hosts y dispositivos de red contra las contraseñas débiles y finalmente Medusa, n software para atacar a nivel de fuerza bruta que se basa en diccionarios de palabras, los cuales también se crean a través de herramientas como crunch, cewl y cupp. Y finalmente, este informe cierra con la herramienta Nmap, una herramienta de exploración de redes y de sondeo de seguridad/puertos, para exploración de red y auditoría de seguridad la cual también es bastante interesante e importante cuando se trata de reconocimiento activo en el hacking ético.
2
Reconocimiento Activo | Fatima Abigail Porras Noriega
WIRESHARK Wireshark es un software que permite analizar el tráfico de red en tiempo real y es una gran herramienta para solucionar los problemas de red tales como la latencia o actividad maliciosa como intentos de piratería. No obstante, esta aplicación requiere conocimientos de los conceptos básicos de redes, cómo leer e interpretar los encabezados de los paquetes, cómo funciona el enrutamiento, en el reenvío de puertos, distintos protocolos, etc. Wireshark, antes conocido como Ethereal, es un analizador de protocolos utilizado para realizar análisis y solucionar problemas en redes de comunicaciones, para análisis de datos y protocolos, y como una herramienta didáctica. Cuenta con todas las características estándar de un analizador de protocolos de forma únicamente hueca. La funcionalidad que provee es similar a la de tcpdump, pero añade una interfaz gráfica y muchas opciones de organización y filtrado de información. Así, permite ver todo el tráfico que pasa a través de una red (usualmente una red Ethernet, aunque es compatible con algunas otras) estableciendo la configuración en modo promiscuo. También incluye una versión basada en texto llamada tshark. Permite examinar datos o de un archivo de captura salvado en disco. Se puede analizar la información capturada, a través de los detalles y sumarios por cada paquete. Wireshark incluye un completo lenguaje para filtrar lo que queremos ver y la habilidad de mostrar el flujo reconstruido de una sesión de TCP. Para la realización de la práctica se necesitó primordialmente instalar el servidor Telnet en un dispositivo, el cual fue Linux en este caso. Pero ¿qué es Telnet? Telnet es un protocolo de red TCP/IP que de forma predeterminada utiliza el puerto de conexión 23 y se utiliza para establecer conexiones remotas con otros ordenadores, servidores y dispositivos con un sistema compatible en el acceso mediante este sistema de comunicación. Para poder hacer uso de este protocolo se necesitó acceder desde la terminal de Linux, en primer lugar, instalarlo con el comando sudo apt-get install telnetd y posteriormente verificar que el archivo de configuración inetd.conf tuviera la información correcta para después comprobar que estuviera corriendo en la máquina.
Este fichero es el utilizado por el demonio inetd, conocido como el superservidor de red. El demonio inetd es el encargado de ofrecer la mayoría de los servicios del equipo hacia el resto de las máquinas, y por tanto se debe cuidar mucho su correcta configuración. Cada línea (excepto los comentarios) del archivo inetd.conf le indica a inetd cómo se ha de comportar cuando recibe una petición en cierto puerto. De esta forma, la línea subrayada en la imagen indica que, si en inetd.conf se tiene una línea como telnet stream tcp nowait root /usr/sbin/in.telnetd, entonces inetd sabe que cuando reciba una petición al puerto telnet ha de abrir un socket tipo stream (el habitual para el protocolo TCP) y ejecutar fork() y exec() del programa /usr/sbin/in.telnetd, bajo la identidad de root.
3
Reconocimiento Activo | Fatima Abigail Porras Noriega
La siguiente parte fue la de comprobar que el servicio de Telnet estuviera corriendo en la máquina mediante el comando sudo systemctl status inetd y después se lanzó el comando telnet 127.0.0.1 para comprobar que estuviera funcionando.
El objetivo de esta práctica fue el de darse cuenta, por medio de Wireshark, la manera en la que puede afectar el conectarse a un equipo que no utilice un protocolo cifrado, en este caso Telnet. Para lograr el objetivo lo primero que se necesitó fue crear un nuevo usuario en el equipo, esto se realizó con el comando sudo adduser [username], el cual en este caso fue usuario1 y posteriormente se debió llenar toda la información requerida respecto al nuevo usuario al ejecutar el comando, entre esta información se solicitó una contraseña, la cual fue 2016180330.
4
Reconocimiento Activo | Fatima Abigail Porras Noriega
Posteriormente se abrió Wireshark y se eligió el modo Wi-Fi para captura de paquetes, lo que permitió que se pudieran mostrar todos los paquetes capturados de todos los protocolos en general.
Después de esto, en la barra de filtros, se aplicó el filtro de visualización para el protocolo Telnet, pero como no había ninguna sesión abierta con Telnet, no se capturó ningún paquete en ese momento.
5
Reconocimiento Activo | Fatima Abigail Porras Noriega
Así pues, lo siguiente que se realizó fue iniciar una sesión Telnet en Putty, lo cual ocasionaría que en Wireshark se comenzaran a capturar todos los paquetes Telnet.
6
Reconocimiento Activo | Fatima Abigail Porras Noriega Para poder visualizar la información capturada de algún paquete, se dio clic a algún paquete, lo cual mostraría una ventana con distintas opciones, se le dio clic a seguir y posteriormente se eligió Flujo TCP.
Al ingresar al flujo TCP, se pudo observar una pantalla con toda la información que se obtuvo del inicio de sesión que se realizó desde Putty. Entre esta información se pudo observar el usuario: usuario1 y la contraseña: 2016180330, lo cual coincidió con la creación del usuario que se creó al inicio. De esta manera se puede concluir que Telnet es claramente un protocolo que no debe utilizarse, ya que es muy inseguro.
Otro protocolo en el cual no se debe confiar es en el HTTP ya que no es seguro al momento de navegar por internet y tener que ingresar un usuario y una contraseña. Un protocolo HTTPS es seguro en los sitios web ya que cuentan con certificados de seguridad. En la siguiente imagen se puede observar cómo el sitio de Instagram utiliza el protocolo https, el candado blanco en limpio indica que es una conexión segura y permite al usuario acceder a la información del certificado de seguridad con el que cuenta:
7
Reconocimiento Activo | Fatima Abigail Porras Noriega
Por otra parte, un ejemplo de un sitio no seguro que utiliza http es el del sito, el cual no cuenta con un certificado de seguridad y podría llegar a ser un sitio no confiable ya que pide usuario y contraseña y está trabajando con un protocolo http. Se puede comprobar que es inseguro cuando el candado blanco está cruzado por una línea roja.
8
Reconocimiento Activo | Fatima Abigail Porras Noriega
Los paquetes de este protocolo pueden ser también detectados fácilmente con Wireshark siguiendo el mismo proceso que el de telnet. Antes de iniciar sesión en el sitio web, se filtran los paquetes por http en wireshark:
Al iniciar la sesión en el sitio web, Wireshark comienza a capturar todos los paquetes http que están fluyendo. Para efectos de esta práctica, se tomó el paquete POST que se generó al iniciar la sesión.
9
Reconocimiento Activo | Fatima Abigail Porras Noriega El primer paquete que se capturó en Wireshark es en este caso el interesante (primera imagen), ya que, si se observa en la segunda imagen, se puede ver en la url con el usuario y la contraseña que se pudo obtener:
No obstante, también se puede seguir el flujo http, lo cual permite visualizar la información obtenida de una forma más estructurada:
10
Reconocimiento Activo | Fatima Abigail Porras Noriega La siguiente parte de la práctica fue cambiar de los protocolos http y telnet al protocolo SSH. Para esto, se activó el servicio SSH en Linux.
Los pasos que se siguieron para poder visualizar la información fueron los mismos, se filtró la captura de paquetes por SSH en Wireshark antes de ingresar el usuario y la contraseña:
De esta manera, al iniciar sesión, se pudieron capturar todos los paquetes de SSH en Wireshark:
Al intentar seguir el flujo de los paquetes SSH se pudo observar que toda la información se mostraba cifrada, Wireshark no es un descifrador como tal, por lo que no se pudo obtener la información del usuario que se deseaba como en el caso de los otros protocolos que eran más inseguros.
11
Reconocimiento Activo | Fatima Abigail Porras Noriega
BRUT E FORCE ATT ACK Un ataque de fuerza bruta ocurre cuando el atacante emplea determinadas técnicas para probar combinaciones de contraseñas con el objetivo de descubrir las credenciales de una potencial víctima y así lograr acceso a una cuenta o sistema. Existen diferentes tipos de ataque de fuerza bruta, como el “credential stuffing”, el ataque de diccionario, el ataque de fuerza bruta inverso o el ataque de password spraying. Generalmente, los ataques de fuerza bruta tienen mayor éxito en los casos en los que se utilizan contraseñas débiles o relativamente fáciles de predecir. Así pues, esta siguiente parte de la práctica consistió en la utilización de diversas herramientas de reconocimiento activo, entre las que se encuentran Hydra, Ncrack, Medusa, entre algunas otras, con la intención de lanzar ataques de fuerza bruta de diccionarios. Para preparar el entorno lo primero que se hizo fue crear un nuevo usuario en la máquina física, que en este caso es de Windows y desde el símbolo del sistema se creó un usuario con el comando net user [username] [password] / ADD. En este caso particular, el usuario creado fue user1 y la contraseña fue user1.
Posteriormente se debió ingresar a la máquina virtual de Linux y se creó un directorio con el comando mkdir [nombre del directorio]. El cual en este caso fue llamado bruteforceattack.
12
Reconocimiento Activo | Fatima Abigail Porras Noriega
Posteriormente se hizo uso de la herramienta wget. Wget es una herramienta informática creada por el Proyecto GNU, la cual se puede usar para recuperar contenido y archivos de varios servidores web. El nombre es una combinación de World Wide Web y la palabra get. Admite descargas a través de FTP, SFTP, HTTP y HTTPS. De
esta
manera,
los
archivos
que
se
https://zeldor.biz/other/bruteforce/passlist.txt
descargaron y
con
el
comando
wget
desde
internet
fueron
https://downloads.skullsecurity.org/passwords/500-worst-
passwords.txt.bz2, los cuales fueron archivos txt que contenían diccionarios de contraseñas. Algo interesante que se pudo realizar en la práctica fue la revisión de las contraseñas que tenía el archivo con el comando head o tail, los cuales permitieron observar las primeras (50) y las últimas (50) líneas del archivo respectivamente. Para ello se utilizaron los comandos head -n 50 passlist.txt y tail -n 50 passlist.txt.
Al tener descargados dichos dos archivos, lo siguiente fue comenzar a ejecutar comandos para lanzar la fuerza bruta con la herramienta Hydra. HYDRA Hydra es una de las aplicaciones más conocidas y utilizadas en hacking ético (y por piratas informáticos) para crackear contraseñas y conseguir acceder de forma no autorizada a redes y sistemas. Esta aplicación es totalmente gratuita y de código
13
Reconocimiento Activo | Fatima Abigail Porras Noriega abierto y cuenta de base con más de 30 protocolos compatibles (sistemas operativos, webs, bases de datos, etc) donde intentar conseguir el acceso no autorizado crackeando y rompiendo contraseñas. Este software de hacking ético ha sido diseñado de manera modular, es decir, cualquier programador puede crear sus propios módulos que le añadan nuevas funciones y características. Hydra hace uso de la fuerza bruta para descifrar contraseñas, ya sea probando contraseñas en serie como partiendo de una base de datos o de tablas rainbow. Así pues, si un usuario (el objetivo) utiliza una contraseña poco segura (contraseñas repetidas, cortas, predecibles, etc), Hydra podrá romperla y adivinarla, poniendo en peligro su seguridad. De esta manera, lo primero que se realizó fue la instalación de Hydra en nuestro sistema operativo en el directorio que se creó antes: sudo apt-get install hydra.
Un punto importante que tomar en cuenta con esta segunda parte de la práctica, es que es necesario conocer la dirección IP del dispositivo que se quiere atacar debido a que el primer comando que se ejecutó fue hydra -l [username] -P [nombre del archivo] [dirección IP] ssh, en donde la opción “l” indica que se realizará un ataque con un usuario concreto, se indicó el usuario que se quería atacar, la opción “P” que define un archivo conteniendo una lista de palabras de posibles contraseñas para la lista de usuarios definidos, el nombre del archivo, la dirección IP de la máquina del usuario que se deseaba atacar y al final se especificó el protocolo con el cual estaba operando la máquina de la “víctima”. Para efectos prácticos se ejecutó el comando con los dos archivos txt que se descargaron anteriormente, los cuales fueron el 500-worst-passwords.txt y el passlist.txt.
14
Reconocimiento Activo | Fatima Abigail Porras Noriega Puedo concluir de esta herramienta que es muy sencilla de utilizar, las contraseñas se encontraron de una manera bastante rápida y sencilla en ambos archivos, pero, sobre todo, las contraseñas encontradas coincidieron con las reales. NCRACK Ncrack es una herramienta de craqueo de autenticación en red de alta velocidad, fue construido para ayudar a las compañías a proteger sus redes probando todos sus hosts y dispositivos de red contra las contraseñas débiles. Los profesionales de la seguridad también confían en Ncrack al auditar a sus clientes. Ncrack fue diseñado utilizando un enfoque modular, una sintaxis de línea de comandos similar a Nmap y un motor dinámico que puede adaptar su comportamiento basado en la retroalimentación de la red. También permite una auditoría a gran escala rápida y confiable de múltiples hosts. Las características de Ncrack incluyen una interfaz muy flexible que otorga al usuario un control total de las operaciones de la red, permitiendo ataques muy sofisticados, plantillas de temporización para facilitar su uso, interacción en tiempo de ejecución similar a Nmap y muchos más. Los protocolos soportados incluyen RDP, SSH, HTTP (S), SMB, POP3 (S), VNC, FTP, SIP, Redis, PostgreSQL, MySQL y Telnet. Así pues, lo primero que se hizo fue instalar la herramienta en Linux, en el mismo directorio que se estuvieron descargando cada una de las herramientas anteriores, esto se realizó con el comando sudo apt-get install ncrack.
Esta herramienta es muy sencilla. Si nos centramos por ejemplo en el crackeo de ssh, una forma habitual de utilización es ncrack -p 22 --user [username] -P [nombre de archivo] [dirección IP]. En donde la opción “-p” indica el puerto del protocolo que se desea atacar, en este caso de SSH, seguido de “--user" que indica que se ingrese el nombre del usuario, posteriormente la opción “-P” en donde se debe especificar el nombre del archivo y finalmente se ingresa la dirección IP de la víctima.
15
Reconocimiento Activo | Fatima Abigail Porras Noriega Ncrack es también una herramienta muy sencilla y rápida de manejar al igual que Hydra, las contraseñas se encontraron bastante rápido y fueron correctas. MEDUSA Medusa es otra de las grandes herramientas para la fuerza bruta. Medusa es un software para atacar a nivel de fuerza bruta que se basa en diccionarios de palabras, es muy estable, sencillo, rápido y permite realizar el ataque a muchos servicios, con medusa se puede crackear por diccionario de una manera muy rápida. Así pues, lo primero que se realizó fue instalar Medusa en la misma carpeta donde se instaló Hydra y Ncrack, con el comando sudo apt-get install medusa.
Para esta práctica, la instrucción que se ejecutó fue medusa -u [username] ssh -P [nombre de archivo] [dirección IP] -M ssh. En donde la opción “-u” indica el usuario al que se le va a realizar el ataque, seguido del protocolo, la opción “-P” para indicar el fichero que tiene el diccionario de contraseñas, posteriormente se ingresa la dirección IP de la víctima y a diferencia de las otras herramientas, se agrega la opción “-M” que indica el módulo a utilizar, que en este caso fue ssh.
16
Reconocimiento Activo | Fatima Abigail Porras Noriega Algunas de las funcionalidades interesantes de medusa es que cuenta con opciones en las que se pueden mandar listas de usuarios (opción -U), listas de contraseñas posibles (opción -U), ficheros de host (opción -H), entre muchas otras opciones más.
CREACIÓN DE DICCIONARIOS La creación de diccionarios propios es de bastante ayuda para los ataques de fuerza bruta ya que esto permite tener información más certera de la persona que se quiere atacar. Uno de los pasos más importantes para la creación de un diccionario optimizado para la víctima y llegar al éxito del ataque es "La recolección de información". Este primer paso es muy importante ya que no solo vamos a recolectar información de servicios, puertos abiertos, vulnerabilidades. Sino que, se va a recopilar información de trabajadores, directivos, incluso de empresas externas que trabajan con el objetivo, cuanta más completa sea la información, más efectivo será el plan de ataque y mejores diccionarios se podrán crear. Podemos encontrar bastantes aplicaciones de generación de diccionarios, aunque esta práctica se va a centrar en Crunch, Cewl y Cupp. CRUNCH Cuando vamos a realizar una auditoría a una red Wi-Fi, es muy común utilizar diccionario de contraseñas, sin embargo, si sabemos que una determinada red Wi-Fi utiliza por ejemplo solo números, o ciertos caracteres, podremos nosotros mismos generar un diccionario de claves. La herramienta Crunch nos va a permitir generar un diccionario con la longitud y caracteres que nosotros definamos. Este programa es capaz de generar diccionarios de claves en función de diversos parámetros. Podremos generar un diccionario indicando la longitud mínima y también la longitud máxima, asimismo, también podremos definir si para crear el diccionario queremos solo utilizar todos los números, símbolos, letras e incluso por ejemplo podremos definir de usar solo varios números y letras, Crunch se encargará de generar todas las combinaciones por ti. Otra característica bastante interesante de Crunch es que nos va a permitir generar solo partes de la clave. Lo primero que se realizó en esta práctica fue instalar Crunch con el comando sudo apt-get install crunch.
El comando que se estará usando en esta práctica es crunch [mínimo] [máximo]. Si por ejemplo queremos generar un diccionario de longitud mínima 6 y longitud máxima 6, podremos utilizar el comando «crunch 6 6», sin embargo, con este comando se utilizarán todos los números, letras y símbolos, por lo que el tamaño será bastante grande. Pero si queremos crear un diccionario con cadenas de longitud 3 4 y que contenga los caracteres abc1234567890!#$%-_ pondremos el siguiente comando: crunch 3 4 abc1234567890!#$%-_ -o crunch, en donde la opción “-o” indica la ruta dónde guardar la salida del archivo de texto.
17
Reconocimiento Activo | Fatima Abigail Porras Noriega
La salida muestra que se tiene un total de 69,632 contraseñas, la salida del diccionario será un archivo de texto, dicho archivo de texto se podrá utilizar posteriormente en programas como medusa, hydra o ncrack para crackear contraseñas fácilmente. Si se ejecutan los comandos head y tail, se pueden observar algunas de las contraseñas que se crearon:
CEWL CeWL es una aplicación de Ruby que rastrea una determinada URL a una profundidad especificada, siguiendo opcionalmente enlaces externos, y devuelve una lista de palabras que pueden ser usadas para crackers de contraseñas como John the Ripper. Es una herramienta bastante potente con la cual se puede generar un diccionario a través de las website que le indiquemos (Web corporativa, perfiles de redes sociales, blog…), está preinstalada en Kali Linux, sin embargo, en Ubuntu no. De esta manera, el primer paso de la práctica fue la instalación de cewl con el comando sudo apt-get install cewl.
18
Reconocimiento Activo | Fatima Abigail Porras Noriega El método predeterminado cewl https://paginaodocumentodelaweb rastrea la URL dada a una profundidad especificada e imprime una lista de palabras que pueden ser usadas como diccionario para descifrar la contraseña. En este caso de la práctica, se extrajo la información de un sitio web de Harry Potter que se encuentra en la web http://www.wizardingworld.com esto se realizó con el comando cewl http://www.wizardingworld.com -d 1 -w harrypotter.txt, en donde la opción “-d” indica un incremento en la profundidad del rastreador, si se desea aumentar el nivel de rastreo para generar una lista de palabras más grande al enumerar más palabras nuevas del sitio web, se usa el parámetro -d junto con el número de nivel de profundidad. Por defecto, el nivel de profundidad establecido es 2, y la opción “-w” indica en dónde se guardará la salida del archivo de texto.
Y con las instrucciones head y tail se pudo echar un vistazo a todas las palabras que se extrajeron. Y con el comando wc, se pudieron contar cuántas palabras se obtuvieron del documento.
Cewl tiene algunas opciones muy interesantes como las siguientes: 1. Generar lista de palabras de longitud específica con la opción -m. 2. Recuperar correos electrónicos de un sitio web con la opción -e. 3. Contar el número de palabras repetidas en un sitio web con la opción -c.
19
Reconocimiento Activo | Fatima Abigail Porras Noriega 4. Información adicional de depuración con –debug. 5. Modo detallado para expandir el resultado del rastreo del sitio web y para recuperar los detalles completos con la opción -v (modo detallado verbose). 6. Generación alfanumérica con la opción –with-numbers Entre algunas otras opciones más. CUPP Common User Passwords Profiler (CUPP) permite crear diccionarios específicamente para una persona que se puede usar mientras se realiza un ataque de fuerza bruta para adivinar la credencial de inicio de sesión. Esta herramienta puede ser utilizada en muchas circunstancias como pruebas de penetración o investigaciones forenses, CUPP es multiplataforma escrita en Python y su funcionamiento es simple, pero con resultados muy poderosos. Esta aplicación es el mejor amigo de la ingeniería social cuando se trata de crear diccionarios de contraseñas específicos que se adaptan a las necesidades individuales. La diferencia de esta herramienta es que no va a obtener información de forma automática, sino que nos va a presentar un pequeño formulario para recabar información del objetivo, lo tendremos que rellenar y a partir de esos datos introducidos se generará el diccionario con múltiples combinaciones. Así pues, el primer paso fue instalar cupp en la máquina virtual a través de github, Cupp puede ser descargado desde GitHub usando el comando git clone. En la carpeta descargada, ejecuta el archivo “cup.py“. Una vez ejecutado el archivo, el programa te
muestra
las
diferentes
opciones
que
ofrece.
Para
descargarlo
se
utilizó
el
comando
git
clone
https://github.com/Mebus/cupp.git:
Para poderlo utilizar, se debió ingresar a la carpeta descargada llamada cupp y ejecutar el comando ./cuppy.py -i en donde la opción “-i” indica que se abrirá el modo de preguntas interactivas para la creación de perfiles de contraseñas de usuario, la opción “-w” para mejorar el diccionario existente, la opción “-l” para descargar wordlists enormes desde el repositorio, la opción “-a” para analizar nombres de usuario y contraseñas por defecto directamente desde Alecto DB, entre algunas otras. Al ya conocer esto, se procedió entonces a la creación del diccionario personalizado con la opción interactiva (-i) para generar el diccionario personalizado.
20
Reconocimiento Activo | Fatima Abigail Porras Noriega
Como se puede observar, se tiene la opción de introducir el nombre de la mascota, el nombre del niño, el apodo de la pareja, etc. Todas estas cosas son muy personales y comunes para encontrarlas en una contraseña, de una forma u otra. También hay una opción para agregar palabras clave específicas, caracteres especiales y números aleatorios. Además de todo esto, existe la opción de activar el modo Leet, lo que hará que el diccionario generado sea extremadamente efectivo.
21
Reconocimiento Activo | Fatima Abigail Porras Noriega Y eso es todo, se llenan los campos que se desean y el diccionario ahora se crea y se guarda. Para poder ver las contraseñas que se generaron, solamente se debió ejecutar un comando como cat, head o tail y se pudieron visualizar y también el número de contraseñas que se generó:
Cupp nos da la opción de añadir más palabras a nuestro diccionario creado. Podemos personalizar el tipo de palabras que nos gustaría añadir usando las opciones proporcionadas y además tiene sus propios repositorios de diccionarios preclasificados. Estos diccionarios se pueden descargar y utilizar. Los archivos descargados están comprimidos y tienen que ser descomprimidos para ser vistos y utilizados, y finalmente también puede descargar diccionarios prefabricados con los nombres de usuario y contraseñas más comunes de la base de datos del proyecto Alecto listos para usarse.
NMAP Nmap es una abreviación para Network Mapper, esta es una herramienta bastante utilizada por hackers éticos para hacer labores de descubrimiento y auditorías en la red y en los dispositivos conectados a ella. Nmap es ampliamente utilizado por los administradores de la red para: • Encontrar puertos abiertos de uno o varios dispositivos. • Descubrir servicios de los dispositivos conectados con sus respectivas versiones. • Descubrir el sistema operativo de algún host. • Obtener la ruta que siguen los paquetes aun destino específico. • Monitorear hosts. Según el sitio oficial de Nmap (https://nmap.org/), esta herramienta puede ser utilizada por una gran variedad de tareas, como hacer inventarios de red, programar actualizaciones y monitorear los servicios. Nmap utiliza paquetes raw (es decir, tienen un encabezado IP, pero no son procesados igual que todos los paquetes TCP/P, pues al entrar directamente por un puerto, se dirige directamente al socket de conexión). Fue diseñado para analizar grandes redes de manera rápida.
22
Reconocimiento Activo | Fatima Abigail Porras Noriega TIPOS DE ESCANEO CON NMAP Nmap permite obtener información de los dispositivos conectados a la red de distintas maneras, utilizando protocolos y comunicando paquetes de diferentes tipos, donde depende de la persona que está aditando la red, seleccionar las estrategias adecuadas para llevar sus labores a cabo, pues algunos tipos de conexión e intercambio de mensajes por protocolos específicos ayudarían a obtener información más precisa, pero por otra parte se puede alertar a los IDS. Escaneo TCP Como ya es de saber, cuando se conecta a un servicio que funciona por TCP, antes de comenzar el intercambio de información entre los dispositivos involucrados, estos pasan por un proceso de sincronización, es decir, establecen la conexión para asegurar la integridad de los datos desde que se envían hasta que se reciben en el otro host.
El escaneo TCP consiste en realizar una conexión TCP a cada uno de los puertos especificados de algún dispositivo para descubrir si hay algún servicio. Este método es bastante llamativo en la red, ya que muchos servidores guardan un registro de las direcciones IP que se han sincronizado, y, además, pueden accionar a un IDS.
23
Reconocimiento Activo | Fatima Abigail Porras Noriega Escaneo UDP El escaneo UDP permite obtener información sobre los servicios UDP que pueden existir en algún servidor. Teniendo en cuenta que la conexión UDP comienza con una solicitud y el origen responde inmediatamente con el flujo de información, este tipo de escaneo puede mostrar falsos positivos en los resultados. Es muy utilizado para descubrir servicios RCP.
Escaneo SYN Nmap crea su propio paquete tipo SYN y lo envía (como si fuera a crear una conexión TCP), pero, aunque haya una respuesta de parte del destino, la conexión nunca es creada. Este es un método de los más sigilosos, pues el intercambio de la información es mínimo. Escaneo ACK Sirve para determinar si hay puertos con filtrados, y probar las reglas del firewall que protegen a un host. Un filtrado de paquetes simple permitirá crear conexiones (paquetes con el bit ACK establecido), mientras que un firewall sofisticado no.
24
Reconocimiento Activo | Fatima Abigail Porras Noriega Escaneo FIN Para terminar una conexión TCP, uno de los hosts debe enviar un paquete FIN. Nmap aprovecha la peculiaridad de esta interacción para descubrir puertos abiertos, ya que, si se envía un paquete de FIN a un puerto abierto, este contestará con un FIN ACK (si coincide alguna conexión) o en caso contrario, no devolverá respuesta. Pero si el paquete llega a un puerto cerrado, hay cierta probabilidad de que el destino responda con un RST, pero también puede que no responda nada. A pesar de que se pueden generar falsos positivos y falsos negativos, es altamente probable que estos paquetes pasen por debajo del radar del IDS. Escaneo Null Un paquete null no tiene ninguna bandera establecida, lo que puede ser confuso para algunos dispositivos y cause que no respondan. Por otra parte, puede que, si llega a un puerto cerrado, responda con un paquete RST de la misma manera que el modo anterior. COMANDOS Nmap permite hacer escaneos a dispositivos de 3 diferentes maneras, la primera es proporcionando un host en específico definiendo su dirección IP (i.e. 192.168.100.19), un segmento de red (192.168.100.0/24) o a partir de una lista de host con la opción -sL <ruta> (solo para escaneo simple). La manera más simple y discreta de comenzar a escanear una red es utilizando la opción -sn. Esta se encarga de hacer ping a la(s) direccione(s) especificadas y mostrar una salida con los hosts que contestaron, por lo que no es posible conocer los puertos abiertos, servicios activos, sus versiones correspondientes y nombres de host. ethicalhacking@ethicalhacking:~$ nmap -sn 192.168.100.0/24 Starting Nmap 7.80 (https://nmap.org) at 2021-06-04 21:48 UTC Nmap scan report for _gateway (192.168.100.1) Host is up (0.0044s latency). Nmap scan report for 192.168.100.2 Host is up (0.017s latency). Nmap scan report for 192.168.100.4 Host is up (0.083s latency). Nmap scan report for 192.168.100.11 Host is up (0.00041s latency). Nmap scan report for ethicalhacking (192.168.100.19) Host is up (0.000047s latency). Nmap scan report for 192.168.100.48 Host is up (0.095s latency). Nmap done: 256 IP addresses (6 hosts up) scanned in 9.03 seconds Puertos TCP Un escaneo más completo se puede realizar con la opción -sT para obtener un listado de los puertos abiertos de TCP. En este se intenta ejecutar el proceso completo de la sincronización TCP en cada puerto de cada host. Debido a que el proceso es más tardado, se realizó únicamente a las direcciones IP que mostraron respuesta al ping. ethicalhacking@ethicalhacking:~$ sudo nmap -sT 192.168.100.1 192.168.100.11 192.168.100.48 Starting Nmap 7.80 (https://nmap.org) at 2021-06-04 23:07 UTC
25
192.168.100.2
192.168.100.4
Reconocimiento Activo | Fatima Abigail Porras Noriega Nmap scan report for _gateway (192.168.100.1) Host is up (0.0092s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp filtered ssh 23/tcp open telnet 53/tcp open domain 80/tcp open http MAC Address: CC:05:77:64:D5:64 (Huawei Technologies) Nmap scan report for 192.168.100.4 Host is up (0.018s latency). Not shown: 999 closed ports PORT STATE SERVICE 9080/tcp open glrpc MAC Address: 38:80:DF:09:EB:72 (Motorola Mobility, a Lenovo Company) Nmap scan report for 192.168.100.11 Host is up (0.00056s latency). Not shown: 996 filtered ports PORT STATE SERVICE 443/tcp open https 902/tcp open iss-realsecure 912/tcp open apex-mesh 5357/tcp open wsdapi MAC Address: 18:26:49:FE:C7:02 (Unknown) Nmap scan report for 192.168.100.48 Host is up (0.0086s latency). All 1000 scanned ports on 192.168.100.48 are closed MAC Address: 20:C6:EB:A9:AB:BC (Panasonic AVC Networks Company) Nmap done: 5 IP addresses (4 hosts up) scanned in 286.23 seconds A diferencia del primer escaneo, este tardó más (depende de la cantidad de hosts), pero mostró resultados más completos. El único inconveniente es que esta sincronización puede llegar a generar alertas en los IDS. Aunque, por otra parte, con -sS se puede hacer un escaneo SYN. ethicalhacking@ethicalhacking:~$ sudo nmap -sS 192.168.100.11 Y para hacer un escaneo ACK, se utiliza -sA ethicalhacking@ethicalhacking:~$ sudo nmap -sA 192.168.100.11 Puertos UDP No hay una forma en específico de ser discreto al momento de hacer un escaneo UDP, ya que es un protocolo con un funcionamiento relativamente sencillo. La opción requerida para probar este tipo de conexiones es -sU. ethicalhacking@ethicalhacking:~$ sudo nmap -sU 192.168.100.11
Rangos de puertos
26
Reconocimiento Activo | Fatima Abigail Porras Noriega Nmap, por defecto evalúa la conexión en cada host probando una lista de los 1000 puertos más utilizados, es por esta razón que el escaneo de puertos TCP y UDP toma una cantidad considerable de tiempo para ejecutarse. Afortunadamente se puede hacer escaneo a uno o un rango de puertos específicos utilizando -p [número de puerto]. Los puertos específicos se escriben separados por coma, y los rangos separados por guion, por ejemplo, si se decidiera escanear los puertos 21, 22, 80, 8080 y 443 se escribiría: ethicalhacking@ethicalhacking:~$ sudo nmap -p 21,22,80,8080,443 192.168.100.11 Y en otro caso, si se decidiera optar por escanear un rango de puertos del 1 al 30: ethicalhacking@ethicalhacking:~$ sudo nmap -p 1-30 192.168.100.11 Timing La herramienta ofrece la posibilidad de ajustar la velocidad con la que se envían los paquetes, o, en otras palabras, el ancho de banda. Las ventajas que ofrece esta propiedad es la de reducir considerablemente el tiempo de escaneo (con la desventaja de que puede reducir la precisión de los resultados) o en caso contrario, engañar al IDS disminuyendo la velocidad para que no se detecte como entrada masiva de tráfico. De manera predeterminada, el valor de -T es 3, pero puede reducirse hasta 0 para incrementar el sigilo, o incrementarse hasta 5 para aumentar la velocidad del tráfico enviado. Entonces, la recomendación para pasar a través de los IDS e IPS sin ser detectado es establecer el timing entre 1 y 0: ethicalhacking@ethicalhacking:~$ sudo nmap -T 1 192.168.100.11 Información detallada Una vez que se descubren host y servicios de interés en la red sin alertar a los sistemas de detección, se pueden ejecutar otras opciones para obtener información específica de los dispositivos. Como lo es la versión de los servicios que se tienen en ejecución (-sV). ethicalhacking@ethicalhacking:~$ sudo nmap -sV 192.168.100.19 Starting Nmap 7.80 (https://nmap.org) at 2021-06-05 02:26 UTC Nmap scan report for ethicalhacking (192.168.100.19) Host is up (0.0000050s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0) 23/tcp open telnet Linux telnetd 111/tcp open rpcbind 2-4 (RPC #100000) 2049/tcp open nfs_acl 3 (RPC #100227) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel También, se puede obtener el sistema operativo que está usando el host (-O). ethicalhacking@ethicalhacking:~$ sudo nmap -O 192.168.100.19 [Output omitido] Device type: general purpose
27
Reconocimiento Activo | Fatima Abigail Porras Noriega Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6.32 OS details: Linux 2.6.32 Network Distance: 0 hops Por último, también existe un escaneo agresivo (-A). En esta opción se obtiene la mayor cantidad de información posible, aunque hay que tener en cuenta que el riesgo de detección incrementa considerablemente. ethicalhacking@ethicalhacking:~$ sudo nmap -A 192.168.100.19 Starting Nmap 7.80 (https://nmap.org) at 2021-06-05 02:36 UTC Nmap scan report for ethicalhacking (192.168.100.19) Host is up (0.000033s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0) 23/tcp open telnet Linux telnetd 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100000 3,4 111/tcp6 rpcbind | 100000 3,4 111/udp6 rpcbind | 100003 3 2049/udp nfs | 100003 3 2049/udp6 nfs | 100003 3,4 2049/tcp nfs | 100003 3,4 2049/tcp6 nfs | 100005 1,2,3 37999/tcp mountd | 100005 1,2,3 44446/udp6 mountd | 100005 1,2,3 45550/udp mountd | 100005 1,2,3 60055/tcp6 mountd | 100021 1,3,4 39169/udp6 nlockmgr | 100021 1,3,4 39461/tcp6 nlockmgr | 100021 1,3,4 41061/tcp nlockmgr | 100021 1,3,4 45178/udp nlockmgr | 100227 3 2049/tcp nfs_acl | 100227 3 2049/tcp6 nfs_acl | 100227 3 2049/udp nfs_acl |_ 100227 3 2049/udp6 nfs_acl 2049/tcp open nfs_acl 3 (RPC #100227) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6.32 OS details: Linux 2.6.32 Network Distance: 0 hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/. Nmap done: 1 IP address (1 host up) scanned in 15.42 seconds
28
Reconocimiento Activo | Fatima Abigail Porras Noriega
CONCLUSIÓN El hacking ético es una medida cada vez más utilizada por las empresas y básicamente, se trata de una herramienta que nos permite identificar las vulnerabilidades de nuestra empresa, para así llevar a cabo las medidas protectoras para evitar tener que sufrir problemas en el futuro. Mantener los sistemas de información seguros tiene una importancia gigante a nivel organizacional y personal ya que la información es lo más importante para las empresas y, por ende, lo más importante para los ciberdelincuentes o los hackers de cualquier categoría. Si bien, en ocasiones a los encargados de la seguridad les parece aburrida la fase de reconocimiento del ciclo de hacking ético, es importante mencionar que es una de las fases más importantes de un pentesting, ya que en esta fase es donde se realizan distintos procesos y métodos para un único propósito, que es la obtención de la mayor información posible del objetivo que se va a auditar, información como, por ejemplo, saber cómo está distribuida la infraestructura informática de la empresa, obtener direcciones de correo electrónico, nombres de empleados, posibles nombres de usuario, entre muchos otros. Y sobre todo el modo de reconocimiento activo, ya que es donde se interactúa directamente con el objetivo para poder recolectar información, en este tipo de reconocimiento se logra obtener más información sobre el objetivo que usando el reconocimiento pasivo, pero no por ello hay que menospreciarle, un ejemplo de este tipo de reconocimiento sería el uso de nmap para escaneo de puertos, módulos auxiliares de metasploit, entre muchos otros. La información es uno de los recursos más relevantes de una empresa, pues esta se encarga de conectar cada una de las áreas del negocio, de unificar los procesos y de guiar la productividad hacia la dirección correcta. De ahí surge la importancia de la seguridad informática de las empresas: la información es valiosa y debe ser protegida de forma adecuada. La importancia de la seguridad informática a nivel organizacional e incluso personal radica esencialmente en que la utilización maliciosa de sus sistemas de información privados y de los recursos internos puede acarrear desastrosas consecuencias en todas las áreas de la organización, deviniendo en problemas tanto productivos como financieros. Por ende, la seguridad informática de las empresas debe estar dirigida a prevenir las amenazas y los riesgos a los sistemas de información internos. La detección de vulnerabilidades y la seguridad informática es fundamental para mantener siempre segura e intacta la información privada de las empresas, por ello, contar con este tipo de herramientas constituye, además de una necesidad, una inversión a corto, mediano y largo plazo. En el desarrollo de toda la práctica se pudieron conocer herramientas muy útiles para este fin, tales como Wireshark que ayudó a analizar paquetes para así poder obtener la contraseña de un usuario lo cual se realizó mediante los protocolos telnet, SSH y http, dejando ver de esta manera que son protocolos muy inseguros. Por otra parte, se hizo uso de herramientas para ataques de fuerza bruta entre las que se encontraron Hydra, Ncrack y Medusa. Y finalmente se aprendió a realizar diccionarios personalizados de contraseñas, lo cual es una herramienta muy útil ya sea con Crunch, Cewl o Cupp ya que te permite tener un diccionario de contraseñas completamente personalizado con información específica de la víctima. Indudablemente, hoy por hoy las herramientas de seguridad informática deben estar dirigidas al análisis constante y a la ejecución proactiva para detectar vulnerabilidades en los ambientes TI de las empresas, realizándose mediciones desde una plataforma digital en la que se puedan visualizar los distintos procesos de la organización.
29