- PowerShell membolehkan anda mengesan sambungan dan pemutusan sambungan USB dalam masa nyata dan menghantarnya ke pelayan pusat melalui API.
- Mendayakan saluran acara dan menggunakan WEF menyediakan skala perusahaan dan konteks forensik bersama SIEM.
- Penggunaan pengeluaran menggabungkan Penjadual Tugas, keselamatan titik akhir dan pengerasan bahagian belakang.
Menyambung kad memori, cakera dan persisian melalui USB boleh membuka lebih banyak pintu daripada yang kelihatan: daripada kebocoran data kepada jangkitan oleh malware tanpa disedari oleh sesiapa. Pantau dan log peranti USB masuk dan keluar pasukan oleh itu adalah ukuran utama cybersecurity bahawa banyak organisasi sudah menganggap asas.
Berita baiknya ialah ekosistem Windows menawarkan beberapa pendekatan, daripada alatan komersial kepada kaedah asli seperti PowerShell dan Windows Event Forwarding (WEF). Dengan reka bentuk yang difikirkan dengan baik, peristiwa USB boleh dikesan dalam masa nyata, dilog, dihantar ke pelayan pusat dan dikaitkan. dengan isyarat keselamatan lain, semuanya tanpa geseran untuk pengguna.
Gambaran keseluruhan dan alatan untuk menjejak peranti USB
Dalam syarikat terkawal (kewangan, kesihatan, dll.), kawalan dan kebolehkesanan diperlukan. Matlamatnya adalah untuk mengenal pasti peranti yang tidak dibenarkan dengan cepat, menghalang exfiltration dan mengesan percubaan untuk memperkenalkan perisian hasad daripada media boleh alih keluar.
Jika anda sedang mencari sesuatu yang sudah siap, terdapat utiliti khusus. Penjejak Peranti USB memudahkan inventori dan pengauditan berterusan, menyimpan pengecam, jenis peranti dan masa sambungan/pemutus sambungan, serta laporan berguna untuk mengenal pasti corak atau ancaman.
Terdapat juga utiliti ringan. USBDeview (NirSoft) menunjukkan peranti USB semasa dan lalu; tidak menghantar data ke pelayan sendiri, tetapi ia disepadukan dengan baik dengan skrip untuk mengautomasikan eksport atau pemberitahuan dalam infrastruktur anda.
Dalam senario berskala besar, suite titik akhir membantu menyatukan. Pengurus Microsoft Endpoint, ManageEngine Endpoint Central atau Ivanti Mereka membenarkan dasar dan log peranti USB di peringkat korporat, dengan laporan atau penghantaran ke repositori berpusat.
Untuk korelasi dan makluman, SIEM seperti Splunk atau Elastic Stack Ia boleh menelan peristiwa USB dan mencetuskan pengesanan dalam masa nyata. Platform ini mengenal pasti tingkah laku yang mencurigakan (sambungan di luar waktu perniagaan, peranti yang tidak dibenarkan, dsb.) dan Mereka sesuai dengan sempurna dengan saluran paip yang menyuap data daripada PowerShell atau WEF..
Pengesanan dan Respons dengan PowerShell: Acara USB dan Menghantar ke Pelayan
Jika anda lebih suka fleksibiliti, a skrip miliknya dalam PowerShell sangat berkuasa. Anda boleh mengesan sambungan dan pemutusan sambungan dalam masa nyata, memperkayakan dengan metadata dan menerbitkan ke API REST untuk bahagian belakang anda.
Mula-mula, senaraikan peranti USB yang disambungkan pada masa tertentu. Kelas Win32_DiskDrive dengan InterfaceType USB ialah titik permulaan yang baik, walaupun adalah dinasihatkan untuk menambah data PnP untuk nombor siri apabila tersedia:
# 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
Sebagai tambahan kepada inventori, kuncinya ialah el tiempo sebenar. PowerShell boleh melanggan acara sistem untuk bertindak balas serta-merta apabila menyambung atau mengalih keluar peranti:
# 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
Jika anda juga ingin menangkap butiran perkakasan daripada cakera USB yang baru dimasukkan, menggabungkan Win32_VolumeChangeEvent dengan penyegaran semula Win32_DiskDrive dan rujukan silang mengikut kelantangan/huruf yang dipasang mengikut kesesuaian. Anda juga boleh memantau Win32_DeviceChangeEvent untuk acara peranti generik:
# 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
Untuk pembuangan satu kali dan penghantaran JSON segera ke pelayan anda, saluran paip adalah terus. Corak berikut mengumpulkan pemacu USB semasa, mengubahnya kepada JSON dan menerbitkannya dalam API:
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'
Di luar inventori dan sisipan/pembuangan, Windows merekodkan aktiviti pemacu pengguna yang berkaitan dengan USB. Dayakan saluran Microsoft-Windows-DriverFrameworks-UserMode/Operasi dan menyemak peristiwa penting: sambungan (cth., 2003, 2004, 2006, 2010) dan pemutusan sambungan (2102, 2105, 2106), dengan metadata berguna seperti pengilang, model atau laluan contoh.
REST API dalam Flask untuk memusatkan log
Anda memerlukan penerima mudah untuk menyimpan dan mengeksploitasi data. Dengan Flask anda boleh melancarkan titik akhir /api/usblog. untuk mengesahkan, menyimpan dan menyediakan bahan untuk analisis atau penghantaran seterusnya ke SIEM:
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)
Untuk meneruskannya, Pasang Flask dengan pip, simpan skrip (cth., server.py) dan jalankannya. Dari sana, skrip PowerShell anda boleh menghantar acara ke http://SERVER_IP:5000/api/usblog dengan menambahkan pengepala X-Api-Token jika anda telah mendayakannya.
Walaupun di sini kita menulis dalam fail untuk kesederhanaan, Anda boleh menghantar ke pangkalan data atau ke SIEM anda, atau pun fork: kepada SIEM untuk analitis dalam talian dan tasik data (Hadoop/HDInsight) untuk pengekalan jangka panjang dan forensik volum tinggi.
Disiarkan secara langsung: Autostart, Keselamatan, WEF dan Analitis
Supaya anda tidak bergantung pada tangan sesiapa selepas dimulakan semula, mengautomasikan boot daripada skrip PowerShell dengan Penjadual Tugas atau folder Permulaan, dan melindungi penggunaan dengan amalan keselamatan yang baik.
Permulaan automatik dalam Windows
Dengan Penjadual Tugas: Buat tugas dengan keistimewaan maksimum dan pencetus semasa log masuk atau permulaan sistem. Sebagai tindakan, jalankan powershell.exe dengan NoProfile dan ExecutionPolicy Bypass menghala ke .ps1 anda.
Jika anda lebih suka folder Laman Utama: Buat fail .bat yang melancarkan skrip dan letakkan dalam %APPDATA%\Microsoft\Windows\Start Menu\Programs\StartupIa mudah dan berfungsi dengan baik pada stesen kerja pengguna.
Contoh .bat: powershell.exe -NoProfile -ExecutionPolicy Bypass -Fail «C:\path\script.ps1», melaraskan laluan ke persekitaran anda dan memastikan skrip ditandatangani atau datang daripada sumber yang dipercayai.
Cadangan Keselamatan
Lindungi API: Penapisan tembok api, memerlukan token atau mTLS dan gunakan had kadarElakkan daripada mendedahkan titik akhir di luar rangkaian yang diperlukan dan rekod jumlah minimum data peribadi yang diperlukan secara terperinci.
Mengeraskan klien: gunakan akaun perkhidmatan dengan keistimewaan minimumPutar token, sahkan TLS jika berkenaan dan kawal Polisi Pelaksanaan dengan GPO jika berkenaan; jika boleh, tandatangani skrip dan sahkan integriti.
Menjalankan audit berkala: semak log pelayan dan pelanggan, membandingkan corak luar biasa dan rujukan silang dengan dasar kawalan peranti untuk mengesan akses atau lencongan yang tidak dibenarkan.
Windows Event Forwarding (WEF) untuk liputan korporat
Apabila anda mahukan skala dan daya tahan dalam Windows, WEF memajukan acara ke pelayan Windows Event Collector (WEC). tanpa memasang ejen tambahan. Ia pasif berkenaan dengan pengelogan: ia tidak mendayakan saluran atau menukar audit; tetapan ini mesti digunakan melalui GPO.
Model langganan berganda: garis dasar (untuk semua peranti) dan suspek (untuk subset selepas amaran)Senarai suspek mengumpul lebih banyak isyarat untuk konteks forensik dan boleh dikemas kini tanpa menjejaskan yang lain.
Destinasi data yang disyorkan: Garis asas kepada SEM/SIEM atau SQL; mengesyaki kepada MapReduce/HDInsight/Data Lake disebabkan oleh kelantangan dan nisbah isyarat-ke-bunyi yang lebih rendah. SIEM berkorelasi dan memberi amaran pada kelajuan mesin; data mengekalkan data selama bertahun-tahun dan membolehkan analisis yang kompleks.
Skala indikatif: Sehingga 5.000 acara/s dalam SQL/SEM; 5.000-50.000 dalam SEM; di atas itu, tasik dataPada pelayan WEC standard, angka praktikal adalah sekitar 3.000 acara/s secara keseluruhannya bergantung pada perkakasan dan cakera.
Tolak vs Tarik: Yang paling fleksibel ialah langganan yang dimulakan oleh asal (push) dikonfigurasikan oleh GPO. Pull memerlukan pratakrif pelanggan dalam WEC dan kebenaran membaca acara jauh (menambah bukti kelayakan pada kumpulan Pembaca Log Peristiwa).
Penyulitan dan pengesahan: Dalam domain, penyulitan Kerberos secara lalai (pilihan NTLM); HTTPS digunakan dengan pengesahan sijil apabila Kerberos tidak tersedia. Pengesahan adalah bersama dalam kedua-dua kes.
Format dan kekerapan: Lalai "Teks Diberikan"; "Acara" alternatif (perduaan XML) adalah lebih padatMod penghantaran: Normal, Minimumkan lebar jalur (tolak, kelompok setiap ~6j), Minimumkan kependaman (tolak, kelompok ~30s) atau tersuai melalui WECUTIL dengan DeliveryMaxItems dan DeliveryMaxLatencyTime.
Had praktikal WEC: Cakera log EVTX (I/O), sambungan TCP serentak dan saiz log (kunci berterusan setiap sumber). Untuk volum yang besar, wecutil.exe adalah lebih baik daripada konsol Pemapar Acara.
Dayakan saluran dan saiz utama balak: DriverFrameworks-UserMode/Operasi (dayakan dan kembangkan kepada ~50 MB), CAPI2/Operasi (100 MB dan kebenaran untuk Pembaca Log Acara), AppLocker (EXE/DLL dan MSI/Script, ~100 MB). Gunakan GPO dengan wevtutil untuk skrip:
%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
Peristiwa Berkaitan Aktiviti USB dan Peranti: DriverFrameworks-UserMode: 2003, 2004, 2006, 2010, 2100, 2101, 2105, 2106 dan 2102 (diputuskan sambungan). Dalam saluran Keselamatan dan Sistem, kembangkan pengauditan untuk penciptaan proses (4688), perubahan pendaftaran (4657), sesi RDP (4778/4779), sumber dikongsi (5140, 5142, 5144), masa sistem (4616), mula/berhenti (12/13/1074) dan lain-lain yang dikumpul dalam garis dasar dan yang mencurigakan.
Langganan WEF yang dipratakrifkan: "garis dasar" dengan acara keselamatan, AppLocker, Sysmon/Operasi (jika berkenaan), SMBClient/Operasi, Pelaporan Ralat, Penjadual Tugas/Operasi, dsb.; dan "mencurigakan" dengan rangkaian (jenis log masuk 3), Pelanggan DNS/Operasi (3008, menapis jurang), CAPI2 (11/70/90), PowerShell/Operasi (4103-4106), DriverFrameworks-UserMode/Operational (2004) dan banyak lagi. Tetapkan "baca peristiwa sedia ada" kepada benar pada suspek untuk mengimbas sejarah.
Pilihan Lanjutan: paksa format "Acara" dengan WECUTIL Untuk menggandakan kapasiti dan menyesuaikan saiz latensi/kelompok:
wecutil ss "NombreSuscripcion" /cf:Events
wecutil ss "NombreSuscripcion" /cm:Custom
wecutil ss "NombreSuscripcion" /dmi:1
wecutil ss "NombreSuscripcion" /dmlt:10
Pengelogan dan Forensik PowerShell
PowerShell sejak v5.0 membolehkan log blok skrip (4104) secara lalai, dengan pemecahan kepada berbilang acara apabila kandungannya besar. Ini membolehkan pembinaan semula skrip yang dilaksanakan, yang merupakan kunci dalam tindak balas insiden.
Untuk pembinaan semula, Tapis mengikut ID ScriptBlock dan isi mengikut urutan untuk menggabungkan kandungan asal, walaupun anda hanya memulihkan sebahagian daripadanya melalui putaran log:
# 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
Peraturan Emas: Meningkatkan saiz log dan membolehkan saluran yang tidak aktif. untuk mengelakkan kehilangan artifak akibat putaran. Dalam persekitaran moden, peningkatan saiz saluran dan EVTX biasanya tidak menjejaskan prestasi dengan ketara.
ADAudit Plus dan integrasi lain
Untuk paparan berpusatkan pelayan fail, ADAudit Plus termasuk laporan Pengauditan Storan USB dengan butiran "fail dibaca," "fail diubah suai," "salin/tampal" dan "pemalam peranti boleh alih keluar." Ia juga menawarkan carian mengikut pelayan, laluan, pengarang perubahan dan mesej.
Dalam ekosistem yang lebih luas, Pengurus Microsoft Endpoint, ManageEngine Endpoint Central dan Ivanti tetapkan dasar dan satukan isyarat peranti boleh tanggal, dan a SIEM (Splunk/Elastic) mengumpul peristiwa dan makluman berdasarkan peraturan dan pembelajaran mesin. Rangka kerja ini meliputi pematuhan dan pengesanan awal.
Dengan semua perkara di atas, anda mempunyai laluan lengkap: Inventori dan acara masa nyata dengan PowerShell, API pusat dengan Flask, automasi permulaan, keselamatan hujung ke hujung dan WEF untuk penskalaanJika anda turut menguasakan SIEM dan mengukuhkan pengauditan keselamatan (garis dasar + suspek), anda akan mendapat keterlihatan berbutir, konteks forensik dan keupayaan untuk bertindak balas terhadap akses tanpa kebenaran atau percubaan jangkitan USB.
Penulis yang bersemangat tentang dunia bait dan teknologi secara umum. Saya suka berkongsi pengetahuan saya melalui penulisan, dan itulah yang akan saya lakukan dalam blog ini, menunjukkan kepada anda semua perkara yang paling menarik tentang alat, perisian, perkakasan, trend teknologi dan banyak lagi. Matlamat saya adalah untuk membantu anda mengemudi dunia digital dengan cara yang mudah dan menghiburkan.