Hidden Network: Detectando redes ocultas con los dispositivos USB Chema Alonso: [email protected]Pablo González Pérez: [email protected]Francisco José Ramírez Vicente: [email protected]Resumen Ejecutivo Muchas de las empresas y organismos gubernamentales de hoy en día tienen redes aisladas de las comunicaciones o con el flujo de datos limitado a través de diferentes redes. Estas redes de equipos se crean para situaciones especiales, ya que pueden ser redes muy especiales o con información crítica como, por ejemplo, sistemas de control en fábricas, entornos de alta seguridad en el procesado de cierta información o redes que cumplen con un estándar de seguridad. En la historia reciente de la Ciberseguridad se ha comprobado como un software malicioso denominado Stuxnet se infiltraba en una red aislada en una Central Nuclear. Con este hecho se puede observar como no es suficiente tener una red de equipos no conectados con cable Ethernet o WiFi a otras redes. Cualquier tipo de conexión exterior a un equipo puede materializar una amenaza. Este trabajo refleja las posibilidades que ofrecen las denominadas Hidden Network y cómo se pueden localizar y enfocar a la protección de estos puntos en una red corporativa.
18
Embed
Hidden Networks. Detectando redes ocultas con dispositivos USB
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
ResumenEjecutivoMuchasde las empresas y organismos gubernamentales dehoy endía tienen redesaisladasdelascomunicacionesoconelflujodedatoslimitadoatravésdediferentesredes.Estasredesdeequipossecreanparasituacionesespeciales,yaquepuedenserredesmuyespecialesoconinformacióncríticacomo,porejemplo,sistemasdecontrolenfábricas,entornosdealtaseguridadenelprocesadodeciertainformaciónoredesquecumplenconunestándardeseguridad.EnlahistoriarecientedelaCiberseguridadsehacomprobadocomounsoftwaremaliciosodenominadoStuxnetseinfiltrabaenunared aislada en una Central Nuclear. Con este hecho se puede observar como no essuficientetenerunareddeequiposnoconectadosconcableEthernetoWiFiaotrasredes.Cualquiertipodeconexiónexterioraunequipopuedematerializarunaamenaza.Este trabajo refleja lasposibilidadesqueofrecen lasdenominadasHiddenNetwork ycómo se pueden localizar y enfocar a la protección de estos puntos en una redcorporativa.
1.LosriesgosdelasconexionesEnelámbitodelaseguridaddelasredesdedatoshayunatendenciaadibujarlasredesporlasconexionesaniveldeenlace,esdecir,conexionesEthernet,WiFi,etcétera.Lasredescorporativassonmuchomáscomplejasqueestoyhayquerealizarunestudiodesdediferentespuntosdevista.Elanálisisdetráficoenunareddedatoscorporativaeslamayorherramientaquesedisponeparaentender loque sucedeenésta.Además, es laopciónmás coherente,realizandolabúsquedadelosnodosdelaredconlosprotocolosmásutilizados,cuálesson los nodos con los serviciosmás críticos o cuáles se comportan como cuellos debotella.Deestasafirmacionessepuedeextrapolarqueunanálisisderedbasadoenlosriesgos dispone de una gran cantidad de datos e información basada en distintasdirectrices.Esquematizar una red de forma estética es correcto para entender los nodos y laconfiguracióndelared,perosuanálisisdetelemetríaesalgofundamentalparapoderconteneryprepararseparalosriesgos.Conestosdatosseobtieneunmayorniveldeentendimientosobrelaredylasamenazasqueéstatiene.
Figura1:SimulacióndeunmapaderedcondiferentesnodosyconexionesentreellosLarepresentacióndelosnodosylasestructurasdeconexiónesfundamentalparapoderentender las diferentes fronteras que se tienendentrode la redparapodermitigarintrusiones,detectarataquesollevaracabolaaplicacióndemedidasdeseguridaddeformapreventiva.El problema viene dado ante la situación de entender qué es una red. En muchasocasiones, se define una red como un grupo de máquinas unidas a través de laposibilidaddecomunicarentreellasatravésdediferentestecnologíasyprotocolos.Lamayoríadelasocasiones,losusuariosoadministradoresdesistemasyredesdanporbueno que una red será conexiónEthernet oWiFi de las diferentesmáquinas de la
organización.Estonosucedeasí,yaqueunaorganizaciónquenoapliquemedidasdeprevención en el uso de dispositivos USB, puede disponer de lo que se denominanHiddenNetworksoredesocultas.EstasredessecreanatravésdelusodedispositivosUSBypermitecomunicarmáquinasquefísicamenteológicamenteesténaisladas.
2. ConexionesdedispositivosUSBenunequipoCuando un dispositivo USB se conecta de un equipo a otro surge el término“Polinización”. Esteesun término similar alutilizadoenotrosámbitos y consisteenllevarlaamenazaoriesgodeundispositivoUSBentrediferentesequipos,aunqueesténendiferentesredes.Cuando un usuario conecta un dispositivo USB se crean en el sistema una serie deentradasenelregistrodeWindows.Estetipodeinformaciónesvaliosa,porejemplo,enunanálisisforense,conelobjetivodeconocerinformacióndepordóndeseproducelafugadeinformaciónopordóndeentrólaamenazaenunPost-Mortem.La claveUSBStor que seha creadoenel registrodel sistemaWindows almacena losdiferentesdispositivosquesehaninsertadoenelequipo.SisehaninsertadoenunamáquinaNdispositivosUSB,seencontraránesosNdispositivosenlaclaveUSBStorcontodalainformaciónparaidentificaraldispositivo.
2.1. HiddenLinks:DeteccióndeestetipoderedesConociendodónde y cómo se almacena la información de un dispositivoUSB en unsistemaoperativoMicrosoftsepodríaconocerquiénestácompartiendoeldispositivoUSBconquién.Deestaformasepuedegenerardosnodosquerepresentandosequiposyunarcoqueidentificalaconexiónentreambosequipos.SeestádescubriendounaredocultagraciasalHiddenLink.Además,sepuededetectarenquéequiposeconectóapriori,debidoalosdiferenteseventosquesepuedenobtenerdeunsistemaoperativo.Deestaformaelarcoentrelosnodosesdirigido.ParallevaracabounaautomatizacióndedeteccióndeHiddenLinkssehapropuestoelsiguientediseño:
Powershell es la línea de comandos deMicrosoft orientada a objetos con la que seconsigue una interacción sencilla y potente con cualquier estructura del sistemaoperativodeMicrosoft.
2.2. USBHiddenNetworksforWinRMLa versiónWinRM del script en PowerShell requiere tener activado el servicio deAdministraciónRemotadeWindows(WinRM)entodoslosequiposdelaredquesevaaauditar:
La ejecución principal del script se realiza a través del programa“LaunchUSBHiddenNetworks.ps1”elcualconectaráconlosequiposremotospasandocomoparámetroelscriptaejecutarllamado“RecollectUSB.ps1”elcualseencargaderecopilarlainformacióndelosdispositivosUSB.Porlotanto,elscriptseejecutarádeformaindividualencadaunodelosequiposasignados.2.2.1. Script:LaunchUSBHiddenNetworksLaejecucióndeestecomandosebasaenelcomando“Invoke-Command”dePowerShell.DichocomandopermiteconectarconunequipodelaredpasandocomoparámetroelFQDN,nombredeequipooladirecciónIPyporotroladoelscriptdePowerShellquesequiereejecutar:$salida=invoke-command -ComputerName (Get-Content servers.txt) -FilePath 'PathToScript\RecollectUSBData.ps1'-Credential testdomain\administrador Conelparámetro–ComputerName seasignaelnombredeequipooequiposquesequierenauditardentrodenuestroAD.Esposibleintroducirdirectamenteelnombredelosequiposseguidosporcomas,peroenestecasosehautilizadounlistadodeequiposenunficheroTXT,servers.txt,ypasarlocomoparámetro.Elparámetro-FilePathasigna larutadondeseencuentraelscriptenPowerShellqueejecutarálarecoleccióndedatos.Finalmente,elparámetro–Credentialpermiteutilizarlascredencialesdeladministradordedominioparaautorizarlaejecuciónenelequiporemoto,enestecasodominio“testdomain”yusuario“administrador”.Elresultadodelaejecuciónsealmacenaenelobjeto$salida.LainformaciónrecuperadasealmacenaráasuvezenunficheroCSVdenominado“USBDATA.csv”delasiguientemanera:$salida | Out-File USBDATA.csv ElformatodelficheroCSVtienelasiguienteestructuradespuésdeunaejecucióndelscript:NombredeEquipo,IP(enformatoIPv4),NombredelUSB,ID(identificadorúnico)
Figura9:ResultadosobtenidosenformatoCSVCon esta información se podría generar un grafo como elmostrado a continuacióncreadoconlaaplicaciónGephi:
Figura9:GrafoquerepresentalasconexionesocultasdelosdispositivosUSBenunared2.2.2. Script:RecollectUSBDataEstescripteselencargadoderecopilartodalainformaciónreferentealosdispositivosUSBconectadosalequipoy seejecuta localmenteen losordenadoresaauditar. LosdatosserecuperandesdeunaramaespecíficadelregistrodeWindows.$USBDevices = @() $USBContainerID = @() $USBComputerName = @() $USBComputerIP = @() $SubKeys2 = @() $USBSTORSubKeys1 = @() Seinicializanlasmatricesdondesevanaalmacenarlainformaciónrelativaalordenadorauditado y los datos referentes a los dispositivos USB que tenga almacenado en elregistrooseconectaronenalgúninstantedetiempoalequipo.$Hive = "LocalMachine" $Key = "SYSTEM\CurrentControlSet\Enum\USBSTOR" Enlasvariables$Hivey$KeysealmacenalarutacompletadelaramadelregistrodondesevaarealizarlabúsquedadelosdatosreferentesaldispositivoUSB.Lavariable$Hiveconelvalor“LocalMachine”equivaleaHKLMoHKEY_LOCAL_MACHINE.$ComputerName = $Env:COMPUTERNAME $ComputerIP = $localIpAddress=((ipconfig | findstr [0-9].\.)[0]).Split()[-1]
Se almacena el nombre del equipo local, así como su dirección IP en las variables$ComputerNamey$ComputerIP.$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($Hive,$Computer) $USBSTORKey = $Reg.OpenSubKey($Key) $nop=$false En el objeto $Reg se ejecuta la consulta al registro utilizando el comandoOpenRemoteBaseKeypasando como parámetro las variables$Hive y$Computer, lascuales definen la rama que se quiere consultar. La vairable $nop se utilizará másadelanteparacontrolarelflujodeejecución.Try { $USBSTORSubKeys1 = $USBSTORKey.GetSubKeyNames() } Catch { Write-Host "Computer: ",$ComputerName -foregroundcolor "white" -backgroundcolor "red" Write-Host "No USB data found" $nop=$true } ElbloqueTry–CathseencargadegestionarelerrorencasodenoencontrarningunainformaciónsobrealgúndispositivoUSB.Encasodenoencontrarningunainformación,seasignaelvalor$truealavariable$nopparaevitarqueseejecutetodoelprocesodeidentificaciónyrecuperacióndedatosdeldispositivoUSB.if(-Not $nop) Encasodeexistiralgunaentradarelacionadacon laconexióndeundispositivoUSB,variable$nopa$true,seejecutaránlossiguientesbloques:Bloque1:ForEach($SubKey1 in $USBSTORSubKeys1) { $Key2 = "SYSTEM\CurrentControlSet\Enum\USBSTOR\$SubKey1" $RegSubKey2 = $Reg.OpenSubKey($Key2) $SubkeyName2 = $RegSubKey2.GetSubKeyNames() $Subkeys2 += "$Key2\$SubKeyName2" $RegSubKey2.Close() } Cadaelementoexistenteen la ramadel registrodondese realiza labúsquedaesundispositivoUSBdistinto.Cadaelementosealmacenaenlamatriz@Subkeys2.Bloque2:ForEach($Subkey2 in $Subkeys2) { $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() } EstebloquerecorretodoslosdispositivosUSBquesehanidentificadopreviamenteenelBloque1yqueestá[email protected]únvalorenelcampo$USBDevice,seprocedearecuperarelIDdeldispositivoUSB,USBContainerID. También se asigna el nombre del equipo y la dirección IP delmismoparaañadirloposteriormentealficheroCSVdesalida.
2.3. USBHiddenNetworksforSMBconPSExecParalaejecucióndelscriptutilizandoSMBseránecesariotenerinstaladaspreviamentelas utilidades PSTools, en concreto para poder ejecutar el comando PSExec, en losequipos que se van a verificar. La filosofía de funcionamiento será prácticamenteidénticaalaversiónWinRM.Desdeelservidorseconectaráconelequiporemotoyselanzará el script desde el servidor con la cuenta de administrador de dominio, y,posteriormente,ejecutaráelscriptderecoleccióndedatosUSB.ElscriptprincipalLaunchUSBHiddenNetworks.ps1 tendráalgunasmodificacionesparaadaptarseaestenuevotipodeconexión.LaprincipalseráqueestaveznoseutilizaelcomandoInvoke-Commandparaejecutarremotamenteelscript.EstavezseabriráunashelldePowershellyseejecutaráelscriptdesdeella.Elscriptsedescargarádesdeunaubicacióndered,preferiblementeunservidorwebquepermitadescargarlomedianteel protocoloHTTP. De esa forma se evitan problemas con la política de ejecución ypermisosquesepuedanencontraralaccederaunrecursolocalcompartido.DeformasimilaralaanteriorversiónconWinRM,losresultadosseiránalmacenandoen un fichero CSV. Para evitar problemas de sincronización y dar tiempo a que elprogramaseejecuteenelequipodestino,sehanincluidoalgunosretardoscomoseveráacontinuaciónenelanálisisdelcódigo.
2.3.1. Script:LaunchUSBHiddenNetworks$computers = gc "C:\scripts\HiddenNetworks\PSExec\USBHiddenNetworks_for_SMB\servers.txt" $url = "http://192.168.1.14/test/RecollectUSBData.ps1" $sincro = 40Se asignan varias variables. La matriz donde se irán almacenando los nombres odirecciones IP de los servidores, $computers, que están en el fichero servers.txt, lavariable $url que indica dónde se encuentra el script RecollectUSBData.ps1 y,finalmente,eltiempodeesperaparasincronizarlaoperación.Hayquetenerencuentaqueestenúmeropuedevariarenfuncióndelentornodondeseejecuteelscript.Esteseríaunejemplodeejecución:
Write-Host "Process created. Process id is $id" taskkill.exe /PID $id } Enestebucle se compruebacadaordenadorquevamosaanalizar los cuales sehancargadoenlavariable$computersdesdeelficheroservers.txt.Laparteprincipaldelaejecuciónsecentraenelobjeto$Process.Enél,seabreunaconsolaenelequiporemotoqueasuvez lanzaráotraconsoladePowershellpasandocomoparámetroel ficheroRecollectUSBData.ps1 localizado en la ubicación designada por la variable $url. Esimportante tener configuradas correctamente las rutas de ubicación de todos losficherosantesdeejecutarelscript.Antesdepasaralsiguienteordenadordelalistaseránecesarioestarsegurosdequesehafinalizadoelprocesoderecopilarinformación.Haymuchasformasdeoptimizarestaoperación,peroenesteejemplosehaoptado,simplemente,poragregarunretardodeX segundos entre cada ejecución mediante el uso del comando sleep. Una vez haterminadolarecopilacióndeinformacióndelequipoaauditar,eliminamoselprocesoen ejecución antes de pasar al siguiente con el comando taskkill. A modo deinformación,seimprimeporpantallaelIDyelresultadodedichaoperacióncomosepuedeapreciarenlasiguientecaptura:
Figura14:EjecucióndelscriptenPowershell2.3.2. Script:RecollectUSBDataEstescriptsólosehamodificadoenelúltimobloque,elBloque3,paraadaptarlasalidaal nuevo tipo de ejecución. Como se puede apreciar en el código mostrado acontinuación, se ha sustiuido el comando Echo por unWrite-Host con las variables,eliminadolasalidaporpantalla: for ($i=0; $i -lt $USBDevices.length; $i++) { $IDUnico=$USBDevices[$i] | Select -ExpandProperty "USBContainerID" $USBNombre=$USBDevices[$i] | Select -ExpandProperty "USBDevice" Write-Host "$ComputerName,$ComputerIP,$USBNombre,$IDUnico" } El ficherogeneradoUSBData.CSVseráexactamente igualalmostradoenelapartadoanterior.
2.4. Informaciónhistórica Tambiénesposibleobtenerunregistrodefechasdelaprimeraconexiónalordenador,encasodenecesitarmásinformaciónsobreelrecorridodeldispositivoUSBdentrodelaHiddenNetwork.Enelregistrodeeventos,laramaquemásinformaciónpuedeofrecervienedeshabilitadapordefectoentodaslasversionesdeWindows.Dicharamaeslasiguiente:Windows Logs ->ApplicationsandServices Logs ->Windows ->DriverFrameworks-UserMode->OperationalPorlotanto,laformadeobtenerlafechadelaprimeraconexióndeldispositivoUSBalequipo,sintenerqueactivarlaauditoríaenlosequipos,esanalizarelsiguienteficherodesistema:C:\Windows\inf\setuoapi.dev.logEndichoficherosetienenregistrados,entreotrosdatos,lafechadelaprimeravezquese conectó. Para poder localizar correctamente el dispositivo USB insertado seránecesario almacenar un nuevo valor durante la ejecución del script“RecollectUSBData.ps1”,dichovaloreselcampoDiskID:
Figura15:BúsquedadelaclaveDiskIDEstevaloresúnicodentrodelsistemaWindowsactual,perovaríaalconectarloaotroordenador,adiferenciadelcampoContainerId,elcualeselmismoencadaordenadorWindows. Con este valor se puede identificar el dispositivo USB dentro del ficherosetupoapi.dev.log.EnlasiguienteimagensepuedemostrarsuubicaciónutilizandosuDiskIDylafechadesuprimerainserciónenelsistemaauditado:
2.5. HiddenLinksenOSXEnlosequiposqueejecutanMacOSXomacOSdisponendeunficheroconextensiónPLIST,elcualalmacenaestainformaciónsobredispositivosUSBconectadosalequipo.El fichero se denomina com.apple.finder.plist. En la imagen se puede visualizar unejemplodecapturadeinformaciónenentonosOSXomacOS.
3. ConclusionesMás allá de la potencial fuga de información de la empresa, una red oculta oHiddenNetworkestambiénunproblemaparala integridaddenuestrosistema.Estosdispositivos USB podrían propagar un malware hasta diferentes secciones de lainfraestructura,dondeenteoría,laseguridadesmayor.TenerredesdesconectadasdeInternettransmitelafalsaseguridaddeestarmásprotegidosantecualquierincidente,loquehaceaúnmásvulnerableelsistema.La infeccióna travésdeundispositivoUSBdeunmalwareesunproblema latenteyactual,nosóloenelyamencionadohistóricocasodeStuxnet,sinoenotrosdemayoractualidadcomoBrutalKangarooutilizadoporlaCIA.Debido al gran impacto en nuestra infraestructura que puede tener este tipo deinfecciones y fuga de información, hemos creado este documento para ayudar alocalizarestasredesocultasyofrecerunaherramientaparasucontrol.Deesemodoserámásfácilevitarincidentesyofrecertambiénunautilidadqueofrezcainformaciónútilparacasosdeanálisisforense. Referenciashttp://www.elladodelmal.com/2014/02/como-localizar-los-hidden-links-de-las.htmlhttp://www.elladodelmal.com/2017/06/script-powershell-winrm-para-descubrir.htmlhttps://blogs.technet.microsoft.com/heyscriptingguy/2012/05/18/use-powershell-to-find-the-history-of-usb-flash-drive-usage/