Explotando datos de APT for fun and (no) profit (III): análisis (no tan) simple

Entradas de la serie “Explotando datos de APT for fun and (no) profit”:
=> I: adquisición y procesamiento
=> II: análisis simple
=> III: análisis no tan simple
=> IV: conclusiones

Una vez que hemos respondido a algunas preguntas tontas o simplemente sencillas, es el momento de plantearnos algunas más complejas, así que empecemos…

¿Los actores con capacidades CNA están incrementando sus actividades en los últimos años?

En las preguntas simples hemos identificado que el sabotaje o la destrucción no son las motivaciones más habituales en los actores de la amenaza. Pero estamos interesados en ellos, por lo que veamos sus actividades en el tiempo:

for i in `grep "Sabotage and destruction" [0-9]*.txt|awk -F: '{print $1}'`; do grep \"meta\",\"date\"\] $i|awk '{print $2}'|sed 's/\"//g';done|awk '{a[$0]++}END{for(k in a){print k,a[k]}}’ >years.cna

Dibujando los resultados, tenemos:

gnuplot> set boxwidth 0.5
gnuplot> set xtics 1
gnuplot> set ytics 1
gnuplot> set yrange [0:5]
gnuplot> plot 'years.cna' with boxes

Desde 2012, el número de actores con capacidades CNA -o al menos su salto a la fama- se ha incrementado de forma considerable: de 14 grupos totales, 9 han arrancado sus actividades en los últimos ocho años, por lo que podríamos decir que es una tendencia al alza. Por curiosidad, el actor más antiguo con capacidades CNA empezó en 2001. ¿Adivinamos su nombre? Efectivamente, Equation Group… 

¿Cuáles son los países con más capacidades CNA?

Echemos un vistazo a los países con capacidades para ejecutar operaciones de destrucción o manipulación:

$ for i in `grep "Sabotage and destruction" [0-9]*.txt|awk -F: '{print $1}'`; do grep \"meta\",\"country\"\] $i|awk '{print $2}'|sed 's/\"//g';done|awk '{a[$0]++}END{for(k in a){print a[k],k}}'|sort -n 
1 KP
1 US
1 US,IL
2 IR
7 RU
$

Rusia tiene siete grupos identificados con estas capacidades; lejos de Irán, con solo dos grupos identificados… Sin duda, Rusia es el país más activo -o al menos más identificado- en este ámbito.

¿Y qué hay del ciber crimen? ¿Qué hay de los actores focalizados en intereses puramente económicos?

Podemos ejecutar una query similar a la anterior para obtener estos resultados:

1 "BY"
1 "IT"
1 "KZ"
1 "PK"
1 "RO"
1 "SA"
1 "UA"
2 "US"
3 "KP"
6 "CN"
27 "RU"

De nuevo, la medalla de oro en el ámbito de la delincuencia económica se la lleva Rusia, y una vez más con mucha distancia con respecto al segundo clasificado (China).

Así que Rusia es el campeón… ¿podemos focalizarnos en sus necesidades de información?

Por supuesto. Vamos a ver qué sectores y países son los objetivos de los actores rusos. En primer lugar, vamos a por los sectores objetivo:

$ cat russia.sh
#!/bin/sh

for i in [0-9]*.txt; do
grep -w RU $i >/dev/null
if [ $? -eq 0 ]; then
grep cfr-target-category $i
fi
done |awk -F\" '{a[$8]++}END{ for(k in a){print a[k],"\x22"k"\x22"}}'|sort -n
$ ./russia.sh >temp
$

Ahora preparamos los datos para dibujarlos:

$ awk '{print k++,$2,$3,$4,$1}’  temp >sectors.ru #sorry for the quick hack
$

gnuplot> set boxwidth 0.5
gnuplot> set xtics rotate by 45 right
gnuplot> unset key
gnuplot> set style fill solid
gnuplot> set title "Russian target sectors"
gnuplot> plot "sectors.ru" using 1:3:xtic(2) with boxes

Podemos comprobar que los principales objetivos de la Federación Rusa son los sectores financiero, gubernamental, defensa, energía y medios y educación. El sector relativo a medios de comunicación es muy curioso… ¿o no?

Echemos un vistazo ahora a los países objetivo; modificando el script anterior, y analizando países que han sido objetivo de al menos cinco grupos rusos -simplemente por razones de representación gráfica-, obtenemos el siguiente gráfico:

El primer objetivo ruso es… la propia Rusia. Bien, esto seguramente no es ninguna sorpresa si buceamos un poco en la inteligencia rusa (¿recordáis nuestra serie de posts sobre la comunidad de ciberinteligencia rusa? ¿Os acordáis de SORM?). Aparte de Rusia, podemos confirmar el interés de Rusia en las áreas geográficas que ya sabíamos: repúblicas ex soviéticas y ámbito OTAN, principalmente. Nada sorprendente si conocemos un poco a la inteligencia rusa.

¿Qué países están irrumpiendo en el escenario durante los últimos años?

En primer lugar, generamos un fichero de datos extrayendo el país y el año de cada grupo y etiquetándolo de forma secuencia para poderlo representar gráficamente:

#!/bin/sh
for i in [0-9]*.txt; do
c=`grep \"country\"\] $i|awk '{print $2}'|sed s/\"//g`
y=`grep \"date\"\] $i|awk '{print $2}'|sed s/\"//g`
if [ ! -z $c ] && [ ! -z $y ]; then
echo $c $y
fi
done | awk 'BEGIN{k=1}{if (a[$1]=="") {a[$1]=k++} ; {print $2" "a[$1]" "$1 }}’

Ahora dibujamos nuestra obra de arte:

Como podemos ver, durante los últimos años KP (Corea del Norte) y, especialmente, IR (Irán), han sido particularmente activos, incrementando sus actividades junto a los países habituales (China, Rusia y Estados Unidos). Otros países que estuvieron activos durante los primeros cinco años de la última década, como SY (Siria) o IN (Indonesia) por ejemplo, ahora parecen con menor actividad o, al menos, con menos grupos identificados (ojo, los grupos identificados previamente pueden permanecer activos, ahora veremos este detalle).

Trabajo para una compañía Fortune 500. ¿Podría tener un cuadrante mágico de grupos APT?

Por supuesto. Gartner posiciona a los proveedores tecnológicos de un mercado específico y los representa en el Magic Quadrant (https://www.gartner.com/en/research/methodologies/magic-quadrants-research). Este cuadrante clasifica a cada proveedor en cuatro categorías (líderes, visionarios, jugadores de nicho y desafiadores -las traducciones no son las más bonitas-) analizando su “capacidad para ejecutar” y su “completitud de visión”.

Para nuestro cuadrante, consideraremos la “capacidad para ejecutar” como el periodo que cada actor lleva activo y la “completitud de visión” como la variedad de objetivos del actor. ¿Por qué este criterio? Creemos (más o menos, recordemos que esto es un post, no un artículo de IEEE) que la capacidad para ejecutar puede calcularse como los años que un actor lleva vivo, esto es, que ha estado ejecutando operaciones. No sería del todo correcto: como hemos dicho, los datos obtenidos de ThaiCERT marcan su fecha de “fundación”, no el periodo que han estado vivos… sería necesario un dato “last time seen” o similar para estimar la capacidad real. Por otro lado, la completitud de visión la calculamos como la suma de objetivos (sectores y países) del actor, con un criterio muy simple: cuantos más objetivos tienes, más completa es tu visión… quizás no sea lo más estricto desde un punto de vista académico, pero recordemos lo que hemos dicho del artículo de IEEE :)

Siguiendo este criterio, podemos dibujar la primera versión de nuestro cuadrante mágico; en primer lugar, un script sencillo para obtener la información, extrayendo de cada actor su nombre, país (luego veremos para qué estamos interesados en el país), suma de sectores y países objetivo y años activo, o años desde que se descubrió su actividad:

$ cat extract.sh
n=`ls [0-9]*.txt|wc -l`
for i in $(seq 1 $n);do
t=`grep "$i,\"value" $i.txt|awk -F"\t" '{print $2}'|sed 's/\"//g' `
name=`echo $t|awk -F, '{print $1}'`
country=`grep \"country\"] $i.txt|awk '{print $2}'|sed 's/\"//g' `
date=`awk 'index($1,"date")>0 {print $0}' $i.txt |awk '{print $2}'|sed 's/\"//g' `
y=`date +%Y`
ability=`expr $y - $date`
sectors=`grep -w cfr-target-category $i.txt|wc -l`
countries=`grep -w cfr-suspected-victims $i.txt|wc -l`
completeness=`expr $sectors + $countries`
echo $name:$pais:$completeness:$ability|awk -F: '{if($3>0 && length($2>0) && $4>=0){print $0}}'
done
$ ./extract.sh >data 2>/dev/null
$

Este código genera una salida con el siguiente formato:

$ head data
Aggah::31:2
Allanite::3:3
APT 3:CN:17:13
APT 4:CN:6:13
APT 5:CN:5:13
APT 6:CN:2:9
APT 12:CN:9:11
APT 16:CN:7:5
APT 17:CN:21:11
APT 19:CN:12:7
$

Formateamos el archivo donde hemos volcado los resultados:

$ awk -F: '{print $3" "$4" ""\x22"$1"\x22"}' data >quadrant
$

Y nos configuramos un cuadrante mágico “bonito”: 

$ cat quadrant.plot 
set title "APT groups"
set xlabel "Completeness of vision"
set ylabel "Ability to execute"
set format y ""
set format x ""
unset key
set parametric
set arrow 1 from 40,0 to 40,25 nohead
set arrow 2 from 0,12.5 to 80,12.5 nohead
plot 'quadrant' w labels point pt 7 offset char 1,1
$

Trabajo realizado, como podemos ver:

Seguro que no es el Magic Quadrant más bonito para nuestro equipo de marketing (para eso está el diseño), pero al menos sí que es adecuado para sacar conclusiones interesantes: Turla es un LÍDER, como APT28 o Equation Group. Una vez más podemos decir, de forma completamente objetiva -no sé si correcta, pero objetiva- por qué Rusia es la campeona cuando hablamos de APT: dos de sus grupos en la parte superior derecha del cuadrante (además de lo que hemos visto de capacidades CNA, delincuencia económica…). Otra frase para las charlas de APT.

Entre los grupos rusos, en la Champions League, ¿cómo sería este cuadrante mágico? Antes, en el script anterior, hemos incluido el código de país para cada grupo, útil para dibujar un cuadrante mágico por país. Por ejemplo, el ruso:

$ awk -F: '$2=="RU" {print $3" "$4" ""\x22"$1"\x22"}' data gt;quadrant.russia
$

Cambiando el título en el fichero .plot anterior y cargando este nuevo archivo, obtenemos el cuadrante mágico de grupos APT rusos:

Como Turla es un actor ruso y era el líder en el cuadrante global, y como Rusia tiene también grupos en la parte inferior, no es necesario ajustar los parámetros para dibujar el cuadrante ruso; si hacemos lo mismo para obtener el cuadrante mágico de grupos chinos es necesario ajustar parámetros y obtenemos este cuadrante:

NetTraveler es el líder chino; operativo desde 2004, y con cuatro sectores y 41 países objetivo, podemos considerarlo un actor robusto. Resiliente, como nos gusta decir ahora :)

¿Puedo obtener más frases para mis charlas?

Con un poco de ayuda de AWK y con gnuplot puedes obtener las estadísticas que necesites, desde el cuadrante mágico de otros países hasta cualquier dato -o correlación- de interés. Además, ThaiCERT mantiene otro JSON de datos relativos a herramientas usadas por los diferentes actores, así que ¡a disfrutar! 

Ver también en: