بات نت (botnet) چیست؟

نوشته شده توسط در آموزشی

بات‌نت‌ها شبکه‌هایی هستند که با در اختیار گرفتن مجموعه‌ای از کامپیوترها که بات(bot) نامیده می‌شوند، تشکیل می‌شوند. این شبکه‌ها توسط یک و یا چند مهاجم که botmasters نامیده می‌شوند، با هدف انجام فعالیت‌های مخرب کنترل می‌گردند. به عبارت بهتر هکر ها – اتکر ها با انتشار ویروس ها و برنامه های مخرب به صورت غیر قانونی و بدون اطلاع صاحب کامپیوتر  کنترل آن را در دست میگیرند و با استفاده از مجموعه ای از این کامپیوتر ها درخواست های جعلی زیادی را به سمت سرور یا سایت قربانی ارسال می کنند که به انجام یک حمله DDoS منجر می شود.

از نظر تاریخی بات‌نت‌ها از (Internet Relay Chat (IRC که یک سیستم گفت و گوی مبتنی بر متن است و ارتباطات را در کانال‌ها سازماندهی می‌کرد، سرچشمه می‌گیرد. در این سیستم از بات‌نت‌ها با هدف کنترل فعل و انفعالات در اتاق‌های گفت و گوی IRC استفاده می‌شد. این ربات‌ها می‌توانستند دستورات ساده را اجرا کنند، بازی‌های ساده و سرویس‌های مختلف را به کاربران گفت و گو پیشنهاد دهند و اطلاعاتی در مورد سیستم عامل‌ها، گزارش‌های ورود به سیستم، آدرس‌های ایمیل و مانند آن‌ها را استخراج نمایند. اولین ربات IRC، به اسم Eggdrop در سال ۱۹۹۳ ارائه شد و پس از آن توسعه یافت. پس از آن ربات‌های IRC مختلفی با اهداف مخرب اعم از حمله به کاربران IRC و یا همهٔ سرورها، ایجاد شدند. ربات‌های جدید از مکانیزم‌های پیچیده‌ای برای ارتباط با botmaster استفاده می‌کنند که این مکانیزم‌ها از پروتکل‌ها و تکنیک‌های متعددی استفاده می‌کنند که منجر به پیچیده شدن روزافزون این ربات‌ها و سخت تر شدن تشخیص و مقابله با آن‌ها می‌گردد. آن‌ها می‌توانند مانند کرم‌ها منتشر شوند، مثل یک ویروس مخفی بمانند و حملات گسترده و سازمان یافته‌ای را شکل دهند. نسل جاری ربات‌ها می‌توانند از طریق شبکه‌های اشتراک فایل، شبکه‌های نظیر به نظیر (p2p) و پیوست‌های ایمیل و سایت‌های آلوده منتشر شوند.

اجزای یک بات‌نت

Bot

یک برنامهٔ نرم‌افزاری (بدافزار) است که بر روی یک میزبان آسیب پذیر نصب می‌شود. این نرم‌افزار می‌تواند به روش‌های مختلف بر روی کامپیوتر میزبان نصب شود که از جملهٔ آن‌ها می‌توان به مشاهدهٔ یک وب سایت آلوده اشاره نمود. ربات‌ها اغلب به نحوی پیکر بندی می‌شوند که هر بار که کامپیوتر قربانی روشن شود، ربات نیز فعال گردد.

Command and Control Infrastructure(C&C

اقداماتی که ربات‌ها انجام می‌دهند بر اساس فرمان‌هایی هستند که توسط botmaster و از طریق یک کانال کنترلی ارسال می‌شوند. ربات‌ها آسیب پذیری‌های سیستم‌های عامل و یا برنامه‌های کاربردی نیستند؛ بلکه برنامه‌هایی هستند که برای نصب کردن backdoorهایی بر روی ماشین قربانی مورد استفاده قرار می‌گیرند. چیزی که ربات‌ها را از سایر بدافزارها متمایز می‌کند، کانال فرمان و کنترل است.

Botnet

یک بات‌نت، مجموعه‌ای از ربات هاست که به یک کانال کنترل و فرمان متصل شده‌اند. به عبارت بهتر شبکه‌ای از ربات‌ها که منتظر دریافت دستوری برای انجام فعالیت‌های مخرب هستند.

Botmaster or Botherder

کاربران مخربی هستند که با ارسال فرمان‌هایی برای انجام فعالیت‌های مخرب، ربات‌ها را کنترل می‌کنند. این کاربران اهداف مختلفی را دنبال می‌کنند.

Vulnerable Hosts

بات‌نت‌ها ماشین‌هایی در اینترنت هستند که توسط نرم‌افزار مخربی که توسط botmaster منتشر شده است، آلوده گردیده‌اند. این ماشین‌ها بعد از آلوده شدن تبدیل به “zombies” و یا “slaves” می‌شوند و می‌توانند اهداف مخرب مختلفی را دنبال کنند.

مهم ترین جزء یک بات‌نت زیربنای C&C است که شامل ربات‌ها و یک واحد کنترل است که می‌تواند به صورت متمرکز و یا غیر متمرکز باشد. Botmasterها از پروتکل‌های ارتباطی مختلفی برای برقراری ارتباط با slaveها و ارسال دستورات به آن‌ها استفاده می‌کنند. با توجه به این که کانال C&C عموما به عنوان تنها راه کنترل ربات‌ها محسوب می‌شود و کارایی بات‌نت وابسته به ارتباط پایدار با این کانال می‌باشد، معماری آن می‌تواند تعیین کنندهٔ میزان مقاومت (robustness)، پایداری (stability) و زمان واکنش (reaction time) آن باشد. در حالت کلی ربات‌ها به دو دستهٔ متمرکز و غیر متمرکز تقسیم می‌شوند.

طرح‌های معماری

می‌توان کانال فرمان و کنترل را بر اساس معماری خاص و مدهای عملکردی آن به چند گروه تقسیم نمود:

C&C متمرکز

دیدگاه متمرکز مشابه با مدل شبکهٔ کلاسیک کلاینت- سرور است. در این معماری، همهٔ ربات‌ها ارتباط خود را با یک یا چند نقطهٔ ارتباطی ایجاد می‌نمایند که این نقاط عمدتا سرورهای C&C هستند. مزیت این روش زمان سریع واکنش و سازماندهی خوب آن است. مشکل اصلی این روش آن است که سرور C&C می‌تواند به عنوان نقطهٔ شکست شبکهٔ رباتی باشد. یعنی در صورتی که یک شبکهٔ رباتی کشف شود به راحتی می‌توان با قطع کردن ارتباط همهٔ ربات‌های آن شبکه با این سرور، کل آن را از کار انداخت. پروتکل‌های اصلی مورد استفاده در این معماری، Internet Relay Chat (IRC) و HyperText Transfer Protocol (HTTP) می‌باشند. مزیت‌های استفاده از پروتکل IRC عبارتند از:

امکان برقراری ارتباط multicast و هم چنین ارتباط unicast خصوصی بین دو عضو مشخص که در نتیجه امکان مدیریت سریع و راحت شبکهٔ رباتی را برای botmaster فراهم می‌کند.
چندین پیاده‌سازی باز از این پروتکل وجود دارد که botmaster به راحتی می‌تواند از آن‌ها برای اهداف مختلف خود استفاده نماید.
ویژگی‌هایی مثل افزونگی (redundancy)، مقیاس پذیری (scalabilit) و قابلیت تغییر (versatility) که امکان استفادهٔ مجدد از کدها را برای ربات‌ها و هم چنین ایجاد ربات‌های جدید فراهم می‌نماید.

محدودیت‌های استفاده از پروتکل IRC عبارتند از:

با توجه به این که ترافیک IRC در شبکه‌ها به ندرت استفاده می‌شود، تشخیص دادن و بلاک کردن ترافیک ربات‌هایی که از این پروتکل استفاده می‌کنند به سادگی امکان‌پذیر است. برای حل این مشکل مدیران شبکه‌های رباتی از پروتکل HTTP که رایج بوده و در اکثر شبکه‌ها مجاز محسوب می‌شود، استفاده می‌کنند.

C&C غیر متمرکز

شبکه‌های رباتی که از این معماری استفاده می‌کنند دارای انعطاف‌پذیری بالاتر و هم چنین مقاومت بیش تر بوده و امکان مدیریت کردن تعداد زیادی از ربات‌ها را دارا می‌باشند. تشخیص دادن و منحل کردن شبکه‌های رباتی که از این معماری استفاده می‌نمایند کار دشوارتری است؛ چرا که کشف کردن چندین ربات (حتی تعداد زیادی از آن‌ها) الزاما به معنای از دست رفتن کامل شبکهٔ رباتی نیست چون در این معماری یک سرور مرکزی C&C وجود ندارد که بتوان با غیر فعال نمودن آن کل شبکه را از کار انداخت. این شبکه‌های رباتی غیر متمرکز مبتنی بر انواع مختلف پروتکل‌های P2P هستند و به عنوان یک شبکهٔ overlay کار می‌کنند. این شبکه‌ها را می‌توان به گروه‌های زیر تقسیم نمود:

Unstructured P2P overlays

کلاس گستردهٔ overlayهای بدون ساختار، شامل توپولوژی‌های تصادفی با درجه‌های مختلف توزیع، مانند power-law و یا شبکه‌های یکنواخت تصادفی می‌باشد. در این شبکه‌ها امکان مسیر یابی وجود ندارد. این شبکه‌ها flooding و random walk و هم چنین پروتکل‌های Gossip را نیز پشتیبانی می‌کنند.

Structured P2P Overlays

در این شبکه‌ها نگاشت (mapping) بین محتوا و مکان آن انجام می‌شود. در این گونه از شبکه‌ها از یک Distributed Hash Table (DHT) برای مسیر یابی استفاده می‌شود. از جمله الگوریتم‌های DHT که تا کنون پیاده‌سازی شده‌اند و در شبکه‌های P2P از آن‌ها استفاده شده است می‌توان به CAN، Chord Pastry، Tapestry و Kademila اشاره کرد. شبکه‌های رباتی مدرن از الگوریتم Kademila استفاده می‌کنند.

Superpeer overlays

در این شبکه‌ها همهٔ گره‌ها برابر نیستند و زیر مجموعهٔ کوچکی از آن‌ها به صورت اتوماتیک به عنوان سرورهای موقتی انتخاب می‌شوند. با توجه به این که این مدل آسیب پذیری بیش تری دارد ربات‌ها با احتمال کم تری از این مدل استفاده می‌کنند. ربات‌هایی که به این گروه تعلق دارند معمولا یک IP ی معتبر دارند و تحت دیوار آتش و یا DHCP نمی‌باشند.

ساخت یک شبکهٔ رباتی P2P دارای دو مرحله است:

انتخاب peerها: که به یکی از ۳ روش زیر انجام می‌شود:
Parasite: در این شبکهٔ رباتی، ربات‌ها از میان میزبانان اسیب پذیر موجود در یک شبکهٔ P2P موجود انتخاب می‌شوند. در این روش تعداد ربات‌های تحت امر یک botmaster محدود به تعداد میزبانان آسیب پذیر شبکهٔ P2P موجود است.
Leeching: در این روش ربات‌ها به یک شبکهٔ P2P موجود می‌پیوندند و برای ارتباطات C&C خود متکی به آن هستند.
Bot-only: در این روش یک شبکهٔ رباتی، شبکهٔ P2P خودش را می‌سازد که همهٔ اعضای آن ربات هستند.
انجام عملیات مورد نیاز برای تبدیل میزبانان انتخاب شده به اعضای یک شبکهٔ رباتی
C&C ترکیبی

معماری ترکیبی مشخصه‌های شبکه‌های رباتی متمرکز و غیر متمرکز را در کنار هم مورد استفاده قرار می‌دهد. ربات‌هایی که متعلق به یک شبکهٔ رباتی P2P ترکیبی هستند، به دو گروه تقسیم می‌شوند:

ربات‌های سرویس دهنده (Servant Bots)

این ربات‌ها هم به عنوان مشتری و هم سرور عمل می‌کنند. این ربات‌ها با آدرس هایIP ی ایستا و قابل مسیر یابی پیکربندی می‌شوند.

ربات‌های مشتری (Client Bots)

این ربات‌ها هیچ ارتباط ورودی را نمی‌پذیرند و با آدرس‌های IPی پویای مشخص شده و یا با آدرس‌های غیرقابل مسیریابی پیکر بندی شده‌اند. آن‌ها هم چنین می‌توانند بدون ارتباط با اینترنت پشت دیوارهای آتش قرار بگیرند. در این روش ادرس‌های IPی ربات‌های servant در اختیار همهٔ ربات‌های client قرار می‌گیرد. ربات‌های servant بر روی یک پورت مشخص گوش می‌کنند و برای ارتباطات خود از یک کلید رمزنگاری متقارن که خودشان تولید می‌کنند، استفاده می‌نمایند. همهٔ ربات‌ها بایستی به صورت دوره‌ای به ربات‌های موجود در لیست خود متصل شوند و دستورات ارسال شده توسط botmaster را دریافت نموده و آن‌ها را اجرا کنند. در صورتی که یک ربات دستوری را دریافت کند که قبلا ندیده است (!) آن را به سرعت برای همهٔ ربات‌های servant موجود در لیست خود می‌فرستد.

C&C تصادفی

این روش تا به امروز در هیچ رباتی مورد استفاده قرار نگرفته است. در این روش هیچ‌کدام از ربات‌ها با یکدیگر و یا با botmaster ارتباط برقرار نمی‌کنند و منتظر می‌مانند تا وی با آنان ارتباط برقرار نماید. برای انجام یک حمله، botmaster شبکه را برای یافتن zombieها جست و جو می‌کند و دستورات خود را به آن‌ها می‌فرستد. مزیت این روش آن است که پیاده‌سازی آن ساده است و با توجه به نبودن ارتباط رایج بین ربات و botmaster تشخیص دادن آن دشوارتر خواهد بود. با توجه به این که این روش نیازمند اسکن کردن شبکه است، مسائلی در مورد مقیاس پذیری و مشکلات هماهنگ سازی حمله مطرح می‌گردند.