امروزه بیشتر سازمانها و نهادهای دولتی از شبکههای ایزوله ارتباطی استفاده میکنند که فرآیند انتقال اطلاعات در آنها محدود است و به شکل کنترل شده با شبکههای دیگر در ارتباط هستند. این شبکههای رایانهای برای اهداف خاصی پیادهسازی میشوند و اغلب طراحی خاص و منحصر به فرد دارند، زیرا حاوی اطلاعات مهمی در ارتباط با سامانه کنترل مرکزی هستند. به همین دلیل ضروری است بستری کاملا ایمن برای پردازش دادههای حساس آماده شود. سازمانهای بزرگ بر اساس خطمشیهای سختگیرانهای شبکههای کامپیوتری را طراحی و پیادهسازی میکنند. شبکههایی که امنیت حرف اول را در آنها میزند. این شبکهها از مکانیزمهای ارتباطی رمزگذاری شده استفاده میکنند تا اگر هکری موفق شد به شبکه نفوذ کند به راحتی به اطلاعات حیاتی دسترسی نداشته باشد. هکرها میتوانند به روشهای مختلف بدافزارهایی را به یک شبکه کامپیوتری محافظت شده تزریق کنند. به بیان سادهتر، پیادهسازی یک شبکه کابلی یا وایفای که به اینترنت متصل نیست تضمین نمیکند شبکه عاری از هرگونه بدافزاری است، زیرا هرگونه اتصال خارجی ممکن است تهدیدی جدی برای شبکه به وجود آورد. یکی از این تهدیدات مهم شبکههای پنهان است. شبکههایی که ممکن است وجود داشته باشند، اما سرپرستان شبکه نتوانند در نگاه اول آنها را مشاهده کنند.
مخاطرات پیرامون ارتباطات و کانالهای ارتباطی
اصل مهم در پیادهسازی یک شبکه کارآمد حفظ امنیت دادهها است. فرآیند طراحی و پیادهسازی شبکهها فارغ از توپولوژی استفاده شده (طراحی بر مبنای اترنت، وایفای و نمونههای مشابه) روند پیچیدهای دارد که نیازمند تحلیل جامع و دقیقی است. فرآیند تجزیه و تحلیل ترافیک شبکههای سازمانی به معنای بهکارگیری درست ابزارهای نظارتی است. ابزارهای نظارتی ضمن آنکه به مدیران شبکه اجازه میدهند کنترل دقیقی روی ترافیک شبکه اعمال کنند، اجازه میدهند گرههایی که بیشترین استفاده از پروتکلها را دارند یا گرههایی که نیازمند برخی سرویسهای کاربردی هستند یا گرههایی که باعث بروز تنگنا در شبکه میشوند به راحتی شناسایی شوند. نقشهبرداری از شبکه بهترین راهکار درک عملکردها و نیازمندیهای گرهها و پیکربندی درست شبکهها است، از اینرو، تجزیه و تحلیل تلهمتری و کارآمد میتواند از شبکه در برابر مخاطرات جدی محافظت کند. هرچه درباره گرههای یک شبکه اطلاعات دقیقتری بهدست آید، به همان نسبت شناسایی تهدیدات به شکل دقیقتری انجام میشود. درک صحیح ساختارهای ارتباطی گرهها در تشخیص مرزهای شبکه برای کاهش نفوذ، شناسایی حملات و انجام اقدامات امنیتی پیشگیرانه نقش کلیدی دارد. سازمانها همواره با یک مشکل جدی روبرو هستند که اغلب سرپرستان شبکهها درک درستی از این مفهوم ندارند. در تعریف ساده و اولیه شبکه به مجموعهای از کامپیوترهای متصل به یکدیگر اشاره دارد که از طریق فناوریها و پروتکلها با یکدیگر در ارتباط هستند. در بیشتر مواقع، سرپرستان شبکهها تصور میکنند یک اتصال پایدار به شبکه از طریق کابل اترنت یا وایفای و دسترسی ساده کلاینتها به شبکه جوابگوی نیازهای تجاری سازمان است، اما واقعیت چیز دیگری است. شبکههای امروزی به اندازهای پیچیده شده و تجهیزات مختلف در بطن آنها قرار گرفتهاند که لزوم توجه به ترافیک شبکهها و ارتباط میان تجهیزات را دوچندان میکنند. بهطور مثال، ممکن است ابزارهای امنیتی مختلفی در نقاط ورودی و خروجی شبکهها مستقر شده باشند، اما در ارتباط با دستگاههای یواسبی هیچگونه تمهیدات پیشگیرانهای در نظر نگرفته شده باشد که همین موضوع زمینهساز شکلگیری شبکه پنهان (Hidden Network) میشود. شبکههای پنهان از طریق بهکارگیری تجهیزات یواسبی ایجاد شده و امکان برقراری ارتباط میان کامپیوترهای ایزوله شده به شکل منطقی یا فیزیکی را فراهم میکنند.
جداسازی شبکه و اتصال یواسبی
برای درک بهتر مخاطرات شبکههای پنهان که توسط دستگاههای یواسبی به وجود میآیند، به مثال زیر دقت کنید. فرض کنید در یک سازمان سه نوع شبکه محلی مجازی (VLAN) به شرح زیر داریم.
شبکه محلی مجازی اول به شرح زیر است:
- کامپیوتر A با سایر کامپیوترها در همان شبکه محلی مجازی در ارتباط است.
- کامپیوتر B با سایر کامپیوترها در همان شبکه محلی مجازی در ارتباط است.
شبکه محلی مجازی دوم به شرح زیر است:
- کامپیوتر C با سایر کامپیوترها در همان شبکه محلی مجازی در ارتباط است.
- کامپیوتر D با سایر کامپیوترها در همان شبکه محلی مجازی در ارتباط است.
- کامپیوتر E با سایر کامپیوترها در همان شبکه محلی مجازی در ارتباط است.
شبکه محلی مجازی سوم به شرح زیر است:
- کامپیوتر F با سایر کامپیوترها در همان شبکه محلی مجازی در ارتباط است.
شکل 1 آرایش این سه شبکه محلی مجازی را نشان میدهد.
شکل 1
فرض کنید کلاینتهای F و E در حال انتقال اطلاعات از طریق یواسبی هستند. یک شبکه مخفی میان این دو کلاینت ایجاد میشود. اطلاعات مبادله شده میان این دو گره با یک خط منحنی در شکل 2 نشان داده شده است.
شکل 2
تا این مرحله مشکل خاصی وجود ندارد و همه چیز عادی به نظر میرسد، اما زمانی که یک دستگاه یواسبی از یک کامپیوتر به دیگری متصل میشود، باعث پدید آمدن حالتی میشود که به آن گردهافشانی (Pollination) میگوییم. واژه فوق دقیقا به همان معنای اصلی گردهافشانی در طبیعت اشاره دارد، با این تفاوت که در دنیای شبکههای کامپیوتری به مخاطرات ناشی از اتصال یک دستگاه یواسبی به کامپیوترهای مستقر در زیرشبکههای مختلف اشاره دارد که به لحاظ منطقی از یکدیگر جدا شدهاند. حال اگر بدافزاری روی حافظه فلش وجود داشته باشد، به راحتی در میان زیرشبکههای مختلف گسترش پیدا میکند و از طریق گیتویهایی که زیرشبکهها را به یکدیگر متصل میکنند پخش میشود. در موارد جدیتر، حافظههای فلش آلوده میتوانند شبکهای آلوده از سامانهها را به وجود آورند که اطلاعات را به شکل کاملا نامحسوسی مبادله میکنند، در حالی که سرپرستان شبکه تصور میکنند به دلیل عدم وجود دسترسی به اینترنت هیچگونه بدافزاری در شبکه وجود ندارد. هنگامی که یک دستگاه یواسبی به کامپیوتری متصل میشود، یک سری ورودی در بخش رجیستری ویندوز برای آن ساخته میشود که حاوی اطلاعات ارزشمندی است. اطلاعاتی که ممکن است برای جمعآوری شواهد در ارتباط با اطلاعات یا تهدیداتی که یک شبکه را در معرض تهدید قرار داده، استفاده میشوند. کلید USBStor ساخته شده در رجیستری ویندوز اطلاعاتی در ارتباط با دستگاههای متصل به کامپیوتر ذخیرهسازی میکند که حاوی اطلاعاتی است که برای شناسایی دستگاهها استفاده میشود. به بیان دیگر برای n دستگاه یواسبی متصل به یک کامپیوتر n موجودیت ساخته میشوند که اطلاعات لازم برای شناسایی دستگاهها را ارائه میکنند (شکل 3).
شکل 3
اطلاعاتی که در زمان اتصال دستگاههای یواسبی به کامپیوتر در رجیستری ویندوز ذخیرهسازی میشوند به شرح زیر است:
- نام دستگاه (Device name)
- کلاس (Class)
- شناسه کلاس (ClassGUID)
- شناسه سختافزاری (HardwarID)
- خدمات ارائه شده توسط دستگاه بهطور مثال هارددیسک (Service provided by device, e.g a hard disk)
- راهانداز/درایور (Driver)
- سایر اطلاعات جانبی
پیوندهای پنهان: چگونه این نوع شبکهها را شناسایی کنیم؟
دانستن این موضوع که کجا و چگونه اطلاعات یک دستگاه یواسبی در سیستمعاملی همچون ویندوز ذخیره میشوند در شناسایی این موضوع که چه کسی دستگاه یواسبی را با فرد دیگری بهاشتراک قرار داده کمک میکند. به این شکل میتوانیم دو گره تشکیل دهنده یک چنین ارتباطی در شبکه را شناسایی کنیم. شبکههای پنهان به واسطه پیوندهای پنهانی که ایجاد میکنند شناسایی میشوند. البته در زمان برقراری ارتباط رویدادهای مختلفی توسط سیستمعامل تولید میشود که روند شناسایی کامپیوترهایی که پیش از برقراری ارتباط به شبکه متصل بودند را سادهتر میکند. در این حالت میدانیم چه کامپیوترها و زیرشبکههایی به واسطه اتصال یواسبی آلوده شدهاند. برای خودکارسازی شناسایی پیوندهای پنهان میتوان از استراتژی نشان داده شده در شکل 4 استفاده کرد.
شکل 4
در شکل چهار، نحوی اجرای اسکریپتی در اکتیودایرکتوری را مشاهده میکنید که چگونه اسکریپت در گره مرکزی اجرا میشود و چگونه مولفههای مختلف سیستمعامل ویندوز جهت اجرای دستورات در هر یک از کامپیوترهای عضو دامنه فراخوانی میشوند. فناوریهایی که در تشخیص پیوندهای پنهان و بهکارگیری اسکریپتها استفاده میشوند به شرح زیر هستند:
• WinRM.
• SMB (Server Message Block).
• WMI.
پاورشل یکی از مولفههای مهم و کلیدی سیستمعامل ویندوز است که یک محیط خط فرمان کارآمد در اختیار مدیران شبکه قرار میدهد. پاورشل فهرست کاملی از دستگاههای یواسبی متصل شده به کامپیوترها را نشان میدهد (شکل 5).
شکل 5
مولفه WinRM
برای آنکه اسکریپتهای ویژه WinRM در پاورشل قابل استفاده باشد باید سرویس Windows Remote Management روی کامپیوترهای تحت شبکه فعال شود. (شکل 6).
شکل 6
مولفه فوق را میتوان روی یک شبکه تک دامنه با اکتیودایرکتوری آزمایش کرد تا به شکل خودکار تا حدی که امکان دارد اطلاعات موردنیاز را جمعآوری کند. در این حالت اعتبارنامه مدیریتی دامنه برای تایید اجرای اسکریپتها روی کامپیوترها در شبکه محلی استفاده میشود. به وجود اعتبارنامهها زمانی نیاز است که قرار است اسکریپتی اجرا میشود (شکل 7).
شکل 7
اولین اسکریپتی که در این زمینه اجرا میشود LaunchUSBHiddenNetworks.ps1 نام دارد که برای اتصال کامپیوترهای راه دور به یکدیگر اسکریپت دیگری بهنام RecollectUSB.ps1 را فراخوانی میکند که برای جمعآوری اطلاعات مرتبط با دستگاههای یواسبی استفاده میشود. دقت کنید اسکریپت فوق باید به شکل جداگانه روی هر یک از کامپیوترهای تحت شبکه اجرا شود.
اسکریپت LaunchUSBHiddenNetworks
اسکریپت فوق از طریق فرمان Invoke-Command در پاورشل اجرا میشود. فرمان فوق اجازه میدهد به کامپیوتری عضو یک دامنه مطلق (FQDN) بر مبنای نام کامپیوتر یا آدرس آیپی متصل شده و اسکریپتهای موردنظر را روی آن اجرا کرد.
$salida=invoke-command -ComputerName (Get-Content servers.txt) -FilePath
'PathToScript\RecollectUSBData.ps1'-Credential testdomain\administrador
پارامتر ComputerName به نام کامپیوترهای ثبت شده در اکتیودایرکتوری که قرار است بررسی شوند اشاره دارد. این امکان وجود دارد که نام کامپیوترها با کاما از یکدیگر جدا شوند، اما در مثال بالا از یک فایل متنی بهنام server.txt استفاده شده که شامل فهرست کامپیوترهایی است که قرار است بررسی شوند.
پارامتر FilePath مسیر اسکریپت پاورشل که برای جمعآوری دادهها استفاده میشود را مشخص میکند. در انتها پارامتر Credential اجازه بهکارگیری مجوز سرپرست دامنه برای اجرای اسکریپت از راه دور را میدهد. در مثال فوق دامنهtestdomain و نام کاربری administrator نام دارد.
نتیجه اجرای اسکریپت در موجودیتی بهنام $salida ذخیره میشود. اطلاعاتی که با روش فوق بازیابی میشوند درون فایلی با فرمت CVS بهنام USBDATA.cvs ذخیره میشوند. در فایل فوق، شناسه، نام دستگاه یواسابی، آدرس آیپی و نام کامپیوتر قرار میگیرد. بر مبنای اطلاعات بهدست آمده به روش فوق میتوان گرافی در ارتباط با وضعیت شبکه مشابه با آن چیزی که در شکل 8 مشاهده میکنید ترسیم کرد.
شکل 8
اسکریپت RecollectUSBData
اسکریپت فوق برای جمعآوری اطلاعاتی در ارتباط با دستگاههای یواسبی متصل به کامپیوترها و عمدتا با هدف حسابرسی کامپیوترهای محلی استفاده میشود. اسکریپت فوق اطلاعات درون موجودیتهای رجیستری ویندوز را بازیابی کرده و در قالب گزارشی در اختیار مدیر شبکه قرار میدهد.
$USBDevices = @()
$USBContainerID = @()
$USBComputerName = @()
$USBComputerIP = @()
$SubKeys2 = @()
$USBSTORSubKeys1 = @()
مکانی در رجیستری که اطلاعات مربوط به کامپیوترهای تحت بررسی در آن ذخیره میشود و مکانی که اطلاعات مربوط به دستگاههای یواسبی متصل به کامپیوتر در آن ذخیره میشود به شرح زیر است.
$Hive = "LocalMachine"
$Key = "SYSTEM\CurrentControlSet\Enum\USBSTOR"
$Hive و $Key شامل مسیر کامل شاخه رجیستری هستند که دادههای دستگاههای یواسبی را نگهداری میکنند. متغیر $Hive با مقدار LocalMachine که معادل HKLM یا HKEY_LOCAL_MACHINE است پر میشود.
$ComputerName = $Env:COMPUTERNAME
$ComputerIP = $localIpAddress=((ipconfig | findstr [0-9].\.)[0]).Split()[-1]
نام کامپیوتر محلی و آدرس آیپی به ترتیب در متغیرهای $ComputerName و $ComputerID قرار میگیرند.
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($Hive,$Computer)
$USBSTORKey = $Reg.OpenSubKey($Key)
$nop=$false
$Reg، یک محاوره رجیستری است که با فراخوانی OpenRemoteBaseKey اجرا شده و متغیرهای $Hive و $Computer را به عنوان پارامتر شاخه دریافت میکند. متغیر $nop برای کنترل جریان اجرا استفاده میشود.
Try {
$USBSTORSubKeys1 = $USBSTORKey.GetSubKeyNames()
}
Catch
{
Write-Host "Computer: ",$ComputerName -foregroundcolor "white" -backgroundcolor
"red"
Write-Host "No USB data found"
$nop=$true
}
بلوک Try-Catch اگر اطلاعاتی در ارتباط با دستگاههای یواسبی دریافت نکند پیغام مشخصی را تولید میکند. اگر اطلاعاتی پیدا نشد، مقدار $true برای عدم اجرای دستورات بعدی به متغیر @nop تخصیص داده میشود.
if(-Not $nop)
اگر ورودی مرتبط با اتصال دستگاههای یواسبی پیدا شود، مقدار متغیر $nop برابر با $true شده و قطعه کد زیر اجرا میشود:
ForEach($SubKey1 in $USBSTORSubKeys1)
{
$Key2 = "SYSTEM\CurrentControlSet\Enum\USBSTOR\$SubKey1"
$RegSubKey2 = $Reg.OpenSubKey($Key2)
$SubkeyName2 = $RegSubKey2.GetSubKeyNames()
$Subkeys2 += "$Key2\$SubKeyName2"
$RegSubKey2.Close()
}
فهرست یک
هر یک از موجودیتهای رجیستری که جستوجویی در ارتباط با آنها انجام میشود به یک دستگاه یواسبی اشاره دارند. همچنین دقت کنید که هر عنصر شناسایی شده در matrix@Subkeys2 ذخیره میشود.
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()
}
فهرست دو
فهرست 2 هر دستگاه یواسبی شناسایی شده در فهرست 1 را بررسی و درون Matrix@Subkeys2 ذخیره میکند. برای هم آیتمی که مقداری در$USBDevice دارد، شناسه دستگاه (USBContainerID)، نام و آدرس آیپی کامپیوتر بازیابی و در فایل CVS قرار میگیرد. فهرست 3 اطلاعاتی که از کامپیوتر راه دور جمعآوری شده را نشان میدهد.
for ($i=0; $i -lt $USBDevices.length; $i++) {
$IDUnico=$USBDevices[$i] | Select -ExpandProperty "USBContainerID"
$USBNombre=$USBDevices[$i] | Select -ExpandProperty "USBDevice"
Write-Host "Computer: ",$ComputerName -foregroundcolor "black" -backgroundcolor
"green"
Write-Host "IP: ",$ComputerIP
Write-Host "USB found: ",$USBNombre
Write-Host "USB ID: ",$IDUnico
Echo "$ComputerName,$ComputerIP,$USBNombre,$IDUnico"
}
فهرست سه
دستور write-host روی سرور اجرا میشود و فرمان Echo برای نوشتن اطلاعات در فایل CVS استفاده میشود (شکل 9).
شکل 9
کلام آخر
تهدیداتی خطرناکتر از نشتی اطلاعات همچون شبکههای پنهان ممکن است در کمین کسبوکارها باشند. دستگاههای یواسبی ممکن است در یک چشم برهم زدنی بدافزارها را به زیرساختها وارد کنند، حتا زیرساختهایی که از وجود قدرتمندترین مکانیزمهای امنیتی بهره میبرند. قطع ارتباط شبکههای داخلی از اینترنت، احساس ایمنی کاذبی به وجود میآورد که شبکه در برابر تهدیدات رایج مصون است. این نگرش اشتباه مانع از آن میشود تا کارشناسان امنیتی در جستجوی آسیبپذیریهای مستتر در سامانهها باشند. آلودگی از طریق نرمافزارهای مخرب یا حافظههای فلش یکی از رایجترین اشکال حمله به زیرساختهای یک سازمان بزرگ است. یک چنین آلودگیهایی باعث نشتی اطلاعات میشود، بنابراین، بهتر است قبل از آنکه به فکر جمعآوری مدارک در ارتباط با یک حمله باشید، از راهکارهای پیشگیرانه استفاده کنید. ما در این مقاله راهکار ساده شناسایی شبکههای پنهان را معرفی کردیم. برای اطلاع در مورد سایر تکنیکها به آدرس انتهای مطلب مراجعه کنید.
https://www.elevenpaths.com/wp-content/uploads/2017/07/hidden_network_en.pdf
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟