Masche, nueva herramienta de análisis forense de memoria de la Fundación Mozilla

por | marzo 16, 2015

Memory Analysis Suite for Checking the Harmony of Endpoints, de ahora en adelante Masche para los amigos, es la nueva herramienta que ha liberado la Fundación Mozilla bajo licencia de código abierto Mozilla Public License 2.0 para realizar análisis a bajo nivel de memoria en sistemas Windows, Linux o Mac OS X.

Instalación del compilador de Golang y dependencias adicionales

El proyecto podéis encontrarlo en GitHub, donde también podréis encontrar instrucciones básicas sobre cómo compilarlo y utilizarlo. A modo de ejemplo en Debian donde lo he probado primero instalamos golang (el compilador para Go) con:

apt-get install golang

Después instalamos las dependencias necesarias tanto para 32 bits como para 64 bits. Si tenemos un sistema de 64 bits y no hemos activado el soporte para 32, lo hacemos:

dpkg --add-architecture i386
apt-get update

Después instalamos el resto de dependencias:

apt-get install libc6-dev-amd64 libc6-dev-i386 libc6-i386 libc6

Exportamos la variable GOPATH para especificar nuestro espacio de trabajo con Go:

export GOPATH=/opt/masche-master

Uso básico de Masche

Tras los sencillos pasos anteriores podéis descargar la utilidad en un .zip desde la página web del proyecto en GitHub o bien con haciendo un go get siempre y cuando tengáis git instalado en el sistema:

go get github.com/mozilla/masche

Si estáis detrás de un proxy, tendríamos que especificar usuario y contraseña (en caso de que tengamos que autenticarnos) e IP y puerto del servidor proxy, de una manera un tanto particular, por lo que os lo comento para evitar más de un dolor de muelas:

https_proxy="http://[usuario]:[contraseña]@[servidorproxy]:[puerto]" go get github.com/mozilla/masche

Por ejemplo, si mi usuario fuera “julio sanz” y la pass “Khsgw24” con servidor proxy en 192.168.3.105 escuchando en el puerto 3128:

https_proxy="http://julio sanz:Khsgw24@192.168.3.105:3128" go get github.com/mozilla/masche

Una vez tenemos la utilidad, podemos ejecutar unos sencillos ejemplos que encontramos en el directorio example:

cd /opt/masche-master/src/github.com/mozilla/masche/examples/

En cada caso:

  • listlibs: podemos comprobar qué librerías dinámicas tiene cargadas un proceso.
  • pgrep: similar al uso del programa pgrep en Linux, permite buscar el ID de un proceso a partir de expresiones regulares.
  • memsearch: búsqueda de un determinado proceso en memoria.

Para probarlos, en terminal:

go run memsearch.go
go run pgrep.go
go run listlibs.go

De momento Masche es una herramienta independiente aunque la idea es integrarla en el futuro en Mozilla InvestiGator, una suite más completa de seguridad destinada a realizar análisis de vulnerabilidades y hardening de infraestructuras informáticas.