IP REPUTATION Collective Intelligence Framework. Parte 2.

Blog

Estimados amigos de Inseguros !!!

Vamos a seguir madurando el concepto de IP
REPUTATION que comenzamos en el pasado artículo.

En esta ocasión, vamos a preparar el
framework de trabajo para obtener la información de seguridad de eventos no
solo para nuestro sistema OSSIM como vimos, sino para otras fuentes públicas.

Vamos a usar el proyecto CIF Collective Intelligence
Framework elaborado por REN-ISAC que me
recomendó el profesor Jose Luis Chica. Gracias !!!

El proyecto implementa el formato IODEF  Incident
Object Description Exchange Format . 
Volvemos a las épocas de los RFC´s 🙂

Se puede observar que en la descripción
del proyecto no aparece esta información, ya que la definición del formato
IODEF se contempla como formato de transporte, y no de almacenamiento de larga
duración, por lo que CIF implementa una definición de IODEF adaptada a un
almacenamiento en formato JSON no en XML con en origen indica el RFC. El
resultado es una tabla con una sola columna de texto. Se crean índices con la
extracción de los metadatos, y al parecer, la velocidad es superior que en un
planteamiento clásico de estructura SQL normalizada, con mil millones de tablas
y campos.

Una imagen vale más que mil
palabras. 

A diferencia de un SIEM, con CIF podemos
no solo recolectar información, sino que podemos generar el output que
necesitamos para incorporar en nuestros sistemas de prevención. Podemos generar
la alerta para que nuestro Snort o Bro PAREN el ataque. Podemos cargar la
información en IPTABLES, etc. Con OSSIM por ejemplo tendrías que hacer lo que
comentamos en el anterior post, crearte un script que ejecute una inserción de
la ip del evento en tu sistema. 

La lista de Outputs que genera CIF es:
Bind Zone config, BRO, CSV, HTML,  IPTABLES, JSON, 
PCAPFILTER , SNORT, TABLE

La comodidad de usar una API nos
permite usar la parte del proyecto que nos interese, consultando o exportando
información de una manera controlada.

Podemos crear una estructura federada para
compartir información entre varios CIF. El objetivo primordial de un proyecto
como este, desarrollado para dar cobertura a los CERT´s, es el de compartir la
información de amenazas.

  

El otro punto es que se integra con
numerosas fuentes de información públicas o FEEDS. Como puedan ser:*algunas no
funcionan bien, o bien ya no existen publicamente*

http://honeytarg.cert.br/honeypots/

http://exposure.iseclab.org/

http://arakis.pl/en/index.html

http://www.spamcop.net/

http://honeytarg.cert.br/spampots/

http://zeltser.com/combating-malicious-software/malicious-ip-blocklists.html

http://contagiodump.blogspot.com/2010/11/links-and-resources-for-malware-samples.html

http://urlquery.net/index.php

http://www3.malekal.com/malwares/

http://jsunpack.jeek.org/dec/go?list=1

http://vxvault.siri-urz.net/ViriList.php

http://minotauranalysis.com/malwarelist.aspx
— overlaps malc0de and cleanmx

http://rss.uribl.com/nic/NAUNET_REG_RIPN.xml

http://www.malwareblacklist.com/showMDL.php

http://abusix.org/service/spamfeeds

http://atlas.arbor.net/summary/fastflux?out=xml

http://dshield.org/diary.html?storyid=12373

https://reputation.alienvault.com/reputation.data

http://security-research.dyndns.org/pub/malware-feeds/ponmocup-botnet-domains.txt

http://security-research.dyndns.org/pub/malware-feeds/ponmocup-botnet-ips.txt

http://security-research.dyndns.org/pub/malware-feeds/ponmocup-malware-domains.txt

http://security-research.dyndns.org/pub/malware-feeds/ponmocup-malware-ips.txt

http://malwareint.com

http://www.senderbase.org/home/detail_virus_source

http://callbackdomains.wordpress.com

http://labs.snort.org/iplists/

http://www.enisa.europa.eu/activities/cert/support/proactive-detection/proactive-detection-report

http://rules.emergingthreats.net/open/suricata/rules/compromised-ips.txt

http://rules.emergingthreats.net/open/suricata/rules/botcc.rules

http://rules.emergingthreats.net/open/suricata/rules/rbn-ips.txt

https://www.projecthoneypot.org/list_of_ips.php

http://rules.emergingthreats.net/open/suricata/rules/tor.rules

http://rules.emergingthreats.net/open/suricata/rules/compromised.rules

http://www.malwaredomainlist.com/hostslist/ip.txt

http://rules.emergingthreats.net/open/suricata/rules/rbn.rules

http://www.mtc.sri.com/live_data/attackers/

http://intel.martincyber.com/ip/

https://reputation.alienvault.com/reputation.generic

https://www.openbl.org/lists/base.txt

http://www.blocklist.de/lists/ssh.txt

https://palevotracker.abuse.ch/

http://www.malwaregroup.com/ipaddresses

http://www.ciarmy.com/list/ci-badguys.txt

http://www.malware.com.br/cgi/submit?action=list

http://www.autoshun.org/files/shunlist.html

abusechweb http://dnsbl.abuse.ch/webabusetracker.php

arbor http://atlas-public.ec2.arbor.net/public/ssh_attackers

autoshun http://www.autoshun.org/files/shunlist.csv

badguys http://www.t-arend.de/linux/badguys.txt

blacklisted http://www.infiltrated.net/blacklisted

brawg http://www.brawg.com/hosts.deny

cleanmxv http://support.clean-mx.de/clean-mx/xmlviruses?response=alive&format=csv&fields=url,ip,domain&domain=

cleanmxp http://support.clean-mx.de/clean-mx/xmlphishing?response=alive&format=csv&fields=url,ip,domain&domain=

danger http://danger.rulez.sk/projects/bruteforceblocker/blist.php

denyhost http://stats.denyhosts.net/stats.html

dshield http://www.dshield.org/ipsascii.html?limit=5000

dynastop http://dynastop.tanaya.net/DynaStop.BleedingThreats.conf

emergingthreats http://www.emergingthreats.net/rules/bleeding-compromised.rules

evilssh http://vmx.yourcmc.ru/BAD_HOSTS.IP4

geopsy http://www.geopsy.org/blacklist.html

haleys http://charles.the-haleys.org/ssh_dico_attack_hdeny_format.php/hostsdeny.txt

kidsclinic http://www.kids-clinic.jp/uni/ipaddress/new_log

kolatzek http://robert.kolatzek.org/possible_botnet_ips.txt

malekal http://www3.malekal.com/exploit.txt

maldom http://mirror1.malwaredomains.com/files/domains.txt

mdl http://www.malwaredomainlist.com/mdl.php?colsearch=All&quantity=All&search=

prometheus http://downloads.prometheus-group.com/delayed/rules/modsec/domain-blacklist.txt

skygeo http://sky.geocities.jp/ro_hp_add/ro_hp_add_hosts.txt

sshbl http://www.sshbl.org/list.txt

stopforumspam http://www.stopforumspam.com/downloads/bannedips.csv

surriel rsync://psbl-mirror.surriel.com/psbl/psbl.txt

Imagina parsear todas estas fuentes a mano 🙂

Existe otro proyecto parecido. AbuseHelper pero no he podido investigar mucho, y por lo que veo, está poco actualizado

La instalación realizada sobre
Debian Wheezy requiere de las siguientes dependencias y paquetes:

sudo aptitude -y install rng-tools postgresql
apache2 apache2-threaded-dev gcc g++ make
libexpat1-dev libapache2-mod-perl2 libclass-dbi-perl libdigest-sha-perl
libnet-cidr-perl libossp-uuid-perl libxml-libxml-perl libxml2-dev
libmodule-install-perl libapache2-request-perl libdbd-pg-perl bind9
libregexp-common-perl libxml-rss-perl libapache2-mod-gnutls libapreq2-dev rsync
libunicode-string-perl libconfig-simple-perl libmime-lite-perl
libfile-type-perl libtext-csv-perl libio-socket-inet6-perl libapr1-dbg
libhtml-table-perl libdate-manip-perl libtry-tiny-perl libclass-accessor-perl
pkg-config libnet-ssleay-perl vim libjson-xs-perl libextutils-parsexs-perl
libdatetime-format-dateparse-perl libnet-patricia-perl libdatetime-perl
libtext-table-perl libcpan-meta-perl libmodule-build-perl

Si usas otra distribución puedes consultar la dependencias:

El siguiente paso es instalar zeromq, paquete necesario para la
gestión de colas de mensajes entre componentes y algunos componentes más que
requieren instalación por fuente.

$ wget http://download.zeromq.org/zeromq-2.2.0.tar.gz
$ tar -zxvf zeromq-2.2.0.tar.gz
$ cd zeromq-2.2.0
$ ./configure && make && sudo make install
$ sudo ldconfig
sudo PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install Test::SharedFork,Test::TCP,Net::Abuse::Utils,Regexp::Common::net::CIDR,LWP::Protocol::https,Google::ProtocolBuffers,Iodef::Pb::Simple,Compress::Snappy,Snort::Rule,Time::HiRes,Net::Abuse::Utils::Spamhaus,Net::SSLeay,Net::DNS::Match,Log::Dispatch,Sys::MemInfo,LWPx::ParanoidAgent,ZeroMQ,Net::Whois::IP,Net::DNS,Email::Address'
 
$ wget http://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/Linux-Cpuinfo-1.7.tar.gz
$ tar -zxvf Linux-Cpuinfo-1.7.tar.gz
$ cd Linux-Cpuinfo-1.7
$ perl Makefile.PL && make && sudo make install
 

Ahora nos auto-baneamos
de Internet durante un tiempo 🙂

iface eth0 inet

   
    dns-nameservers 127.0.0.1

sudo vim /etc/resolv.confnameserver 127.0.0.1

Añadimos el usuario CIF:

sudo adduser –disabled-password –gecos » cif

Configuramos algunos parámetros en Apache.

sudo a2ensite default-sslsudo a2enmod ssl perl apreq

sudo vi /etc/apache2/sites-available/default-ssl
<IfModulemod_ssl.c>

<VirtualHost _default_:443>
+      PerlRequire /opt/cif/bin/http_api.pl
+      Include /etc/apache2/cif.conf
....
 
sudo vi /etc/apache2/cif.conf
 
<Location/api>
    SetHandler perl-script
    PerlResponseHandler CIF::Router::HTTP
    PerlSetVar CIFRouterConfig "/home/cif/.cif"
</Location>
 

Por último configuramos rng-tools para generar numeros random.


echo ‘HRNGDEVICE=/dev/urandom’ | sudo
tee -a /etc/default/rng-tools

Configuramos BIND y Postgres con las instrucciones que nos
proporciona la documentación oficial.
Si tienes problemas al reiniciar Bind puedes comprobar el fallo
ejecutando: 
named-checkconf

Ahora instalamos el framework CIF.

Paramos Apache

$ tar -xzvf cif-v1-1.X.X.tar.gz
$ cd cif-v1-1.X.X
$ ./configure && make testdeps
$ sudo make install
$ sudo make initdb 

El proceso de configuración es muy sencillo y está bien documentado aquí.

Este proceso tarda bastante, quizás horas.

Una vez terminado el proceso de instalación, configurada la rotación de logs y creados los cron para ejecutar las actualizaciones, es turno de probar la herramienta.

Para poder consultar la información tenemos varios métodos, un cliente instalado, un plugin para los navegadores Firefox y Chrome y la API.

Vamos a instalar el complemento en Chrome tal como lo índica el manual. Descargamos el plugin. Y configuramos:

Configuramos la dirección del servidor, la API key de cliente y probamos conexión.

Con esto ya podemos consultar nuestro servidor CIF desde Chrome. Vamos a hacer una prueba. Podemos hacer click sobre el icono de CIF en la parte superior derecha, o directamente sobre un dominio, correo, IP o similar, seleccionarlo y botón derecho.

Ya tenemos instalado CIF server para recolectar inteligencia de distintas fuentes de información mas  o menos públicas. Podemos consultar manualmente esta información con el Plugin para Chrome. 

En los próximos episodios seguiremos trabajando con la idea de integrar en un única base de datos, nuestras IP´s, cotejando la información con estas fuentes, y creando una base de datos sólida.

Espero que os guste, gracias por leerme.

Autor

Profesor y consultor de ciberseguridad. Microsoft MVP.

+ 25 años de experiencia

Compartir artículo :

Otros artículos

calendly
×
Hola 👋, bienvenido a SeguridadSI
Reserva una llamada de 15 minutos para resolver cualquier consulta
Scroll al inicio