Detectando proxies anónimos

Hace ya algún tiempo tuvimos un incidente donde los atacantes estaban utilizando un servidor de la organización afectada como un proxy anónimo, aprovechando una configuración errónea del servidor. Durante el mismo incidente, nos vino a la cabeza la pregunta, ¿Qué usan para detectar que este servidor estaba mal configurado y tiene capacidad de proxy?. La pregunta no iba por la senda de averiguar una técnica muy compleja, sino ver qué podían estar utilizando y añadir dentro de nuestros análisis preventivos uno que compruebe que los servidores no tengan ningún servicio actuando como proxy anónimo, por error. Antes de ponernos a hacer un “pythonito” que haga justo eso, me puse a bucear un poco en la red.

Lo primero que encontré buscando sobre este asunto fue una entrada en un blog cuyo título era “FHTTP + shodan” (Ver I y II)

En esta entrada publican un script sencillo que va cogiendo como fuente Shodan y busca servidores que estén configurados como proxy anónimo. Está bien la idea, pero lo que necesitamos es algo que no dependa de Shodan y de los puertos que decide barrer.

Después de un rato buceando, hice una paradinha, y me dije, seguro que esto ya lo ha hecho alguien para nmap y es bastante probable que lo usen. Y realizando una búsqueda encontré http-open-proxy, ¡Bingo!

Veamos la descripción del plugin:

“The script attempts to connect to www.google.com through the proxy and checks for a valid HTTP response code. Valid HTTP response codes are 200, 301, and 302. If the target is an open proxy, this script causes the target to retrieve a web page from www.google.com”.

Para que el script se active tiene que encontrar alguno de los siguientes puertos:

portrule = shortport.port_or_service({8123,3128,8000,8080},{'polipo','squid-http','http-proxy'})

El script tiene dos parámetros muy útiles:

-- @args proxy.url Url that will be requested to the proxy
-- @args proxy.pattern Pattern that will be searched inside the request results

Un ejemplo de uso de los parámetros sería:

root@saw:~# nmap --script="http-open-proxy" --script-args="proxy.url=www.debian.org,proxy.pattern=
       The Universal Operating System" www.dominio.es -PN

Lo único que estamos diciéndole es que a través de la ip de www.dominio.es se intente conectar a www.debian.org y el patrón que debe buscar es “The Universal Operating System”.

El script por defecto viene con una serie de tests para comprobar si realmente se trata de un proxy o no, que podéis ver al editarlo. Su utilización es tan sencilla como:

root@saw:~# nmap --script="http-open-proxy" www.dominio-conocido.es -p8123,3128,8000,8080 -PN

Starting Nmap 5.21 ( http://nmap.org ) at 2013-03-01 19:47 MSK
Nmap scan report for www.dominio-conocido.es (z.z.z.z)
Host is up (0.024s latency).
PORT STATE SERVICE
3128/tcp closed squid-http
8000/tcp closed http-alt
8080/tcp closed http-proxy
8123/tcp closed polipo

Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

Ahora lo que vamos a hacer es proporcionarle al script una dirección que es un proxy recogido de un listado público:


root@saw:~# nmap --script="http-open-proxy" x.x.x.x -p8123,8080,8000,3128 -PN -e venet0:0
Nmap scan report for x.x.x.x
Host is up (0.38s latency).
PORT STATE SERVICE
3128/tcp filtered squid-http
8000/tcp filtered http-alt
8080/tcp open http-proxy
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported: GET
8123/tcp filtered polipo

Nmap done: 1 IP address (1 host up) scanned in 11.00 seconds

Ahora probamos con el típico puerto del squid, 3128:


root@saw:~# nmap --script="http-open-proxy" y.y.y.y -p8123,8080,8000,3128 -PN

Starting Nmap 5.21 ( http://nmap.org ) at 2013-03-01 19:54 MSK
Stats: 0:00:01 elapsed; 0 hosts completed (0 up), 0 undergoing Host Discovery
Parallel DNS resolution of 1 host. Timing: About 0.00% done
NSE: Script Scanning completed.
Nmap scan report for y.y.y.y
Host is up (0.11s latency).
PORT STATE SERVICE
3128/tcp open squid-http
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported: GET HEAD
8000/tcp filtered http-alt
8080/tcp filtered http-proxy
8123/tcp filtered pólipo

Nmap done: 1 IP address (1 host up) scanned in 8.14 seconds

Este mecanismo u otro similar sería el que utilizarían los atacantes para descubrir proxy anónimos que no están públicos en el listado y realizar desde ahí sus fechorías. Nosotros ahora mismo podemos utilizar este mismo mecanismo para comprobar sobre nuestros clientes que ningún proxy tiene una configuración que permite su uso de manera anónima.

/Rooted CON 2013 día 1

Un año más estamos en la /RootedCON. Este año se inicia con una interesante charla de David Fuertes titulada «Señales débiles, ¿nos protegemos sabiendo que nos van a atacar?«. David nos ha hablado sobre uno de los temas de moda como son las «APT» y el enfoque que le dan actualmente las organizaciones a la hora de protegerse, donde muchas de ellas no asumen que van a ser alguna vez comprometidas. David terminó exponiendo algunas ideas para detectar en las organizaciones esas señales débiles que puedan hacer saltar las alarmas, como puede ser centrarse en la cantidad de tráfico de red.

La siguiente charla corrió a cargo de Vicente Díaz: «Birds, bots and machines – fraude in twitter and how to detect it using machine learning techniques«, donde explicó una investigación que ha llevado a cabo para detectar campañas de bots de twitter que se dedican a enviar spam. Para poder diferenciar si es un bot enviando spam se aplicó machine learning, obteniendo en su estudio unos datos bastantes buenos de detección. También recalcó que una de las fases importantes de la investigación es la definición de los parámetros (públicos o calculados) que permiten después decidir si es un bot o no; un ejemplo de parámetro es el «tiempo medio entre tweet«. Como veis una charla muy interesante y con el mensaje de que no hay que tener miedo a la IA.

Jose Miguel Esparza y Mikel Gastesi «Sopelka vs Eurograbber: really 36 million eur?» nos hablaron de la botnet sopelka y alguna de sus peculiaridades, como por ejemplo que se trata de tres muestras de malware y un solo panel, un dato realmente curioso. Una vez ya habían detallado las funcionalidades pasaron a hablar de un informe que se hizo eco en todos los medios de amplia difusión sobre Eurograbber y las grandes cantidades de dinero robadas. Sobre el informe han hecho una crítica a la falta de rigor del mismo, tras realizar diferentes comprobaciones que han comentado en la misma charla. Su mensaje principal es que cuando leamos un informe debemos ser críticos y detectar rápidamente cuándo se trata de un informe enfocado únicamente al marketing.

Juan Antonio Calles y Pablo González: «Metasploit & Flu-AD: Avoiding AVs with Payloads/DLLs Injection» nos hablaron de Flu-AD, cómo ha nacido y cuál es su estado actual. La herramienta, como muchos de vosotros ya sabéis, es un troyano para que los cuerpos policiales puedan cazar a pedófilos, pederastas, etc. Flu-AD en su origen estaba hecha en .NET y debido a diversos requisitos (por ejemplo, tamaño inferior 50kb del binario) que se les ha marcado por parte de los cuerpos policiales han tenido que desarrollarla en C. Otro punto donde han centrado su trabajo es en hacer que todos sus componentes sean indetectables. También nos mostraron su integración con metasploit, para aprovechar todo su potencial.

Alejandro Ramos «Te pique lo que te pique analiza un SQLite«, nos contó la estructura de un SQLite y las consideraciones que hay que tener en cuenta cuando vas a recuperar información de una base de datos de este tipo. Básicamente comentó que cuando se borra información de SQLite, ésta no se elimina sino que se marca que el espacio está libre, por lo que la información como en los sistemas de ficheros hasta que no sea sobrescrita seguirá ahí. Una de las dificultades para la recuperación de información radica en las aplicaciones que de manera periódica reorganizan el espacio.

David Meléndez Cano, «Trash Robotic Router Platform«, enseñó dos prototipos en los que lleva trabajando unos cuantos años. Su filosofía para crearlos es reutilizar «cacharros» que todos tenemos por casa sin usar y crear este tipo de dispositivos. Uno de ellos estaba basado en un router linksys y el otro en una fonera. Estuvo contando cual ha sido todo el proceso y qué escollos se ha encontrado hasta tener los prototipos. Una charla muy buena y un trabajo increíble.

Y de momento, eso fue todo en el primer día de la rootedcon. Seguiremos informando.

HoneySpider 2.0 – Detección de malware en la web

Hace algún tiempo que llevamos trabajando con la herramienta HoneySpider en su versión 1.x que, para el que no la conozca es una herramienta desarrollada por CERT Polska / NASK y el NCSC. En la versión 1.x se trataba básicamente de un honeyclient web y su funcionamiento consistía en visitar páginas web como si fuera un usuario y detectar si existe código malicioso en la página.

La versión 1.x de HoneySpider no era accesible de manera pública y era necesario solicitarlo expresamente a los responsables del proyecto. Nosotros supimos de la existencia de esta herramienta gracias a uno de los eventos del Trusted Introducer, donde se reúnen CERTs de diferentes países y se intercambia conocimiento muy útil.

La versión 1.x de la herramienta tenía la siguiente arquitectura:

La herramienta en esta versión estaba formada de un módulo central (center) y un módulo de baja interacción que visita las páginas Web, recopilaba información del destino, y hacía un análisis del código javascript; en el caso de ser malicioso pasaba el enlace al módulo de alta interacción, donde ejecutaba en una máquina virtualbox un navegador que visita la página Web para detectar exploits de cliente.

Es necesario saber que el módulo “Web Client” no es un crawler (versión 1.X) sino un módulo que emula el comportamiento de un usuario, con el objetivo de que el responsable del sitio malicioso no detecte que es un programa automático el que está visitando la web, por lo que por mucho que por debajo trabaje con el crawler Heritrix (https://webarchive.jira.com/wiki/display/Heritrix/Heritrix), la gente del proyecto HoneySpider lo modificó para emular a un usuario (por lo menos en la versión 1.X).

Al principio de este año 2013 se presentó en la conferencia “NCSC Conference 2013” (PDF) la versión 2.0. Esta nueva versión posee una arquitectura bastante diferente como podéis ver en el siguiente esquema, donde ya no se divide en baja y alta interacción, sino que se ha tendido a una arquitectura donde todos los módulos interactúan con un módulo central, arquitectura similar a la que están tendiendo otras herramientas:

De la nueva versión destacaría la incorporación de una funcionalidad que permite incorporar los nuggets de razorback, proyecto del que ya nos habló Maite en un par de entradas. Para esto, según indican, únicamente es necesario recompilar el nugget.

En el momento de la publicación de la herramienta existen los siguientes nuggets probados: swfScanner, pdfFox, clamavNugget, officeCat, virusTotal y archiveInflate. Además, es necesario destacar por un lado su integración ya con la sandbox Cuckoo, y por otro el hecho de que hayan liberado el código en github lo que hace que ante cualquier problema o necesidad que uno pueda tener pueda implementársela.

Dentro de nuestros objetivos está probar esta nueva versión de HoneySpider para ver si se ajusta más a nuestras necesidades y si no poderla adaptar, por lo que en breve podremos daros nuestra opinión de este gran trabajo.

Protocolo IRC en Cuckoo Sandbox

Durante el mes de Noviembre hemos estado añadiendo soporte a nuestra sandbox para que pueda interpretar el tráfico IRC y cuando un malware se comunica mediante este protocolo obtengamos información en nuestro informe, como son los mensajes que envía el cliente de irc y los mensajes que envía el servidor.

El día del fin del mundo, según los Mayas, se publicó la versión 0.5 de Cuckoo Sandbox, donde los desarrolladores de Cuckoo han añadido soporte para el protocolo IRC en el que hemos estado trabajando, por lo que si os bajáis esta versión ya dispondréis de esta funcionalidad.

A continuación me gustaría comentaros los ficheros que se han desarrollado o modificado para extraer el protocolo IRC de un flujo de tráfico TCP:

lib/cuckoo/common/irc.py«: Librería que dado un flujo TCP extrae los mensajes IRC del cliente por un lado y del servidor por otro. Para recoger estos mensajes (tanto cliente como servidor) se ha desarrollado una serie de funciones (se ha basado el desarrollo en la gramática descrita en el RFC en el punto 2.3.1):

_unpack(self, buf): Recibe un flujo TCP y extrae los mensajes IRC. Es la función que implementa la gramática y la que utilizan las mayoría de funciones públicas de la librería.

getClientMessages(self,buf): Como parámetro recibe un flujo TCP y devuelve un diccionario con los mensajes del cliente. El diccionario tiene tres campos, command, params y type.

  • command: Comando IRC.
  • params: Parámetros que lleva el comando.
  • type: Tipo de mensaje que depende de quien es el emisor. Puede ser client ó server. En este caso tendrá el valor client.

getClientMessagesFilter(self,buf,filters): Como parámetros recibe un flujo TCP y una lista con los comandos de cliente que no se tendrán en cuenta; vamos que se filtrarán (para evitar mensajes que puedan ser muy ruidosos). Como resultado devuelve un diccionario con los mensajes de cliente. Como en la función anterior tiene tres campos el diccionario.

getServerMessages(self,buf): Como parámetro recibe un flujo TCP y devuelve un diccionario con los mensajes del servidor. El diccionario tiene cuatro campos, prefix, command, params y type.

  • prefix: Campo donde el servidor indica el verdadero origen del mensaje.
  • command: Comando IRC.
  • params: Parámetros que lleva el comando.
  • type: Puede ser client/server. En este caso de tipo server.

getServerMessagesFilter(self,buf,filters): Como parámetros recibe un flujo TCP y una lista con los comandos de servidor que no se tendrán en cuenta, vamos que se filtrarán (para evitar mensajes que puedan ser muy ruidosos). Como resultado devuelve un diccionario con los mensajes de servidor. Como en la función anterior tiene cuatro campos el diccionario.

isthereIRC(self,buf): Como parámetro recibe un flujo TCP y devuelve True si hay mensajes IRC y False en el caso de que no hayan.

modules/processing/network.py”(): En este fichero se ha añadido soporte para procesar las peticiones IRC en Cuckoo y como es lógico usa la librería irc.py.

data/html/sections/network.html”: En este fichero se ha añadido código para que el informe muestre la información de la comunicación IRC. Como se ve debajo se muestra el comando irc, sus parámetros y el tipo de mensajes (cliente o servidor, dependiendo de quien lo envía).

Una vez lanzamos el análisis encontraremos en nuestro informe en la sección network algo como:

Y una vez desplegado se verá:

Como siempre espero que os sea de utilidad y cualquier error en la extracción que detectéis no dudéis en comentármelo.

Personalización de “Cuckoo Sandbox”

Cuckoo Sandbox como muchos de nuestros lectores ya sabrán es una aplicación para el análisis automático de malware. El proceso de instalación en la versión actual de la sandbox es bastante sencillo y ha sido descrito por otros blogs de manera muy detallada. Una vez ya disponemos de la sandbox instalada, ésta nos proporcionará informes, como los que podemos encontrar en el servicio de análisis de malware alojado en Malwr, sobre el comportamiento del malware, sobre las APIs importadas, con los resultados de virustotal, el packer utilizado, etc.

En esta entrada me gustaría destacar “la verdadera potencia”, bajo mi humilde punto de vista, de esta sandbox, y que la podemos encontrar en el diseño modular que han realizado sus desarrolladores y en la sencillez para desarrollar módulos para el análisis automático de malware. Convirtiéndola en una Sandbox muy personalizable.

[Read more…]

JavaSnoop – Debugging aplicaciones Java

Recientemente hemos utilizado una herramienta muy interesante para analizar applets Java: JavaSnoop, desarrollada para la BlackHat USA de 2010 por Arshan Dabirsiaghi. A grandes rasgos, la herramienta nos permite adherirnos (attach) a un proceso Java o arrancarlo e interceptar las llamadas que se realizan. Además de interceptar estas llamadas y ver su contenido, nos permitirá modificar los argumentos de los métodos que estamos interceptando y modificar el valor de retorno de la función.

A continuación, veamos cómo interceptar un método de un applet Java:

1. Descargamos la última versión de la aplicación: http://code.google.com/p/javasnoop/downloads/list

Nota: Se recomienda dejar la aplicación en un directorio que no contenga espacios en sistemas Windows (ej. C:\JavaSnoop).

[Read more…]

Análisis de “Builder NGR Bot 1.1.0.0”

Hace unos días estuvimos buscando qué era lo que estaban distribuyendo sobre “NGR bot” por la red y vimos que aparecía bastantes veces por los foros la cadena “Builder NGR Bot source code”. Para aprender un poco más sobre esta muestra decidimos pegarle un vistazo y ver qué era exactamente. Después de varios intentos (la mayoría de enlaces no iban) conseguimos descargarnos un fichero zip (MD5 (ngrBot_1.1.0.zip) = 411eb0f5e7e56322f308ceaeae666018) que contiene lo siguiente:

$ ls -lR

total 0
drwxr-xr-x   9 josemi  staff  306 19 jun 23:29 Builder
drwxr-xr-x  12 josemi  staff  408 19 jun 23:44 BuilderFull
drwxr-xr-x   4 josemi  staff  136  9 sep  2011 bin

./Builder:
total 640
-rw-r--r--@ 1 josemi  staff   31167  1 sep  2011 fMain.frm
-rw-r--r--@ 1 josemi  staff   26091  1 sep  2011 fMain.frx
-rw-r--r--@ 1 josemi  staff   25998 31 ago  2011 new copy.jpg
-rw-r--r--@ 1 josemi  staff  223808 31 ago  2011 new.PSD
-rw-r--r--@ 1 josemi  staff     614  1 sep  2011 ngrBotBuilder.vbp
-rw-r--r--@ 1 josemi  staff      52  5 sep  2011 ngrBotBuilder.vbw
-rw-r--r--@ 1 josemi  staff     261  1 sep  2011 ngrdata.inf

./BuilderFull:
total 344
-rw-r--r--@ 1 josemi  staff  33896  5 sep  2011 fMain.frm
-rw-r--r--@ 1 josemi  staff     81  5 sep  2011 fMain.frx
-rw-r--r--@ 1 josemi  staff    242 31 ago  2011 makeit.bat
-rw-r--r--@ 1 josemi  staff  96332 31 ago  2011 ngrBotBuilder.RES
-rw-r--r--@ 1 josemi  staff    676  5 sep  2011 ngrBotBuilder.vbp
-rw-r--r--@ 1 josemi  staff     52  5 sep  2011 ngrBotBuilder.vbw
-rw-r--r--@ 1 josemi  staff    258  1 sep  2011 ngrdata.inf
-rw-r--r--@ 1 josemi  staff   8938 31 ago  2011 ngrdll.asm
-rw-r--r--@ 1 josemi  staff     46 31 ago  2011 ngrdll.def
-rw-r--r--@ 1 josemi  staff   2726 31 ago  2011 ngrdll.lib

./bin:
total 320
-rw-r--r--@ 1 josemi  staff  159744  5 sep  2011 ngrBotBuilder.exe
-rw-r--r--@ 1 josemi  staff    4096 31 ago  2011 ngrdll.dll

[Read more…]

NGR Bot 1.1.0.0 – Configurando nuestro -IRC C&C- para el análisis

Durante estas semanas he estado realizando un análisis al malware NGRBot, del cual podéis encontrar bastante documentación haciendo una simple búsqueda en Google por el nombre del bot. Os aconsejo para situaros pegarle un vistazo por ejemplo el siguiente paper: http://secniche.org/released/VB_AKS_RB_RJE_NGR_BOT.pdf.

En esta entrada lo que me gustaría es mostrar los pasos a seguir para poder configurar el servidor IRC de manera que podamos controlar a nuestro bot, y llevar a cabo nuestro análisis. Un ejemplo del entorno de análisis sería por un lado la máquina virtual “remnux” como máquina de interacción y por otro una máquina virtual con Windows XP como máquina de infección. A nivel de red, será necesario que las dos máquinas tengan visibilidad entre ellas y estén completamente aisladas (Host-Only) del resto del mundo, todo en un entorno controlado.

Una vez tenemos nuestro entorno montado ejecutamos en la máquina Windows XP el malware NGRBot veremos cómo realiza una serie de peticiones DNS, que deberemos resolverle desde nuestra máquina “remnux”, por ejemplo con el script fakedns. Una vez resolvemos las peticiones DNS veremos cómo realiza intentos de conexión tcp a un determinado puerto (depende de como haya configurado el creador la muestra), que ya sabemos que son intentos de conexión al servidor de IRC. Levantamos nuestro servidor IRC en remnux (lleva por defecto inspircd) en el puerto que toque.

Para cambiar el puerto y ajustarlo al que necesita el bot, editamos la siguiente opción:

$ vi /etc/inspircd/inspircd.conf
...
<bind address="" port="6666-6667" type="clients">
...

Una vez configurado arrancamos el servidor IRC:

$ ircd start 

Después de esto, el bot se conectará a nuestro servidor de IRC; el canal al que se conecte dependerá de la configuración del creador de la muestra. Nosotros podremos verlo en el tráfico de red o con el comando /list en el servidor IRC. En nuestro caso es el canal #Chan. Nos conectamos al canal y veremos a nuestro bot con un nombre como {ESP|XPa}qqqacug, que le indica al atacante que es un equipo con idioma Español, sistema operativo Windows XP y que la cuenta es administrador (la «a» final antes de «}»).

Llegados a este punto ya hemos conseguido que el bot se conecte a un servidor IRC nuestro, pero si ejecutamos comandos que vemos en diferentes análisis observamos que estos no funcionan. Esto sucede porque existen varias cosas que son necesarias para que el bot empieze a hablarnos y darnos información de la máquina. Veamos qué necesitamos configurar en nuestro IRC C&C:

1. Deberemos ser OPER del IRC. Ajustaremos en nuestro fichero de configuración del irc desde dónde es posible la conexión para ser operador (comando oper). En esta sección podréis ver el password y user con el que se puede ser oper; los privilegios los marca el campo type.

<oper name="root"
 password="malware"
 host="*@localhost *@remnux *@0::ffff:127.0.0.1 *@10.0.0.2 *@0::ffff:10.0.0.2"
 type="NetAdmin">

Para hacernos oper (en este caso) deberemos ejecutar una vez conectados:

/oper root malware

2. Después tendremos que fijar en el IRC el virtualhost (http://wiki.inspircd.org/Virtual_Host) con el comando sethost para el bot (http://wiki.inspircd.org/Modules/2.0/chghost).

Activamos en nuestro fichero de configuración del servidor IRC (inspircd.conf) el comando CHGHOST añadiendo el módulo:

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# CHGHOST module: Adds the /CHGHOST command
<module name="m_chghost.so">

Ejemplo:

/chghost {ESP|XPa}iajehck sethost

Nuestra muestra tiene como virtualhost la cadena sethost, pero podría haber sido cualquier otra.

3. Deberemos identificar el carácter o prefijo que debe tener cada uno de los comandos. La aplicación para crear la muestra de malware pone por defecto el carácter “!”, pero es modificable por el creador.

Después de estos sencillos pasos si lanzamos comandos en el canal irc recibiremos respuesta de nuestro bot y tendremos el control (ojo que tiene un comando de mute para el bot).

Espero que este pequeño post os ayude a realizar vuestros análisis de este ejemplar :-)

[Sobre el autor]

Tcpdump DROP privileges

Estoy seguro que muchos de vosotros conocéis tcpdump y en más de una ocasión la habréis utilizado. Como todos sabréis cuando la ejecutamos como usuario sin privilegios para capturar paquetes en una interfaz de red recibimos el siguiente mensaje:

$ /usr/sbin/tcpdump -i eth0
tcpdump: eth0: You don't have permission to capture on that device
(socket: Operation not permitted)

[Read more…]

Botnets: Detection, Measurement, Disinfection & Defence

Desde ENISA el día 07 de Marzo de 2011 se publicó el informe “Botnets: Detection, Measurement, Disinfection & Defence”, donde se describe de una manera muy extensa las medidas de detección, desinfección y defensa para luchar contra este tipo de amenaza tan presente hoy en día.

Como ya he comentado el informe es extenso y ofrece gran cantidad de ejemplos que ilustran cada una de las recomendaciones para que se entienda cómo puede ayudar a mitigar. No pretendo en esta entrada hacer un resumen del informe sino destacar algunos aspectos que me han llamado la atención del mismo.

En primer lugar destacaría como bien comenta el informe la necesidad de medir la eficacia de la medidas que adoptamos para mitigar las botnets. Es decir, responder a preguntas como, ¿Haber puesto un DNS sinkhole ha tenido un efecto positivo para mitigar esta amenaza? ¿La campaña de concienciación ha funcionado?, etcétera. Entonces, como no podía ser de otra manera para responder a esta pregunta deberemos definir una serie de indicadores relacionados con esta amenaza que nos determinen de manera clara y objetiva si las medidas están teniendo efecto. Ejemplo de estos indicadores podrían ser:

[Read more…]