En un análisis de malware, no solo importa si está empaquetado. Si la muestra está activa, que cambios realiza a nivel de sistema operativo. Cual es el vector de ataque que emplea el atacante para su distribución etc..

Hay una parte muy importante y que muchas veces nos cuesta representar en un informe, se trata de el análisis de tráfico. Con el análisis de tráfico somos capaces de identificar nuevas ip’s o dominios incluidos en el caso, también somos capaces de obtener nuevos binarios si se trata de un dropper, por ejemplo.

Pues el proyecto de hoy se trata sobre la parte de visualización de tráfico entre otras cosas.

¿Que es Malcom?

Malcom es una herramienta que se utiliza para el análisis del tráfico y de comunicaciones de malware. También puede ser una gran fuente para reunir información de inteligencia, ya que fácilmente se puede consultar la relación entre los elementos que se representan visualmente.

Usaríamos Malcom para tres propósitos principales:

Determinar rápidamente si un host, IP o URL es “un malo conocido” (es decir, si se ha marcado como malicioso por otros sitios web o fuentes).

Obtener  inteligencia sobre dos elementos diferentes. Por ejemplo, se puede ver que varios hosts diferentes apuntan a una misma dirección IP (o un AS), que se ha visto en ataques anteriores. Finalmente, también se puede ver que esos mismos dominios o IP han sido registrados por tres direcciones de correo electrónico diferentes, que también se han visto en los kits de phishing.

Obtener una visión detallada de la clase de patrones de tráfico de una red de un host que se está mostrando. ¿Está haciendo ping a  determinadas direcciones IP? ¿Está enviando el tráfico SMTP? Es parte de una botnet? ¿Qué tipo de infraestructura de C & C se está utilizando?

Para saber como usarlo, consultad la documentación, está todo súper detallado.

Añadiendo feeds a Malcom

Una de las cosas que me han parecido mas interesantes es el hecho de poder añadir feeds a Malcom, con estos feeds que añadimos, poder aglutinar mas información que una vez tratada convertiremos en INTELIGENCIA.

Ejemplo de añadir ZeusTracker como fuente de información

class ZeusTrackerBinaries(Feed):

	def __init__(self, name):
		super(ZeusTrackerBinaries, self).__init__(name)</pre>

Iniciamos la clase en un constructor 😉

Para que se vaya actualizando…

def update(self):
	try:
		feed = urllib2.urlopen("https://zeustracker.abuse.ch/monitor.php?urlfeed=binaries")
		self.status = "OK"
	except Exception, e:
		self.status = "ERROR: " + str(e)
		return False

	children = ["title", "link", "description", "guid"]
	main_node = "item"

	tree = etree.parse(feed)
	for item in tree.findall("//%s"%main_node):
		dict = {}
		for field in children:
			dict[field] = item.findtext(field)

		self.analyze(dict)

	return True</pre>

Después de importar los datos podremos ver lo siguiente:

687474703a2f2f6469726563742e746f6d63686f702e6d652f6d616c636f6d2f646174617365742d6d61696e2e706e67

Un ejemplo de como se mostraría el tráfico en modo gráfico:

traffic

Un ejemplo súper bueno es mostrar el tráfico de un Zeus-P2p

687474703a2f2f6469726563742e746f6d63686f702e6d652f6d616c636f6d2f7032702e706e67

El proyecto está preparado para ver el PAYLOAD de una petición en concreto.

687474703a2f2f6469726563742e746f6d63686f702e6d652f6d616c636f6d2f736e69666665722d7061796c6f61642d636f6e74656e74732e706e67

Una de las ideas que lanzo es poder combinar Malcom con Cuckoo.

Enlaces de interés:

[+]https://github.com/tomchop/malcom

[+]https://github.com/tomchop/malcom/wiki/Quickstart

[+]https://github.com/tomchop/malcom/wiki/Adding-feeds-to-Malcom