September 30, 2008

بات نت ها و روش های شناسایی و بررسی - قسمت دوم

پیش از اینکه به سراغ بحث بررسی و آنالیز نمونه ها برویم و یا حتی آشنایی با سیستم ها و نرم افزارهایی که در این زمینه می توانند به ما کمک کنند ، لازم است بدانیم که با چه چیزی قرار است سر و کار داشته باشیم ؟ با Bot ها !

Bot ها را میتوان از دو دیدگاه مختلف مورد بررسی قرار داده و دسته بندی کرد. از لحاظ تکنولوژی مورد استفاده برای برقراری ارتباط با کنترل کننده مرکزی (Command & Control system) که به اختصار C&C خوانده می شود ، و یا از نظر نحوه و هدف گسترش و آلوده سازی قربانیان جدید .

انواع Bot ها از نظر تکنولوژی مورد استفاده برای C&C :


  • مبتنی بر IRC : استفاده از پروتکل و مکانیزم کاری IRC برای برقراری ارتباط
  • مبتنی بر Web : استفاده از پروتکل HTTP برای برقراری با کنترل کننده مرکزی و دریافت یا ارسال دستورات و داده ها
  • مبتنی بر پروتکل های Peer to Peer ( P2P) برای برقراری ارتباط با یکدیگر و C&C
  • مبتنی بر پروتکل های Instant Messaging ( مانند MSN ,YIM ,ICQ)
  • مبتنی بر پروتکل FTP


انواع Bot ها از نظر مکانیزم مورد استفاده برای انتشار و آلوده سازی قربانیان:


  • استفاده از ضعف های امنیتی سرویس های اجرا شده توسط سیستم عامل یا نرم افزارهای جانبی ( مانند RPC , WEB , FTP , Backup,…) و اکسپلویت کردن آنها برای حصول دسترسی به سیستم قربانی جدید
  • استفاده از ضعف های امنیتی نرم افزارهای تحت وب (ضعف های منتج به اجرای کد یا دستور سیستم عامل)
  • استفاده از ضمیمه های آلوده ارسال شده به روش Spamming و ترغیب کاربر به اجرای آنها
  • استفاده از ضعف های امنیتی نرم افزارهایی که اصطاحآ Client-Side خوانده می شوند (Browsers, Mail Clients ,Media players,…)
  • استفاده از اعتماد (Trust) موجود در شبکه های داخلی بر روی پروتکل هایی مانند FTP ,SMB ,NFS و یا شبکه های به اشتراک گذاری فایل (P2P File Sharing)
  • استفاده از روش حدث کلمات عبور ضعیف پروتکل هایی مانند SSH ,Telnet,… و دسترسی به سیستم جدید از طریق آنها



تا اینجا مشخص شد که با چه نوع نرم افزارها و روش های حمله ایی روبرو خواهیم شد . توضیحات مختصری در مورد هر یک از موارد دسته بندی های بالا را در کتاب Botnet که پیش از این معرفی کردم می توانید مطالعه کنید . موضوع بعدی که می بایست بدان پرداخته شود این است که اولآ آیا ما نمونه ایی از Malware ( یا صرفآ Bot) را در اختیار داریم یا نه ؟ در صورتی که نمونه از هر طریقی در اختیار ما قرار داده شده باشد می بایست به سراغ روش ها و تکنولوژی های مورد استفاده برای بررسی نمونه رفت . فرض ما بر این است که خود ما می بایست قادر به کشف و بدست آوردن نمونه ها نیز باشیم . با همین رویکرد می توان ادامه کار را از دو روش مختلف دنبال کرد :

  • تشخیص و شناسایی Bot ها بصورت غیر فعالانه (Passive) از طریق آنالیز ترافیک شبکه
  • تشخیص و شناسایی و شکار نمونه ها از طریق ایجاد تعامل به هر نحو ممکن با Malware( Bot)

هر دو روش مزایا و معایب خاص خود را دارند . از مزایای روش اول می توان به Passive بودن آن اشاره کرد و اینکه به راحتی قابل استفاده در سطح و حجم زیاد ترافیک است . در این حالت با تکیه بر روش های Anomaly Detection در کنار امضا ها (Signature & Rule) به تشخیص فعالیت های BotNet ها پرداخته می شود . از مهم ترین ضعف های این روش می توان به درصد خطای بالا و همچنین وابستگی زیاد به داشتن آگاهی قبلی از نمونه ها اشاره کرد . در کل این روش زمانی کارایی خود را نشان می دهد که شما قبلآ یک یا چند نمونه و حتی تکنیک خاص گسترش را آنالیز کرده اید و قصد شناسایی نمونه های مشابه را درترافیک عبوری شبکه دارید.


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

  • مانیتور کردن ترافیک و جستجوی امضاهای خاص (Signature Based Monitoring)
  • مانیتور کردن ارتباطات برقرار شده از یا به آدرس ها و دامنه های Black-List شده
  • مانیتور کردن حجم بالا و غیر معقول ترافیک ایجاد شده توسط سیستم ها (scan,request,replay,connection,name resolution,…)
  • مانیتور کردن محتوای DNS Cache شبکه و کنترل موارد برای مشاهده هرگونه نام Blacl-list شده
  • مانیتور کردن سیستم های Cache و Proxy شبکه و استفاده از روش Pattern Matching
  • شناسایی و مانیتور کردن ارتباطات رمزنگاری شده مشکوک
  • مانیتور کردن فعالیت ها وترافیک هدایت شده به سمت DarkNet ها


برخی از سیستم ها و ابزارهایی که در این روش برای بررسی ترافیک مورد استفاده قرار می گیرند :

روش دوم بر خلاف روش اول ، کاملآ تعاملی بوده و شما بطور مستقیم و تحت شرایط خاص اقدام به بدست آوردن نمونه ها و اجرای آنها می کنید تا به ماهیت رفتاری آنها پی ببرید . در این حالت هدف اصلی این است که با در معرض خطر قرار دادن یک سیستم آسیب پذیر ( یا به ظاهر آسیب پذیر) منتظر حمله به این سیستم شویم و پس از وقوع حمله ، رفتارهای حمله کننده در خلال نفوذ به سیستم و حتی پس از آن (تغییرات اعمال شده در سیستم قربانی توسط حمله کننده) را بررسی کنیم . این کار در واقع همان مفهوم ایده HoneyPot می باشد که به روش ها و حالت های مختلف پیاده سازی می شود . چیزی که موضوع اصلی بحث کتاب Virtual Honeypots است .

در روش تعاملی اولین قدم (از دید حمله کننده یا همان Bot) نفوذ به سیستم است و قدم دوم آلوده سازی سیستم . ما نیز کار خود را برهمین اساس دنبال می کنیم . یعنی پیاده سازی و استفاده از ابزارها و روش های سفارشی شده برای شکار Bot ها ، و اجرا و آنالیز نمونه های بدست آمده در سیستم ها و محیط های خاص برای شناسایی رفتار آنها . برای اینکه بتوان یک نمونه را با موفقیت بدست آورد ، لازم است بدانیم که Bot ها از چه روش هایی به سیستم آسیب پذیر نفوذ می کنند ، و خیلی خلاصه رایج ترین آنها را پیش از این مرور کردیم . حال با توجه به همین روش های خاص ، ما می بایست سیستم های HoneyPot سفارشی شده ایی داشته باشیم تا بتواند بطور موفیت آمیز با یک یا چند نمونه از این روش ها تعامل داشته باشد . دقیقآ به همین دلیل است که برای شکار هر خانواده از Bot ها از نوع خاصی از Honeypot ها استفاده می شود . در ادامه جزئیات بیشتری را در مورد Honeypot ها را بازگو خواهم کرد .

با توجه به اینکه برای فریب یک حمله کننده (Bot) لازم است تا یک سیستم آسیب پذیر در دسترس و محدوده جستجوی وی قرار گیرد ، می بایست یا از یک سیستم واقعی و یا از یک مکانیزم شبیه سازی استفاده شود که وجود یک سیستم آسیب پذیر واقعی را شبیه سازی می کند . بر همین اساس هانی پات ها را به دو دسته کلی High-Interaction و Low-Interaction تقسیم می کنند .در انواع High-Interaction ایده و روش بر این اساس است که یک سیستم یا نرم افزار آسیب پذیر واقعی ، در شرایط کاملآ مانیتور شده و ایزوله شده ، در اختیار حمله کننده قرار می گیرد . این روش البته خطرات و ریسک های امنیتی خاص خود را دارد از جمله اینکه از خود هانی پات نیز ممکن است برای حمله به سایر سیستم ها استفاده شود .

برخی از شناخته شده ترین نمونه های هانی پات های High-Interaction :

همانطور که گفته شد ، سیستم های High-Interaction خود ممکن است مورد سو استفاده قرار گیرند . همچنین نگهداری و مدیریت این دسته از هانی پات ها غالبآ عملی مشکل و زمانبر بوده و نیازمند پیاده سازی مکانیزم های مختلفی برای خودکار سازی آنهاست . همه این موارد باعث گرایش به سمت ایده دوم یعنی سیستم های Low-Interaction می گردد . در این دسته ، درواقع یک نمونه تقلبی (Fake) و شبیه سازی شده از نرم افزارو یا سرویس آسیب پذیر در دسترس حمله کننده قرار می گیرد . میزان شبیه سازی باید آنقدر بالا باشد که حمله کننده به آن شک نکرده و مکانیزم حمله را متوقف نکند ، و همچنین شبیه سازی نباید آنقدر کامل و پیچیده باشد که بیش از حد نیاز و انتظار حمله کننده باشد . بطور مثال یک Bot که به یک سرویس خاص FTP حمله می کند ، تنها به دنبال دستور LOGIN و هدف قرار دادن آن است و هرگز درخواستی برای اجرای سایر دستورات مانند PUT و یا GET را ارسال نمی کند . بنا بر این نیازی به شبیه سازی آنها نیز نیست! البته این موضوع در عمل کمی پیچیده تر از این مثال ساده است . هانی پات های دسته Low-Interaction ممکن است یک نرم افزار و یا سرویس خاص را شبیه سازی کنند و یا حتی ممکن است قابلیت شبیه سازی یک سیستم عامل یا یک شبکه کامل را داشته باشند . بسته به اینکه هدف از راه اندازی هانی پات چه باشد ، از یک یا ترکیب چند سیستم هانی پات مختلف استفاده می شود . برخی از نمونه های هانی پات از دسته Low-Interaction بشرح زیر می باشند :

سیستم های هانی پاتی نیز طراحی و پیاده سازی شده اند که ترکیبی از قابلیت های High-Interaction و Low-Interaction را در اختیار قرار می دهند . این قبیل هانی پات ها غالبآ بصورت محصول و نرم افراری آماده مصرف در دسترس عموم نیستند , بلکه حاصل یک پروژه و یا کار تحقیقاتی می باشند که تنها مستندات و کلیات مکانیزم کاری آنها برای عموم منتشر شده است . به این دسته از سیستم ها Hybrid HoneyPot گفته می شود .برخی از این نمونه ها عبارتند از :


ماجرای هانی پات ها به همینجا ختم نمی شود . در ابتدای توضیحات گفتم که یکی از روش های مورد استفاده Bot ها برای گسترش و آلوده سازی سیستم های جدید ، استفاده از ضعف های امنیتی نرم افزار های Client-Side است . نکته مهم این است که بسیاری از BotNet ها امروزه بر استفاده از همین روش گسترش تآکید داشته و بطور بسیار گسترده از آن استفاده می کنند . این دسته از Bot ها را نمی توان با هیچ یک از سیستم های هانی پات که پیش از این به آنها اشاره کردم (بصورت خودکار) شناسایی کرد . دلیل این موضوع نیز این است که در همه موارد ( و روش های گسترش قبلی) این حمله کننده (Bot) است که به سراغ سیستم ما آمده و به آن حمله می کند . اما در روش گسترش مبتنی بر ضعف های امنیتی Client-Side ، این هانی پات است که باید به جستجوی حمله کننده بپردازد ! با توجه به اینکه که طیف بسیار زیادی از این حملات از طریق هدایت قربانی به سمت وب سایت های آلوده و مخرب صورت می گیرد ، هانی پات های نسل جدید نیز می بایست همانند یک کاربر اینترنت معمولی به مرور سایت های مختلف بپردارند تا مورد حمله واقع شوند . به این دسته از هانی پات ها اصطلاحآ Client Honeypot گفته می شود و همانند انواع قبلی در دو دسته High-Interaction و Low-Interaction جای می گیرند . فصل 8 کتاب Virtual Honeypots می تواند شروع بسیار خوبی برای آشنایی با مکانیزم کاری Client Honeypot ها باشد . تصویر زیر شمایی کلی از آنچه تاکنون به آن اشاره کردم را نشان می دهد .



در پست بعدی ، به معرفی سیستم های Sandbox و سایر نکات در خصوص بررسی Bot ها خواهم پرداخت.

2 comments:

  1. this one also is great .
    thanks, hope to see another posts about malicious codes.

    ReplyDelete
  2. SOoooo Great
    Thanks...

    ReplyDelete