Using OSSEC & SEC for Malware Detection

Friday, 12. March 2010 19:07

Hi all, this is my first english post so… excuse me :) I will try to show how we can use OSSEC and SEC for detect malware in our servers.
We need a working installation of ossec (local or server mode), mhc, this small perl script and SEC. After installing (copy) mhc and the perl script (do it in /usr/local/bin, for example), open a new file with your favorite text editor:

#
# New syscheck event - Store agent name
#
type=Single
pattern= (\S+)->syscheck
ptype=regexp
desc=$0
action=create OSSEC_SYSCHECK; assign %agent $1

#
# Integrity checking - Store filename
#
type=Single
ptype=regexp
context=OSSEC_SYSCHECK
desc=$0
pattern=Integrity checksum changed for: '(\S+)'
action=assign %file $1;

#
# Integrity checking - New event for SingleWithScript (I can't use %vars with script directive)
#
type=Single
ptype=regexp
context=OSSEC_SYSCHECK
pattern=New md5sum is : '(\S+)'
desc=OSSEC: Filename: %file - md5sum: $1
action=event OSSEC: Filename: %file - md5sum: $1

#
# Integrity checking - Check againts Virustotal.com
#
type=SingleWithScript
desc=$0
ptype=regexp
context=OSSEC_SYSCHECK
pattern=^OSSEC: Filename: (\S+) - md5sum: (\S+)
script=/usr/local/bin/sec-virustotal $2 $1
action=none
action2=eval %a \
({	use Sys::Syslog; \
	openlog('sec-virustotal','','user'); \
	syslog('info', "%agent: File %file ($1) is tagged as VIRUS by virustotal.com"); \
	closelog; \
	1;  \
};); delete OSSEC_SYSCHECK

Save this file under /etc/sec directory (I used ossec.sec as filename). Then we must define a new ossec rule:


sec-virustotal
	VIRUS
	Virus Found!!

Be sure to use an unused id for your new rule. You can add a group directive for correlating with another event if you want. Before start SEC, we can change sec-virustotal script to scan only those files with a desired extension:

#!/usr/bin/perl

use strict;
my $virus_script = '/usr/local/bin/mhc';
my @extensions = qw/exe dll/; # Use * for all extensions
my $filename;
my $hash;
my $ext;
my @tmp;

if($#ARGV != 1) {
    print "usage: $0 md5hash filename\n";
    exit 100;
}

$filename = $ARGV[1];
$hash = $ARGV[0];
my @tmp=split(/\./,$filename);
$ext = lc($tmp[$#tmp]);

foreach (@extensions) {
    if($ext eq $_ || $_ eq '*') { # Extension found, scanning...
        my $res = qx/$virus_script --hash $hash --no-cache/;
        exit ($? >> 8);
    }
}
exit 0;

We can change @extensions variable to scan ‘.scr’ files, for example. Now we have our new rule, restart ossec and launch SEC:

 # /var/ossec/bin/ossec-control restart
 # /usr/bin/perl -w /usr/bin/sec -conf=/etc/sec/ossec.sec -quoting -input=/var/ossec/logs/alerts/alerts.log -detach

I leave to the reader the step of launching SEC at startup. But for Debian edit /etc/default/sec:

#Defaults for sec
RUN_DAEMON="yes"
DAEMON_ARGS="-conf=/etc/sec/ossec.sec -input=/var/ossec/logs/alerts/alerts.log -pid=/var/run/sec.pid -detach -quoting"

I hope you find this useful.

Thema: Malware, OSSEC, Perl | Kommentare (0)

La charla de OSSEC

Monday, 1. March 2010 1:17

Hace una semana, hice una charla sobre ossec. Aquí os la dejo:

http://bit.ly/9EkuvX

Y las diapositivas:

- http://bit.ly/b3OLTD (odp)
- http://bit.ly/bJKhKw (ppt)
- http://bit.ly/cSLoZW (pdf)

Nos vemos

Thema: OSSEC, Seguridad | Kommentare (0)

Webmeeting sobre OSSEC

Saturday, 30. January 2010 14:09

Para todos aquellos que estén interesados en conocer OSSEC HIDS, he organizado una charla el Viernes 12 de Febrero a la 16:20 hora española. Sólo tenéis que apuntaros:



Thema: OSSEC, Seguridad | Kommentare (1)

Malware Hash Checker

Monday, 7. December 2009 18:29

Buenas a todos/as,

he creado una versión del script que consulta virustotal.com desde la línea de comando, aunque lo he diseñado para que pueda ir integrando otros buscadores. De esta idea, nace Malware Hash Checker. Podéis descargarlo desde http://code.google.com/p/virtualminds/

Espero vuestros comentarios y sugerencias

Thema: Malware, Perl | Kommentare (0)

Cambio de blog

Sunday, 29. November 2009 21:27

Pues eso, que me he mudado por problemas con serendipity. Al final he caído en las garras de wordpress. Esperemos que me vaya mejor.

En los próximos días intentaré ir posteando. Ya sabéis que esto va por rachas :P

Saludos

Thema: Personal | Kommentare (2)

Extraer tabla de un dump en MySQL

Friday, 22. May 2009 13:46

Una pequeña receta que nos ha tocado hoy hacer en el curro. A veces necesitamos recuperar de un dump de mysql, los datos de una tabla. En este caso, el script que nos ocupa, recupera de un full dump, una tabla completa, con su definición, aunque sería relativamente sencillo recuperar solo los datos (INSERT):

#!/bin/sh
if [ $# -lt 1 ]; then
echo "Use: $0 table_name [filename]"
exit 1
fi

sed -n "/structure for table \`$1\`/,/UNLOCK TABLES/p" $2

Se puede invocar de dos formas:

extract_table.sh nombre_de_tabla fichero_con_el_dump

o

cat fichero_con_el_dump | extract_table.sh nombre_de_tabla
zcat fichero_con_el_dump.gz | extract_table.sh nombre_de_tabla

Un saludo

Thema: Linux, MySql, Receta | Kommentare (0)

Mi correo no es un ftp

Friday, 22. May 2009 13:23

Existe una creciente oleada de personas dispuestas a quejarse porque cuando mandan ficheros de tropecientos megas, el servidor de correo no va bien. Señores, señoras, el correo no es un ftp. Uno al final se cansa de recibir mensajes enormes y muchos de ellos, inútiles. Así que os dejo una pequeñ receta de procmail para evitar saturaros la cuenta con ppt y demás familia:

# MAXMSG = bytes del mail
MAXMSG=14680064
NL="
"
:0
* $ > $MAXMSG
{
LOG="Mi correo no es un ftp${NL}"
EXITCODE=69
HOST
}

Saludos

Thema: Linux, Receta | Kommentare (0)

Habí­a que hacerlo

Thursday, 16. April 2009 18:44

Cuando un gobierno se empeña en criminalizar a su pueblo, cuando son gente del propio pueblo los que parece que gobiernan, cuando los intereses personales de un colectivo, en su mayorí­a, acaudalado, se anteponen a las libertades… hay que hacerlo. Hay que alzar la voz. Por eso ahora junto a la publicidad de google, he puesto un banner para enseñarle la puerta a nuestra recién y denostada ministra de cultura.

Parece un sin sentido que nuestro gobierno siga desoyendo el clamor popular. Pero aún más ridí­culo parece que desoiga a los jueces. Cuándo se van a dar cuenta que las descargas no son ilegales. Cuánto tiempo tendremos que soportar las campañas producidas con el erario público para llamarnos delincuentes, terroristas, instigadores. Nos relacionan con las mafias, soportamos que hagan comparaciones ridí­culas. Compartir no es robar, es una cuestión puramente matemática. Y aún, cuando compras un dvd, cuando vas al videoclub, el dichoso anuncio te recuerda que, pese a todo, sigues siendo un delincuente, un ser abducido por la oscuridad de tu cuarto y la pantalla de un ordenador.

La verdad, yo sigo sin entender la polí­tica. ¿Esta gente no tiene un gabinete de asesores? A lo mejor están todos descargándose algo ilegal, como Linux. De verdad, por favor, Sr. Zapatero, la cultura es importante, no es sólo una baza electoral. Seguro que se acuerda de muchas de sus promesas con respecto al software libre. O seguro que no. Tómese un café de los suyos, es posible que la memoria se le refresque. Y de paso, vaya ampliando las cárceles porque, visto lo visto, todos vamos a ir a una, desde los que, como yo, usamos aplicaciones P2P hasta los que especulan, urbanizan, malgastan, asesinan, mienten, roban o filman. Porque puestos a criminalizar, al final en este paí­s, no se libre ni el tato.

Nos vemos en la cárcel.

Thema: Personal | Kommentare (0)

MySQL CMDBA – Certificándose

Wednesday, 15. April 2009 16:20

Hace tiempo comenté que estaba detrás de la certificación y por fin le pude dedicar tiempo. El resultado, por fin tengo mi certificación y va en camino la de clustering (CMCDBA). Y cómo no, el honor de aparecer en la web de MySQL

Para no repetir contenido, os dejo un enlace comentando un poco el examen (el DBA I, porque el DBA II fue igual). Os animo a sacaros la certificación, la verdad es que aprendí bastante cosas que no sabía. No sé cómo serán los cursos, en mi caso, dado que necesitaba esta certificación para acceder a la de clustering, lo hice por libre, pero si podéis permitíroslo (que lo paga la empresa, hombre) seguro que os podrán ayudar a pasarlo sin problemas.

Ahora, unas semanas de “relax” y a por la de clustering. Y si alguno va a ir al curso de alta disponibilidad que organiza Warp, allí nos veremos.

Saludos

Thema: Linux, MySql | Kommentare (0)

Packers y Yara

Saturday, 31. January 2009 22:59

Desde hace poco, estoy metiéndome un poco en el mundo del reversing, malware,… Y buscando, encontré una herramienta muy curiosa. Yara. Esta herramienta busca patrones en ficheros. Por defecto, no hay ninguno, por lo que cada cual tendrá que hacerse los suyos. Ahora mismo lo estoy usando para descubrir binarios empaquetados y para ello, recurrí a la lista de patrones de PEiD, que es pública.

Pero antes había que pasarla al formato de reglas de yara. Total, que recurrí a un pequeño script que hice. Os lo cuelgo por si a alguien le fuera de utilidad:

http://virtualminds.es/uploads/scripts/yararules.pl

Y el fichero de reglas:

http://virtualminds.es/uploads/scripts/packers.sig.gz -> Fichero de reglas

http://virtualminds.es/uploads/scripts/rules.db.gz -> Correspondencia con los packers

Thema: Malware | Kommentare (0)