در دنیای شبکه و امنیت، قطعا نام حالت Promiscuous به گوشتان خورده است. این حالتی است که در برخی عملیات مربوط به شبکه روشن میشود. عموما در بحث Sniffing بستههای شبکه و یا Intercept کردن آنها این حالت کاربرد دارد. اما این حالت چیست و چه کاربردی دارد؟
در این نوشته کوتاه میخواهیم حالت Promiscuous را به طور مختصر شرح دهیم.
حالت Promiscuous
وقتی قصد داریم یک دستگاه را به شبکهای متصل کنیم، این کار را از طریق کارت شبکه آن انجام میدهیم. یعنی کارت شبکه آن را به شبکه مدنظر وصل میکنیم. این دستگاه میتواند یک روتر و یا یک کامپیوتر و یا یک لپتاپ باشد.
در حالت عادی پس از اتصال کارت شبکه به شبکه، وقتی یک بسته (Packet) به کارت شبکه میرسد، کارت شبکه قسمت مربوط به Physical Address را مشاهده میکند. اگر در فیلد مذکور، Mac Address خودش را مشادهده کند، بسته را به لایههای بالاتر پروتکل اِستَک (یا همان پشته پروتکلی) TCP/IP ارسال میکند.
در غیر این صورت، یعنی در حالتی که Mac Address موجود در بسته متعلق به خودش نباشد، آن را به لایههای بالاتر پروتکل استک TCP/IP ارسال نمیکند.
رفتاری که تشریح کردیم، در حالت عادی و استفاده روزمره از شبکههای کامپیوتری طبیعی و منطقی است.
اما در بسیاری از موارد نیاز است که تمام بستههای موجود در شبکه را دریافت کنیم نه فقط آنهایی که مربوط به سیستم ما میشود. منظور از دریافت بستهها این است که حتی بستههایی هم که Mac Address آنها متعلق به ما نیست را به پروتکل استک TCP/IP ارسال کنیم و جزییات آن را بررسی کنیم.
یکی از مواردی که نیاز به دریافت تمام بستهها داریم، وقتی است که به عنوان یک ادمین شبکه میخواهیم ترافیک موجود در شبکه را مانیتور کنیم. یا مثلا به عنوان یک متخصص تست نفوذ میخواهیم بخشی از ترافیک را استراق سمع و آنالیز کنیم.
دراین حالت، باید تمام بستهها فارغ از اینکه Mac Addressشان به چه سیستمی اشاره میکند، باید توسط کارت شبکه دریافت شوند و به لایههای بالاتر پروتکل استک ارسال شوند.
پس متوجه شدیم که قابلیت Promiscuous در اصل متعلق به کارت شبکه است که با روشن کردن آن تمامی بستهها به لایههای بالاتر TCP/IP ارسال میشود.
روشن کردن حالت Promiscuous در کارت شبکه وایرلس در لینوکس
فرض کنید از سیستمعامل لینوکس استفاده میکنید و میخواهید حالت Promiscuous را در کارت شبکه خود فعال کنید. برای این کار ابتدا باید مطمئن شویم که کارت شبکه وایرلس توسط سیستم تشخیص داده شده است. یک ترمینال باز میکنیم و دستور زیر را وارد میکنیم:
sudo iw dev
اگر هیچ خروجی چاپ نشد، یعنی کارت شبکه تشخیص داده نشده است.
بعد از اینکه مطمئن شدیم کارت شبکه تشخیص داده شده است، ابتدا آن را بوسیله دستور زیر غیرفعال میکنیم: (wlan0 نام کارت شبکه است که بوسیله دستور ifconfig قابل مشاهده است)
sudo ip link set wlan0 down
سپس حالت مانیتور (که همان حالت Promiscuous) هست را فعال میکنیم:
sudo iw wlan0 set monitor none
و بعد از آن دوباره کارت شبکه را فعال میکنیم:
sudo ip link set wlan0 up
روشن کردن حالت Promiscuous در لینوکس
بهطور کلی نیز میتوانید به وسیله دستور زیر کارت شبکه خود را به حالت Promiscuous ببریم:
ip link set eth1 promisc on
که در این دستور eth1 را باید به نام کارت شبکه خود تغییر دهید.