Pentesting con Kali IV - Active Information gathering

No Comments
Una vez realizada la fase de information gathering pasiva, podemos pasar a la fase activa para identificar servicios más específicos. En el siguiente módulo veremos técnicas de recolección de información disponibles en en kali linux y algunos scripts personalizados para tal fin.



A lo largo de este módulo, veremos algunos ejemplo prácticos para los cuales es recomendable contar con una máquina virtual windows xp o 7 nateada al igual que el kali como lo hicimos en la entrada de tools super esenciales

Permítanme realizar una aclaración, ésta fase, está contemplada en las jurisprudencias de algunos países como un delito, por lo tanto, cabe dejar claro que los ejemplos que aquí veremos serán llevados a cabo sobre plataformas preparadas y disponibles para la aplicación de éstas técnicas y todo lo que veremos en con fines puramente educativos.


Esquema:
    4- Active Information gathering:
        4.1 Enumeración de DNS
        4.2 Port scanning
        4.3 Enumeración de SMB
        4.4 Enumeración de SMTP y SNMP


4.1 Enumeración de DNS.
La enumeración de DNS nos puede proveer de mucha información valiosa, alguna pública, otra no tanto, servidores con su SO, direcciones IP, funcionalidades de los servidores, etc.

Identifiquemos entonces los name servers (ns) y los servidores de mail (mx) del target que venimos trabajando desde la entrada anterior.

1- Identificamos los ns.
    host -t -ns NombreDeDominio


Analicemos los comando y parámetros ejecutados.


host: ya lo vimos en la primer entrada
-t: tipo de identificación que debe hacer host
ns: parámetro que lee -t, en éste caso es para que host identifique los name servers.

2- Identificamos los mx:
    host -t mx NombreDeDominio


Analicemos el nuevo parámetro.

mx: parámetro que lee -t, en éste caso es para que host identifique los mail servers.

3- Si queremos identificar los dos al mismo tiempo juntamos las ejecuciones con &&
    host -t ns NombreDeDominio && host -t mx NombreDeDominio


4- Para identificar si existe un web server anteponemos www al nombre de dominio.
    host www.NombreDeDominio


5- Si deseamos identificar la presencia de un a ftp server.
    host ftp.NombreDeDominio




En el caso de que queramos buscar si hay un web server, ftp, owa, proxy, router tenemos la opción de utilizar && entre cada servicio a identificar o realizar un script que nos automatice la tarea.

Generemos un txt con los nombres de los servicios, para ésto podemos usar nano, vi o lo que deseen.
En éste ejemplo incluimos en el txt la siguiente lista: www, ftp, mail, owa, proxy, router

    for ip in $(cat list.txt); do host $ip.megacorpone.com; done


Ya que tenemos esta información, intentemos realizar una transferencia de zona, este proceso incluye la copia del archivo de zona desde un servidor DNS principal a un esclavo, esto se produce por una mala configuración de los servidores, exponiendo nombres direcciones y funciones de los servidores internos. Si podemos llevar a cabo una transferencia de zona, lograremos entender el diseño de la red. Veamos la forma de llevarlo a cabo.

1- Transferimos el dominio a un name server.
    host -l NombreDeDominio ns.NombreDeDominio

Intentemos la transferencia de zona con el ns1.

 

Falló, les quedará como tarea corroborar si con alguno de los otros ns logran realizarla.
Comenten que otros ns identificaron y con cual de ellos fue exitosa la transferencia.

En kali, tenemos herramientas para automatizar este proceso que hemos visto de forma manual.
   
DNSrecon


DNSenum


Sería interesante que puedan probar las dos herramientas contra este mismo dominio para que encuentren cuál de las dos les brinda mayor o mejor información y se ajusta más a sus gustos.
Podrían compartir su preferencia fundamentandola, sería enriquecedor para todos. Personalmente prefiero dnsenum, considero que recolecta mayor información y la muestra mejor parseada.


4.2 Port Scanning.

Mediante ésta técnica realizaremos el reconocimiento de los puertos TCP y UDP que están abiertos junto a sus servicios asociados sobre un host remoto.
A grandes rasgos, existen tres tipos de identificación de puertos abiertos:


    1- TCP: se realizan los tres pasos del handshake.
    2- SYN: igual al tcp pero sin emitir el último ACK.
    3- UDP: si no llega respuesta está abierto.


Ya hemos hablado algo sobre conexiones y handshakes en un post anterior.



NMAP:
Antes de iniciar con con ésta increíble herramienta, me gustaría que primero veamos el ruido y el tamaño del tráfico de red que genera. Con esto apunto a que es imprescindible saber qué vamos a buscar en un servidor antes de tirar un nmap url o zenmap con configuración por defecto. Levantamos la virtual con windows nateada.


1- Configuramos iptables en el kali para que acumule el tráfico de red hacia un host específico.
    iptables -I INPUT 1 -s DirecciónIP -j ACCEPT
iptables -I OUTPUT 1 -d DirecciónIP -j ACCEPT
iptables -Z


2- Lanzamos nmap
    nmap -sT DirecciónIP
3- Visualizamos el tráfico de red transmitido.
iptables -vn -L




¿Lo notan? Más de 0.5mb con un simple -sT a una sola IP analizando los mil puertos por defecto. Saquen sus propias conclusiones si se analizan los 65535 puertos de un rango 0/24.


Más adelante veremos sobre iptables, no lo detallaré en este momento, si les interesa interiorizarse en el tema, les dejo éste libro.


Veamo ahora la forma de hacer un ping sweep con nmap para cuando tenemos que analizar grandes segmentos de red con numerosos host, de ésta manera logramos eliminar los host que no están vivos y enfocarnos en los que sí lo están.


Sería ideal si pueden levantar más de una virtual para éste ejercicio, no importa el so, importa aumentar el número de hosts.Para el siguiente ejemplo he levantado algunas máquinas virtuales Hagamos entonces un ping sweeping para identificar host vivos en nuestra red 192.168.206.x (en sus virtuales probablemente sea diferente).


1- Analizamos el segmento para identificar host vivos y guardemos el resultado en un txt.
    nmap -sn DirecciónIP/Rango -oG NombreDeArcivo


2- Parseamos el output y lo guardamos en un nuevo  archivo.




3- Armamos un script que nos identifique los servicios y SO de cada uno de los host vivos.




Para conocer lo comandos ejecutados con nmap les recomiendo que corran un nmap -h  y que visiten este sitio.

4.3 Enumeración SMB.


El server message block (smb) es un protocolo que por defecto es abierto y sin autenticación que ha sido mejorado y perfeccionado a lo largo de los años.
Enumeremos rápidamente las versiones de smb y sus so windows asociados:
    smb1: Win 2000, xp y 2003.
    smb2: Win vista sp1 y 2008.
    smb2.1: Win 7 y 2008 R2
    smb3: Win 8 y 2012.


Podemos identificar este servicio que por defecto corre sobre los puertos 139 y 445.
Con nmap por ejemplo podes ejecutar los siguientes parámetros
    nmap -v -p 139, 445 DirecciónIP


Lo ejecutamos sobre la lista de host vivos identificados con el mismo script, al cual solo le modificamos los parámetros del nmap




Particularmente me interesa mi host 192.168.206.132 que es un win xp q en entradas posteriores explotaremos con el ms08-067




Dentro de kali, tenemos algunas herramientas para realizar esta tareas como por ejemplo ntbscan




Analicemos el segmento de red con esta herramienta.
    nbtscan -r DirecciónIP 0/24

















Otra de las herramientas disponibles en kali es enum4linux, veamos cómo funciona.




El parámetro -a noa sirve para realizar una enumeración de todo, ejecutemos esta tool contra nuestra virtual con windows.





Nmap posee gran cantidad de scripts para identificar vulnerabilidades en los cuales profundizaremos más adelante en la fase de descubrimiento de vulnerabilidades.
Algunos de los scripts que posee son para identificar smb, veamos entonces la manera de utilizarlo.
   
1- Identificamos los scripts disponibles para smb.
    ls /user/share/nmap/scripts/smb*




2- Probemos alguno de los scripts, por ejemplo el de smb-check-vulns.nse
    nmap -p 139, 445 --script=smb-os-discovery DirecciónIP




Veamos que son los parámetros que hemos pasado a nmap.


-p: para establecer los puertos que deseamos analizar, en éste caso son los 139 y 445 ya que ahí es donde corre smb generalmente.


--script: es el que define al nmap que se utilizará un script


smb-os-discovery: es el script que hemos elegido para que corra contra el host, en éste caso es para que realice un descubrimiento del sistema operativo, netbios y grupo.




4.4 Enumeración SMTP y SNMP.


Para realizar enumeraciones de smtp y snmp también podemos utilizar scripts de nmap, sólo es cuestión de buscarlos en el directorio /usr/share/nmap/scripts




Otra de las herramientas que ya hemos visto que nos puede ser de utilidad es netcat
    nc -nv DirecciónIP Puerto




En kali, tenemos snmpwalk para apoyarnos. Veamos cómo funciona




Ejercicios propuestos:


4.1 Enumeración de DNS
  • Buscar un sitio web que permita automatizar la enumeración de dns.
  • Buscar un sitio web que permita comprobar transferencias de zona.
Compartan ambos recursos en los comentarios.
    ¿Los resultados han sido mejores, iguales o peores que con las tools que hemos visto? ¿Diferencias?


4.2 Port scanning
  • Utilicen nmap para realizar un ping sweeping sobre megacorpone. ¿Qué host identificaron?
  • Identificar el puerto sobre el que corre el webserver, identificar qué es y el so sobre el que está corriendo.


4.3 Enumeración de SMB
  • Enumerar smb y comprobar con nmap si tiene vulnerabilidades (smb-check-vulns)


4.4 Enumeración de SMTP y SNMP
  • Enumerar ambos protocolos e identificar los puertos sobre los que corre.
  • Comprobar si el smtp es vulnerable al cve-2010-4344.

0 comentarios

Publicar un comentario en la entrada