Upload
alain-pena
View
1.669
Download
7
Embed Size (px)
DESCRIPTION
Información de sitios web mediante el empleo de herramientas para crear una auditoría de seguridad informática.
Citation preview
Auditoría de Seguridad SEGAL
08/11/2012
2
ÍNDICE:
Entorno:……………………………………………………………………………..………………………………………3
Introducción:………………………………………………………………………………………………………………4
WebScarab:………………………………………………………………………………………………………………..5
Instalación:…….…………………………………………………………………………………………………6
Utilización:……………………………………………………………………………………………….……….7
Nessus:…………………..……………………………………………………………………………………………..…..8
Instalación:…….…………………………………………………………………………………………….…..9
Utilización:……………………………………………………………………………………………………….………..10
Wireshark:…………………………………………………………………………………………………….…………..11
Instalación:…….…………………………………………………………………………………….…………12
Utilización:………………………………………………………………………………………………………13
Nmap:……………….………………………………………………………………………………………….…………..15
Instalación:…….…………………………………………………………………………………….…………16
Utilización:………………………………………………………………………………………………………17
Detección, comprobación y evaluación de vulnerabilidades……………………………………….18
Web Elegida:….…………………………………………………………………………………………..………………20
3
ENTORNO
El empleo de las herramientas se
desarrollará en diversos entornos como
pueden ser Windows y Linux que son
con los que habitualmente trabajamos y
los más extendidos sin tener en cuenta
los sistemas operativos de Apple.
La máquina Windows en la que
trabajamos es un Sistema Operativo de
64 bits, dispone de un procesador Intel
Core i3 a 2.4 GHz y dispone una
memoria RAM de 4.00Gb.
El sistema operativo es una versión
estable; por lo que en un principio a la
hora de instalar las herramientas no debería de dar ninguna clase de problema.
Sin embargo, hay muchas de las herramientas que mencionamos más adelante que no
están disponibles para entornos Windows y por lo tanto su instalación se llevará a
cabo en máquinas Linux.
Así pues, las máquinas Linux de las que disponemos son máquinas virtuales
construidas en el sistema operativo Windows nombrado unas líneas atrás. La
distribución de Linux empleada es la denominada Debian. Es una distribución que
carece de entorno gráfico y que por lo tanto consume menos recursos de nuestra
máquina real.
No obstante, nuestra máquina
virtual dispone de una memoria
RAM de 512Mb, un procesador
virtual que adquiere parte del
físico sin consumir demasiado y un
disco duro de 8GB (suficiente para
trabajar con nuestras
herramientas).
Por lo tanto, podemos decir que
disponemos de una máquina real Windows y una máquina virtual Debian en la que
llevaremos a cabo todas las instalaciones de las herramientas de seguridad. Aunque,
sin embargo, la mayor parte de las herramientas las instalaremos en Windows en lugar
de Linux.
4
INTRODUCCIÓN
El presente documento trata sobre una auditoría de
seguridad. Dicho documento contendrá un análisis de
seguridad sobre una página web específica con la resolución
de posibles fallos y errores con las herramientas
introducidas en un documento PDF ofrecido en clase.
Las auditorías de seguridad informática nos dejan conocer
en el momento de su realización cuál es la situación exacta
en cuanto a la protección, medidas y control de un sistema
informático.
Estas herramientas procederán a darnos una solución a los
problemas de la página web elegida así como un exhausto
análisis de seguridad el cual adjuntaremos en este
documento. No obstante, se adjuntarán los pasos necesarios para la correcta instalación de las
herramientas elegidas y el procedimiento sobre cómo utilizarlas.
Así pues, las herramientas empleadas serán un total de entre 5 y 10. Entre de las cuales
podríamos destacar Nessus, WebScarab, Nmap y Rkhunter, entre otras.
La decisión acerca de la instalación de las herramientas sobre una máquina Windows en lugar
de una con entorno GNU/Linux es muy simple de explicar. Podría empezar diciendo que la
interfaz gráfica de Windows requiere menos complejidad y desgraciada o afortunadamente
(depende de la persona) menos conocimientos acerca del sistema operativo en cuestión.
Sin embargo, las instalaciones posibles las vamos a realizar en entornos Windows ya que así
nos privamos de encender una máquina virtual Linux después de encender la máquina real
Windows. Sobre todo es por comodidad, aunque en la instalación de las aplicaciones o
herramientas, se explicará cómo instalarlo en cualquiera de las dos máquinas por lo que si
alguien quisiera realizarlo en una máquina con sistema operativo Linux podría hacerlo
perfectamente.
La intención ha sido desde un primer momento instalar al menos 5 herramientas de detección
de vulnerabilidades, pero el tiempo aprieta y nos hemos visto acorralados por él. Es por ello
que en este documento solamente se explicará la instalación y utilización de tres de las
herramientas aunque en un principio en el índice hubiera puesto 5 al menos. Dichas
herramientas de evaluación de vulnerabilidades serán las más importantes: Nessus,
WebScarab y Nmap.
5
WebScarab
WebScarab es una herramienta basada en java que
permite analizar las conexiones HTTP y HTTPS que se
realicen en una red.
Podríamos hacer una comparación con las
funcionalidades que ofrecen diversos sniffers como
es el caso de Whireshark, con la única diferencia de
que en WebScarab analiza el tráfico de internet,
como hemos mencionado anteriormente, HTTP y
HTTPS, mientras que los sniffers son bastante más
completos analizando más que solo el tráfico de la
red.
Esta herramienta de testeo web, actúa como un proxy que intercepta al navegador web, y con
ello las peticiones que hace, así como las respuestas que devuelve. Como hemos visto durante
el curso, un proxy es una máquina que se sitúa entre dos ordenadores con la finalidad de que
el ordenador de destino no sepa el origen del mensaje por diversos motivos como seguridad o
anonimato.
6
INSTALACIÓN
La instalación de esta herramienta se puede realizar tanto en sistemas operativos Linux como
en Windows. La que procederemos a explicar es en torno a un sistema operativo Windows.
1- Visitar http://sourceforge.net/projects/owasp/files/WebScarab/
2- Pinchamos en donde pone: 20070504-1631
3- Seleccionamos: webscarab-installer-20070504-1631.jar y descargamos el instalador
en java.
4- Doble clic. Seguimos los pasos.
NOTA: Si no tenemos Java instalado podemos instalarlo entrando a:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-
1859576.html y seleccionamos el “jdk” que nos convenga. Seguimos los pasos de la
instalación.
La instalación en Linux presenta una similitud con la instalación realizada en Windows ya que,
como es una herramienta basada en java; necesitaremos disponer de Java en nuestro sistema
operativo. A continuación procedemos a la instalación de WebScarab en Linux:
1- Vamos a la página oficial de descarga:
http://sourceforge.net/projects/owasp/files/WebScarab/20070504-1631/
2- Descargamos la el archivo con extensión .jar
3- Pasamos nuestro fichero “.jar” a la máquina Linux correspondiente y lo dejamos en un
directorio como por ejemplo /home/alain mediante la utilización de WinSCP.
4- Ejecutamos el siguiente comando dentro de /home/alain:
“java -jar ./webscarab-installer-20070504-1631.jar”
***NOTA***
Probablemente nos dé un fallo con el proxy. Para ello deberemos ir a opciones de internet de
nuestro navegador y cambiar la configuración del proxy por la siguiente:
Proxy HTTP: localhost:8008 Proxy SSL: localhost:8008
7
UTILIZACIÓN
Bien, ahora que sabemos para qué se utiliza y cómo se instala WebScarab, necesitaremos
aprender cómo utilizar esta herramienta. Para empezar a utilizar esta herramienta deberemos
iniciarla con un doble clic en Windows y se nos abrirá la interfaz de WebScarab.
Para empezar a interceptar los paquetes HTTP y HTTPS deberemos configurar dicha
herramienta como proxy. Para ello deberemos ir a nuestro navegador (Internet Exporer),
pinchamos en herramientas, opciones de internet; nos situamos en la pestaña denominada
conexiones y en configuración de LAN seleccionamos “Usar un Proxy para la LAN”.
Introducimos localhost y el puerto 8008.
Con estas opciones lo que hacemos es que toda la información que reciba o envíe nuestra
máquina tenga que pasar obligatoriamente por el proxy, que en este caso es WebScarab.
Una vez tengamos esas opciones configuradas correctamente para una buena utilización de la
herramienta deberemos abrir las páginas que queramos y mientras vamos navegando por las
páginas, automáticamente la herramienta mostrará el tráfico que estemos generando así
como darnos la opción de seguir adelante, cancelar la operación o abortar todo.
Una vez paremos de navegar por la red, WebSacarab para automáticamente.
8
NESSUS
Nessus es una herramienta que investiga las direcciones web que le demos nosotros y hace
una evaluación de dicha página web.
Esta herramienta es una de las herramientas
más famosas en torno a los sistemas operativos
Linux, entre las que analizan y evalúan
vulnerabilidades.
Podríamos decir que Nessus se divide en
“nessusd” (demonio que realiza el escaneo) y
“nessus” (cliente que muestra al usuario el
estado de los escaneos y el avance del análisis).
Si se desea, los escaneos pueden ser extraídos
en diversos formatos.
Adjuntaremos uno de estos documentos sobre
la analítica de la página web escogida para la
realización de este trabajo.
9
INSTALACIÓN
Como hemos comentado anteriormente, Nessus es una herramienta disponible para sistemas
operativos Linux, y por lo tanto la instalación se deberá realizar en una de las muchas
distribuciones que existen para este entorno.
Nuestra máquina elegida ha sido Debian, máquina que utilizamos para trabajar diariamente en
clase.
NOTA: La instalación se llevará a cabo en una máquina virtual que no dispone de entorno
gráfico y que por lo tanto se realizará mediante el uso de comandos. La instalación se realizará
como root.
1- Entramos a nuestra máquina y nos ponemos como root para realizar la instalación.
2- ***Tecleamos: “apt-get install nessus nessusd”***
3- Tecleamos: “nessus-adduser” para crear un nuevo usuario para Nessus.
4- Ponemos en marcha el servidor: “nessusd”
***NOTA***
Nessus instala el cliente mientras que nessusd instala el servidor. Quizás se diese el caso de
querer instalar únicamente el servidor (o el cliente) por lo que no es estrictamente necesario
escribir la forma de instalación tal y como hemos mencionado, sino que podríamos poner para
instalar únicamente el cliente: “apt-get install nessus” y para instalar el servidor “apt-get
install nessusd”.
Lo que sí es importante y 100% esencial es la necesidad de disponer de los dos paquetes de
instalación para poder utilizar adecuadamente esta herramienta. Dicho esto, pasemos a ver el
modo de utilización.
10
UTILIZACIÓN
Esta herramienta de testeo de webs, es muy sencilla e intuitiva a la hora de utilizarla. Una vez
tengamos instalado Nessus en Linux como servidor; nuestra máquina Windows hará las veces
de cliente por lo que para que podamos conectarnos perfectamente al servidor de Nessus
deberemos hacer lo siguiente:
1- Nos desplazamos hasta la barra de direcciones de nuestro navegador web y en ella
introducimos la dirección ip de nuestra máquina virtual Linux seguida de dos puntos
8834.
Lo que hacemos con esto es especificar al navegador a qué puerto tiene que
conectarse para hacer una conexión exitosa con Nessus. Un ejemplo sería el siguiente:
192.168.1.20:8834
En el ejemplo podemos apreciar nuestra dirección ip de la máquina Linux seguida de
los dos puntos más el 8834 comentados anteriormente.
2- Como el servidor requiere de una conexión segura, antes de la dirección ip deberemos
poner https:// quedando nuestra barra de direcciones de la siguiente forma:
https://192.168.1.20:8834.
3- Una vez dentro de Nessus, seguramente nos aparezca un mensaje diciéndonos que no
estamos utilizando una conexión segura. Ignoramos el mensaje y seguimos hacia
adelante.
4- Una vez dentro, nos solicitará un usuario y una contraseña. En este apartado
deberemos introducir el usuario con el cuál estemos trabajando en Linux esté
lanzando el servidor, seguido de su contraseña.
5- Ya dentro de la aplicación, para lanzar un análisis de una página web cualquiera lo que
deberemos hacer es pinchar en la pestaña que dice “Scans”. Pinchamos en “add”.
Introducimos un nombre, el tipo lo dejamos en “run now” para que se ejecute el
análisis ahora mismo, en la política seleccionamos “web app tests” y en las etiquetas
ponemos la dirección de la página web a testear mismamente.
6- Se lanzará el escaneo de la página web elegida. Esperaremos hasta que termine el
escaneo y finalmente dispondremos de los fallos y errores acerca de esa página en
concreto. O quizás no.
11
WireShark
Wireshark es una herramienta de las denominadas
sniffers.
Wireshark es una herramienta muy similar a la que
hemos explicado anteriormente (WebScarab); sin
embargo, Wireshark permite analizar el tráfico
completo de una red mientras que WebScarab
únicamente analiza los protocolos HTTP y HTTPS.
Generalmente, estas herramientas son utilizadas para
el análisis de protocolos y solucionar problemas en
redes de comunicaciones.
Para capturar paquetes directamente de la red, es
necesario tener permisos elevados, como por ejemplo ser administrador en Windows o
ejecutarlo como súper usuario en Linux.
Esta herramienta es un software libre y se puede instalar en una gran cantidad de sistemas
operativos Unix como por ejemplo Linux, Solaris y FreeBSD entre otros.
No obstante, esta herramienta también está disponible para sistemas operativos Windows así
como Mac OS X.
12
INSTALACIÓN
La instalación de Wireshark en sistemas operativos Windows es muy sencillo; es básicamente
como cualquier otra instalación en Windows por lo que:
1- Vamos a la web oficial de Wireshark: http://www.wireshark.org/
2- Download Wireshark y seleccionamos Windows Installer. Dependiendo del
sistema, puede ser de 64 o de 32 bits. Como ya hemos explicado al principio,
nuestro sistema es de 64 bits por lo que elegiremos el instalador de 64 bits.
3- Seguimos los pasos indicados en el asistente de instalación e instalamos sin
problemas.
La instalación en Linux puede ser, quizás un poco más compleja ya que se necesita al menos un
limitado conocimiento acerca de los comandos de este sistema. Sin embargo, los pasos a
seguir para su instalación dentro de nuestra máquina virtual son muy sencillos. Para su
correcta instalación:
1- Nos ponemos como root. Para ello: “su”.
2- Una vez estemos como root. Escribimos lo siguiente: “apt-get install wireshark”.
3- Instalación finalizada.
13
UTILIZACION
El primer paso a la hora de utilizar Wireshark es seleccionar nuestra tarjeta de red que está
conectada y darle a “start”.
La herramienta empezará a analizar todo el tráfico de la red, y cuando digo todo, me refiero a
TODO. Paquetes, peticiones, protocolos… Para analizar un protocolo en concreto como puede
ser HTTP o HTTPS, mientras está lanzado el escaneo o testeo de la red (o cuando ya haya
terminado de escanear la red) podremos introducir dentro del cuadro de búsqueda la palabra
clave HTTP y la aplicación nos ofrecerá todo el tráfico HTTP que se haya producido o se esté
produciendo en nuestra red.
Si un ordenador está dentro de nuestra red, podemos analizar todo lo que está enviando y
recibiendo así como las direcciones de las que provienen las respuestas.
Esta herramienta está orientada sobre todo a los administradores de una empresa que quieran
controlar el tráfico de la red. Sin embargo también es muy peligroso para una empresa ya que
todo el tráfico de esa empresa viaja por la red sin ninguna clase de cifrado por lo que cualquier
persona que se haya podido conectar a la red de la empresa y tenga un sniffer, podría ver toda
la información que envían y reciben los ordenadores de la empresa.
Cuando está capturando el tráfico de la red podemos apreciar una serie de columnas. Dichas
columnas son:
- No.: muestra la posición en la que se realizó esa petición.
- Time: el tiempo que le ha llevado.
- Source: la dirección ip de la que proviene.
- Destination: la dirección a la que se dirige.
- Protocol: El protocolo que ha sido utilizado.
- Lenght: Longitud del tráfico.
- Info: información sobre la respuesta.
Finalmente, para parar la herramienta deberemos clicar en que se sitúa arriba a la
izquierda junto con las opciones de “listar las interfaces disponibles”, “mostrar las opciones
capturadas”, “comenzar una captura nueva” y “reiniciar la captura”.
14
15
Nmap
Esta herramienta se utiliza para descubrir servicios y servidores y para saber qué grado de
seguridad dispone un sistema informático. Nmap tiene más posibilidades que simplemente la
de descubrir servicios y servidores; entre
sus características podemos destacar:
- Descubrimiento de servidores.
- Identificación de puertos
abiertos.
- Sabe los servicios que esté
ejecutando el ordenador.
- Sabe que sistema operativo y
versión está utilizando el
ordenador.
- Puede adquirir características
hardware limitadas sobre la
máquina que estemos
analizando.
Esta herramienta la podemos utilizar tanto en sistemas operativos GNU/Linux así como en
sistemas operativos Windows.
Nmap será instalado en este caso en una máquina Windows ya que resulta, quizás, menos
engorroso y más sencillo.
16
INSTALACIÓN
Para realizar una correcta instalación seguiremos los pasos a continuación. Como hemos dicho
en la página anterior se llevará a cabo en una máquina Windows, sin embargo también la
podremos realizar en una maquina GNU/Linux sin ningún problema.
1- Descargamos el ejecutable desde la web oficial de Nmap:
http://nmap.org/download.html
2- Ejecutamos el archivo descargado.
3- Seguimos los pasos de la instalación.
4- Finalmente nos dirá el asistente si queremos crear un acceso directo en el escritorio y
en el menú de inicio.
5- Ejecutamos la aplicación instalada.
17
UTILIZACIÓN
Para empezar a utilizar Nmap tenemos que abrir la aplicación con un doble clic. A
continuación:
1- Introducimos la web que deseemos escanear en el lugar denominado “Target”.
2- Pinchamos en “Scan”.
3- Empezará el escaneo de la página web introducida.
18
EVALUACIÓN DE VULNERABILIDADES.
Para analizar la página web utilizamos las herramientas anteriormente explicadas aunque
WireShark no nos sirviera realmente para analizar la página web. Por lo tanto, las herramientas
que utilizamos han sido Nmap y Nessus ya que WebScarab hace las veces de WireShark.
Así pues, las vulnerabilidades obtenidas con la herramienta Nessus fueron de lo más variadas y
variopintas. Nessus dio una serie de vulnerabilidades de distintos grados. Obtuvimos una
amenaza crítica, tres altas, cinco medias… Aunque la mayor parte de la web estaba bien
segura.
Analizando el informe que nos dio Nessus la vulnerabilidad crítica consistía en que no disponía
de una versión soportada por el lenguaje de programación. La solución que obtenemos por
parte de Nessus es actualizar la versión de PHP que está instalada.
De las vulnerabilidades críticas pasamos a las altas. En las altas podemos encontrar tres
bloques distintos; sin embargo, aunque estos bloques Nessus los procese por separado no
vienen a decir más que la versión de PHP está un poco desfasada y por lo tanto se describen
los posibles ataques que se pueden llevar a cabo contra esta web.
De entre estos ataques podemos destacar la posibilidad de atacar dicha página web mediante el uso de consumo de la memoria, fallo repentino a causa de varias funcionalidades, exif.c permite el ataque a la web a través del uso de la memoria de forma arbitraria. El servidor remoto es vulnerable a inyección a HTML por medio de los puertos abiertos que hemos analizado con Nmap. No obstante, aunque los puertos los analice de una forma más extendida esta aplicación, con Nessus también podemos obtener una descripción bastante bien detallada. Así pues, seguiremos analizando las vulnerabilidades que nos ha mostrado Nessus y más adelante pasaremos a analizar los puertos de una forma más exhaustiva con la herramienta Nmap. La inyección por medio de SQL también se hace presente dentro de las vulnerabilidades altas; más concretamente, Nessus nos dice que cuando ha intentado importar una serie de variables, ha dado una clase de error y que al estar SQL débil, es más sencillo atacar mediante inyección SQL. Nessus nos dice también que a causa de un error con “sapi/cgi/cgi_main.c” un atacante podría obtener el código de origen de PHP desde el servidor web. La solución que nos da Nessus es actualizar PHP a su última versión. Una vez hemos analizado ya las vulnerabilidades altas y las vulnerabilidades críticas, pasemos a analizar las vulnerabilidades que se encuentran en el medio del análisis y que aunque no sean muy importantes conviene mantenerlas al día y bien actualizadas. Una de estas vulnerabilidades hace referencia a XSS; más concretamente que un atacante podría utilizar mediante HTML y scripts el navegador de un usuario. La solución a este fallo es actualizar o contactar con el desarrollador de ese software si la amenaza sigue persistiendo.
19
Un atacante podría también usar un software java malicioso para dañar la página ya que los scripts CGI fallan a la hora de utilizar un JavaScript malicioso. También nos muestra una vulnerabilidad con respecto a las inyecciones IFRAME. Para solucionar estas dos incidencias lo que deberíamos hacer es restringir el acceso a aplicaciones vulnerables (o que provengan de sitios sin certificación, es decir, que no sean de confianza), actualizar o contactar con el vendedor. PHP está configurado en el servidor remoto de tal forma que un atacante podría hacerse con mucha información sensible gracias al empleo de una URL (o varias) en concreto. Como por ejemplo el desencadenamiento de URLS o la utilización de los Huevos de Pascua construidos en PHP. Podemos hacer frente a este problema accediendo a la configuración de PHP y en “php.ini”, en “expose_php” lo deberíamos de poner en “off”. Para que los cambios surjan efecto deberemos reiniciar la red. Con la finalidad de evitar bugs, existen tutoriales a disposición de la gente que los solicite que dicen que tienes que llamar a la función PHP “phpinfo()”. Con esto lo que se hace es que, accediendo por ejemplo a un archivo de los que este tutorial presenta, un atacante puede descubrir un montón de información sobre el servidor web remoto. Por ejemplo: el usuario que instaló PHP y si es administrador o no, la dirección IP del host, la versión del sistema operativo, la versión del servidor web e información acerca de la instalación remota de PHP. Para poder solucionar lo anteriormente descrito, debemos eliminar lo mencionado. La última vulnerabilidad de grado medio está relacionada con el uso de JavaScript que es exactamente lo mismo que hemos comentado unos párrafos más arriba. La solución al JavaScript malicioso es contactar con el proveedor para un parche o actualizar la versión. Con esta última vulnerabilidad terminamos las amenazas críticas, altas y medias; también existen aquellas vulnerabilidades que son de menor grado pero que sin embargo no vamos a hacer mayor hincapié ya que no son maliciosas ni dañinas en absoluto para el sistema. En cuanto a la detección de puertos mediante la herramienta Nmap no podemos sacar gran cosa. Esta herramienta nos dice que la página web tiene un puerto cerrado y otro puerto abierto; estos puertos son el 80 y el 443, que hacen referencia a http y https respectivamente. El puerto que nos dice que está cerrado es el 443, es decir, la conexión https. Por lo tanto será improbable llegar a hacer una conexión segura por medio de este puerto ya que no está disponible. Por otro lado el puerto que está abierto es el correspondiente a http, es decir, el puerto 80. A través de este puerto podremos conectarnos a la web que a continuación describiremos. La conclusión a la que podemos llegar teniendo en cuenta todas las herramientas que hemos utilizado es que la web presenta una serie de vulnerabilidades a través de las cuales podemos llegar a interferir en el funcionamiento del servidor. Para solucionar el problema de las vulnerabilidades deberemos actualizar las versiones en las cuales nos ha dado error o alguna clase de problemas. No obstante, aunque las herramientas nos hayan dado esta serie de errores, la web puede funcionar perfectamente aunque con el riesgo correspondiente que hemos descrito anteriormente.
20
WEB ELEGIDA
La web que se ha elegido ha sido
http://markosweb.com ya que presentan las
vulnerabilidades que a continuación se muestran.
Así pues, podemos destacar una serie de
vulnerabilidades muy perjudiciales para la
seguridad de dicha web como por ejemplo
vulnerabilidades críticas y altas relacionadas con
el uso del PHP y otras tantas de grado medio.
Aunque no sea relevante, y apenas proceda con la
evaluación; esta web ofrece una serie de servicios
más o menos informáticos como por ejemplo la
puntación SEO, monitoreo de sitios web, análisis
de los progresos del sitio, detectar secretos web y
tendencias ocultas, supervisión del rendimiento,
sitio seguro contra phising y malware y una
supervisión de la salud global del sitio web en
cuestión.