بات‌نت
بات‌نت‌ها شبکه‌هایی هستند که با در اختیار گرفتن مجموعه‌ای از کامپیوترها که بات(bot) نامیده می‌شوند، تشکیل می‌شوند. این شبکه‌ها توسط یک یا چند مهاجم که botmasters نامیده می‌شوند، با هدف انجام فعالیت‌های مخرب کنترل می‌گردند. به عبارت بهتر، ربات‌ها کدهای مخربی هستند که بر روی کامپیوترهای میزبان اجرا می‌شوند تا امکان کنترل نمودن آن‌ها از راه دور را برای botmasterها فراهم نمایند و آن‌ها بتوانند این مجموعه را وادار به انجام فعالیت‌های مختلف نمایند.
از نظر تاریخی بات‌نت‌ها از (Internet Relay Chat (IRC که یک سیستم گفتگوی مبتنی بر متن است و ارتباطات را در کانال‌ها سازماندهی می‌کرد، سرچشمه می‌گیرد. در این سیستم از بات‌نت‌ها با هدف کنترل فعل و انفعالات در اتاق‌های گفتگوی IRC استفاده می‌شد. این ربات‌ها می‌توانستند دستورها ساده را اجرا کنند، بازی‌های ساده و سرویس‌های مختلف را به کاربران گفتگو پیشنهاد دهند و اطلاعاتی در مورد سیستم عامل‌ها، گزارش‌های ورود به سیستم، آدرس‌های ایمیل و مانند آن‌ها را استخراج نمایند. اولین ربات IRC، به اسم Eggdrop، در سال ۱۹۹۳ ارائه شد و پس از آن توسعه یافت. پس از آن ربات‌های IRC مختلفی با اهداف مخرب، اعم از حمله به کاربران IRC یا همهٔ سرورها، ایجاد شدند. ربات‌های جدید از مکانیزم‌های پیچیده‌ای برای ارتباط با botmaster استفاده می‌کنند که این مکانیزم‌ها از پروتکل‌ها و تکنیک‌های متعددی استفاده می‌کنند که منجر به پیچیده شدن روزافزون این ربات‌ها و سخت‌تر شدن تشخیص و مقابله با آن‌ها می‌گردد. آن‌ها می‌توانند مانند کرم‌ها منتشر شوند، مثل یک ویروس مخفی بمانند و حملات گسترده و سازمان یافته‌ای را شکل دهند. نسل جاری ربات‌ها می‌توانند از طریق شبکه‌های اشتراک فایل، شبکه‌های نظیر به نظیر (p2p) و پیوست‌های ایمیل و سایت‌های آلوده منتشر شوند.
کامپیوترها در یک بات نت وقتی که یک نرم‌افزار مخرب را اجرا می‌کنند، می‌توانند مشترک تصمیم بگیرند. آن‌ها با فریب دادن کاربران نسبت به ایجاد یک درایو با استفاده از دانلود کردن، بهره‌برداری از آسیب‌پذیری‌های web browser، یا از طریق فریب کاربران برای اجرای یک اسب تروجان که ممکن است از ضمیمه یک فایل بیاید، می‌توانند این کار را انجام دهند. این بدافزار به‌طور معمول ماژول‌ها را نصب خواهد کرد که باعث می‌شود کامپیوتر توسط اپراتور بات نت فرمان دهی و کنترل شود. یک تروجان بسته به چگونگی نوشته شدن آن، ممکن است خودش را حذف کند یا برای بروزرسانی و حفظ ماژول‌ها باقی بماند.
بات‌نت‌ها می‌توانند فعالیت‌های مخربی از جمله spamming، انجام حملات DDoS، توزیع بدافزارها (مثل Trojan horses، ابزارهای جاسوسی و )، به سرقت بردن نرم‌افزارها، کشف و سرقت اطلاعات، سرقت هویت، دستکاری بازی‌های آنلاین و نظر سنجی‌ها، حملات و کشف کامپیوترهای آسیب‌پذیر را انجام دهند.
یک برنامهٔ نرم‌افزاری (بدافزار) است که بر روی یک میزبان آسیب‌پذیر نصب می‌شود. این نرم‌افزار می‌تواند به روش‌های مختلف بر روی کامپیوتر میزبان نصب شود که از جملهٔ آن‌ها می‌توان به مشاهدهٔ یک وب‌سایت آلوده اشاره نمود. ربات‌ها اغلب به نحوی پیکربندی می‌شوند که هر بار که کامپیوتر قربانی روشن شود، ربات نیز فعال گردد. اقداماتی که ربات‌ها انجام می‌دهند بر اساس فرمان‌هایی هستند که توسط botmaster و از طریق یک کانال کنترلی ارسال می‌شوند. ربات‌ها، آسیب‌پذیری‌های سیستم‌های عامل یا برنامه‌های کاربردی نیستند؛ بلکه برنامه‌هایی هستند که برای نصب کردن backdoorهایی بر روی ماشین قربانی مورد استفاده قرار می‌گیرند. چیزی که ربات‌ها را از سایر بدافزارها متمایز می‌کند، کانال فرمان و کنترل است. یک بات‌نت، مجموعه‌ای از ربات‌ها است که به یک کانال کنترل و فرمان متصل شده‌اند. به عبارت بهتر شبکه‌ای از ربات‌ها که منتظر دریافت دستوری برای انجام فعالیت‌های مخرب هستند. کاربران مخربی هستند که با ارسال فرمان‌هایی برای انجام فعالیت‌های مخرب، ربات‌ها را کنترل می‌کنند. این کاربران اهداف مختلفی را دنبال می‌کنند. بات‌نت‌ها ماشین‌هایی در اینترنت هستند که توسط نرم‌افزار مخربی که توسط botmaster منتشر شده‌است، آلوده گردیده‌اند. این ماشین‌ها بعد از آلوده شدن تبدیل به "zombies" یا "slaves" می‌شوند و می‌توانند اهداف مخرب مختلفی را دنبال کنند.
مهم‌ترین جزء یک بات‌نت زیربنای C&C است که شامل ربات‌ها و یک واحد کنترل است که می‌تواند به صورت متمرکز یا غیر متمرکز باشد.Botmasterها از پروتکل‌های ارتباطی مختلفی برای برقراری ارتباط با slaveها و ارسال دستورها به آن‌ها استفاده می‌کنند. با توجه به این که کانال C&C عموماً به عنوان تنها راه کنترل ربات‌ها محسوب می‌شود و کارایی بات‌نت وابسته به ارتباط پایدار با این کانال می‌باشد، معماری آن می‌تواند تعیین‌کنندهٔ میزان مقاومت (robustness)، پایداری (stability) و زمان واکنش (reaction time) آن باشد. در حالت کلی ربات‌ها به دو دستهٔ متمرکز و غیرمتمرکز تقسیم می‌شوند.
چرخهٔ حیات یک بات‌نت شامل مراحل زیر می‌باشد: در این فاز یک میزبان آلوده می‌شود و به عنوان عضوی از یک شبکهٔ رباتی در می‌آید. این فاز نیازمند آن است که فاز اول به صورت موفقیت‌آمیز انجام شده باشد. در این فاز میزبان آلوده شده، برنامه‌ای را اجرا می‌کند که در پایگاه دادهٔ یک شبکهٔ مشخص، باینری‌های بدافزار را جستجو می‌کند. زمانی که این باینری‌ها دانلود و اجرا شدند، میزبان آلوده‌شده، تبدیل به یک ربات واقعی می‌شود. دانلود کردن باینری‌های ربات‌ها معمولاً توسط پروتکل‌های FTP, HTTP و P2P انجام می‌شود. در این مرحله بایستی ربات جدید به یک کانال کنترل و فرمان متصل شود تا به روز رسانی‌ها و دستورالعمل‌ها را دریافت نماید. به برقراری ارتباط ربات با کانال فرمان و کنترل، Rally نیز گفته می‌شود. در واقع هر بار که میزبان restart می‌شود، بایستی این فاز مجدداً انجام شود تا از اتصال و آماده به کار بودن ربات، اطمینان حاصل شود؛ بنابراین فاز اتصال، چندین بار در طول حیات یک ربات اتفاق می‌افتد. با توجه به این که ربات‌ها باید با سرورهای C&C ارتباط برقرار کنند، در این فاز بسیار آسیب‌پذیرند. ربات‌ها معمولاً به صورت پیش‌فرض ارتباطی را با سرورهای C&C برقرار می‌کنند که این ویژگی می‌تواند منجر به این شود که مکانیزم‌هایی برای تشخیص الگوهای ترافیکی ایجاد شوند که می‌توانند در نهایت منجر به کشف اجزای یک شبکهٔ رباتی و حتی سرورهای C&C گردند. پس از برقراری ارتباط با کانال فرمان و کنترل، ربات منتظر دریافت دستورها می‌شود تا فعالیت‌های مخربی را انجام دهد. در این فاز تبادل پیام‌ها با شدت بیشتری انجام می‌گیرد؛ به‌گونه‌ای که در یک دورهٔ زمانی کوتاه تعداد زیادی پیام مبادله می‌شوند. البته لازم است ذکر شود که ترافیک C&C حجم زیادی ندارد و منجر به تأخیر بالای شبکه نمی‌شود؛ بنابراین تکنیک‌های مبتنی بر بی‌نظمی نمی‌توانند ترافیک C&C را تشخیص دهند. برای این که یک botmaster بتواند ارتش zombieهای خود را حفظ نماید، اجرای این فاز الزامی است. ممکن است که botmaster احتیاج داشته باشد که کدها را به دلایلی اعم از دور زدن تکنیک‌های تشخیص، اضافه کردن ویژگی‌های جدید یا تغییر دادن سرور C&C به روزرسانی کند. این مرحله معمولاً به عنوان یکی از مراحل آسیب‌پذیر در نظر گرفته می‌شود چرا که botmasterها معمولاً تلاش می‌کنند تا به روز رسانی‌ها را خیلی سریع انجام دهند و این می‌تواند منجر به الگوهای مشخص رفتاری شود که با استفاده از آن‌ها می‌توان ترافیک ربات‌ها را تشخیص داد. پس از این که ربات‌ها به روز شدند، باید ارتباطات جدیدی را با سرور C&C برقرار نمایند.
در حالی که بات‌نت اغلب بعد از بدافزارها که آن‌ها را تولید می‌کنند نامیده می‌شوند؛ بات‌نت‌های متعدد به‌طور معمول از همان بدافزارها استفاده می‌کنند، اما توسط نهادهای جنایی اداره می‌شود. عبارت بات‌نت برای اشاره به هر گروهی از کامپیوترها مثل بات‌های IRC استفاده می‌شود، اما این عبارت عموماً برای اشاره به گروهی از کامپیوترها (که کامپیوترهای zombie خوانده می‌شوند) که توسط نرم‌افزارهای مخرب در حال اجرا به کار گرفته شده‌اند، استفاده می‌شود.مؤسس یک بات‌نت (به عنوان چوپان بات یا رئیس بات شناخته می‌شود) معمولاً از طریق IRC و اغلب برای مقاصد جنایی می‌تواند گروه را از راه دور کنترل کند. سرور، به عنوان سرور فرمان و کنترل (C&C) شناخته می‌شود. اگر چه نادر است، بیشتر اپراتورهای بات‌نت باتجربه‌تر پروتکل‌های فرمان را از ابتدا برنامه‌نویسی می‌کنند. این پروتکل‌ها شامل یک برنامه سرویس دهنده، یک برنامه سرویس گیرنده برای عملیات و برنامه‌ای که برای مشتری بر روی دستگاه قربانی تعبیه شده‌است. این‌ها با استفاده از یک روش رمزنگاری منحصربه‌فرد برای پنهان‌سازی و حفاظت در برابر تشخیص یا نفوذ به بات‌نت، بر روی اینترنت با یکدیگر ارتباط برقرار می‌کنند.یک بات به‌طور معمول مخفی اجرا می‌شود و از یک کانال مخفی (RFC 1452 (IRC) استاندارد، توییتر یا IM) با سرور C&C ارتباط برقرار می‌کند. به‌طور کلی، خرابکار سیستم‌های متعدد را با استفاده از ابزار مختلف (سوء استفاده، سرریزی‌های بافر و …. همچنین نگاه کنید به RPC) به خطر می‌اندازد. بات‌های جدیدتر می‌توانند به‌طور خودکار محیط خود را اسکن کنند و با استفاده از آسیب‌پذیری‌ها و کلمات عبور ضعیف خود را منتشر کنند. یک بات از طریق آسیب‌پذیری‌های بیشتر می‌تواند اسکن و منتشر شود و برای جامعه کنترل‌کننده بات‌نت باارزش‌تر می‌شود. روند سرقت منابع محاسباتی، به عنوان یک نتیجه از یک سیستم که به بات‌نت پیوسته‌است، گاهی اوقات به عنوان "scrumping" اشاره دارد.سرورهای بات‌نت به‌طور معمول با سرورهای بات‌نت دیگر در ارتباط هستند. به‌طوری که یک گروه ممکن است شامل ۲۰ یا تعداد بیشتری ماشین‌های متصل خصوصی با سرعت بالا به عنوان سرور باشد که از یکدیگر جدا هستند و این‌ها با یکدیگر ارتباط برقرار می‌کنند تا افزونگی بیشتر شود. جوامع بات‌نت واقعی معمولاً شامل یک یا چندین کنترل‌کننده هستند که به ندرت سلسله مراتب فرماندهی را بسیار توسعه داده‌اند؛ آن‌ها به ارتباطات نظیر به نظیر خصوصی تکیه می‌کنند.معماری بات‌نت در طول زمان تکامل یافته‌است و همه بات‌نت‌ها از یک توپولوژی برای کنترل و فرمان استفاده نمی‌کنند. توپولوژی پیشرفته نسبت به خاموش کردن، شمارش یا کشف انعطاف‌پذیرتر است. به هر حال، بعضی از توپولوژی‌ها قابلیت عرضه به بازار را به اشخاص ثالث محدود می‌کنند. توپولوژی‌های معمول بات‌نت ستاره‌ای، چند سرویس‌دهنده‌ای، سلسله مراتبی و تصادفی هستند.برای خنثی کردن تشخیص، برخی از بات‌نت‌ها، در حال افزایش تدریجی در اندازه هستند. در سال ۲۰۰۶، متوسط اندازه یک شبکه ۲۰۰۰۰ کامپیوتر تخمین زده شده بود؛ هر چند شبکه‌های بزرگ‌تر به کار ادامه دادند.
می‌توان کانال فرمان و کنترل را بر اساس معماری خاص و مدهای عملکردی آن به چند گروه تقسیم نمود: دیدگاه متمرکز مشابه با مدل شبکهٔ کلاسیک کلاینت- سرور است. در این معماری، همهٔ ربات‌ها ارتباط خود را با یک یا چند نقطهٔ ارتباطی ایجاد می‌نمایند که این نقاط عمدتاً سرورهای C&C هستند. مزیت این روش، زمان سریع واکنش و سازماندهی خوب آن است. مشکل اصلی این روش آن است که سرور C&C می‌تواند به عنوان نقطهٔ شکست شبکهٔ رباتی باشد؛ یعنی در صورتی که یک شبکهٔ رباتی کشف شود به راحتی می‌توان با قطع کردن ارتباط همهٔ ربات‌های آن شبکه با این سرور، کل آن را از کار انداخت. پروتکل‌های اصلی مورد استفاده در این معماری، Internet Relay Chat (IRC) و HyperText Transfer Protocol (HTTP) می‌باشند. مزیت‌های استفاده از پروتکل IRC عبارتند از:
محدودیت‌های استفاده از پروتکل IRC عبارتند از: شبکه‌های رباتی که از این معماری استفاده می‌کنند، دارای انعطاف‌پذیری بالاتر و همچنین مقاومت بیشتر بوده و امکان مدیریت کردن تعداد زیادی از ربات‌ها را دارا می‌باشند. تشخیص دادن و منحل کردن شبکه‌های رباتی که از این معماری استفاده می‌نمایند، کار دشوارتری است؛ چرا که کشف کردن چندین ربات (حتی تعداد زیادی از آن‌ها) الزاماً به معنای از دست رفتن کامل شبکهٔ رباتی نیست؛ چون در این معماری یک سرور مرکزی C&C وجود ندارد که بتوان با غیرفعال نمودن آن کل شبکه را از کار انداخت. این شبکه‌های رباتی غیرمتمرکز مبتنی بر انواع مختلف پروتکل‌های P2P هستند و به عنوان یک شبکهٔ overlay کار می‌کنند. این شبکه‌ها را می‌توان به گروه‌های زیر تقسیم نمود:
کلاس گستردهٔ overlayهای بدون ساختار، شامل توپولوژی‌های تصادفی با درجه‌های مختلف توزیع، مانند power-law یا شبکه‌های یکنواخت تصادفی می‌باشد. در این شبکه‌ها امکان مسیریابی وجود ندارد. این شبکه‌ها flooding و random walk و همچنین پروتکل‌های Gossip را نیز پشتیبانی می‌کنند.
در این شبکه‌ها نگاشت (mapping) بین محتوا و مکان آن انجام می‌شود. در این گونه از شبکه‌ها از یک Distributed Hash Table (DHT) برای مسیریابی استفاده می‌شود. از جمله الگوریتم‌های DHT که تاکنون پیاده‌سازی شده‌اند و در شبکه‌های P2P از آن‌ها استفاده شده‌است، می‌توان به CAN, Chord Pastry, Tapestry و Kademila اشاره کرد. شبکه‌های رباتی مدرن از الگوریتم Kademila استفاده می‌کنند.
در این شبکه‌ها همهٔ گره‌ها برابر نیستند و زیر مجموعهٔ کوچکی از آن‌ها به صورت اتوماتیک به عنوان سرورهای موقتی انتخاب می‌شوند. با توجه به این که این مدل آسیب‌پذیری بیشتری دارد ربات‌ها با احتمال کمتری از این مدل استفاده می‌کنند. ربات‌هایی که به این گروه تعلق دارند، معمولاً یک IP معتبر دارند و تحت دیوار آتش یا DHCP نمی‌باشند.
ساخت یک شبکهٔ رباتی P2P دارای دو مرحله است: معماری ترکیبی مشخصه‌های شبکه‌های رباتی متمرکز و غیرمتمرکز را در کنار هم مورد استفاده قرار می‌دهد. ربات‌هایی که متعلق به یک شبکهٔ رباتی P2P ترکیبی هستند، به دو گروه تقسیم می‌شوند:
این ربات‌ها هم به عنوان مشتری و هم سرور عمل می‌کنند. این ربات‌ها با آدرس هایIP ی ایستا و قابل مسیریابی پیکربندی می‌شوند.
این ربات‌ها هیچ ارتباط ورودی را نمی‌پذیرند و با آدرس‌های IPی پویای مشخص شده یا با آدرس‌های غیرقابل مسیریابی پیکربندی شده‌اند. آن‌ها همچنین می‌توانند بدون ارتباط با اینترنت پشت دیوارهای آتش قرار بگیرند. در این روش ادرس‌های IP ربات‌های servant در اختیار همهٔ ربات‌های client قرار می‌گیرد. ربات‌های servant بر روی یک پورت مشخص گوش می‌کنند و برای ارتباطات خود از یک کلید رمزنگاری متقارن که خودشان تولید می‌کنند، استفاده می‌نمایند. همهٔ ربات‌ها بایستی به صورت دوره‌ای به ربات‌های موجود در لیست خود متصل شوند و دستورها ارسال شده توسط botmaster را دریافت نموده و آن‌ها را اجرا کنند. در صورتی که یک ربات دستوری را دریافت کند که قبلاً ندیده‌است (!) آن را به سرعت برای همهٔ ربات‌های servant موجود در لیست خود می‌فرستد. این روش تا به امروز در هیچ رباتی مورد استفاده قرار نگرفته‌است. در این روش هیچ‌کدام از ربات‌ها با یکدیگر یا با botmaster ارتباط برقرار نمی‌کنند و منتظر می‌مانند تا وی با آنان ارتباط برقرار نماید. برای انجام یک حمله، botmaster شبکه را برای یافتن zombieها جستجو می‌کند و دستورها خود را به آن‌ها می‌فرستد. مزیت این روش آن است که پیاده‌سازی آن ساده است و با توجه به نبودن ارتباط رایج بین ربات و botmaster، تشخیص دادن آن دشوارتر خواهد بود. با توجه به این که این روش نیازمند اسکن کردن شبکه است، مسائلی در مورد مقیاس‌پذیری و مشکلات هماهنگ‌سازی حمله مطرح می‌گردند.
این مثال نشان می‌دهد چگونه یک بات‌نت ایجاد می‌شود و برای ارسال هرزنامه به ایمیل استفاده می‌شود.
۱- یک اپراتور بات‌نت، ویروس‌ها یا کرم‌ها را به کامپیوترهای آلوده کاربران عادی می‌فرستد که دنباله آن یک برنامه مخرب است. ۲- بات از کامپیوتر آلوده به سرویس‌دهنده فرمان و کنترل خاص گزارش می‌دهد. ۳- spammer سرویس‌های بات‌نت را از اپراتور می‌خرد. ۴- spammer پیام‌های اسپم را برای اپراتور فراهم می‌کند که ماشین‌های در معرض خطر را از طریق کنترل پنل روی وب سرور آموزش می‌دهد و باعث می‌شود پیام‌های اسپم به آن‌ها فرستاده شوند. بات‌نت‌ها برای اهداف مختلف مورد استفاده قرار می‌گیرند؛ شامل حملات حمله محروم‌سازی از سرویس سوء استفاده از SMTP mail relays برای اسپم (ربات جفنگ‌نگار را ببینید)، حیله کلیک کردن، spamdexing و سرقت شماره‌های سریال کاربردها، شناسه‌های ورود به سیستم و اطلاعات مالی از قبیل شماره‌های کارت‌های اعتباری.
در حملات denail-of-service توزیعی، تعداد زیادی درخواست در حد ممکن از طرف چندین سیستم به یک کامپیوتر یا سرویس تکی در اینترنت ارائه می‌شود و سربار زیادی برایش ایجاد می‌کنند و از پاسخ دادن به درخواست‌های قانونی جلوگیری می‌کنند. یک مثال حمله به یک شماره تلفن قربانی است. قربانی با تماس‌های تلفنی بات که قصد دارد به اینترنت متصل شود، بمباران می‌شود.
اقداماتی که تا به امروز برای مقابله با فعالیت‌ها مخرب ربات‌ها به ویژه در مقابل حملات DDoS و spamming انجام شده‌است را می‌توان به دو گروه واکنشی (reactive) و جلوگیری (preventive) تقسیم نمود.
روش‌های واکنشی رایج‌ترین روش‌ها هستند. استراتژی مورد استفاده در این روش‌ها آن است که ابتدا فعالیت‌های مخرب تشخیص داده شوند و سپس اقدام مناسب برای کاهش ترافیک مخرب به مقداری قابل قبول، انجام گیرد. این روش‌ها دارای دو عیب عمده می‌باشند:
روش‌های جلوگیری روش‌هایی هستند که سعی می‌کنند احتمال انجام فعالیت‌های مخرب را تا حد ممکن کاهش دهند. این تکنیک‌ها می‌توانند شامل افزایش منابع کاربران یا ایجاد تغییر در زیربنای شبکه به گونه‌ای باشند که کاربران را وادار به احراز هویت کند. هرچند که در مقابله با این تکنیک‌ها، مهاجمان نیز می‌توانند منابع و ابزارهای خود را بهبود بخشند. برای این که این روش‌ها بتوانند مؤثر باشند، تشخیص دادن ریشهٔ اصلی مشکل الزامی است. به عبارت بهتر بایستی تعیین نمود که چه چیزی تشخیص دادن یک حمله یا پیاده‌سازی فعالیت‌های مخرب را امکان‌پذیر می‌کند.Silva, S. S. , Silva, R. M. , Pinto, R. C. , & Salles, R. M. (2013). Botnets: A survey. Computer Networks, 57(2), 378-403