assniffer, extracción simple de contenidos

Navegando por la red me encontré con un proyecto Open Source muy interesante y a la vez divertido. Es assniffer, un pequeño sniffer, como su nombre indica que es capaz de extraer los datos de tipo MIME que están presentes un una captura de red. Hablando claro, si tenemos nuestro fichero .pcap, por ejemplo obtenido con tcpdump, pues es capaz de extraer todos los datos MIME que hay en él de forma automática.
Para comenzar a trabajar con él, primero tenemos que tener una captura de datos, así que vamos a capturar datos primero
shell> tcpdump -i eth0 -w /tmp/captura.pcap
Tras recoger todos los datos que nos interese, ahora hay que emplear assniffer, así que vamos a ver cómo hacerlo.
  1. Descargamos el software
    La versión que está actualmente disponible es la 0.2, así que lo descargamos,
    shell> wget http://www.cockos.com/assniffer/assniffer02.zip
    
  2. Lo arrancamos
  3. Lo que acabamos de descargar es un fichero zip, así que lo descomprimimos y ya está listo para poder ejecutarse. Aquí diferenciamos 2 plataformas, windows y linux.
    1. Si usas Windows
      Al descomprimirlo ya existe un .exe perfectamente compilado para ejecutar y que funcione, así que simplemente,
      cmd> assniffer.exe c:\capturas -r c:\captura.pcap
      
    2. Si usas GNU/Linux
      Aquí la cosa se complica un poco más, ya que antes de poder usarlo hay que compilarlo, aunque eso no es problema. Como software necesario para la compilación simplemente g++. Procedemos tal que así.
      shell> cd source/assniffer
      shell> make
      
      Y una vez compilado, simplemente hay que ejecutarlo,
      shell> ./assniffer /tmp/capturas/ -r /tmp/captura.pcap
      
  4. Comprobamos los datos obtenidos
    Tras finalizar la ejecución, los datos que se han obtenido son todos los de tipo MIME que había en el fichero .pcap, es decir, ficheros de texto, pdf, imágenes, etc. pero ahora están ya en un formato mucho más simple de comprender. Si echamos un vistazo a lo que hay, veremos que hay una carpeta para cada uno de los dominios y dentro de esas carpetas, los ficheros que corresponden al dominio.
    shell> ls
    _ad.doubleclick.net           _lavozdegalicia.es
    _ad-emea.doubleclick.net      _media.lavozdegalicia.es
    _ad.es.doubleclick.net        _pagead2.googlesyndication.com
    _a.prisacom.com               _partnerfeed.itsfogo.com
    _as.com                       _pg.solution.weborama.fr
    _atemda.com                   _ping.chartbeat.net
    _blstj.msn.com                _profile.ak.fbcdn.net
    _b.scorecardresearch.com      _promo.planeo.com
    _bs.serving-sys.com           _p.twitter.com
    _cdn.adnxs.com                _publicidadinternet.lavozdegalicia.es
    _cdn.api.twitter.com          _pxlctl.elpais.com
    _c.es.msn.com                 _realtime.services.disqus.com
    _compras.lavozdegalicia.es    _r.twimg.com
    _ds.serving-sys.com           _s0.2mdn.net
    _elstatic.weborama.fr         _s1.as.com
    _estj.msn.com                 _s2.as.com
    _googleads.g.doubleclick.net  _s4.as.com
    _google-analytics.com         _s5.as.com
    _google.com                   _s.atemda.com
    _google.es                    _secure-uk.imrworldwide.com
    _ib.adnxs.com                 _shopall.es
    _imagenen1.247realmedia.com   _s.promo.planeo.com
    _imgs.codigobarras.net        _udc.msn.com
    shell> cd _media.lavozdegalicia.es/
    shell> ls
    default
    _pintochinto_files_2012_07_dependiente-280x110.jpg
    _default_2012_07_16_00121342428998068232193_Foto_.jpg&w=135px.jpg
    _default_2012_07_16_00121342439900198640689_Foto_E_120715-200305.jpg
    _default_2012_07_16_00121342457907304198516_Foto_.jpg
    _default_2012_07_16_00121342463479823536679_Foto_V17C5F2.jpg
    _default_2012_07_16_00121342466088637446783_Foto_.jpg
    _default_2012_07_16_00121342466144477922177_Foto_.jpg
    _default_2012_07_16_00121342466145337228769_Foto_.jpg
    _default_2012_07_16_00121342467357079958323_Foto_.jpg
    _default_2012_07_16_00121342467889792660983_Foto_O15L1187.jpg
    _default_2012_07_16_00121342467965572411773_Foto_.jpg
    _default_2012_07_16_00121342468019267960366_Foto_.jpg
    _default_2012_07_16_00121342468839278112970_Foto_.jpg
    ...
    
  5. Opciones especiales
    La forma descrita hasta ahora es la más simple de trabajar, pero assniffer también permite trabajar directamente con tarjetas de red en modo promiscuo, es decir, capturando en tiempo real los paquetes (opción -d device) y también permite únicamente extraer los fichero de un tipo específico, texto, vídeo, imágenes, etc. (opción -mimetype MIMETYPE)
Nota: En caso de equipos que ejecuten Debian/Ubuntu la compilación puede que os de el siguiente fallo,
shell> make
g++ -O2 -s   -c -o sniff.o sniff.cpp
sniff.cpp: In function 'int main(int, char**)':
g++ -O2 -s   -c -o tcp.o tcp.cpp
g++ -O2 -s   -c -o http.o http.cpp
http.cpp:41: warning: deprecated conversion from string constant to 'char*'
http.cpp: In member function 'void HTTP_context::doWrite(void*, int, unsigned int)':
http.cpp:460: error: 'MAX_PATH' was not declared in this scope
http.cpp:461: error: 'fn' was not declared in this scope
http.cpp:562: error: 'isprint' was not declared in this scope
make: *** [http.o] Error 1
La solución es aplicar el siguiente parche al fichero http.cpp,
--- source/assniffer/http.cpp               2006-10-29 00:38:26.000000000
+++ debian/source/assniffer/http.cpp        2008-08-26 10:19:02.000000000
@@ -22,7 +22,7 @@
 #include 
 #include 
 #include "platform.h"
-
+#include 
 #include "pcap.h"
 #include "http.h"

@@ -32,6 +32,8 @@
     #include 
 #endif

+#define MAX_PATH 256
+
 // configurable items of http.cpp
 int g_config_usemime=2; // 1=append, 2=replace extension
 int g_config_debugfn=0;
Tras aplicarlo, compilar nuevamente y ya todo debería estar correcto.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios