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:
- (stable) Ubuntu
12 LTS - (unstable) Ubuntu
14 LTS - (stable) Debian
Squeeze (6) - (stable) Debian
Wheezy (7) - (stable) CentOS
6 - (testing) CentOS
5
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.








