- PowerShell mahdollistaa yhteyksien ja katkosten havaitsemisen USB reaaliajassa ja lähettää ne keskuspalvelimelle API:n kautta.
- Tapahtumakanavien käyttöönotto ja WEF:n käyttö tarjoavat yritystason ja rikostutkinnan kontekstin SIEM:n rinnalla.
- Tuotantoympäristössä yhdistyvät tehtävien ajoitus, päätepisteiden suojaus ja taustajärjestelmän suojauksen vahvistaminen.
Muistikorttien, levyjen ja oheislaitteiden liittäminen USB:n kautta voi avata enemmän ovia kuin miltä näyttää: tietovuodoista tartuntoihin haittaohjelmat kenenkään huomaamatta. USB-laitteiden valvonta ja lokien tallennus joukkueisiin tulo ja lähtö on siksi keskeinen mittari tietoverkkojen jota monet organisaatiot jo pitävät perustasona.
Hyvä uutinen on, että ekosysteemi Windows tarjoaa useita lähestymistapoja kaupallisista työkaluista natiiveihin menetelmiin, kuten PowerShelliin ja Windows Event Forwardingiin (WEF). Hyvin harkitun suunnittelun ansiosta USB-tapahtumat voidaan havaita reaaliajassa, tallentaa, lähettää keskuspalvelimelle ja korreloida. muiden turvamerkkien kanssa, kaikki ilman käyttäjän kitkaa.
Yleiskatsaus ja työkalut USB-laitteiden seurantaan
Säännellyissä yrityksissä (rahoitus, terveydenhuolto jne.) valvonta ja jäljitettävyys ovat välttämättömiä. Tavoitteena on tunnistaa luvattomat laitteet nopeasti, estää tietovuodot ja havaita yritykset levittää haittaohjelmia siirrettäviltä tietovälineiltä.
Jos etsit jotain valmista, on olemassa tiettyjä apuohjelmia. USB-laiteseurantalaite helpottaa jatkuvaa inventointia ja auditointia, tallentaen tunnisteita, laitetyyppiä ja yhteys-/katkaisuaikoja sekä hyödyllisiä raportteja kuvioiden tai uhkien tunnistamiseksi.
On myös kevyitä apuohjelmia. USBDeview (NirSoft) näyttää nykyiset ja aiemmat USB-laitteet; ei lähetä tietoja palvelimelle yksinään, mutta se integroituu hyvin skripteihin, jotka automatisoivat vientiä tai ilmoituksia infrastruktuurissasi.
Laajamittaisissa tilanteissa päätepistepaketit auttavat konsolidoinnissa. Microsoft Endpoint Manager, ManageEngine Endpoint Central tai Ivanti Ne mahdollistavat USB-laitekäytäntöjen ja lokien luomisen yritystasolla, raporttien kanssa tai lähettämisen keskitettyihin tietovarastoihin.
Korrelaatiota ja hälytyksiä varten SIEM, kuten Splunk tai Elastic Stack Se voi käsitellä USB-tapahtumia ja laukaista havaintoja reaaliajassa. Nämä alustat tunnistavat epäilyttävän toiminnan (yhteydet aukioloaikojen ulkopuolella, luvattomat laitteet jne.) ja Ne sopivat täydellisesti PowerShellistä tai WEF:stä dataa syöttävään putkeen..

Havaitseminen ja reagointi PowerShellin avulla: USB-tapahtumat ja lähettäminen palvelimelle
Jos haluat joustavuutta, käsikirjoitus PowerShellissä oma on erittäin tehokas. Voit havaita yhteyksiä ja katkoksia reaaliajassa, rikastuttaa metadatalla ja julkaista REST-rajapintaan taustajärjestelmääsi varten.
Listaa ensin tiettynä ajankohtana kytkettynä olevat USB-laitteet. Win32_DiskDrive-luokka, jossa on InterfaceType USB, on hyvä lähtökohta., vaikka on suositeltavaa täydentää sarjanumeroa PnP-tiedoilla, jos ne ovat saatavilla:
# Enumerar almacenamiento USB actual
$usb = Get-CimInstance Win32_DiskDrive | Where-Object { $_.InterfaceType -eq 'USB' }
$enriquecido = foreach ($d in $usb) {
$serial = (Get-CimInstance Win32_PhysicalMedia | Where-Object { $_.Tag -eq $d.DeviceID }).SerialNumber
[PSCustomObject]@{
DeviceID = $d.DeviceID
Model = $d.Model
Interface = $d.InterfaceType
Serial = ($serial -replace '\s+', '').Trim()
}
}
$enriquecido | Format-Table -AutoSize
Varaston lisäksi avainasemassa on aika todellinen. PowerShell voi tilata järjestelmätapahtumia reagoidakseen välittömästi laitetta kytkettäessä tai irrotettaessa:
# Monitorizar llegada y retirada de volúmenes (EventType 2=arrive, 3=remove)
Unregister-Event -SourceIdentifier USBMonitor -ErrorAction SilentlyContinue
$null = Register-WmiEvent -Class Win32_VolumeChangeEvent -Action {
$e = $Event.SourceEventArgs.NewEvent
$tipo = if ($e.EventType -eq 2) { 'Insert' } elseif ($e.EventType -eq 3) { 'Remove' } else { 'Other' }
$payload = [PSCustomObject]@{
Hostname = $env:COMPUTERNAME
TimeUtc = (Get-Date).ToUniversalTime().ToString('o')
Action = $tipo
Drive = $e.DriveName
}
try {
$json = $payload | ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri 'http://SERVIDOR_CENTRAL/api/usblog' -Method Post -Body $json -ContentType 'application/json'
} catch {
Write-Warning ("Error enviando evento USB: {0}" -f $_.Exception.Message)
}
} -SourceIdentifier USBMonitor
Jos haluat tallentaa myös yksityiskohtia laitteisto juuri asetetun USB-levyn yhdistää Win32_VolumeChangeEventin Win32_DiskDriven päivitykseen ja ristiviittaukset niteen/julisteen mukaan tarpeen mukaan. Voit myös seurata Win32_DeviceChangeEvent yleisten laitetapahtumien osalta:
# Alternativa: evento genérico de dispositivo
Unregister-Event -SourceIdentifier USBGeneric -ErrorAction SilentlyContinue
$null = Register-WmiEvent -Class Win32_DeviceChangeEvent -Action {
$e = $Event.SourceEventArgs.NewEvent
$payload = [PSCustomObject]@{
Hostname = $env:COMPUTERNAME
TimeUtc = (Get-Date).ToUniversalTime().ToString('o')
EventType= $e.EventType # 2 insert, 3 remove
}
try {
Invoke-RestMethod -Uri 'http://SERVIDOR_CENTRAL/api/usblog' -Method Post -Body ($payload|ConvertTo-Json) -ContentType 'application/json'
} catch {}
} -SourceIdentifier USBGeneric
Kertaluonteista vedosta ja välitöntä JSON-toimitusta palvelimellesi varten putki on suora. Seuraava malli kerää nykyiset USB-muistitikut, muuntaa ne JSON-muotoon ja julkaisee ne API:ssa:
Get-CimInstance Win32_DiskDrive | Where-Object { $_.InterfaceType -eq 'USB' } |
ForEach-Object {
$serial = (Get-CimInstance Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).SerialNumber
[PSCustomObject]@{ DeviceID = $_.DeviceID; Model = $_.Model; Serial = ($serial -replace '\s+', '').Trim() }
} |
ConvertTo-Json |
Invoke-RestMethod -Uri 'http://SERVIDOR_CENTRAL/api/usblog' -Method Post -ContentType 'application/json'
Inventaarion ja lisäysten/poistojen lisäksi Windows kirjaa USB:hen liittyvän käyttäjän ajuritoiminnan. Ota käyttöön Microsoft-Windows-DriverFrameworks-UserMode/Operational-kanava ja tarkastelee keskeisiä tapahtumia: yhteyden muodostumista (esim. 2003, 2004, 2006, 2010) ja katkaisua (2102, 2105, 2106) hyödyllisten metatietojen, kuten valmistajan, mallin tai instanssipolkujen, avulla.
REST-rajapinta Flaskissa lokien keskittämiseen
Tarvitset yksinkertaisen vastaanottimen datan tallentamiseen ja hyödyntämiseen. Flaskin avulla voit käynnistää /api/usblog-päätepisteen. materiaalin validointi, tallennus ja valmistelu myöhempää analyysia tai SIEM-järjestelmään lähettämistä varten:
from flask import Flask, request, jsonify
from datetime import datetime
app = Flask(__name__)
API_TOKEN = 'cambia-este-token-seguro'
@app.route('/api/usblog', methods=['POST'])
def log_usb():
if request.headers.get('X-Api-Token') != API_TOKEN:
return jsonify({'error': 'Unauthorized'}), 401
data = request.get_json(silent=True)
if not data:
return jsonify({'error': 'No payload'}), 400
line = f"{datetime.utcnow().isoformat()}Z\t{data}\n"
with open('usb_log.txt', 'a', encoding='utf-8') as f:
f.write(line)
return jsonify({'status': 'ok'}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Aloitaksesi Asenna Flask pip-komennolla ja tallenna skripti (esim. server.py) ja suorita se. Sieltä PowerShell-skriptisi voi lähettää tapahtumia osoitteeseen http://SERVER_IP:5000/api/usblog lisäämällä X-Api-Token-otsikon, jos olet ottanut sen käyttöön.
Vaikka tässä kirjoitamme tiedostoon yksinkertaisuuden vuoksi, Voit lähettää tietokantaan tai SIEM-järjestelmääntai jopa haarautumaan: SIEM-järjestelmään online-analytiikkaa varten ja datajärveen (Hadoop/HDInsight) pitkäaikaista säilytystä ja suurten tietomäärien rikostutkintaa varten.
Julkaisu: Automaattinen käynnistys, tietoturva, WEF ja analytiikka
Jotta et olisi riippuvainen kenenkään kädestä uudelleenkäynnistyksen jälkeen, automatisoi tavaratila PowerShell-skriptistä Tehtävien ajoituksen tai Käynnistys-kansion avulla ja suojaa käyttöönotto hyvillä tietoturvakäytännöillä.
Automaattinen käynnistys Windowsissa
Tehtävien ajoituksen avulla: Luo tehtävä, jolla on maksimikäyttöoikeudet, ja käynnistä se kirjautumisen tai järjestelmän käynnistyksen yhteydessäToimintona suorita powershell.exe siten, että NoProfile ja ExecutionPolicy Bypass osoittavat .ps1-tiedostoosi.
Jos haluat käyttää kotikansiota: Luo .bat-tiedosto, joka käynnistää komentosarjan, ja sijoita se kansioon %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup.Se on yksinkertainen ja toimii hyvin käyttäjien työasemilla.
Esimerkki .bat-tiedostosta: powershell.exe -NoProfile -ExecutionPolicy Bypass -Tiedosto «C:\path\script.ps1», säätämällä polkua ympäristöösi ja varmistamalla, että skripti on allekirjoitettu tai tulee luotettavasta lähteestä.
Turvallisuussuositukset
Suojaa API:a: Palomuurisuodatus, vaaditaan token tai mTLS ja käytetään nopeusrajoituksiaVältä päätepisteen paljastamista tarvittavan verkon ulkopuolelle ja tallenna yksityiskohtaisesti vain tarvittava määrä henkilötietoja.
Kovettaa asiakasta: käytä palvelutilejä vähimmäisoikeuksillaKierrä tokenia, validoi TLS tarvittaessa ja hallitse ExecutionPolicy:tä ryhmäkäytäntöobjekteilla, jos sovellettavissa; allekirjoita skripti ja validoi eheys, jos mahdollista.
Suorita säännöllisiä tarkastuksia: tarkista palvelimen ja asiakkaan lokit, vertaa epätavallisia kaavoja ja ristiviittauksia laitehallintakäytäntöihin luvattoman käytön tai väärinkäytösten havaitsemiseksi.
Windows Event Forwarding (WEF) yrityskäyttöön
Kun haluat Windowsissa skaalautuvuutta ja vikasietoisuutta, WEF välittää tapahtumat Windows Event Collector (WEC) -palvelimelle ilman lisäagenttien asentamista. Se on passiivinen lokikirjauksen suhteen: se ei ota käyttöön kanavia tai muutosten tarkastuksia; nämä asetukset on otettava käyttöön ryhmäkäytäntöobjektin kautta.
Tuplatilausmalli: lähtötaso (kaikille laitteille) ja epäilty (osajoukolle hälytyksen jälkeen)Epäiltyjen luettelo kerää enemmän signaaleja rikostutkinnan kontekstissa, ja sitä voidaan päivittää vaikuttamatta muihin luetteloihin.
Suositeltu datan kohde: Lähtötilanne SEM/SIEM tai SQL; epäilty MapReduce/HDInsight/Data Lake -järjestelmään äänenvoimakkuutensa ja alhaisemman signaali-kohinasuhteensa vuoksi. SIEM korreloi ja hälyttää koneen nopeudella; tiedot säilyvät vuosia ja mahdollistavat monimutkaisen analyysin.
Ohjeellinen skaalautuvuus: Jopa 5.000 5.000 tapahtumaa sekunnissa SQL/SEM:ssä; 50.000 XNUMX–XNUMX XNUMX SEM:ssä; sen ylittyessä käytetään datalampeaTavallisilla WEC-palvelimilla käytännön luku on yhteensä noin 3.000 XNUMX tapahtumaa sekunnissa laitteistosta ja levyistä riippuen.
Työnnä vs. vedä: Joustavin on tilaus, jonka aloittaa tilaaja (push). ryhmäkäytäntöobjektin määrittämä. Pull-toiminto edellyttää asiakkaiden esimäärittelyä WEC:ssä ja etätapahtumien lukuoikeuksia (tunnistetietojen lisäämistä tapahtumalokin lukijaryhmään).
Salaus ja todennus: Verkkotunnuksessa Kerberos-salaus oletuksena (NTLM valinnainen)HTTPS:ää käytetään varmennetodennuksen kanssa, kun Kerberos ei ole käytettävissä. Todennus on molemmissa tapauksissa molemminpuolista.
Muoto ja tiheys: Oletusarvoinen ”Rendered Text”; vaihtoehtoinen ”Tapahtumat” (XML-binääri) on kompaktimpiToimitustilat: Normaali, Minimoi kaistanleveys (työntö, erät ~6 tunnin välein), Minimoi viive (työntö, erät ~30 s) tai mukautettu WECUTIL:n kautta DeliveryMaxItems- ja DeliveryMaxLatencyTime-parametreilla.
WEC:n käytännön rajoitukset: EVTX-lokilevy (I/O), samanaikaiset TCP-yhteydet ja lokin koko (pysyvät avaimet lähdettä kohden). Suurille tiedostomuodoille wecutil.exe on parempi vaihtoehto kuin Tapahtumienvalvonta-konsoli.
Ota käyttöön avainkanavat ja koko lokit: DriverFrameworks-käyttäjätila/toiminnallinen (ota käyttöön ja laajenna noin 50 megatavuun), CAPI2/Operatiivinen (100 Mt ja oikeudet tapahtumalokin lukijoille) AppLocker (EXE/DLL ja MSI/Script, ~100 Mt). Käytä ryhmäkäytäntöä wevtutil-komentosarjojen kanssa:
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-DriverFrameworks-UserMode/Operational /e:true
%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-DriverFrameworks-UserMode/Operational" /ms:52432896
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /e:true
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /ms:102432768
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /ca:"O:BAG:SYD:(A;;0x7;;;BA)(A;;0x2;;;AU)(A;;0x1;;;S-1-5-32-573)"
%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-AppLocker/EXE and DLL" /ms:102432768
USB- ja laitetoimintaan liittyvät tapahtumat: DriverFrameworks-käyttäjätila: 2003, 2004, 2006, 2010, 2100, 2101, 2105, 2106 ja 2102 (yhteys katkaistu). Laajenna Suojaus ja järjestelmä -kanavassa valvontaa prosessien luonnille (4688), rekisterimuutoksille (4657), RDP-istunnoille (4778/4779), jaetuille resursseille (5140, 5142, 5144), järjestelmän ajalle (4616), käynnistyksille/pysäytyksille (12) ja muille perus- ja epäilyttävistä tilauksista kerätyille tiedoille.
Ennalta määritetyt WEF-tilaukset: ”Perustaso” tietoturvatapahtumineen, AppLocker, Sysmon/Operational (jos sovellettavissa), SMBClient/Operational, virheraportointi, TaskScheduler/Operationaljne.; ja ”Epäilyttävä” verkon kanssa (kirjautumistyyppi 3), DNS-asiakas/Operational (3008, suodatusaukot), CAPI2 (11/70/90), PowerShell/Operational (4103-4106), DriverFrameworks-UserMode/Operational (2004) ja muita. Aseta ”lue olemassa olevat tapahtumat” arvoksi true epäiltyjen tapahtumien osalta historian skannaamiseksi.
Edistyneet asetukset: pakota "Tapahtumat"-muoto WECUTIL:n avulla Kapasiteetin kaksinkertaistaminen ja viiveen/eräkoon mukauttaminen:
wecutil ss "NombreSuscripcion" /cf:Events
wecutil ss "NombreSuscripcion" /cm:Custom
wecutil ss "NombreSuscripcion" /dmi:1
wecutil ss "NombreSuscripcion" /dmlt:10
PowerShell-lokitietojen kerääminen ja rikostutkinta
PowerShell versiosta 5.0 lähtien mahdollistaa komentosarjojen lohkoloki (4104) oletuksena, ja sisällön ollessa suuri, se voidaan fragmentoida useisiin tapahtumiin. Tämä mahdollistaa suoritettujen komentosarjojen rekonstruoinnin, mikä on avainasemassa tapahtumiin reagoinnissa.
Rekonstruktioita varten Suodata ScriptBlock-tunnuksen mukaan ja lajittele sekvenssin mukaan alkuperäisen sisällön yhdistämiseksi, vaikka palauttaisit vain osan siitä lokien kierron avulla:
# Extraer eventos 4104 con un ScriptBlockID concreto
$evts = Get-WinEvent -FilterHashtable @{ Path='C:\Ruta\Microsoft-Windows-PowerShell%4Operational.evtx'; ProviderName='Microsoft-Windows-PowerShell'; Id=4104 } |
Where-Object { $_.Message -like '*51baf005-40a5-4878-ab90-5ecc51cab9af*' }
$sorted = $evts | Sort-Object { $_.Properties[0].Value }
$sorted | Select-Object TimeCreated, ActivityId, Id, Message
# Unir el contenido del script si tuvieras todos los segmentos
# ($sorted | ForEach-Object { $_.Properties[2].Value }) -join '' | Out-File script_reconstruido.ps1 -Encoding UTF8
Kultainen sääntö: Suurentaa lokien kokoa ja ottaa käyttöön kanavat, jotka eivät ole aktiivisia. välttääkseen artefaktien menettämisen rotaation vuoksi. Nykyaikaisissa ympäristöissä kanava- ja EVTX-kokojen kasvattaminen ei yleensä vaikuta merkittävästi suorituskykyyn.
ADAudit Plus ja muut integraatiot
Tiedostopalvelinkeskeistä näkymää varten ADAudit Plus sisältää USB-tallennustilan auditointiraportit tietoja ”tiedoston luku”, ”tiedoston muokattu”, ”kopioi/liitä” ja ”irrotettavan laitteen laajennus”. Se tarjoaa myös haun palvelimen, polun, muutoksen tekijän ja viestin mukaan.
Laajemmissa ekosysteemeissä Microsoft Endpoint Manager, ManageEngine Endpoint Central ja Ivanti asettaa käytäntöjä ja yhdistää irrotettavien laitteiden signaalit, ja SIEM (Splunk/Elastic) kerää tapahtumia ja hälytyksiä sääntöihin ja koneoppimiseen perustuva. Tämä viitekehys kattaa sekä vaatimustenmukaisuuden että varhaisen havaitsemisen.

Kaiken edellä mainitun perusteella sinulla on täydellinen reitti: Reaaliaikainen inventaario ja tapahtumat PowerShellin avulla, keskitetty API Flaskin avulla, käynnistyksen automatisointi, kokonaisvaltainen suojaus ja WEF skaalausta vartenJos käytät myös SIEM-järjestelmää ja vahvistat tietoturvan auditointia (lähtötaso + epäilty), saat yksityiskohtaista näkyvyyttä, rikosteknistä kontekstia ja kyvyn reagoida luvattomaan käyttöön tai USB-tartuntayrityksiin.
Intohimoinen kirjoittaja tavujen maailmasta ja tekniikasta yleensä. Rakastan jakaa tietämykseni kirjoittamalla, ja sen aion tehdä tässä blogissa, näyttää sinulle kaikki mielenkiintoisimmat asiat vempaimista, ohjelmistoista, laitteistoista, teknologisista trendeistä ja muusta. Tavoitteeni on auttaa sinua navigoimaan digitaalisessa maailmassa yksinkertaisella ja viihdyttävällä tavalla.

