Unidad 1 Tarea 3

Practica de Criptografía

Esta práctica consiste en enviar un mensaje de texto cifrado con el sistema OpenPGP a un compañero del curso y que él lo descifre. Después repetimos el proceso al revés, el lo cifra y nosotros lo desciframos.

En primer lugar vamos a ver (a grandes rasgos) como funciona el sistema de cifrado OpenPGP ya que (al menos para mí) es un poco enrevesado…

Partimos de que tenemos 2 personas que quieren intercambiar una información a través de un mensaje cifrado, son el EMISOR y el RECEPTOR.

Estas dos personas utilizaran un sistema de cifrado OpenPGP, así que ambos, EMISOR y RECEPTOR deberán utilizar alguna aplicación basada en este sistema, por ejemplo Gpg4win.

Lo primero que tienen que hacer es crear su CLAVE. Esta clave en realidad son 2 claves, la CLAVE PRIVADA y la CLAVE PÚBLICA. La Clave Privada se guarda en nuestro ordenador y queda protegida por contraseña (es importante que nadie tenga acceso a ella) y la Clave Publica es la que compartiremos con otras personas (no hay peligro en que cualquiera tenga acceso a esta clave) por el medio que queramos (e-mail, pendrive, servidor de claves…).

Ahora el EMISOR tiene que ENCRIPTAR el mensaje para un RECEPTOR especifico y para ello necesita importar la Clave Publica del RECPTOR y con ella CIFRAR el mensaje y enviárselo.

Cuando el RECPTOR recibe el mensaje (que recordemos ha sido cifrado expresamente para él) tendrá que descifrarlo y para ello se utiliza su propia CLAVE PRIVADA.

Resumiendo, la CLAVE PUBLICA sirve para que otros puedan encriptar mensajes para nosotros y la CLAVE PRIVADA para que podamos desencriptar los mensajes que han encriptado para nosotros. Por supuesto, las claves pública y privada están relacionadas entre sí (la pública se genera aleatoriamente en función de los movimientos de ratón y/o teclas pulsadas) pero en la práctica resulta imposible obtener la Privada a través de la Publica.

Para esta práctica de Criptografía vamos a trabajar con el estándar OpenPGP (Versión libre de “Pretty Good Privacy”). Vamos a hacer la práctica con un sistema Windows 7, así que me descargo e instalo el programa Gpg4win en su versión 2.2.6.

Creando nuestro Certificado

Lo primero que tenemos que hacer es crear un Clave de Cifrado propia, para ello ejecutaremos la interface grafica Kleopatra.

Cripto01

Seleccionaremos un tipo de Certificado OpenPGP por no requerir de la validación por parte de un tercero y ser más rápido y cómodo, pero teniendo en cuenta que si queremos enviar un e-mail que cumpla con el estándar S/MIME tendremos que elegir un Certificado de tipo X.509 que requerirá de la validación por parte de alguna entidad certificadora.

Vamos a File, New Certificate e introducimos nuestros datos:

Cripto02

Y en Advanced Settings seleccionamos la longitud de la Clave, que por seguridad no debe ser inferior a 2048 bits, pero teniendo en cuenta que cuanto más grande sea ese valor más tiempo de computación se requerirá para desencriptar. Además especificaremos que el certificado se usará tanto para Firmar como para Encriptar e indicaremos la fecha de caducidad del Certificado. Podemos darle 2 años de plazo y cuando se cumplan valoraremos si los avances en criptografía y en computación hacen necesario crear una nueva clave adaptada a los nuevos avances o si por el contrario sigue siendo segura y podemos prolongar su uso.

Cripto03

Con estos datos ya se puede crear nuestro certificado que nos aparecerá dentro del apartado My Certificates. 

Cripto04

Ahora que ya tenemos nuestro certificado seremos capaces de encriptar un archivo y desencriptarlo. Sin embargo lo habitual es que necesitemos encriptar un archivo para otra persona y para ello necesitamos importar su certificado (en este caso nos referimos únicamente a su Clave Publica). Para esto, la otra persona nos puede facilitar su certificado por e-mail o con un pendrive por ejemplo, pero también podemos utilizar servidores dedicados a tal fin (intercambio de certificados). Para esto debemos configurar Kleopatra (Settings, Configure Kleopatra) ahora pulsamos el botón New y aparecera el servidor por defecto. Pulsamos Apply y Ok. 

Cripto05

Ahora ya podemos tanto importar como exportar certificados desde/a este servidor.

En primer lugar voy a exportar mi certificado para que mi compañero de práctica pueda importarlo. Para ello vamos a la pestaña de My Certificates y con el botón derecho del ratón sobre nuestro certificado seleccionamos la opción Export Certificates To Server y después Continue.

Podemos comprobar que nuestro certificado esta ahora disponible haciendo: File, Lookup Certificates on Server y buscando ahí nuestro nombre.

Por otro lado me descargo (Importo) el certificado de mi compañera de práctica. Para ello voy a File, Lookup Cerificates on Server y busco por su nombre y cuando lo encontremos lo seleccionamos y pulsamos Importar.

Cripto14

Ahora su certificado debería aparecernos bajo la pestaña Imported Certificates.

Cripto15

En primer lugar voy a hacer el papel de EMISOR del mensaje.

Creo un archivo de texto, por ejemplo con el Word y lo guardo.

Ahora vamos a proceder a firmar digitalmente y encriptar el archivo Word que hemos creado. Para ello vamos a File, Sign/Encrypt Files y seleccionamos el archivo. Ahora nos aparecerá una pantalla con distintas opciones. En este caso seleccionamos la opción de Sign and Encrypt y la de Text Output (ASCII Armor) para que vaya en texto plano y el receptor no tenga problemas para abrirlo aunque no tenga el mismo software que yo he utilizado para crearlo. Pulsamos Next.

Cripto06

Ahora nos toca seleccionar el certificado de la persona (o personas) a la que vamos a enviar el archivo. Seleccionamos su certificado y pulsamos el botón Add para añadirlo a la lista de destinatarios y pulsamos Next. 

Cripto16

Ahora seleccionamos con cual de nuestros certificados queremos firmar el archivo y pulsamos Sign & Encrypt.

Cripto09

Por supuesto se nos pedirá la clave con la que protegemos nuestro certificado para evitar que alguien desde nuestro ordenador pueda firmar sin nuestro permiso. 

Cripto10

Si todo ha ido bien nos aparecerá una ventana informativa como esta.

Cripto11

Podremos comprobar que en la carpeta en la que se ubica el archivo original ahora hay un nuevo archivo con el mismo nombre más la extensión .asc. Se trata de nuestro archivo encriptado.

Cripto07

Ahora no tenemos más que hacer llegar el archivo .asc a nuestro compañero de prácticas (por ejemplo por e-mail) y esperar a que nos indique que ha podido desencriptar y confirmar nuestra autoría en el archivo recibido. 

Ahora voy a hacer el papel de RECEPTOR del mensaje. 

En primer lugar recibiré un archivo encriptado por parte de mi compañero de práctica y lo guardaré en mi disco duro.

Para desencriptarlo y confirmar su autoría vamos a File, Decrypt/Verify Files y selecciono el archivo a desencriptar. Ahora aparecerá una pantalla con varias opciones, de aquí lo que nos interesa es la opción Output Folder, aquí indicaremos la carpeta en la queremos que se guarde el archivo ya desencriptado. Pulsamos el botón Decrypt/Verify y nos pedirá la clave que protege nuestro certificado.

Cripto18

Si todo ha ido bien nos saldrá una pantalla informando que se ha desencriptado el archivo y quien es su autor.

En el caso de mi practica el archivo que me envió mi compañera venía sin firmar por eso el mensaje final únicamente decía que el archivo había sido desencriptado.

Cripto19

Si el archivo hubiera estado firmado el mensaje hubiera sido algo así:

Cripto13

Y si vamos a la carpeta que hemos seleccionado veremos que hay un archivo con el mismo nombre que el que nos han enviado pero sin la extensión .asc y que podemos abrir sin problema.

Este era el archivo:

Cripto20

Con estoy doy la práctica por finalizada.

Gracias a mi compañera de practica Inmaculada Rodriguez.

Unidad 1 Tarea 3

Unidad 1 Tarea 2

En esta segunda Tarea del Curso de Hacking Ético voy a presentar tres sitios web que me parecen relevantes sobre la temática Hacking:

Un Informático del lado del Mal es una web gestionada por el conocido hacker Chema Alonso en la que va publicando periódicamente artículos relacionados con el mundo de la seguridad informática, cursos, conferencias, casos prácticos, publicaciones… un poco de todo. Ademas de por la web se puede seguir a traves de Facebook, Twiter o una lista de correo que es como lo sigo yo.

Una al día esta gestionado por la empresa de seguridad informática Hispasec y todos los días publica alguna noticia relacionada con la seguridad informática, principalmente alerta sobre los nuevos agujeros de seguridad que van apareciendo así como los parches que salen para los distintos programas y sistemas operativos. Puede ser muy util para un administrador de sistemas de cara a conocer las nuevas vulnerabilidades de su sistema y para estar preparado de cara a nuevas actualizaciones de sofware que a veces pueden llegar en el peor momento.

Por último, Portal Hacker es una web en formato Foro con diversos apartados en el que se reúne la comunidad hacker para comentar, preguntar dudas, compartir material, tutoriáles, etc.

Con esto doy por finalizada la Tarea 2 de la Unidad 2.

Unidad 1 Tarea 2

Unidad 1 Tarea 1

Herramientas Básicas para obtener información de servidores externos.

El primer paso a la hora de realizar una auditoria de seguridad es conocer el terreno en el que nos vamos a mover. Necesitamos recopilar toda la información posible sobre el sistema que queremos “atacar” para saber cuales son bugs o agujeros de seguridad que pueden afectar a los distintos elementos del sistema. Es interesante conocer cosas como la direccion IP, los servicios (puertos abiertos), el Sistema Oparativo o los programas que estan instalados.

Algunas de las herramientas básicas que nos pueden ayudar en el proceso de recabar información son:

En esta Tarea vamos a utilizar estas herramientas. Veamos como funcionan.

PING

El ping es una herramienta que nos permite comprobar si hay conectividad entre 2 nodos. El primer nodo, al ejecutar el ping envía un paquete de datos al segundo nodo y si hay conectividad entre ambos el segundo nodo debería recibir el paquete y devolverlo. De esta forma si el nodo 1 recibe el paquete de vuelta tenemos la seguridad de que el nodo 2 se encuentra activo y ademas existe conectividad entre los nodos.

En caso de no recibir respuesta esto se podría deber a:

  • El nodo 2 esta caído.
  • No hay conectividad entre los nodos. La conexion falla en algun punto.
  • El administrador del Nodo 2 ha tomado medidas de seguridad/privacidad para que su sistema no responda a Ping.

Vamos a la practica:

El comando ping lo ejecutamos en una Ventana de Comandos (Símbolo del Sitema en W7) y su sintaxis básica es “ping Direccion_IP“. La dirección IP la podemos sustituir por un Nombre de Dominio y en caso de que nuestros servidores DNS lo puedan resolver funcionaría igual que si ponemos una Dirección IP y ademas nos aportaría la Dirección IP que hay tras ese Nombre de Dominio.

Vamos a comenzar haciendo un ping a Google a ver que sacamos…

Ping01

Ejecutamos el comando “ping http://www.google.com” y como vemos en la imagen obtenemos respuesta a nuestro ping. De esta respuesta obtenemos la siguiente información:

  • La dirección IP del servidor en el que se encuentra alojada la web http://www.google.com es la 216.58.210.228. Esta informacion en realidad nos la ha dado nuestro servidor DNS.
  • El servidor con IP 216.58.21.228 se encuentra activo (encendido) en este momento (si no, no respondería a ping).
  • El servidor con IP 216.58.21.228 esta correctamente conectado a Internet y tenemos acceso a el a través de la red (Si no estuviera conectado a Internet tampoco respondería a ping).

El resumen estadístico nos indica que nuestro Ping ha enviado 4 paquetes y ha recibido de vuelta los 4. Si se hubiera perdido alguno podria indicarnos la presencia de algún corte de red (bien por parte de Google o bien por nuestra conexión).

El tiempo que tarda el ping en ir y volver también nos puede dar alguna pista sobre la calidad de nuestra conectividad con Google, unos tiempos muy altos podrían darnos la pista de que algo está fallando.

Ahora vamos a repetir el ejercicio con la segunda opción que se nos propone en la tarea: www.euskalert.net

Ping02

En este caso la respuesta que obtenemos no es la misma que en el caso anterior. En primer lugar obtenemos un dato importante: La direccion IP del servidor que aloja la pagina web http://www.euskalert.net es la 192.146.78.12. Sin embargo esta IP no ha respondido a nuestro ping (Tiempo de espera agotado…, paquetes enviados = 4 y recibidos = 0), en un principio podríamos pensar que se trata de un servidor que esta apagado o que no esta conectado a Internet (damos por hecho que nosotros si lo estamos), sin embargo al tratarse de una pagina web podemos hacer una prueba muy sencilla que es la de intentar acceder a la web a través de nuestro navegador:

Ping03

De esta forma comprobamos que el servidor funciona perfectamente, esta encendido y con conexión a Internet (si no, no veríamos la pagina). Por lo tanto no nos queda mas remedio que pensar que el Administrador del Sistema ha tomado medidas de seguridad/privacidad para que su servidor no responda a ping.

WHOIS

Whois es un protocolo que nos permite hacer consultas en una  base de datos en la que figura todo lo relativo al registro de un dominio. Esta información es publica y en ella podemos encontrar datos interesantes para un hacker como las personas de contacto (técnico, administrativo…) a las que podríamos dirigirnos en un momento dado con la intención de ampliar la información sobre el sistema que queremos “atacar” (Ingeniería Inversa).

Se puede trabajar con Whois a través de una ventana de comandos pero también tenemos paginas web que nos permiten hacer la consulta como: http://ping.eu/ns-whois/. Yo he utilizado esta segunda opción para realizar la tarea.

En primer lugar vamos a hacer un Whois del dominio google.com. En este caso nos encontramos que los e-mails de contacto corresponden a cuentas corporativas en las que no se adivina ningún nombre personal, así que parece que lo tenemos difícil para utilizar Ingeniería Social en este caso.

Ahora haremos un Whois del dominio euskalert.net. En este caso también hay cuentas de e-mail corporativas en los contactos técnico y administrativo, sin embargo en el contacto del Registrante tenemos una cuenta denominada amanterola@eps.mondragon.edu. Esta cuenta tiene toda la pinta de tratarse de una cuenta personal cuyo titular podría tener un nombre que comience por “A” y cuyo apellido es “Manterola”. Haciendo una simple búsqueda en Google es muy posible que se trate de ESTA PERSONA e incluso tenemos su teléfono móvil!!!

Por ultimo sobre el Whois, comentar que otro dato que puede ser interesante en un momento dado el de la fecha de expiración del dominio. En el caso de euskalert.net es el 31 de octubre de 2015. Si al administrador del dominio por cualquier motivo se le pasa la fecha de renovación, una persona que esté al acecho en esa fecha podría registrar el domino a su nombre con el consiguiente quebradero de cabeza sus dueños actuales.

NMAP

Nmap es un programa que envía una serie de paquetes a través de la red y tras analizar los paquetes de respuesta nos puede ofrecer una información muy valiosa para un Hacker, como son los puerto abiertos, el Sistema Operativo o programas que se están ejecutando.

La herramienta Nmap viene implementada en algunos sistemas operativos como en algunas distribuciones Linux, sin embargo en Windows 7 no viene por lo que la he tenido que instalar desde https://nmap.org/download.html.

Para la realización de esta tarea he utilizado la versión de Nmap en entorno gráfico denominada Zenmap.

Haciendo un Nmap (básico, sin atributos) de http://www.euskalert.net el resultado me da que tiene todos los puertos abiertos.

Nmap01

pero no me da mas información sobre sistema operativo etc… así que procedo a hacer una búsqueda en el portal Netcraft, donde encuentro que el servidor de http://www.euskalert.net tiene Sistema Operativo Linux Ubuntu y un servidor web Apache.

Nmap02

Si hacemos lo propio con http://www.google.com el nmap nos dice que están abiertos los puertos 80 (http, web), 443 (https, web secure) y 1720 (h323q931, que se utiliza para video conferencias).

Nmap03

Igualmente consultamos en Netcraft y descubrimos que su sistema operativo es Linux y su servicio web es denominado GFE 2.0 (un sistema exclusivo de Google).

Nmap04

Por ultimo, con todos los datos que hemos encontrado tendriamos que buscar en las bases de datos de Bugs para ver si hay agujeros de seguridad conocidos para los distintos elementos del sistema a “atacar”. Algunas de estas bases de datos podemos encontrarlas en:

Por ejemplo para el Servidor Web Apache 2.4.7 que corre en http://www.euskalert.net encontramos ESTE exploit:

Bug01

Y con esto doy por finalizada la Tarea 1 de la Unidad 1. Espero que todo este correcto.

Unidad 1 Tarea 1