Script PowerShell WinRM para descubrir Hidden Networks

Hace tiempo nuestro compañero Chema Alonso habló en un artículo de las Hidden Networks que se crean en las organizaciones gracias al - o por culpa del - uso de los dispositivos de almacenamiento USB. En el equipo de ideas locas de CDO de Telefónica estamos trabajando en diferentes experimentos y uno de ellos tiene que ver precisamente en cómo descubrirlas de forma rápida para tener un mapa actualizado de estas redes.

Figura 1: Script PowerShell WinRM para descubrir Hidden Networks

Antes de nada, vamos a repasar someramente lo que son las Hidden Networks y por qué son importantes ya que, seguramente, muchos administradores desconocerán estos riesgos. Cómo se menciona en el artículo de 2014 sobre las Hidden Networks, muchas organizaciones hablan de segmentos de redes aislados controlado e tráfico de uno a otro por un dispositivo de seguridad de red, pero, ¿realmente están aisladas? ¿o están unidas gracias a los dispositivos de almacenamiento USB?

Figura 2: Lista de dispositivos USB conectados a un equipo Mac OSX

Las redes de equipos aislados como, por ejemplo, una red de sistemas de control de fábricas puede estar aislados por seguridad. Esto sería algo lógico, pero si repasamos la historia de la informática nos encontramos con incidentes como Stuxnet, el cual se coló totalmente en una red aislada. Y recientemente hemos sabido del software de Brutal Kangaroo de la CIA que utilizaba los dispositivos de almacenamiento USB para infectar equipos totalmente desconectados.

Figura 3: Brutal Kangaroo para infectar discos -USB

En otras palabras, la historia nos ha demostrado que para tener una red aislada no es suficiente con tener una red de equipos no conectados con cable Ethernet o  ß, y que para contener lo que pasa en una red de una empresa, no es suficiente con segmentar las conexiones de red con Routers, Firewalls o Switches L3. Es decir, cualquier conexión que tengamos con el exterior, por ejemplo, a través de un puerto USB, puede conllevar una amenaza y la materialización de ésta provocando un incidente de seguridad.

PoC: Descubriendo a los USB que crean tus Hidden Networks

Hoy queremos mostrar un pequeño ejemplo en forma de prueba de concepto. Mi compañero Francisco José Ramírez ha creado un script en Powershell aprovechándose de la característica de gestión remota de Powershell WinRM. Esta característica permite a los administradores de IT poder lanzar instrucciones remotamente través de un dominio de Microsoft Windows. Existe una rama del registro que almacena los dispositivos que se conectan al equipo, como ya explicaba Chema Alonso en su artículo.

Figura 4: Claves del registro con IDs de discos USB conectados

Estos datos se pueden obtener en la siguiente ruta del registro SYSTEM\CurrentControlSet\Enum\USBSTOR, así que con un poco de programación podríamos ver todos los de los equipos de nuestra red. El código a modo de prueba de concepto en Powershell tiene el siguiente aspecto:
$Key = "SYSTEM\CurrentControlSet\Enum\USBSTOR"
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($Hive,$Computer)
$USBSTORKey = $Reg.OpenSubKey($Key) 
ForEach($SubKey1 in $USBSTORSubKeys1)
{

$Key2 = “SYSTEM\CurrentControlSet\Enum\USBSTOR\$SubKey1”
$RegSubKey2 = $Reg.OpenSubKey($Key2)
$SubkeyName2 = $RegSubKey2.GetSubKeyNames()
$Subkeys2 += “$Key2\$SubKeyName2”
$RegSubKey2.Close()
}
Script PowerShell WinRM para descubrir Hidden Networks Script PowerShell WinRM para descubrir Hidden Networks Reviewed by Zion3R on 1:24 Rating: 5