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/


lunes, 27 de julio de 2015

Trucos para hacer un análisis forense a un android

Buenos días.

Sea por motivos de curiosidad o simplemente motivos laborales nos hemos encontrado con una pregunta interna! ¿Donde almacenara android las contraseñas?, si bien podemos notar cuando usamos un móvil con este sistema operativo que automáticamente programas como facebook, gmail, what'sapp entre muchos otros, no solicitan credenciales una vez logeados la primer vez y siempre están allí conectados esperando a ser usados.

Bueno es simple saberlo, el ahorro de la "pereza" de estar ingresando credenciales de autenticación tiene sus riesgos de seguridad, pero en este caso para saber las contraseñas prácticamente necesitaríamos acceso físico lo cual reduce a cierto punto el robo de información personal.

La siguiente tabla va ser muy útil cuando hacemos estas búsquedas, si no eres informático y no entiendes la tabla es de seguro que debas buscar estos dos temas: Root android y Sqlite.

System Synchronised Accounts Android (E,D) Use file '/data/system/users/0/accounts.db'. Profile picture is also supported for Extraction.
System Phonebook Contacts Android (E,D) Use file '/data/data/com.android.providers.contacts/databases/contacts2.db'.
System Call logs register Android (E,D) Use file '/data/data/com.android.providers.contacts/databases/contacts2.db'.
System Call logs register (Samsung) Android (E,D) Use file '/data/data/com.sec.android.provider.logsprovider/databases/logs.db'.
System Samsung SMS snippets Android (E,D) Use file '/data/data/com.sec.android.provider.logsprovider/databases/logs.db'.
System SMS messages Android (E,D) Use file '/data/data/com.android.providers.telephony/databases/mmssms.db'.
System Wi-Fi passwords (WPA-PSK/WEP) Android (E,D) Use file'/data/misc/wifi/wpa_supplicant.conf' from rooted extraction, or 'flattened-data' from backup extraction.
System Default Browser Passwords Android (E,D) Use file '/data/data/com.android.browser/databases/webview.db'.
System Default Browsers History Android (E,D) Use file '/data/data/com.android.browser/databases/browser2.db'.
System Emails (Default application) Android (E) -
App Chrome History / Archived History Android (E,D)
iOS (D)
Use files '/data/data/com.android.chrome/app_chrome/Default/History', '/data/data/com.android.chrome/app_chrome/Default/Archived History'. Databases from other operating systems (Ubuntu/Linux/Windows/Mac OSX) are supported for decoding the data.
App Chrome Login Data (Passwords) Android (E,D)
iOS (D)
Use file '/data/data/com.android.chrome/app_chrome/Default/Login Data'. Databases from other operating systems (Ubuntu/Linux/Windows/Mac OSX) are supported for decoding the data.
App Blackberry Messenger (BBM) Chat Messages Android (E,D)
iOS (D)
Use file '/data/data/com.bbm/files/bbmcore/master.db'.
App Facebook chat / messenger messages Android (E,D) Use files '/data/data/com.facebook.katana/databases/threads_db2', '/data/data/com.facebook.orca/databases/threads_db2'
App Skype Calls / Messages Android (EAB,D) Use files '/data/data/com.skype.raider/files/<account_name>/main.db'
App Facebook user notifications Android (E,D) Use file '/data/data/com.facebook.katana/databases/notifications_db'.
App Facebook viewed photographs Android (E,D) Use file '/data/data/com.facebook.katana/databases/photos_db'.
App Kik Messenger chat messages Android (E,D) Use file '/data/data/kik.android/databases/kikDatabase.db'.
App WhatsApp Contacts Android (E,D) Use file '/data/data/com.whatsapp/databases/wa.db'.
App WhatsApp Calls Android (E,D) Use file '/data/data/com.whatsapp/databases/msgstore.db'.
App WhatsApp Messages Android (E,D) Use file '/data/data/com.whatsapp/databases/msgstore.db'.
App Grindr messages and users iOS (D) Use file 'Grindr.sqlite'
App Viber calls register Android (E,D) Use file '/data/data/com.viber.voip/databases/viber_data'.
App Viber chat messages Android (E,D) Use file '/data/data/com.viber.voip/databases/viber_messages'.
App Tinder Matched Users Android (E,D) Use file '/data/data/com.tinder/databases/tinder.db'.
App Tinder Messages Android (E,D) Use file '/data/data/com.tinder/databases/tinder.db'.
App MeowChat Messages Android (E,D) Use file '/data/data/mobi.mgeek.TunnyBrowser/db/browser.db'.
App Dolphin Web Browser History Android (E,D) Use file '/data/data/com.minus.android/databases/com.minus.android'.

Legend: E = data can be extracted and automatically decoded
EAB = data can be extracted and automatically decoded via AB method only
D = data can be decoded through "Decoders"



Ya con esto tenemos todos los datos en nuestro poder :)

Fuentes:

http://andriller.com/decoders
https://www.androidpit.com/app/fahrbot.apps.undelete
https://gist.github.com/jbinto/8876658
http://www.higherpass.com/android/tutorials/accessing-data-with-android-cursors/
http://www.dunkelheit.com.br/android/forense/curso/curso/Android%20Forensics%20-%20A.%20Hoog%20(Syngress,%202011)%20WW-%20blz146.pdf