Está en la página 1de 21

PLAN DE TRABAJO

Nombre del Proyecto: Test penetracin Colegio de Bachilleres Lder de Proyecto: Oscar Ruiz Hernndez Contacto del cliente:

Roles del equipo de trabajo


Nombre Rol Descripcin Explotacin de las vulnerabilidades, acceso a la red interna a travs de una vulnerabilidad web, recoleccin de evidencias de avances logrados. Entre sus actividades estar la deteccin de host activos, determinacin de mecanismos de encriptacin en la pgina, escaneo de la red. Planificacin de la intrusin. Escalamiento en los privilegio, acceso a la informacin, Aplicacin de los tipos de ataques

Anglica Marn Realizar fase de Sifuentes intrusin Berenice Aidee Exploracin Gmez Tarelo Monserrat Intrusin Domnguez Chacn

Cesar Documentacin Alejandro Esparza Martnez Martha Yadira Descubrimiento Aguilera Chvez

Bsqueda de links o referencias para poder definir los objetivos y la pagina para la realizacin del test Realizara la recopilacin de informacin, definir los objetivos. La informacin que recopilara variara por mencionar algo: direcciones IP, nombres y direcciones de los correos de los empleados, dependiendo el objetivo que se defina.

Programacin de actividades

Nombre de fase/tarea Fase 1: Documentacin Tarea 1. Buscar informacin en internet sobre Penetration Testing. Investigar sobre que es penetration testing, para introducirnos al tema, y as tener conocimientos de que es como se realiza etc. para as realizar nuestro propio test de penetracin. Tarea 2. Investigar tcnicas de Penetration Testing. Indagar sobre las tcnicas de penetration testing para saber cmo se ejecutan, cuales son las ms fciles y efectivas para realizar el penetration testing. Tarea 3. Identificar las etapas de un Penetration test. Al identificar las etapas podremos hacer paso a paso las actividades, esto nos facilitara el trabajo para la realizacin del penetration testing y la elaboracin del reporte. Tarea 4. Seleccionar con la cual desarrollaremos el proyecto. Este es un punto muy importante ya que tenemos que seleccionar a cual pgina le realizaremos el penetration testing, de ello dependern las herramientas que utilicemos. Tarea 5. Investigar herramientas (software) para realizar Penetration Test. Dependiendo las tcnicas que implementemos, nos ayudaremos de software para realizar la penetracin, pero antes de ello tenemos que ver cules son los ms indicados. Fase 2: Exploracin. Tarea 1. Deteccin de host activos. Verificar qu puertos estn abiertos para poder conocer los servicios que estn activos, para poder encontrar las vulnerabilidades del sistema. Tarea 2. Deteccin y anlisis de servicios activos. Determinar cules servicios se estn utilizando en el puerto que encontramos abierto en la tarea anterior.

Total de Hr 4

1 4

Tarea 3. Deteccin remota de Sistemas Operativos. Se comprueba el sistema operativo en base a la comprobacin de huellas TCP/IP. Fase 3: Intrusin. Tarea 1. Planificacin de la intrusin. La interaccin con el cliente. Establecer los requerimientos de informacin necesarios para poder llevar a cabo el proyecto, as como la deteccin de recursos que podemos obtener en internet. Tarea 2. Determinacin y configuracin de vectores de ataque. Identificamos los servicios que estn expuestos como firewalls, servidores web, etc. Tarea 3. Determinacin y configuracin de vectores de ataque. Analizar los diferentes vectores de ataques Web que podemos usar (SQL Inyection, XSS, ataque de fuerza bruta) y determinar cul es mejor para el proyecto. Tarea 4. Combinando vulnerabilidades para elevar el control. Explotar las vulnerabilidades conocidas mediante ataques o simulacin de ataques para saber cual nos da mejores resultados y continuar en bsqueda de ms vulnerabilidades. Tarea 5. Acceso a informacin interna. Hacer uso de los servicios que se encontraron abiertos para acceder a la informacin interna de la organizacin. Tarea 6. Ataques por fuerza bruta sobre servicios de autenticacin. Es posible que se realicen ataques de fuerza bruta por medio de software para obtener acceso a los servicios de autenticacin que se presentan . Tarea 7. Explotacin de las vulnerabilidades. Los puertos abiertos, los host activos, poder inyectar cdigo en los formularios, y las otras vulnerabilidades encontradas en los otros pasos intentaremos explotarlas con todas las herramientas que hemos encontrado. Tarea 8. SQL Injection. Debido a la cantidad de formularios en la pgina intentaremos inyectar cdigo de SQL para poder realizar consultas y obtener informacin importante para poder tener acceso a la red. 1

1 12

Tarea 9. XSS Injection. Intentaremos realizar un ataque XSS, el cual se basa en explotar las vulnerabilidades de sistema de validacin de HTML incrustado. Tarea 10. Iteracin sobre las fases. Volver a realizar las fases para verificar si fueron cubiertas todas las vulnerabilidades encontradas, de lo contrario verificar los pasos realizados. Tarea 11. Buscar posibles soluciones sobre las vulnerabilidades explotadas. Tarea 12. Recolectando evidencia de los accesos logrados. Fase 4: Reporte. Tarea 1. Reporte. Realizar un documento en donde se detalle cada una de las fases y los objetivos alcanzados en la actividad. Tendr una introduccin, datos de la pgina, por que se eligi, el desarrollo de la actividad y los resultados obtenidos.

1 1 1 4

Entregables ENTREGABLE Fase 1 Documentacin. Un documento de que incluye la informacin que buscamos sobre incluye los links de consulta sobre la definicin y etapas de Penetration Testing. Fase 2 Exploracin. Documento que detalla las tareas realizadas en esta fase y los objetivos realizados de esta. Incluyendo la deteccin de host activos, anlisis de servicios activos y la deteccin remota de Sistemas Operativos. Fase 3 Intrusin. Documento que en el cual planearemos como realizar la intrusin, pero primero probaremos con diferentes mtodos. Fase 4. Reporte. DESCRIPCIN

Fase 1: Documentacion.
1 2 3 4 Link http://isecom.securenetltd.com/OSSTMM.es.2.1.pdf http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf http://www.exploit-db.com/wp-content/themes/exploit/docs/22954.pdf http://www.cybsec.com/upload/VictorMonteroSeminarioTecnicasdelPenetrationTestingArgentina.pdf Descripcin

http://img.redusers.com/imagenes/libros/lpcu173/capitulogratis.pdf

Definicin, Objetivos, Alcance, Metodolog as y Estndares, Etapas, Manera en que se realiza cada una de las fases. Definicin y concepto, Controles en seguridad informtica, Explicacin de cada una de las fases con ejemplo.

6 7 8

9 1 0

Del Penetration Test a la realidad (PDF) Julio C. Ardita http://www.cybsec.com/ES/servicios/cursos/sem_11_1ar.php http://books.expectus.net/dl/Computer.and.Information.Security.Handbook.%20%5BMorgan.K aufmann-2009%5D.pdf http://blogs.eset-la.com/laboratorio/2012/07/24/penetration-test-en-queconsiste/

Fase 2: Exploracion.
Des pues de realizar una bsqueda por algunos sitios Web de diferentes contenidos, nos llamo mas la atencin tratar de entrar a una pagina enfocada a la educacin. Exploramos algunas pginas de escuelas de la localidad y al final elegimos la siguiente:

Detalle del Dominio Nombre de Dominio: Fecha de creacin: Fecha de expiracin: Fecha de ltima modificacin: Registrar Actual Nombre de la empresa: URL: URL del Whois Web: URI del Whois TCP: Contacto Registrante Nombre: Ciudad: Estado: Pas: Contacto Administrativo Nombre: Ciudad: Estado: Pas: Contacto Tcnico Nombre: Ciudad: Estado: Pas: Contacto de Pago Nombre: Ciudad: Estado: Pas: Servidores DNS 1: DNS 2:

cobachih.edu.mx 2004-05-13 2015-05-12 2012-05-16

Akky (Una division de NIC Mexico) http://www.akky.mx http://www.akky.mx/jsf/whois/whois.jsf whois.akky.mx

Direccin General del Colegio de Bachilleres del Estado de Chihuahua Chihuahua Chihuahua Mxico

Luis Aguirre Reyna Chihuahua Chihuahua Mxico

Luis Aguirre Reyna Chihuahua Chihuahua Mxico

Luis Aguirre Reyna Chihuahua Chihuahua Mxico

lobo.cobachih.edu.mx [201.174.40.224]

DNS 3: DNS 4: DNS 5:


Tarea 1. Deteccin de host activos. Verificar qu puertos estn abiertos para poder conocer los servicios que estn activos, para poder encontrar las vulnerabilidades del sistema. Initiating OS detection (try #1) against 201-174-40-222.transtelco.net (201.174.40.222) Retrying OS detection (try #2) against 201-174-40-222.transtelco.net (201.174.40.222) Initiating Traceroute at 16:44 Completed Traceroute at 16:44, 0.14s elapsed Initiating Parallel DNS resolution of 3 hosts. at 16:44 Completed Parallel DNS resolution of 3 hosts. at 16:44, 0.02s elapsed NSE: Script scanning 201.174.40.222. Initiating NSE at 16:44 Completed NSE at 16:44, 1.02s elapsed Nmap scan report for 201-174-40-222.transtelco.net (201.174.40.222) Host is up (0.074s latency). Not shown: 998 filtered ports PORT STATE SERVICE VERSION 80/tcp open http Apache Tomcat/Coyote JSP engine 1.1|_http-methods: No Allow or Public header in OPTIONS response (status code 302)| http-robots.txt: 1 disallowed entry |_/ 541/tcp open osiris osiris host IDS agent Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: WAP Running (JUST GUESSING): Linksys embedded (97%) OS CPE: cpe:/h:linksys:befw11s4 Aggressive OS guesses: Linksys BEFW11S4 WAP (97%) No exact OS matches for host (test conditions non-ideal).

Uptime guess: 8.613 days (since Wed Apr 17 02:01:33 2013) Network Distance: 3 hops TRACEROUTE (using port 80/tcp) HOP RTT ADDRESS 1 95.00 ms 148.210.208.1 2 57.00 ms 148.210.2.2 3 116.00 ms 201-174-40-222.transtelco.net (201.174.40.222) NSE: Script Post-scanning. Read data files from: C:\Program Files\Nmap OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 18.94 seconds Raw packets sent: 2084 (96.428KB) | Rcvd: 45 (2.176KB) Tarea 2. Deteccin y anlisis de servicios activos. Determinar cules servicios se estn utilizando en el puerto que encontramos abierto en la tarea anterior.

Tarea 3. Deteccin remota de Sistemas Operativos. El servidor Web es Apache Tomcat administrado por el sistema operativo Coyote JSP distribuido por Linux. Las herramientas utilizadas para la deteccin de puerto y vulnerabilidades fueron: Nmap-Zmap Acunetix

Fase 3: Intrusion.
Anteriormente se realizaron detecciones de vulnerabilidades a travs de diferentes herramientas de software con las cuales detectamos puntos dbiles en los que posiblemente se pueden realizar ataques de inyeccin SQL, XSS (cross site-scripting) y puertos TCP abiertos. Se encontraron vulnerabilidades de inyeccin SQL y XSS, de stas realizamos un ligero anlisis acerca de la complejidad y tiempo que tomara hacer un ataque de cada una de ellas en el cual llegamos a la conclusin de intentar primero la inyeccin, ya que es ms sencilla y ms rpida de aplicar y en el caso de que funcionara evitaramos la prdida de tiempo con mtodos ms complejos. Se encontr una seccin de login en la cual se har un intento de ataque. Usando una extensin de Firefox llamada Inject se hizo un escaneo de vulnerabilidades de SQL probando una variedad de inyecciones SQL y los resultados fueron los siguientes:

El resultado encerrado en el crculo rojo muestra que se encontraron 34 vulnerabilidades de inyeccin SQL, algunas de estas a continuacin.

Estos son los resultados de las vulnerabilidades de la versin del servidor.

Resultados de vulnerabilidades en la cabecera X-frame options:

Otra razn por la que elegimos SQL es que el objetivo de un penetration testing es conocer las vulnerabilidades y aplicar soluciones. Entrar por SQL puede ser una tarea muy fcil que hasta usuarios inexpertos podran hacerlo por diversin, por esto es importante buscar y aplicar soluciones a este problema. Los otros ataques aunque peligrosos, no los puede hacer cualquier persona y si bien es importante solucionarlos tiene mayor prioridad SQL injection. La inyeccin que se probara es OR 1'='1 en los campos de usuario y contrasea del login que se encuentra en la seccin Intranet. El intento de ataque fue exitoso, se obtuvo acceso a la seccin de intranet como empleado de subdireccin de tecnologas de informacin y comunicaciones, quien tiene acceso a la informacin de la contabilidad de todos los planteles del estado de chihuahua de esta institucin asi como tambin tiene privilegios para modificar y borrar informacin. Es de suma importancia resaltar que este usuario tiene privilegios para ver las transacciones de enormes cantidades de dinero, asi como los presupuestos asignados a cada una de las actividades y los responsables de estas lo cual es informacin delicada. Otro aspecto importante es que este usuario puede cambiar su password desde esta seccin, lo cual es riesgoso ya que un atacante puede entrar y cambiar el password de manera muy fcil y rpida. Existen muchas maneras de prevenir un SQL injection hay funciones de Java y otros lenguajes que son utiles en esta tarea. A continuacin un ejemplo de un cdigo ora prevenir los ataques de SQL injection o etiquetas de HTML, PHP etc. Este pequeo script debe ir arriba de TODOS los archivos php que requieran interaccin del usuario por medio de los metodos POST, GET y REQUEST. Esto, eliminar las etiquetas html que puedan ser ingresadas en los campos de datos y tambien evita las sql-injection. foreach( $_POST as $variable ){ $_POST [ $variable ] = mysql_real_escape_string($variable); $_POST [ $variable ] = str_replace ( array("< ",">","[","]","*","^"), "" , $_POST[ $variable ]); //$variable=$_POST [ $variable ]; //echo "POST:$variable";

} foreach( $_REQUEST as $variable){ $_REQUEST [ $variable ] = mysql_real_escape_string($variable); $_REQUEST [ $variable ] = str_replace ( array("< ",">","[","]","*","^"), "" , $_REQUEST[ $variable ]); //$variable=$_REQUEST [ $variable ]; //echo "REQUEST:$variable"; } foreach( $_GET as $variable){ $_GET [ $variable ] = mysql_real_escape_string($variable); $_GET [ $variable ] = str_replace ( array("< ",">","[","]","*","^"), "" , $_GET[ $variable ]); //$variable=$_GET [ $variable ]; //echo "GET:$variable"; } Bsicamente lo que el script hace es leer variable por variable, de cualquiera de los 3 mtodos y aadir un caracter de escape, \ a cualquier caracter peligroso para mysql, y eliminar etiquetas html y dems. Por ejemplo: El texto: OR= es convertido a \OR=\ \ por lo que pierde efecto. El texto <h1>HOLA</h1> es convertido a h1HOLAh1 por lo que tambin pierde efecto. Con este script nos evitamos tener que proteger todos los campos manualmente uno por uno.

Fase 4: Reporte.
Informacin de dominio

Fingerprinting del servidor web

Existen vulnerabilidades para esta versin de Apache, que se enumeran a continuacin: 1.Para HTTP, el JBoss AS proporciona el HttpAdaptor. En una instalacin predeterminada, el HttpAdaptor no est activado. Sin embargo, la HttpAdaptor JMX invocador est en ejecucin y disponible al pblico en la http://localhost:8080/invoker/JMXInvokerServlet URL. Este invocador acepta solicitudes HTTP POST que contienen una invocacin JMX serializado en la seccin de datos. Despus de la desserializar el objeto se enva al MBean de destino. Gracias a esta funcionalidad a un usuario malintencionado puede invocar el MBean BSHDeployer para crear un archivo local y luego llamar a MainDeployer para desplegar el archivo creado a nivel local. El atacante remoto puede acceder al JMXInvokerServlet HttpAdaptor y desplegar los archivos WAR. 2. En la configuracin predeterminada, despus de instalar JBoss, la consola web est disponible en http://localhost:8080/web-console. La consola Web se puede utilizar para mostrar el rbol JNDI, volcar la lista de temas, volver a desplegar una aplicacin o incluso apagar el servidor de aplicaciones. De forma predeterminada, la consola no est asegurada y puede ser utilizado por un atacante remoto. Verifique las referencias para obtener informacin detallada. El atacante remoto puede acceder al servlet administrador. Estas vulnerabilidades son de la versin 5.5.17 cuando tienen algunas configuraciones por defecto, las siguientes posibles soluciones quizs ya se repararon en el sistema actual, en caso contrario se pueden seguir las recomendaciones.

Solucin: 1. Restringir el acceso a la JMXInvokerServlet HttpAdaptor. 2. Restringir el acceso a la consola de JBoss Web.

Comprobacin de Certificado DigitalSSL/TLS El protocolo HTTPS no se est corriendo en esta aplicacin web por lo que el certificado no est configurado haciendo que los datos se enven de forma insegura. Solucin: Adquirir un certificado SSL y configurar el servidor web para poder usarlo. El certificado SSL dar seguridad a las personas que utilicen e inicien sesin en este sitio web ya que el protocolo SSL encripta los datos que pasan a travs de el usuario y el servidor, brindando confiabilidad, adems de que este certificado brindara la seguridad necesaria de que la informacin llegara al servidor correcto. Autocompletado en formularios URL: http://www.cobachih.edu.mx/cms/portal/intranet.html El autocompletado en los campos de formulario est activado. Lo que es una desventaja, ya que esto permite que una persona que quiera entrar al sistema sin autorizacin utilice un diccionario de contraseas para as lograrlo, ya que cuenta con un elemento muy importante para hacerlo: el usuario, ya que aparece al dar click en este campo.

Solucin: Utiliza este cdigo para no permitir que el navegador guarde nombres de usuario. <INPUT name="user" AUTOCOMPLETE="off"> Este cdigo tiene como funcin desactivar el autocompletado en el campo del usuario. Esto brindara mayor seguridad al login.

Analizando los campos usuario y contrasea Aqu verificamos que no era necesario ingresar un usuario, ya que al ingresar la inyeccin SQL en el campo contrasea se poda tener acceso a la sesin. Esto es algo muy grave y no debe pasar desapercibido, ya que un usuario inexperto podra acceder con mayor facilidad. Solucin:

Se puede hacer uso de los PreparedStatement los cuales pertenecen al paquete java.sql y permiten construir una sentencia SQL precompilada, lo que ayudara a evitar inyecciones SQL. Los PreparedStatement son consultas construidas con el objetivo de pasar parmetros como se indica en el cdigo y no tendrn ningn efecto, por ejemplo si el parmetro se espera como un string, aunque sean comillas simples se tomaran como tal y no tendrn ningn efecto.

//Crear la sentencia SQl preparada PreparedStatement pstmt = conexion.prepareStatement("SELECT * FROM usuarios WHERE nombre = ? AND contrasena=?"); //Pasar parametro 1 pstmt.setString(1, username); //Pasar parametro 2 pstmt.setString(2, pass); //Obtengo el resultado de la consulta ResultSet rs = pstmt.executeQuery(); Comprobando los atributos de las Cookies Se puede mejorar la seguridad de la configuracin de las cookies.

Solucin: Seguro (SSL): Si las cookies transportan informacin confidencial devn estar protegidas con SSL. Este no es realmente el caso en esta cookie. Anteriormente se haba mencionado el uso de SSL. HttpOnly: Es una opcin para evitar introducir cdigo en la cookie. Esta funcin se puede habilitar en todas las aplicaciones web en conf/context.xml: <ContextuseHttpOnly="true"> ... </Context> Expira: Es recomendable poner una fecha de expiracin razonable para la tarea que debera hacer el usuario, ya que muchas veces los usuarios olvidan cerrar sesin, haciendo que quede vulnerable el sitio. Inyeccin SQL La inyeccin que se prob fue 'or'1'='1 en los campos de usuario y contrasea del login que se encuentra en la seccin Intranet. El intento de ataque fue exitoso, se obtuvo acceso a la seccin de intranet como empleado de subdireccin de tecnologas de informacin y comunicaciones, quien tiene acceso a la informacin de la contabilidad de todos los planteles del estado de chihuahua de esta institucin as como tambin tiene privilegios para modificar y borrar informacin. Es de suma importancia resaltar que este usuario tiene privilegios para ver las transacciones de enormes cantidades de dinero, as como los presupuestos asignados a cada una de las actividades y los responsables de estas lo cual es informacin delicada. Es por ello que es necesario tomar las medidas correctas para evitar que se ejecute una inyeccin SQL, ya que muchas veces es la primera opcin para intentar entrar a un sistema, y es tan fcil de ejecutar que una persona inexperta podra llevarla a cabo, haciendo mal uso de toda la informacin que este sitio contiene, que por lo que pudimos observar no es poca cosa.

Otro aspecto importante es que este usuario puede cambiar su password desde esta seccin, lo cual es riesgoso ya que un atacante puede entrar y cambiar el password de manera muy fcil y rpida, negndole as el acceso a la persona que haga uso de esta sesin, y pudiendo realizar modificaciones al sistema.

Estos son algunos de los detalles que hemos podido extraer de la aplicacin:

Como mencionamos anteriormente son algunas de las cosas a las cuales tuvimos acceso, ya que prcticamente pudimos entrar a todas las pestaas que contena el sistema, teniendo la opcin de realizar modificaciones, borrar, agregar etc. Pudimos ver lista de proveedores, de mobiliario, de rdenes etc. Solucin: Se puede hacer uso de los PreparedStatement los cuales pertenecen al paquete java.sql y permiten construir una sentencia SQL precompilada, lo que ayudara a evitar inyecciones SQL. Los PreparedStatement son consultas construidas con el objetivo de pasar parmetros como se indica en el cdigo y no tendrn ningn efecto, por ejemplo si el parmetro se espera como un string, aunque sean comillas simples se tomaran como tal y no tendrn ningn efecto.

//Crear la sentencia SQl preparada PreparedStatement pstmt = conexion.prepareStatement("SELECT * FROM usuarios WHERE nombre = ? AND contrasena=?"); //Pasar parametro 1 pstmt.setString(1, username); //Pasar parametro 2 pstmt.setString(2, pass); //Obtengo el resultado de la consulta ResultSet rs = pstmt.executeQuery(); Conclusin. En vista de los resultados obtenidos podemos observar que es de vital importancia hacer este tipo de pruebas como desarrolladores web, ya que as como hay ataques que necesitan de mucha experiencia existen tambin otros que los podra hacer cualquiera. No solo al momento del desarrollo se debe cuidar este aspecto, la seguridad nunca ser 100% efectiva mucho menos si no se le da continuidad. Existen muchas herramientas de las diferentes plataformas de desarrollo que podemos aprovechar, lo peor que se puede hacer es descuidar el aspecto de seguridad por que puede implicar desde prdidas leves en la empresa, hasta la seguridad e integridad de una persona.

También podría gustarte