domingo, 27 de septiembre de 2015

Mondragon Unibersitatea: Seguridad Hacking ético

Hace unas semanas me inscribí a un curso online dictado por Mondragon Unibersitatea. A partir de ahora usaré este post para incluir las respuestas a los ejercicios propuestos.

Tarea 1


La primera tarea consiste en utilizar ping, whois, nmap como herramientas para recabar información acerca de los objetivos.

Ping a www.google.com:

juan@moon:~$ ping -c 3 www.google.com
PING www.google.com (216.58.211.164) 56(84) bytes of data.
64 bytes from dub08s01-in-f4.1e100.net (216.58.211.164): icmp_seq=1 ttl=58 time=11.3 ms
64 bytes from dub08s01-in-f4.1e100.net (216.58.211.164): icmp_seq=2 ttl=58 time=15.2 ms
64 bytes from dub08s01-in-f4.1e100.net (216.58.211.164): icmp_seq=3 ttl=58 time=13.1 ms
--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 11.392/13.259/15.209/1.565 ms
juan@moon:~$


Se puede apreciar como el host 216.58.211.164 que responde al nombre www.google.com respondió los mensajes ICMP perfectamente.

Ping a www.euskalert.net

juan@moon:~$ ping -c 3 www.euskalert.net
PING www.euskalert.net (193.146.78.12) 56(84) bytes of data.
--- www.euskalert.net ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2016ms
juan@moon:~$

A diferencia de www.google.com, el host 193.146.78.12 que responde al nombre www.euskalert.net no respondió los mensajes ICMP. Muchas veces los mensajes ICMP son restringidos porque podrían ser considerados como fuga de información. Los paquetes pueden haber sido descartados por el host mismo o por algún otro dispositivo como un firewall que se encuentre protegiéndolo.

Whois a www.google.com

juan@moon:~$ whois www.google.com
Whois Server Version 2.0
Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
   Server Name: WWW.GOOGLE.COM.AR
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Server Name: WWW.GOOGLE.COM.AU
   Registrar: MELBOURNE IT, LTD. D/B/A INTERNET NAMES WORLDWIDE
   Whois Server: whois.melbourneit.com
   Referral URL: http://www.melbourneit.com
   Server Name: WWW.GOOGLE.COM.BR
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Server Name: WWW.GOOGLE.COM.CO
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Server Name: WWW.GOOGLE.COM.DO
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Server Name: WWW.GOOGLE.COM.GERRYGOULD.COM
   IP Address: 8.8.4.4
   IP Address: 8.8.8.8
   IP Address: 2001:4860:4860:0:0:0:0:8844
   IP Address: 2001:4860:4860:0:0:0:0:8888
   Registrar: GOOGLE INC.
   Whois Server: whois.rrpproxy.net
   Referral URL: http://domains.google.com
   Server Name: WWW.GOOGLE.COM.HK
   Registrar: GKG.NET, INC.
   Whois Server: whois.gkg.net
   Referral URL: http://www.gkg.net
   Server Name: WWW.GOOGLE.COM.INFO-MADA.COM
   IP Address: 216.239.32.21
   IP Address: 216.239.38.21
   IP Address: 216.239.36.21
   IP Address: 216.239.34.21
   Registrar: GODADDY.COM, LLC
   Whois Server: whois.godaddy.com
   Referral URL: http://registrar.godaddy.com
   Server Name: WWW.GOOGLE.COM.MX
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Server Name: WWW.GOOGLE.COM.NAPLESCABS.COM
   IP Address: 216.239.32.21
   IP Address: 216.239.34.21
   IP Address: 216.239.36.21
   IP Address: 216.239.38.21
   Registrar: GODADDY.COM, LLC
   Whois Server: whois.godaddy.com
   Referral URL: http://registrar.godaddy.com
   Server Name: WWW.GOOGLE.COM.PE
   Registrar: DELUXE SMALL BUSINESS SALES, INC. D/B/A APLUS.NET
   Whois Server: whois.names4ever.com
   Referral URL: http://www.aplus.net
   Server Name: WWW.GOOGLE.COM.PK
   Registrar: INTERNET.BS CORP.
   Whois Server: whois.internet.bs
   Referral URL: http://www.internet.bs
   Server Name: WWW.GOOGLE.COM.SA
   Registrar: OMNIS NETWORK, LLC
   Whois Server: whois.omnis.com
   Referral URL: http://www.omnis.com
   Server Name: WWW.GOOGLE.COM.TR
   Registrar: TUCOWS DOMAINS INC.
   Whois Server: whois.tucows.com
   Referral URL: http://www.tucowsdomains.com
   Server Name: WWW.GOOGLE.COM.TW
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
   Server Name: WWW.GOOGLE.COM.VN
   Registrar: ENOM, INC.
   Whois Server: whois.enom.com
   Referral URL: http://www.enom.com
>>> Last update of whois database: Sat, 26 Sep 2015 15:01:44 GMT <<<
NOTICE: The expiration date displayed in this record is the date the
registrar's sponsorship of the domain name registration in the registry is
currently set to expire. This date does not necessarily reflect the expiration
date of the domain name registrant's agreement with the sponsoring
registrar.  Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.
TERMS OF USE: You are not authorized to access or query our Whois
database through the use of electronic processes that are high-volume and
automated except as reasonably necessary to register domain names or
modify existing registrations; the Data in VeriSign Global Registry
Services' ("VeriSign") Whois database is provided by VeriSign for
information purposes only, and to assist persons in obtaining information
about or related to a domain name registration record. VeriSign does not
guarantee its accuracy. By submitting a Whois query, you agree to abide
by the following terms of use: You agree that you may use this Data only
for lawful purposes and that under no circumstances will you use this Data
to: (1) allow, enable, or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail, telephone,
or facsimile; or (2) enable high volume, automated, electronic processes
that apply to VeriSign (or its computer systems). The compilation,
repackaging, dissemination or other use of this Data is expressly
prohibited without the prior written consent of VeriSign. You agree not to
use electronic processes that are automated and high-volume to access or
query the Whois database except as reasonably necessary to register
domain names or modify existing registrations. VeriSign reserves the right
to restrict your access to the Whois database in its sole discretion to ensure
operational stability.  VeriSign may restrict or terminate your access to the
Whois database for failure to abide by these terms of use. VeriSign
reserves the right to modify these terms at any time.
The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.
For more information on Whois status codes, please visit
https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en.
juan@moon:~$


whois es un servicio de directorio que provee información pública de dominios y redes.

Nmap www.euskalert.net

Le indicamos a nmap que realice un scaneo a una serie de puertos conocidos para ver qué sucede.

juan@moon:~$ nmap -A -p 80,22,443,25,110  www.euskalert.net

Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-27 13:11 IST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.24 seconds
juan@moon:~$ 


Como vimos en el punto anterior, el host no responde ping, así que nmap frena la ejecución del scaneo. Podemos indicarle que ignore ping y que intente de todas maneras:

juan@moon:~$ nmap -A -Pn -p 80,22,443,25,110  www.euskalert.net

Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-27 13:11 IST
Nmap scan report for www.euskalert.net (193.146.78.12)
Host is up.
PORT    STATE    SERVICE VERSION
22/tcp  filtered ssh
25/tcp  filtered smtp
80/tcp  filtered http
110/tcp filtered pop3
443/tcp filtered https

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.53 seconds
juan@moon:~$


A pesar de todo parece que los puertos se encuentran filtrados, esto suele significar que los paquetes que enviamos estan siendo descartados por algún firewall. Para tener un contra ejemplo apunté nmap esta vez a www.google.com y se puede ver lo siguiente:

juan@moon:~$ nmap -A -p 80,22,443,25,110  www.google.com

Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-27 13:26 IST
Nmap scan report for www.google.com (216.58.211.164)
Host is up (0.015s latency).
rDNS record for 216.58.211.164: dub08s01-in-f4.1e100.net
PORT    STATE    SERVICE  VERSION
22/tcp  filtered ssh
25/tcp  filtered smtp
80/tcp  open     http     Google httpd 2.0 (GFE)
|_http-methods: No Allow or Public header in OPTIONS response (status code 405)
| http-robots.txt: 255 disallowed entries (15 shown)
| /search /sdch /groups /catalogs /catalogues /news /nwshp
| /setnewsprefs? /index.html? /? /?hl=*& /?hl=*&*&gws_rd=ssl
|_/addurl/image? /mail/ /pagead/
|_http-title: Did not follow redirect to http://www.google.ie/?gws_rd=cr&ei=nOAHVqzaFIuNsAHL_p3IDQ
110/tcp filtered pop3
443/tcp open     ssl/http Google httpd 2.0 (GFE)
|_http-methods: No Allow or Public header in OPTIONS response (status code 405)
| http-robots.txt: 255 disallowed entries (15 shown)
| /search /sdch /groups /catalogs /catalogues /news /nwshp
| /setnewsprefs? /index.html? /? /?hl=*& /?hl=*&*&gws_rd=ssl
|_/addurl/image? /mail/ /pagead/
|_http-title: Did not follow redirect to https://www.google.ie/?gws_rd=cr&ei=nOAHVszzFciPsgHJtLWQBA
| ssl-cert: Subject: commonName=www.google.com/organizationName=Google Inc/stateOrProvinceName=California/countryName=US
| Not valid before: 2015-09-09T21:53:39+00:00
|_Not valid after:  2015-12-08T00:00:00+00:00
|_ssl-date: 2015-09-27T12:27:08+00:00; 0s from local time.
| tls-nextprotoneg:
|   h2
|   h2-15
|   h2-14
|   spdy/3.1
|   spdy/3
|_  http/1.1
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.85 seconds
juan@moon:~$


Claramente los servidores de google son mucho mas verborrágicos. Entre otras cosas vemos los puertos 80 y 443 abiertos, indicios de que se trata de un servidor web, también vemos información del certificado SSL usado en el puerto 443 y por último nmap nos indica que el servidor corre un Sistema Operativo tipo Linux.

Tarea 2


Personalmente sigo 2 sitios web de seguridad en español:

www.securitybydefault.com
www.segu-info.com.ar

utilizo estos dos, porque generalmente tienen noticias y posts muy interesantes y actualizados.

Por otro lado estoy suscripto a SANS y US-CERT, desde los cuales recibo mucha información de las ultimas vulnerabilidades descubiertas y a veces documentos muy interesantes para leer.

www.sans.org
www.us-cert.gov

Tarea 3


Esta tarea consiste en aprender los conceptos de criptografía y aplicarlos utilizando una herramienta como PGP (GPG en este caso particular). Al utilizar una herramienta como estamos haciendo uso de:
  • Algoritmos de cifrado simétricos (posiblemente 3DES, AES o IDEA), con los que realmente se cifra la información.
  • Algoritmos de cifrado asimétricos (posiblemente RSA, El Gamal, etc), los que se utilizan para por ejemplo cifrar la clave del algoritmo simétrico utilizado, como así también en el proceso de firmado.
  • Algoritmos de hash, utilizados principalmente en el firmado (posiblemente md5 BAD IDEA!!!, SHA1 o RIPEMD160).
A continuación se ilustran los pasos seguidos para la creación de un par de claves gpg, su utilización para el cifrado y firmado de un archivos, así como también para el decifrado y verificación de un archivo recibido.
  • Creación de par de claves
juan@moon:~$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Por favor seleccione tipo de clave deseado:
   (1) RSA y RSA (predeterminado)
   (2) DSA y Elgamal
   (3) DSA (sólo firmar)
   (4) RSA (sólo firmar)
¿Su selección?: 2
las claves DSA pueden tener entre 1024 y 3072 bits de longitud.
¿De qué tamaño quiere la clave? (2048)
El tamaño requerido es de 2048 bits
Por favor, especifique el período de validez de la clave.
         0 = la clave nunca caduca
        = la clave caduca en n días
      w = la clave caduca en n semanas
      m = la clave caduca en n meses
      y = la clave caduca en n años
¿Validez de la clave (0)?
La clave nunca caduca
¿Es correcto? (s/n) s

Necesita un identificador de usuario para identificar su clave. El programa
construye el identificador a partir del Nombre Real, Comentario y Dirección
de Correo electrónico de esta forma:
    "Heinrich Heine (Der Dichter) "

Nombre y apellidos: Juan Pavlik
Dirección de correo electrónico: jjpavlik@gmail.com
Comentario: Clave de correo privado
Ha seleccionado este ID de usuario:
    «Juan Pavlik (Clave de correo privado) »

¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V
Necesita una frase contraseña para proteger su clave secreta.

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
gpg: WARNING: some OpenPGP programs can't handle a DSA key with this digest size
...+++++++++++++++++++++++++..++++++++++.++++++++++++++++++++.++++++++++.+++++++++++++++....+++++.++++++++++++++++++++..+++++++++++++++.+++++++++++++++>.+++++.....+++++

No hay suficientes bytes aleatorios disponibles. Por favor, haga algún
otro trabajo para que el sistema pueda recolectar más entropía
(se necesitan 179 bytes más).
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
+++++..+++++.+++++.++++++++++++++++++++.++++++++++...++++++++++..+++++++++++++++++++++++++++++++++++..+++++.....+++++.++++++++++++++++++++.++++++++++.+++++.+++++.........+++++>.++++++++++.........................................................................................................................................>+++++.........<+++++........................................................+++++^^^^
gpg: /home/juan/.gnupg/trustdb.gpg: se ha creado base de datos de confianza
gpg: clave EBB4304A marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0  validez:   1  firmada:   0  confianza: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048D/EBB4304A 2015-09-27
      Huella de clave = 5512 56C3 DACF 7F93 E2B8  7488 EA41 FB13 EBB4 304A
uid                  Juan Pavlik (Clave de correo privado)
sub   2048g/1763AEAE 2015-09-27

juan@moon:~$  

  • Exportar la clave pública (para compartir con los potenciales emisores de mensajes)
juan@moon:~$ gpg --list-keys
/home/juan/.gnupg/pubring.gpg
-----------------------------
pub   2048D/EBB4304A 2015-09-27
uid                  Juan Pavlik (Clave de correo privado)
sub   2048g/1763AEAE 2015-09-27

juan@moon:~$ gpg --export --armor EBB4304A > jjpavlik.pub
juan@moon:~$ file jjpavlik.pub
jjpavlik.pub: PGP public key block
juan@moon:~$

  • Importar la clave pública del destinatario (para corroborar mensajes recibidos)
juan@moon:~$ gpg --import < alberto.asc.pub
gpg: clave 2189649E: clave pública "Alberto XXX (Ninguno) " importada
gpg: Cantidad total procesada: 1
gpg:               importadas: 1  (RSA: 1)
juan@moon:~$

  •  Cifrado y firmado de archivo a enviar
juan@moon:~$ gpg --recipient "Alberto Sanchez" --sign --encrypt archivo_confidencial.txt

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Juan Pavlik (Clave de correo privado) "
clave DSA de 2048 bits, ID EBB4304A, creada el 2015-09-27

gpg: 0FBE2389: No hay seguridad de que esta clave pertenezca realmente
al usuario que se nombra

pub  2048R/0FBE2389 2015-09-27 Alberto XXX (Ninguno)
 Huella de clave primaria: 2625 E0DD 6949 77EE 010A  F901 83AA 1F49 2189 649E
      Huella de subclave: 2E18 3F7C 07AF E051 39A8  AD67 9E17 17C7 0FBE 2389

No es seguro que la clave pertenezca a la persona que se nombra en el
identificador de usuario. Si *realmente* sabe lo que está haciendo,
puede contestar sí a la siguiente pregunta.

¿Usar esta clave de todas formas? (s/N) s
juan@moon:~$ 

  • Decifrado y control de firma de un archivo recibido
juan@moon:~$ gpg --decrypt Descargas/mensaje_enc.txt.gpg > mensaje.txt

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Juan Pavlik (Clave de correo privado) "
clave ELG-E de 2048 bits, ID 1763AEAE, creada el 2015-09-27 (ID de clave primaria EBB4304A)

gpg: cifrado con clave ELG-E de 2048 bits, ID 1763AEAE, creada el 2015-09-27
      «Juan Pavlik (Clave de correo privado) »
gpg: Firmado el dom 27 sep 2015 19:30:24 IST usando clave RSA ID 2189649E
gpg: Firma correcta de «Alberto XXX (Ninguno) »
gpg: AVISO: ¡Esta clave no está certificada por una firma de confianza!
gpg:          No hay indicios de que la firma pertenezca al propietario.
Huellas dactilares de la clave primaria: 2625 E0DD 6949 77EE 010A  F901 83AA 1F49 2189 649E
juan@moon:~$ cat mensaje.txt
Éste es un mensaje de prueba de encriptación/desencriptación, correspondiente a la Tarea 3, de la Unidad 1.

juan@moon:~$  

No hay comentarios:

Publicar un comentario