Test de Intrusión 1 parte

05.06.2019
En primer lugar debes elegir el punto de ejecución del test, como ya hemos visto antes, a lo mejor queremos realizar una auditoría simulando que somos un usuario externo o tal vez, pensemos que el enemigo es un cliente remoto o pueda ser un trabajador interno. ¿Quién sabe? ¿O no? Elegimos el punto de ejecución y empieza la campaña. Para ello empezamos por la fases de "combate".
Elección de objetivos
Hay que buscar donde puede haber una puerta para entrar dentro y hacer...¡ya se verá! Aun es pronto, no nos ponemos objetivos, se va conquistando poco a poco el enemigo. Para ello vamos a analizar los activos de la empresa expuestos a nuestro punto de ejecución. Es decir, desde donde estamos que servicios y/o servidores están en nuestra linea de tiro. Servidores web, servidores de conexiones VPN, el servidor de correo, de ficheros, el dns, etc.... Inventariamos los activos a testear y empezamos la segunda fase.
Recogida de Información
¿Qué nos interesa? TODO. Toda información que se pueda conseguir es útil, siento decir esto pero hasta la información sobre las personas que operan y o trabajan en la empresa directa o indirectamente con los sistemas es útil. Para ello realizamos dos batidas de recogida de información distintas utilizando dos filosofías diferentes. En primer lugar vamos a recoger toda la información que sea pública de la empresa y de los objetivos. Es pública, así que recojámosla y aprendamos todo lo que podamos de ellos. Las herramientas que utilizamos son herramientas de Footprinting o de seguimiento de rastros de huellas.
Footprinting
Las herramientas que vamos a utilizar son sencillas públicas y "legales" es decir, aún no necesitaríamos un documento de Exoneración de Responsabilidades que nos autorice a realizar el test, con lo que si quieres probar puedes hacerlo con quien desees solo por practicar.
Para conocer la información de la empresa empezamos por consultar al servidor DNS para ver que servidores tiene registrados con que servicios. Normalmente vamos a sacar las Direcciones IP de los servidores DNS, de los servidores Web, de los servidores de correo y ... todo lo que se pueda. Para hacer esta parte yo uso el propio Nslookup que viene en el sistema y con sencillos comandos podemos sacar toda esta información.
Nslookup
Cuando entramos en el interfaz de comandos de nslookup estamos realizando consultas directamente contra el servidor de DNS que tenemos configurado en nuestra máquina, así que lo primero es averiguar cual es el servidor de dns de nuestro objetivo y preguntarle a él. Para ello elegimos el tipo de registro que queremos consultar con el comando set type. Para sacar los servidores dns: set type=ns; Para los hosts: set type=a; para los intercambiadores de correo: set type=mx, etc....
Una vez elegido el tipo se realiza la petición de resolución con el dominio que se quiere consultar y nos devuelve las Direcciones IP de los servidores DNS primario y secundario. Así que cuando sepamos cuales son, configuramos a esos servidores como los receptores de nuestras consultas con el comando: Server IP y una vez que estemos allí sacamos toda la información pública que tengamos. Si el DNS está mal configurado nos permitirá dos cosas que nunca se deben permitir, la transferencia de zonas y el listado de todos los registros. Para ello basta conectarse al servidor de dns y desde nslookup realizar una sencilla prueba con el comando ls nombre_de_dominio. Si cuela, nos volcará toda la información de la zona por pantalla. Y preguntando al registro SOA de la Zona DNS podremos saber cual es el correo del responsable del dns y lo más probable webmaster.
De la información que extraigamos de aquí podremos saber cosas como si los servidores están en hosting, housing o los tiene la compañía, si tienen servicios de respaldo externos, si el administrador es cuidadoso y detallista o no. Pensad que el proceso de ataque puede depender de estos pequeños detalles. Imaginemos un servicio web de una empresa que está en hosting, si compramos un domino en el mismo proveedor tendremos acceso al mismo servidor de nuestro objetivo por poco más de 100 pavos al año y atacar a un compañero de hosting ofrece la posibilidad de un nuevo camino digno de explorar.
En este ejemplo , se puede hacer "ls" del dominio y permite ver la lista de todos los servidores que tiene y la IP interna de un servidor muy, muy significativo, que se llama bd (Base de Datos?) con un direccionamiento 192.168.1.1. Curisoso.

Tracea y Posiciona
Una vez que se tienen los objetivos iniciales marcados con direcciones IPs lo siguiente es situarlos en la red y geográficamente, puede darnos alguna información curiosa. Herramientas como tracert o Visualroute nos va a permitir averiguar cual es la ubicación física y quienes son sus proveedores de acceso a Internet.

En el apreciamos las redes que le conectan, en este caso con usa, pero podemos ver quien es su proveedor de servicios de Internet. Supercable (que daba servicio a Andalucía), luego AUNA, y ahora ONO. Telcos, je.
Whois
Cuando una empresa registra un dominio en Internet debe rellenar una serie de datos en el registrador que deben estar en una base de datos de información que se llama Whois. La información que se registra en esta base de datos puede protegerse parcialmente hablando con el registrador, pero por defecto toda ella es pública. Cada registrador ofrece unas herramientas de acceso a la base de datos whois para que cualquiera pueda consultarla.


Arañas de Internet
Usa la información que ya han recogido las arañas y aprende a sacarle partido a las bases de datos sobre las sitios que tienen nuestros amigos los buscadores. Existe una base de datos que se llama Google Hacking Database (GHD) que tiene catalogadas en distintas categorías cadenas de búsqueda para usar en google para sacar información para hacking de empresas a través de las bases de datos del buscador google. Hay una sección que me encanta se llama "Passwords" y la explicación que dan en la propia base de datos sobre esa categoría es: "FOR THE LOVE OF GOD, GOOGLE FINDS PASSWORDS". Aprende a rebuscar en google/msn search para seguir los pasos de la empresa y de los administradores, te sorprendería lo que puede hacer un administrador de una empresa con sus correos corporativos.

Spidering
Las técnicas de Spidering se utilizan para poder encontrar toda la información que se nos ofrece gratuitamente a través de los sitios web de la compañía. Nos ofrece páginas html, aplicativos, ficheros de imágenes, documentos, javascripts, applets, etc... Cuando realizamos un pentest hay que sacar toda la información que se pueda extraer de comentarios, meta información de archivos gráficos o documentos, etc... Por ejemplo los archivos doc de Microsoft Office no suelen ser limpiados de la información de sus creadores antes de ser publicados y generalmente nos van a dar rutas de archivos en máquinas locales y nombres de cuentas de los usuarios en los dominios. Sólo por poner un ejemplo. Además, cuando se está realizando una descarga completa de un sitio se busca también aquello que, aparentemente no está publico, pero que es predecible, como los directorios típicos /cgi-bin, /bin, /images, /admin, /privado, etc... y los archivos predecibles, como archivos de ejemplo, configuración etc... Para ello se utilizan herramientas que se llaman Scanners de Cgi y que, aunque en origen rastreaban programas cgi vulnerables, hoy en día se usan como rastreadores de ficheros en técnicas de spidering.
Ejemplo 1: Documento office descargado de la Universidad de las Illes Balears con información del usuario y la ruta del sistema de ficheros de su creador.


Imagen 1: Usuario tsiralb. https://www.uib.es/recerca/osr/AIsolicitud.doc


¿Os suena cierto escándalo en el gobierno británico con cierto documento sobre las armas de destrucción masiva en Irak que había sido modificado?

: Comentario en una página web que delata que ha sido desarrollada con Dreamweaver. ¿Hay Dreamweaver para Linux?

Imagen 2: Foto descargada desde Internet con meta información sobre el creador.


Es una foto de Arturo descargada desde un directorio que hay por aquí en la misma universidad de antes.[https://www.uib.es/depart/dqu/fotos_arturo/]. Ya sabemos que día fue la fiesta, la camarita e incluso se puede averiguar la hora del día a la que se tiró, que como se aprecia era hora de cena.Herramientas como Teleport Pro te permiten descargarte todos los ficheros que se ofrecen públicamente en un sitio Web, scaners de cgi como voideye, whisker, cgi-scan o cualquier otro permiten cargar una lista de ficheros y directorios a buscar. Como se puede ver en la imagen, a voideye se le puede configurar el uso de servidores Proxy anónimos para evitar la detección de quien está realizando el escaneo.

Fingerprinting
Ya hemos recogido toda la información que era pública, ahora vamos a recoger aquella que también está accesible públicamente pero que a priori no se puede ver. Es decir, vamos a inferir información a partir de pruebas que vamos a ir realizando a cada uno de los servicios y o servidores. Fácil, ¿no?
Identificación de Sistemas Operativos y/o Firewalls
Para identificar los sistemas operativos que corren sobre los servidores o debajo de los servicios que queremos auditar existen diferentes herramientas. Todas estas herramientas se basan en jugar al ¿Quién es Quién? ¿Recordáis aquel juego en el que se iba preguntando al contrario si tenía bigote o sombrero? Pues es la misma idea. Averiguar el sistema operativo consiste en enviarle distintas petición e ir analizando las respuestas. Por ejemplo, pensemos en un simple ping. Si enviamos en las tramas TPC/IP valores 1 en los bits de urgencia, que no van a ser utilizados por el sistema operativo, y observamos los resultados obtenidos se puede inferir que sistema es. Un sistema Microsoft devuelve esos valores siempre a 0, eso es porque cuando construye una trama TCP/IP de respuesta lo hace desde una nueva trama; sin embargo, un sistema Linux construye la respuesta a partir de la trama de petición. Esto hace que si enviamos 1 y recibimos 0 podamos inferir, con un porcentaje alto de éxito, que el sistema operativo es un Microsoft Windows. Lógicamente el número de pruebas que se pueden hacer son muchas y las diferencias pueden existir entre un Microsoft Windows NT 4 Server y un Microsoft Windows NT 4 Server Service Pack 6. A veces se puede afinar y saber exactamente la versión del kernel de un sistema Linux y otras no. Para ello vamos a utilizar distintas herramientas que ya nos ayudan con un amplio conjunto de diferenciación de sistemas operativos.
Nmap
Es un scanner de información sobre servidores, y, aunque su principal utilidad es la de un scanner de puertos tiene opciones de reconocedor de sistemas operativos. La opción -O (jé,je) También puedes hacer simplemente clic en el interfaz gráfico, si usas un frontend.(;). El escaneo de sistemas operativos que realiza nmap no solo se queda en Windows, Linux, etc.. .sino es capaz de detectar impresoras de red, centralitas PBX, o teléfonos IP. Para realizar esta detección cuenta con una enorme base de datos para hacer una detección entre miles, repito miles, de sistemas operativos (Windows Server NT, Windows NT Workstation SP4, Windows NT SP6, todos los sabores de Linux, etc...) Además, en las nuevas versiones realiza pruebas sobre los puertos TCP y UDP descubiertos y es capaz de sacar conclusiones del tipo Nokia Chekpoint redirigiendo a IIS 6 sobre un Windows Server 2003.
Hping2 (o hping3)
Esta utilidad [hping] se puede comparar con un ping pero a nivel TCP/IP, es decir, podemos, mediante comandos definir la conversación completa con un servidor con un tipo de paquetes enviados. La utilidad nos permite enviar paquetes con los flags que queramos activados, modificando todos y cada uno de los campos de una mensaje TCP/IP: MTU, TOS, Bit de Urgencia, flags de SYN, etc... Esta herramienta va a permitir averiguar el sistema operativo a base de realizar pruebas. Por suerte nmap implementa casi todas las técnicas conocidas para el reconocimiento de sistemas operativos, pero si alguna no estuviera implementada se puede utilizar hping2 para implementarla. Además de para reconocer el sistema operativo también vamos a poder utilizarla para averiguar los algoritmos de generación de números de secuencia (útiles en escaneos de puertos y técnicas de IP-Spoofing), la configuración de un firewall, e incluso la transmisión de ficheros encapsulándolos sobre los paquetes que configuremos.
Los puertos del sistema
El siguiente paso, que en un escaneo rápido se realiza al mismo tiempo, es la detección de puertos abiertos en un sistema. A priori que un puerto esté abierto no es ni malo ni bueno. Un puerto se abre para dar servicio. El problema es cuando se abre un puerto que conecta con una aplicación o servicio que no está securizado o que realmente el administrador ignora que lo tiene abierto en una máquina. Desde el punto de vista de un test de intrusión hay que ver a que servicios se puede llegar.
Detectar un puerto TCP abierto debería ser tan fácil como establecer una conexión con dicho servicio; para ello bastaría con establecer una conexión con un simple telnet, que, además, nos mostrará la información por pantalla que el servicio o aplicación al otro lado del puerto está enviando.

El problema radica en las alarmas que se activen o la información que se deje en los logs cuando se produce el scaneo, hay que tener en cuenta que el número de puertos posibles es de 65536 puertos que pueden ser TCP o UDP.
Lo más probable es que un firewall deje de responder a una determinada IP cuando se haya producido más de un número de peticiones de conexión desde una determinad ip, o cuando se han pedido más de un número por unidad de tiempo, o cuando hay una violación de protocolo (comando no valido que suele denotar que un servicio está hablando con un ser humano detrás de un telnet y que ha cometido un error al teclear o en el comando), etc....
El objetivo de los métodos de escaneo es averiguar todos los puertos que se encuentran ofreciendo servicio por TCP/UDP sin levantar alarmas y dejar el menor rastro posible.
Hay muchos tipos de scaneo, y me encantaría explicarlos todos aquí, pero no tengo espacio, pero si os los voy a enumerar para que podáis buscar más información sobre ellos. Al final la idea consiste en enviar paquetes con una determinada configuración y escuchar como reacciona el equipo escaneado. Un escaneo no tiene porque ser perfecto y a veces no salen todos los puertos si está detrás de un firewall en un único tipo de escaneo. Los más usados son el escaneo de SYN, de FIN, de SYN+ACK, de ACK, el escaneo de NULL, que se realiza con todos los flags apagados y el de XMAS Tree, que recibe ese nombre porque activa todas las banderas como si fueran luces en un arbolito de navidad [Y para UDP e Iddle Scanning].
Scaneo con Nmap
Nmap, realiza el escaneo de establecimiento de conexiones (como si hiciéramos un telnet) que se llama TCP connect(), de SYN (o de conexiones medio abiertas, ya que se envía un paquete SYN a un puerto y se espera la confirmación por parte del cliente sin nunca cerrar la conexión), de FIN, de NULL y de XMAS Tree.
Para los puertos UDP implementa un sistema basado en el envío de mensajes UDP a un puerto de 0 bytes de tamaño. Si se recibe un mensaje ICMP que dice que es inalcanzable entonces es que el puerto está cerrado, por el contrario se asume que está abierto. Este tipo de escaneo, como muchos de los anteriores puede tener un alto índice de falsos positivos debido a que puede que el firewall prohíba todo tráfico ICMP de salida o que se haya perdido la respuesta.