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.
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”}#end foreach SubKey1
$RegSubKey2 = $Reg.OpenSubKey($Key2)
$SubkeyName2 = $RegSubKey2.GetSubKeyNames()
$Subkeys2 += “$Key2\$SubKeyName2”
$RegSubKey2.Close()
ForEach($Subkey2 in $Subkeys2)En breve lo subiremos al Github de ElevenPaths para que podáis utilizarlo a través de la característica WinRM. En la siguiente imagen os mostramos cómo ejecutando el script HiddenNetworks sobre un dominio que tiene varios equipos se puede hacer un listado de dispositivos USB que fueron insertados en dichos equipos, y estos podrían ser discos de almacenamiento, webcams o cualquier otro dispositivo que pueda realizar una función "polinizadora" de tu red.
{
$USBKey = $Reg.OpenSubKey($Subkey2)}
$USBDevice = $USBKey.GetValue('FriendlyName')
$USBContainerID = $USBKey.GetValue('ContainerID')
If($USBDevice)
{
$USBDevices += New-Object -TypeName PSObject -Property @{}
USBDevice = $USBDevice
USBContainerID = $USBContainerID
USBComputerName= $ComputerName
ComputerIP = $ComputerIP
}
$USBKey.Close()
Figura 5: Dispositivos USB detectados por cada equipo |
Este hecho, puede ayudarnos a relacionar qué equipos han insertado el dispositivo USB, es decir, por cuáles equipos ha ido pasando el mismo dispositivo USB. Incluso, se puede trabajar en un timeline de un dispositivo USB y los equipos por los que ha ido pasando para conocer, en un momento de crisis, cuál ha sido el camino seguido de la infección, por lo que tener estos logs diarios en tu organización es de gran valor.
Figura 6: Grafo de conexiones USB en la red hecho con Gephi |
Nosotros hemos utilizado una herramienta llamada Gephi para realizar un grafo que relaciona diferentes equipos, que harán de nodos, con dispositivos USB insertados en esos equipos, que serán sus aristas. Cuando dos equipos tienen una unión, significa que dicho USB ha estado conectado en ambos creando una Hidden Network temporal dentro de la organización. Incluso, una red segmentada o equipos que se encuentran en diferentes VLANes pueden quedar expuestos ante este tipo de redes ocultas.
Figura 7: PoC detectando Hidden Networks con PowerShell WinRM
Te dejamos un video dónde se puede ver a Hidden Networks actuando sobre un dominio de Microsoft Windows. ¿Has comprobado en tu red corporativa dónde se encuentran tus redes ocultas? ¿Has mapeado sobre un plano de red tus posibles redes ocultas? ¿Tienes estos logs bien guardados? Lógicamente, en este proceso nos quedarían aún los equipos macOS de Apple, pero esto lo vamos a atacar desde otra perspectiva que ya os contaremos más adelante.