sábado, 2 de junio de 2012

Introducción a NMAP

Nmap (Network Mapper), es una herramienta open source, diseñada para explorar y para realizar auditorías de seguridad en una red de computadoras.
 
Esta herramienta puede ser utilizada para realizar auditorías de seguridad en una red, pero también puede ser utilizada para fines delictivos, ya que esta herramienta pone al descubierto,puertos abiertos en las computadoras de una red, así como también es posible conocer como se encuentra organizada, y de cuantas computadoras consta una red. 

Nmap esta incluido en la mayoría de repositorios de las distros linux, por lo que para instalarla se debe usar el manejador de paquetes de la distribución que utilizamos.

La sintaxis básica de nmap es:

nmap [tipo de scan] [opciones] 

Por ejemplo si tenemos un host en nuestra red, con dirección ip 192.168.0.1 y deseamos conocer que puertos tiene abiertos, ejecutamos:

nmap 192.168.0.1
 
Nmap nos mostrara en pantalla algo como esto:

Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-02 17:25 ECT
Nmap scan report for 10.0.0.10
Host is up (0.0035s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
80/tcp   open  http
139/tcp  open  netbios-ssn
443/tcp  open  https
445/tcp  open  microsoft-ds
515/tcp  open  printer
6000/tcp open  X11


Nmap done: 1 IP address (1 host up) scanned in 1.71 seconds

Este resultado puede variar, dependiendo de las opciones que se le pasen a nmap o de la cantidad de puertos, que se encuentren abiertos en el host, que esta siendo analizado.

Si queremos, conocer que tipo de sistema operativo, esta corriendo el host al que le realizamos el scaneo, sólo basta agregar el parámetro -O a el comando nmap.

nmap -O 192.168.0.1

Nos mostrara un resultado como este:

 Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-02 16:49 ECT
Nmap scan report for 10.0.0.21
Host is up (0.0017s latency).
Not shown: 980 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
554/tcp   open  rtsp
1110/tcp  open  nfsd-status
1688/tcp  open  unknown
2869/tcp  open  unknown
3260/tcp  open  iscsi
3261/tcp  open  unknown
3389/tcp  open  ms-term-serv
5357/tcp  open  unknown
10243/tcp open  unknown
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49156/tcp open  unknown
49157/tcp open  unknown
49158/tcp open  unknown
49159/tcp open  unknown
49160/tcp open  unknown
Device type: general purpose
Running: Microsoft Windows Vista|2008|7
OS details: Microsoft Windows Vista SP0 - SP2, Server 2008, or Windows 7 Ultimate (build 7000)
Network Distance: 1 hop

Pues, todo esto es la "huella" TCP/IP (TCP/IP fingerprint) que posee cada Sistema Operativo en particular.

Otra función de Nmap es identificar los hosts activos, en nuestra red.

Supongamos, que tenemos una red 10.0.0.0, y deseamos conocer que hosts se encuentran activos, fácilmente, lo podemos saber con nmap, esto lo podemos conocer
al realizar un ping scan.

nmap -sP -PN 10.0.0.0/24


Esta herramienta también permite realizar "stealth scans", con este tipo de scan, se pretende no ser detectado por software de detección de scaneos. Para lo cual se envían paquetes a los hosts con ciertos "flags" TCP activados o desactivados para evitar ser detectados. Básicamente existen tres tipos:
  • sN: Stealth, Null Scan, este tipo de scan pone en off todos los flags.
  • sF: Stealth FIN Scan, este tipo de scan usa paquetes con el flag FIN activado para las pruebas.
  • sX: Stealth Xmas Tree Scan, este tipo de scan envía paquetes con los flag FIN, URG, y PUSH activados.

Si deseamos hacer un "stealth scan" del tipo Xmas Tree, y además deseamos conocer
que sistema operativo esta corriendo el host de destino, ejecutamos:

nmap -sX -O -p- -PN 192.168.1.2

Con un "Decoy Scan" (opción -D) se trata de engañar al host, al cual se esta scaneando, diciéndole que los scans se están generando desde otros hosts, que se especifican en la opción -D.

En el siguiente ejemplo, realizamos un Stealth Xmas Tree scan (-sX) hacia el host 192.168.0.1, en los puertos 25(SMTP), 53(DNS), le indicamos a nmap que no genere pings hacia el host, y tratamos de engañar al host (-D, Decoy), haciéndole creer que los scans se están generando desde los hosts 1.2.3.4 y 5.6.7.8.

nmap -p 25,53 -sX -P0 -D 1.2.3.4,5.6.7.8 192.168.0.1

Existen Interfaces Gráficas para Nmap, en el caso que no deseen, utilizar la interfaz de comandos de nmap, fácilmente pueden usar un programa llamado zenmap.

Si requieren mas información sobre Nmap, pueden buscar ayuda en la página web http://nmap.org/ o consultar los manuales electrónicos con el comando:

man nmap

Etapa de Scaneo

Una que se recolectó información de un objetivo, en los datos recogidos debe haber una lista de direcciones IP.

Como se conoce, los servicios de red funcionan en puertos estandard y pueden dar una pista de cual es la función de cada servicio. Algunos puertos son comunes y reciben gran cantidad de datos, y algunos extraños y son raramente usados.

 La primera prueba para comprobar que un host (en nuestro caso el host del objetivo) es hacer un ping hacia la dirección IP que le corresponde. Esta prueba va a servir siempre y cuando estén permitidos los paquetes ICMP en el host, por lo que los resultados que se obtengan no son concluyentes.

La segunda prueba se la conoce como un Scaneo de Puertos. Para hacer esta prueba la herramienta mas utilizada se llama NMAP. Otra herramienta que se puede usar para este propósito es Nessus. Para instalar NMAP, se puede usar el comando:

apt-get install nmap

Para instalar Nessus, se lo debe descargar de la página web http://www.nessus.org. De acuerdo al sistema operativo que tenemos instalado, se debe bajar el paquete correspondiente y utilizar el manejador de paquetes de nuestra distribución para comenzar la instalación. Una vez instalada la aplicación, se debe reiniciar el servicio con el siguiente comando:

/etc/init.d/nessusd restart

Una vez se ha ejecutado el comando anterior se puede empezar a usar nessus, ingresando la siguiente dirección en nuestro navegador web:

https://localhost:8834/

Si requieren mayor información acerca de Nessus, pueden revisar la documentación oficial y manuales de usuario.

viernes, 1 de junio de 2012

TheHarvester y MetaGooFil

Son pequeños programas creados por Edge-Security, se los puede encontrar en la pagina web http://www.edge-security.com.

Los dos son programas escritos en python. Una vez se bajan los archivos, se los debe extraer, para lo cual se usa el comando:

tar xvf theHarvester.tar

El primero, theHarvester, busca información en los principales buscadores, como google o bing, relacionada con correos electrónicos y subdominios relacionados con un dominio.

Para usarlo, vamos a la carpeta donde se lo extrajo. Hay que asegurarse que el archivo theHarvester.py tenga los permisos de ejecución, para lo cual:


chmod +x theHarvester.py

Para empezar una búsqueda simplemente se ejecuta lo siguiente:

./theHarvester.py -d example.com -l 10 -b google

En donde:
  • -d se usa para especificar de que dominio se quiere obtener información.
  • -l le dice al programa que solo entregue 10 resultados.
  • -b sirve para especificar que motor de búsqueda se va a utilizar.
 El programa MetaGooFil, busca archivos que pertenecen a cierto dominio. Se debe seguir el mismo procedimiento del programa anterior para extraerlo y poder usarlo.

Antes de empezar a usarlo, es preferible crear una carpeta, en la cual se guarden los documentos encontrados. Para lo cual se puede usar el comando:

mkdir files

Para empezar una busque, se ejecuta lo siguiente:

./metagoofil.py -d example.com -f all -o results -t files

En donde:
  • -d se usa para especificar de que dominio se quiere obtener información.
  • -f especifica que tipo de archivos se quiere buscar y bajarse. La opción all hace que se localicen y bajen todos los archivos.
  • -o especifica el nombre del reporte que MetaGooFil va a generar.
  • -t indica el directorio en donde se deben guardar los archivos encontrados. 

jueves, 31 de mayo de 2012

Etapa de reconocimiento

En esta etapa la meta es conseguir la mayor información disponible de nuestro objetivo. Como es un "ethical hacking" hay que recordar que debemos estar autorizados antes de realizar cualquier acción, con el fin de no comprometer a nuestro objetivo, sino ayudarlo a identificar cualquier vulnerabilidad.

Hay dos formas de indagar información:
  • Activa: Se interactúa directamente con el objetivo. El objetivo puede grabar información nuestra, como la dirección IP.
  • Pasiva: Se utiliza toda la información disponible en la web.
Una de las formas de hacer una indagación activa es visitar la pagina web de nuestro objetivo, o utilizar un programa llamado webhttrack, que se encarga de hacer una copia completa, pagina por pagina, del sitio web. Para instalarlo podemos ejecutar lo siguiente en una consola linux:

apt-get install webhttrack

La indagación pasiva se realiza utilizando la información disponible en la web acerca del objetivo. Utilizando google o cualquier motor de búsqueda, se puede adquirir todo tipo de información acerca del objetivo, cuentas de correo, números telefónicos, horarios de atención, noticias relacionadas, necesidades en cuanto a personal o equipos. Otra forma de indagar es usando la "ingeniería social", mediante las cuentas de twitter o facebook del objetivo, o de trabajadores.

Una herramienta para averiguar correos electrónicos relacionados a una pagina web se llama theHarvester, que se puede conseguir a través de la página web: http://www.edge-security.com. Lo que hace el programa es buscar e-mails, subdominios, y host que pertenecen a cierto dominio.

Otra forma de conseguir información valiosa es mediante los registros DNS del dominio de nuestro objetivo. Para conseguir esta información se pueden usar herramientas que vienen incluidas dentro de cualquier instalación estándar de linux, como lo son:
  • whois
  • dig
  • nslookup
  • host
Todas estas herramientas brindan información valiosa acerca de un objetivo. Si no saben como usarlas, pueden revisar el manual de cada una de ellas con el comando man, por ejemplo:

man dig

Se debe procurar no hacer un reconocimiento activo, ya que este tipo de reconocimiento deja huellas, y puede ser fácilmente rastreable. 

miércoles, 30 de mayo de 2012

Metodologia para realizar un hackeo (Hacking etico)

Es importante tener una metodología para dividir un proceso complejo en varias tareas sencillas.

Es recomendable utilizar la siguiente metodología, que divide en cuatro etapas sencillas un ataque (hacking ético):
  • Reconocimiento
  • Scaneo
  • Explotación
  • Mantener el acceso
La primera etapa de reconocimiento, trata de recopilar información acerca del objetivo o la "víctima".

El scaneo consiste en realizar un scaneo de puertos al equipo de la víctima, una vez realizado esto, se debe identificar los diferentes servicios (software) que utilizan dichos puertos.

La explotación esta relacionada con el ataque a la víctima. Este ataque puede realizarse usando una infinidad de herramientas y metodologías.

Por ultimo, mantener el acceso, es la etapa en donde se trata de conseguir un acceso prolongado al objetivo (backdoor), el poder sobrevivir a reinicios, bloqueos, o cualquier método de defensa que quieran aplicar a nuestro ataque.

Como es un ataque ético, es decir, para identificar los posibles huecos de seguridad de nuestro sistema, todas las acciones anteriormente descritas deben estar autorizadas de una u otra forma, y si durante el ataque se recolectó información personal, esta información no debe ser utilizada para perjudicar a dueño de la información.

martes, 29 de mayo de 2012

Herramientas Linux para un Ethical Hacker

La primera herramienta (en realidad no es una herramienta como tal, es una distro linux con infinidad de herramientas) se llama Bactrack. El sitio oficial es:

http://www.backtrack-linux.org/

De la pagina web antes mencionada se pueden descargar las diferentes versiones de Bactrack, que puede ser una imagen .iso, o una imagen para un gestor de maquinas virtuales como VM, o VirtualBox.

Se instala y se utiliza como cualquier distro linux disponible.

El usuario y contraseña por defecto son root y toor, respectivamente.

Por defecto el Xserver no inicia cuando el sistema operativo bootea. Si requieren la interfaz grafica, esta se ejecuta con el comando startx.
Por defecto las interfaces de red vienen desactivadas, por lo que es necesario activarlas manualmente.

ifconfig eth0 direccion_ip netmask mascara_red up

En el caso de usar dhcp se puede hacer lo siguiente:

ifup eth0
dhclient eth0

En ambos casos se asume que la interfaz eth0 es la que queremos configurar.

Para desactivar una interfaz de red se puede utilizar:

ifdown eth0

Todas las herramientas que tiene Bactrack, estan disponibles para las diferentes distros linux mas populares, tanto en paquetes como en los repositorios específicos de cada una de las distribuciones.

Para realizar las distintas pruebas, talleres, experimentos, se debe crear un ambiente de pruebas, el cual podamos utilizar sin temor a afectar a los usuarios de la red interna, o peor aun, que afecte una IP pública y pueda ser acusado por cometer algun delito informatico.