Un Buen Inicio para las Pruebas de Seguridad

El rápido crecimiento que en años recientes ha tenido el uso de las aplicaciones web, ha traído como consecuencia que cada vez más información de vital importancia sea almacenada y procesada por dichos sistemas. Las transacciones a través de Internet que hoy en día se realizan dentro de estas aplicaciones pueden incluir desde información personal, datos laborales, números de tarjetas de crédito hasta información empresarial o gubernamental de carácter confidencial. En este contexto, la realización de pruebas seguridad a estas aplicaciones adquiere una gran relevancia, ya que nos ayudan a identificar vulnerabilidades en las mismas y que en un momento dado pudieran permitir la explotación de información de manera malintencionada, como por ejemplo SQL Injection, Crosssite Scripting –XSS, Directory Traversal, software con versiones no actualizadas, desbordamientos de búfer, ataque de denegación de servicio, páginas con información técnica sensible/datos sensibles sin cifrar, etc. Si no se atienden dichas vulnerabilidades pueden derivar en accesos no autorizados, filtraciones no deseadas de datos confi- denciales o incluso pérdida en la integridad de los mismos, entre otras implicaciones mayores.
Una de las actividades que se recomienda llevar a cabo en primera instancia cuando nos es asignado un proyecto de Pruebas de Seguridad, es recabar la mayor cantidad de información posible sobre los objetivos con que estaremos trabajando. Esta recopilación inicial nos ayuda a tener datos más concisos sobre el SUT (System Under Test) con el cual interactuaremos. En otras palabras, entre más información tengamos sobre el sistema o aplicación que estaremos probando, mejor será la estrategia que definamos para diseñar y ejecutar nuestras Pruebas de Seguridad. Como resultado de lo anterior, se incrementarán sustancialmente las probabilidades de encontrar un mayor número de vulnerabilidades en el SUT. La era de Internet en la que actualmente vivimos nos otorga la facilidad de obtener pequeños trozos de información sobre casi cualquier cosa, desde diferentes y muchas veces insospechadas fuentes. Es posible que en un principio, dichos trozos de información carezcan de sentido pero, al igual que en un rompecabezas, conforme se van juntando pueden ir adquiriendo relevancia como un todo.
Por ejemplo, una muy buena herramienta con la que podemos iniciar recabando información sobre el sistema objetivo, es “Nslookup” (Name Server Lookup), técnicamente es una herramienta administrativa que permite diagnosticar y solucionar problemas que se pueden presentar con los servidores DNS. Es por lo anterior, que “nslookup” puede ser una muy buena fuente de información inicial sobre un objetivo ya que, como veremos a continuación, nos permite resolver nombres de host o dominios a direcciones IP y viceversa, pero además nos ayuda a identificar otros elementos importantes dentro de una red como lo son servidores de correo, servidores de nombres de dominio, etc. En los entornos Windows, Unix y Linux, “nslookup” normalmente se encuentra disponible a través de la línea de comando, ya que se instala por defecto junto con la pila de protocolos TCP / IP. Esto nos facilita un poco más las cosas, ya que no es necesario realizar la descarga e instalación de ningún software adicional al que ya tenemos instalado en nuestra computadora.
Cuando lo usamos sin ningún parámetro, “nslookup” nos devuelve en primera instancia tanto el nombre como la dirección IP del servidor DNS al que nos encontramos conectados localmente. Después de que nos muestra dicha información, se despliega en pantalla el “prompt” del programa, representado por el signo de “mayor que (>)”. Cuando este “prompt” aparece, nos indica que estamos en el modo de ejecución interactivo de “nslookup”.
Si deseáramos trabajar con el modo no interactivo, bastaría solamente con utilizar el comando acompañado de los parámetros correspondientes, por ejemplo: “nslookup [opciones] [nombre_de_ host] [nombre_de_servidor]”. Esto, sólo nos regresaría la respuesta a dicha solicitud. Sin embargo, para mayor comodidad y conveniencia, normalmente se usa el modo interactivo.
Una vez que estamos en el modo interactivo, podemos simplemente teclear después del “prompt”, el nombre del host o dominio sobre el cual queremos solicitar información. Por ejemplo, www.do- miniodeprueba.com, como se muestra a continuación:

> www.dominiodeprueba.com
Servidor: UnKnown
Address: 192.168.1.254
Respuesta no autoritativa:
Nombre: www.l.dominiodeprueba.com
Addresses: 192.168.1.99, 192.168.1.104, 192.168.1.103, 192.168.1.147, 192.168.1.106, 192.168.1.105
Aliases: www.dominiodeprueba.com

Como podemos ver, “nslookup” nos devuelve las distintas direcciones IP asociadas al host o dominio capturado, en este caso www. dominiodeprueba.com. En otras palabras, se realiza una sencilla resolución de nombre a dirección IP. De esta manera, contando solamente con la URL del sistema, podemos resolver su IP o rango de direcciones.
De manera inversa, si al comando “nslookup” lo acompañamos con una dirección IP en lugar del nombre del host o un dominio, nos devolverá como resultado el nombre del host o dominio asociado a la dirección IP ingresada.
Ahora bien, en el resultado obtenido, el servidor DNS local (192.168.1.254) es el servidor que por defecto nos está respondiendo nuestras solicitudes. Esto debido a que no hemos realizado ninguna modificación a la configuración inicial del programa. Sin embargo, esto puede ser modificado de manera muy sencilla utilizando el comando “server” como lo muestra el siguiente extracto en el cual asignamos como nuevo servidor DNS, al ubicado en la dirección 192.168.100.1 para que sea él quien ahora atienda nuestras solicitudes de información:

> server 192.168.100.1
Servidor predeterminado: dns-publico-prueba.com
Address: 192.168.100.1

A pesar de lo anterior, las funciones que nos ofrece “nslookup” no se limitan a la resolución de dominios. Las combinaciones de comandos “set type” nos permiten realizar búsquedas sobre ciertos registros de recursos DNS en específico. Por ejemplo, un registro de recursos DNS que puede ser de particular interés, es el representado por el valor “MX” el cual corresponde a un servidor de correo (Mail eXchange). La sintaxis de uso es la siguiente:

>set type=MX

Las búsquedas que se lleven a cabo después de que se estableció el valor “MX”, retornarán solamente los servidores de correo (si es que existen) que se localicen en el dominio ingresado. Por ejemplo, la siguiente combinación de comandos, devolverá los servidores de correo que existan dentro del dominio “dominiodeprueba.com” como se muestra a continuación:

>set type=MX
>dominiodeprueba.com
dominiodeprueba.com MX preference = 20, mail exchanger =
m1.mx.dominiodeprueba.com
dominiodeprueba.com MX preference = 30, mail exchanger =
m2.mx.dominiodeprueba.com
dominiodeprueba.com MX preference = 40, mail exchanger =
m3.mx.dominiodeprueba.com
dominiodeprueba.com MX preference = 10, mail exchanger =
mx.dominiodeprueba.com

Adicional a los registros de recursos DNS con valor “MX” existen más valores que pueden ser asignados con los comandos “set type” que nos permiten obtener información específica sobre otros elementos tal y como lo muestra la siguiente tabla:



Una vez obtenida la información anterior, estaremos en posibilidades de definir con mayor claridad los objetivos sobre los cuales enfocaremos nuestro mayor esfuerzo de pruebas. A pesar de ser una herramienta que ha estado disponible desde hace un tiempo considerable, de carecer de una interfaz gráfica que haga más amigable su uso y de la existencia de muchas nuevas aplicaciones que pueden reemplazarla fácilmente, “nslookup” cumple su cometido de ayudar, en muy buena manera, a obtener información inicial importante que puede ser empleada para la planeación y posterior ejecución de nuestras Pruebas de Seguridad. Después de todo, es muy probable que muchas de las aplicaciones que actualmente están en el mercado destinadas al escaneo de vulnerabilidades o pruebas de penetración, en algún punto de su estructura interna contengan la funcionalidad del discreto pero efectivo “nslookup”.

Sandra Berenice Ruiz Eguino
es Directora de Operaciones de e-Quallity, además ha participado como Consultora Senior en proyectos de mejora de organizaciones de Prueba de Software. Cuenta con certificación internacional en Pruebas por el ASTQB. Se ha desempeñado también como Ingeniero de Pruebas Senior, Líder de Proyectos, Administradora de Proyectos nacionales e internacionales, analista y desarrolladora. Ha sido profesora de la Universidad Autónoma de Guadalajara (UAG), donde realizó sus estudios de Maestría en Ciencias Computacionales.

Miguel Ángel Cortés Dueñas
es Líder Técnico de Proyectos de Pruebas y Consultor Especialista en Pruebas de Seguridad en eQuallity. Cuenta con certificación internacional en Pruebas por el ASTQB, así como certificación CEH (Certified Ethical Hacker) por el EC Council. En su trayectoria profesional ha participado también en proyectos nacionales y en el extranjero como Ingeniero de Pruebas Senior, realizando pruebas funcionales manuales y automatizadas.