برای بسیاری ممکن است این مساله ساده پیش بیایید که در محیط مجازی vSphere یک ماشین مجازی شروع به sniff کردن پکت های سایر ماشین ها نماید. چیز عجیبی نیست و مساله ای بود که ناخواسته چند روز قبل در دیتاسنتر توسط کارفرما مطرح شد و نکات جالبی نیز بدنبال داشت.

اگر بخواهیم در مورد راه جلوگیری از استراق سمع و شنود ترافیک ها صحبت کنیم می توانیم به گزینه promiscuous mode روی سوییچ های مجازی اشاره کنیم که در مقاله دیگری توضیح داده ام . اما فرض کنید که شما در شرایطی مجبور هستید این گزینه را برای عملکرد خاصی Accept قرار دهید. بهتر است بگویم چه عملکردی؟ بطور مثال ماشین های مرکز کال سنتر میخواهند یک نسخه از ترافیک صوتی یک ماشین دیگر را ضبط نمایند و در این شرایط ادمین آن ماشین از شما می خواهد تا امکان انالیز و sniff ترافیک های ماشین دیگرش را فراهم نمایید.( این یک مثال واقعی است) 

بحث اصلی در این مقاله روش شناسایی و تشخیص ماشین های مجازی است که در محیط مجازی شروع به اسنیف کردن و شنود ترافیک سایر ماشین ها کرده اند و شما بایستی به عنوان ادمین بستر مجازی قادر به شناسایی این VM ها باشید. شاید واحد امنیت یکباره از شما کمک هایی در این زمینه بخواهد و نباید دست تان خالی باشد!

ابتدا لازم است تا از فایل لاگی که ثبت فعالیت های مرتبط را نگهداری می کند مطلع باشید. بایستی لاگهای vmkernel را از مسیر زیر یافته و با ادیتوری ویرایش کنید

/var/log/vmkernel    or    /var/log/messages

  این پیام را جستجو کنید

cpuN:nnnn)etherswitch: L2Sec_EnforcePortCompliance: 0xnnnnnnnn: peer not allowed promiscuous, revoking setting
این پیام ها از سمت ESXi vmkernel نشان می دهد که یک ماشین مجازی در حال ضبط تمام ترافیک شبکه روی یک پورت گروپ یا سوییچ مجازی است. پس لازم است تا کمی جدی تر بتوانید ماشینی که در حال اسنیف کردن یا اجرای نرم افزارهای ناخواسته است را شناسایی و موقعیت یابی کنید. در ادامه مقاله روشهایی برای شناسایی یک ماشین مجازی در حال capture کردن ترافیک های شبکه روی سوییچ های مجازی ارائه شده است. بایستی بدانید که پیام های log file قادر به تشخیص کارت شبکه مجازی خاصی روی یک هاست esxi از طریق PortID هستند. این شناسه در برنامه vSphere client نمایش داده نمی شود، ولی آن می تواند به یک ماشین مجازی وابسته باشد

جهت شناسایی اینکه چه ماشین مجازی در حال وارد شدن به مد promiscuous می باشد، بایستی Port ID های هگزادسیمال ثبت شده را به مبنای ده دهی تبدیل کنید و ماشین مجازی که از این Port ID استفاده می کند را تعیین نمایید.

از پیام های vmkernel.log لازم است تا Port identifier و World number ماشین مجازی تان را شناسایی کنید. مثلا:

cpuN:12345)etherswitch: L2Sec_EnforcePortCompliance: 0x5000003: peer not allowed promiscuous, revoking setting

در مثال فوق 12345 همان world number و عدد هگزادسیمال 0x5000003 نیز بعنوان port identifier محسوب می شود.

در گام بعدی پورت نامبر هگزادسیمال را به ده دهی تبدیل کنید. مثلا مبنای ده دهی عدد فوق 83886083 است.

حال وقت آن رسیده تا با داشتن پورت نامبر ده دهی با یکی از متدهای زیر آنرا به یک ماشین مجازی نگاشت کنید:

  • شناسایی یک ماشین مجازی با port identifier با استفاده از PowerCLI

خط فرمان powerCLI را اجرا کنید و به هاست فیزیکی ESXi که لاگ های آنرا بررسی کرده اید متصل شوید.

Connect-VIServer -Server <ESX Host name Or IP Address>

بعد از وارد شدن با حساب کاربری root می توانید عملیات واکشی شمارشگرهای عملکرد هاست را با esxtop مورد بررسی قرار دهید.

Get-ESXTOP  -CounterName  NetPort  | select  PortID,WorldLeader,ClientName  |  Where { $_.PortID -eq “83886082” } | ft -AutoSize

خروجی شبیه مورد زیر نمایش داده خواهد شد
PortID      WorldLeader       ClientName
——        ———–           ———-
83886082   12344               Virtual Machine Name

نام ماشین مجازی و world number آن قابل دسترس می باشد. حال می توانید ماشین مجازی موردنظر را در vSphere Client یافته و آنرا مورد جستجو و کنکاش قرار دهید.

  • شناسایی یک ماشین مجازی با port identifier با استفاده از resxtop

خط فرمان remote resxtop یک ابزار مانیتورینگ و مشاهده کارآیی و عملکرد سیستم می باشد که در vSphere CLI برای ماشین های لینوکسی ارائه شده است.

خط فرمان vCLI را اجرا کنید

یک متغیر شامل port identifier با استفاده از یک فرمان مشابه زیر تعیین کنید.

PORTID=”83886082″

سپس فرمان زیر را اجرا کنید

resxtop –server <ESXHostnameOrIPAddress> –username <Username> -n 1 -b | tr ‘,’ ‘\n’ | grep -o “Network Port(.*:$PORTID:.*)” | sort -u

بایستی خروجی مشابه زیر را مشاهده کنید

Network Port (vSwitchName:83886082:12344:Virtual Machine Name)

مشابه روش قبلی نام و پورت نامبر ماشین مجازی شناسایی و نمایش داده شد. کافیست ماشین مجازی را یافته و آنرا دقیق تر بررسی کنید.

  • شناسایی یک ماشین مجازی با port identifier با استفاده از esxtop

با حساب کاربری root و از طریق putty به هاست فیزیکی تان متصل شوید. یک متغیر بصورت زیر و در مبنای ده دهی تعیین کنید

PORTID=”83886082″

دستور زیر را اجرا کنید

esxtop -n 1 -b | tr ‘,’ ‘\n’ | grep -o ‘Network Port(.*:$PORTID:.*) ‘ | sort -u

بایستی خروجی مشابه زیر را ببینید که بر اساس آن نام ماشین مجازی قابل تشخیص می باشد.

Network Port(vSwitchName:83886082:12344:Virtual Machine Name)

  • شناسایی یک ماشین مجازی با port identifier با استفاده از esxcfg-info

ابتدا لازم است با putty به هاست فیزیکی تان متصل و از دستور esxcfg جهت جستجو و کسب اطلاعات استفاده کنید. در گام اول دستور زیر را اجرا کنید

esxcfg-info –network | grep -A 3 “Port Id.*83886082”

خروجی مشابه زیر را مشاهده می کنید.

|—-Port Id……….83886082
|—-World Leader…..12344
|—-Client Name……Virtual Machine Name

به وضوح نام ماشین مجازی و سایر اطلاعات قابل تشخیص می باشد. می توانید با کنکاش بیشتری ماشین موردنظر را آنالیز نمایید
امیدوارم با نحوه شناسایی و تشخیص ماشین مجازی که در حال اسنیف کردن می باشد آشنا شده باشید.

منبع 1 / 2

Comments are closed.

حامیان