Análisis de Hopscotch y Legspin de Regin

Con amenazas de alto perfil como Regin, los errores son increíblemente raros. Sin embargo, cuando se trata de humanos escribiendo códigos, algunos errores son inevitables. Entre las cosas más interesantes que observamos en la operación del programa malicioso Regin, están los nombres de código olvidados de algunos de sus módulos.

Estos son:

  • HOPSCOTCH
  • LEGSPIN
  • WILLISCHECK
  • U_STARBUCKS

Decidimos hacer un análisis profundo de dos de estos módulos: Hopscotch Legspin.

A pesar del nivel general de sofisticación (y a veces incluso de sobre-ingeniería) de la plataforma Regin, estas herramientas son sencillas, directas y ofrecen interfaces de consolas interactivas a los operadores de Regin. Lo que las hace interesantes es el hecho que se las desarrolló hace muchos años y que quizás se crearon incluso antes de la misma plataforma Regin.

El módulo Hopscotch

MD5 6c34031d7a5fc2b091b623981a8ae61c
Tamaño 36864 bytes
Tipo Win32 EXE
Compilado 2006.03.22 19:09:29 (GMT)

Este módulo contiene otro binario, guardado como recurso 103:

MD5 42eaf2ab25c9ead201f25ecbdc96fb60
Tamaño 18432 bytes
Tipo Win32 EXE
Compilado 2006.03.22 19:09:29 (GMT)

Este módulo ejecutable se diseñó como una herramienta interactiva autónoma para movimientos laterales. No contiene exploits pero en vez de ello depende de credenciales previamente adquiridas para auto-autenticarse en la máquina remota mediante APIs estándar.

El módulo recibe el nombre de la máquina atacada y un nombre de un fichero remoto opcional desde la entrada normal (operador). Los atacantes pueden elegir entre varias opciones para su ejecución y la herramienta ofrece respuestas para lectura humana y sugerencias de posibles entradas.

Este es un ejemplo de la ejecución de ‘Hopscotch’ en una máquina virtual:

Mecanismo de autenticación (SU o NETUSE) [S]/N:
¿Continuar? [n]:
Ya existía un fichero con el mismo nombre en la máquina remota – No se elimina…

El módulo puede recurrir a dos rutinas para auto-autenticarse en la máquina atacada: conectarse al recurso normal llamado “IPC$” (método llamado “NET USE”) o ingresar como un usuario local (“SU”, o “switch user”) que tiene los permisos necesarios para realizar otras acciones.

Después extrae una carga maliciosa ejecutable desde sus recursos y la escribe en un lugar en la máquina atacada. El lugar predeterminado para la carga es: %target%ADMIN$SYSTEM32SVCSTAT.EXE. Una vez hecho esto, se conecta con el administrador de servicio de la máquina remota y crea un nuevo servicio llamado “Service Control Manager” para ejecutar la carga. El servicio se inicia inmediatamente y tras ejecutarse por un segundo, se detiene y se elimina.

El módulo establece un canal bidireccional de comunicación cifrada con la carga remota SVCSTAT.EXE usando dos tubos nombrados. Uno sirve para enviar entradas desde el operador a la carga, y el otro escribe los datos desde la carga a la salida normal. Los datos se cifran con el algoritmo RC4 y el intercambio de llaves inicial se asegura con cifrado asimétrico.

%target%pipe{66fbe87a-4372-1f51-101d-1aaf0043127a}
%target%pipe{44fdg23a-1522-6f9e-d05d-1aaf0176138a}

Una vez hecho esto, la herramienta elimina el archivo remoto y cierra las sesiones autenticadas, eliminando así todo rastro de la operación.

El módulo de carga SVCSTAT.EXE lanza su copia en el proceso dllhost.exe. Después prepara los correspondientes tubos nombrados en la máquina atacada y espera la entrada de datos. Una vez que el módulo original se conecta con el tubo, establece el cifrado de la comunicación por el tubo y espera la entrada del shellcode.

El ejecutable se inyecta y se ejecuta en un nuevo proceso de dllhost.exe o svchost.exe, con sus entradas y salidas redirigidas a la extensión remota que inició el ataque. Esto le permite al operador controlar el módulo inyectado e interactuar con él.

El módulo Legspin

MD5 29105f46e4d33f66fee346cfd099d1cc
Tamaño 67584 bytes
Tipo Win32 EXE
Compilado 2003.03.17 08:33:50 (GMT)

Este módulo también se desarrolló como una utilidad autónoma de línea de comandos para la administración de ordenadores. Cuando se ejecuta de forma remota se convierte en una poderosa puerta trasera. Vale la pena hacer notar que el programa posee soporte completo de consola y presenta una salida en colores cuando se ejecuta a nivel local. Incluso es capaz de distinguir entre consolas compatibles con Windows Console API y terminales compatibles con TTY que aceptan códigos de escape para colores.

Salida “Legspin” en una ventana de consola normal con resaltados en colores

Además de la marca de tiempo de compilación que se encuentra en los encabezados PE, hay dos referencias que apuntan a 2003 como el año real de su compilación. El programa imprime dos etiquetas de versiones:

  • 2002-09-A, mencionada como “lib version”
  • 2003-03-A

Además, el programa usa las funciones API heredadas, como “NetBIOS” que se introdujo en Windows 2000 y se menospreció en Windows Vista.

Una vez que arranca e inicializa, le proporciona al operador un símbolo de sistema interactivo, a la espera de la entrada de comandos. La lista de comandos disponibles es bastante extensa y les permite a los operadores realizar muchas tareas administrativas. Algunos de los comandos requieren información adicional que se le pide al operador, y los comandos proporcionan una descripción de texto de los parámetros disponibles. En realidad el programa es un shell administrativo que el atacante/usuario debe operar manualmente.

Comando Descripción
cd Cambia el directorio en uso
dir
ls
dirl
dirs
Lista de archivos y directorios
tar Encuentra archivos que correspondan con una determinada máscara y rango de tiempo, y escribe sus contenidos en un fichero comprimido cifrado con XOR.
tree Imprime un árbol de directorio usando seudográficos

trash Lee e imprime los contenidos del directorio “Recycle Bin” de Windows
get Recupera un fichero arbitrario desde la máquina atacada, comprimido con LZO
put Envía un fichero arbitrario a la máquina atacada, comprimido con LZO
del Elimina un fichero
ren
mv
copy
cp
Copia o mueve un fichero a un nuevo lugar
gtm Obtiene la creación de ficheros, acceso, escribe marcas de tiempo y recuerda los valores
stm Establece la creación de ficheros, acceso, escribe marcas de tiempo en los valores previamente recuperados
mtm Modifica las marcas de tiempo de los ficheros previamente recuperados
scan
strings
Encuentra e imprime todas las cadenas legibles desde un determinado fichero
more Imprime los contenidos de un fichero arbitrario
access Recupera e imprime las entradas DACL de ficheros o directorios
audit Recupera e imprime las entradas SACL de ficheros o directorios
finfo Recupera e imprime información de la versión desde un determinado fichero
cs Vacía los primeros 10.000 bytes desde un fichero arbitrario o desde varios ficheros de sistema:

advapi32.dll
kernel32.dll
msvcrt.dll
ntdll.dll
ntoskrnl.exe
win32k.sys
cmd.exe
ping.exe
ipconfig.exe
tracert.exe
netstat.exe
net.exe
user32.dll
gdi32.dll
shell32.dll

lnk Busca ficheros LNK, analiza sintácticamente e imprime sus contenido
info Imprime la información general del sistema:

  • Tipo de CPU
  • Estado de la memoria
  • Nombre del ordenador
  • Números de las versiones de Windows e Internet Explorer
  • Ruta de instalación de Windows
  • Página de códigos
dl Imprime información sobre los discos:

  • Tipo
  • Espacio disponible/usado
  • Lista de particiones, tipos de sistema de archivos
ps Lista de todos los procesos en ejecución
logdump Inconcluso, sólo muestra la descripción del parámetro
reglist Vacía la información de registro para una colmena local o remota
windows Enumera todos los escritorios disponibles y todas las ventana abiertas
view Lista de todos los servidores visibles en un dominio
domains Lista de los controladores de dominios en una red
shares Lista de todos los recursos de red visibles
regs Imprime información adicional del sistema desde el registro:

  • Versión de IE
  • Versión de Outlook Express
  • Nombre de usuario predeterminado para ingreso
  • Fecha de instalación del sistema
  • Fecha de BIOS
  • Frecuencia del CPU
  • Directorio raíz del sistema
ips Lista de datos del adaptador de red:

  • Dirección IP DHCP/estática
  • Dirección predeterminada de la pasarela
times Obtiene la hora actual desde una máquina local o remota
who Lista de los nombres de usuario actuales y los dominios a los que accedió la máquina
net
nbtstat
tracert
ipconfig
netstat
ping
Ejecuta la utilidad de sistema correspondiente e imprime los resultados
tel Conecta a un determinado puerto TCP de un host, envía una cadena provista por el operador, imprime la respuesta
dns
arps
Resuelve un host mediante peticiones DNS o ARP
users Lista de datos de todas las cuentas de usuario
admins Lista de datos de las cuentas de usuario con permisos administrativos
groups Lista de datos de grupos de usuario
trusts Lista de datos de cuentas interdominio de confianza del usuario
packages Imprime los nombres de paquetes de software instalados
sharepw Ejecuta un ataque de fuerza bruta para ingresar y obtener la contraseña de un recurso remoto
sharelist Conecta a un recurso remoto
srvinfo Recupera información de la configuración actual para un servidor especificado
netuse Conecta, desconecta o hace una lista de los recursos de red
netshare Crea o elimina recursos de red en la máquina actual
nbstat Lista de datos del adaptador NetBIOS LAN
run Crea un proceso y redirige sus salidas al operador
system Ejecuta un comando arbitrario mediante WinExec API
exit Sale del programa
set Determina varias variables internas usadas en otros comandos shell
su Ingresa como otro usuario
kill Termina un proceso por su PID
kpinst Modifica el valor de registro:
[HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon] System
Normalmente, este valor debe apuntar a “lsass.exe”
svc
drv
Crea, modifica o elimina un servicio de sistema
help
?
Imprime la lista de comandos compatibles

El módulo Legspin que recuperamos no posee un mecanismo C&C incorporado. En lugar de ello, depende de la plataforma Regin para redirigir las entradas/salidas de la consola a/desde los operadores.

Conclusiones

A diferencia de otros módulos de Regin, Legspin y Hopscotch parecen ser herramientas autónomas desarrolladas mucho antes. En particular, la puerta trasera Legspin data de 2003,š e incluso quizás de 2002. Vale la pena remarcar que no todas las instalaciones de Regin contienen el módulo Legspin; en la mayoría de los casos, los atacantes manejan a sus víctimas mediante otras funciones de la plataforma Regin.

Esto significa que Legspin pudo haberse usado independientemente de la plataforma Regin, como una sencilla puerta trasera junto a un empacador de salidas/entradas.

Aunque más detalles de Regin van saliendo a la luz, todavía queda mucho por conocer. Una cosa está clara: lo que sabemos de Regin es, probablemente, información retirada que ha sido remplazada por nuevos módulos y técnicas con el pasar del tiempo.

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *