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 ها خواهم پرداخت.

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

از حدود سه ماه پیش درگیر پروژه ای شدم که ماهیت کلی آن آنالیز نمونه های Malware فعال در کشور و سنجش رفتارهای آنهاست . یکی از قسمت های جالب کار در این مورد ، بررسی رفتار BotNet ها و نحوه کارکرد آنها در سطح کلان می باشد . منظور از سطح کلان ، زیر نظر گرفتن فعالیت های سیستم های آلوده در سطوح گسترده ای مانند کل سیستم های متصل به اینترنت یک شهر ، منطقه و یا کشور است . هدف از این پست صحبت در مورد جزئیات پروژه نیست بلکه قصد من تنها سعی در منتقل کردن بخشی از تجربیاتی است که در طول این مدت بدست آوردم .

پیش از اتمام فاز مطالعاتی چون پیش بینی می کردم که روزی مجددآ اطلاعات گرد آوری شده را بازگو کنم ، همه چیز را خیلی مرتب و منظم مستند سازی کردم ، اما بر خلاف انتظار درست روزی که قصد انتشار آنرا داشتم با خط قرمز NDA ( تعهد عدم افشای اطلاعات) مواجه شدم . هرچند این مورد من را از بازگویی مستقیم و دست نخورده اطلاعات منع می کند ، اما بازنویسی بخشی از این یافته ها به روشی متفاوت خلاف NDA نخواهد بود :-)

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


کتاب اول :BotNets – The Killer Web App

در صورتی که آگاهی قبلی در مورد Malware ها و خصوصآ BotNet ها ندارید ، این کتاب می تواند شروع مناسبی باشد اما هرگز به آن اکتفا نکنید ! بر خلاف آنچه عنوان و ظاهر کتاب به خواننده القاء می کند کتاب مذکور تنها به اشاره به مجموعه ایی از بحث های مرتبط با Botnet ها بصورت سطحی و گذرا بسنده کرده است و پس از مطالعه آن خواننده با انبوهی از کلمات کلیدی که یاد گرفته می بایست به سراغ Google برود . در غیر اینصورت اطلاعات عنوان شده در کتاب به هیچ عنوان کافی وکامل نمی باشند .در طی 5 فصل اول خواننده با انواع BotNet ها و نحوه گسترش ، فعالیت و کنترل آنها آشنا می گردد .آگاهی از مطالب عنوان شده در این فصول می تواند بعنوان پیش نیاز برای مطالعه بسیاری از کتاب ها و مقالات در زمینه مشابه فرض شود. بنظر من اگر در این کتاب تنها 5 فصل اول وجود داشت اما کامل و واضح ، بسیار مفید تر از قالب کنونی آن بود . در هر صورت نباید فراموش کرد که مخاطب این کتاب افراد کم یا بی تجربه در این زمینه است . فصول 6 , 7 و 9 کتاب به معرفی قابلیت های نرم افزار Ourmon می پردازد که بنظر من انتخاب زیاد مناسبی برای این کتاب نیست . فصل 11 کتاب مطالب جالبی را در خصوص منابع اطلاعاتی که در زمینه آنالیز BotNet ها می توان به آنها مراجعه کرد را عنوان می کند . دانستن برخی از این نکته ها برای افرادی که قصد همکاری با گروه های فعال در این زمینه (مانند Shadow-Server) را دارند الزامی می باشد . امتیازی که من به این کتاب می دهم 3 از 5 است . فکر می کنم دلیل این رتبه بندی را ذکر کردم!


کتاب دوم : Virtual Honeypots

قدم اول در شناسایی Malware ها و آنالیز آنها ، بدست آوردن یک نمونه از آنهاست . تآکید اصلی کتاب فوق نیز بر همین موضوع می باشد . در این کتاب شما با انواع مختلف سیستم های Honeypot از نظر نحوه کارکرد آنها و دسته بندی های فنی آنها آشنا خواهید شد و در خلال آشنایی با هر خانواده ، تعدادی از شناخته شده ترین نرم افزارها و سیستم های مربوطه نیز از لحاظ مکانیزم کاری و روش راه اندازی اولیه مورد بررسی قرار می گیرند . تنها نکته ایی که در خصوص این کتاب وجود دارد و می بایست پیش از مطالعه آن در نظر داشته باشید این است که ، متن و نحوه نگارش این کتاب برای مخاطبی است که آگاهی و آشنایی قبلی با انواع Malware ها ، دسته بندی آنها و روش های کاری آنها دارد . بنا بر این خواندن کتابی مانند BotNets که به آن اشاره شد قبل از مطالعه این عنوان می تواند به شما در درک مطالب آن کمک زیادی کند . همچنین این کتاب توضیح و مطلب خاص و قابل توجهی در خصوص نحوه آنالیز نمونه های Malware ها ندارد . اگر چه در فصل 12 کتاب مروری بر نحوه کارکرد CWSandbox شده اما استفاده از سیستم های Sandbox تنها بخش اندکی از پروسه آنالیز یک نمونه Malware را پوشش می دهند. امتیازی که من به این کتاب می دهم 4 از 5 است . دلیل عدم اختصاص 5 امتیاز ، ناقص بودن بسیاری از مطالب عنوان شده و همچنین در مواردی انتقال مطلب تنها به روش معرفی یک ابزار یا نرم افزار خاص می باشد .


دو عنوان کتاب دیگر که مطالعه آنها می تواند به شما در آشنایی با این زمینه کمک کند ، کتاب جدید انتشارات Symantec تحت عنوان Crimeware : Understanding new attacks and defenses و کتاب BotNet Detection : Countering the largest security threat می باشد . البته عنوان اول (Crimeware) تنها 2 فصل در مورد موضوع مورد نظر ما دارد ، اما مطالعه این کتاب خالی از لطف نیست .

بجز عناوین ذکر شده کتاب های خاص و قابل توجه دیگری در این زمینه و با این روش دسته بندی اطلاعات منتشر نشده یا حداقل من از آنها اطلاعی ندارم . سایر کتب منتشر شده بیشتر در مورد Virus ها و یا مکانیزم های صرفآ دفاعی می باشد که کتاب The Art of computer virus research & defense یک نمونه خوب از این دسته می باشد .


خلاصه ایی از آنچه پس از مطالعه این عناوین و مقاله های مربوطه می توانید فرا بگیرید را در پست بعدی خواهم آورد.

September 28, 2008

موقعیتی برای تهیه کتب تخصصی بروز و مورد نیاز شما

طی 7-8 سال اخیر بارها و بارها پیش آمد که من نیاز به یک کتاب ، نرم افزار، سخت افزار یا کوفت ها و زهرمارهای مشابه داشتم که به هر دلیل در ایران قابل تهیه نبود و یا آنقدر دیر قابل تهیه شده و در دسترس قرار می گرفت که تاریخ مصرف اش برای من گذشته بود . بیشترین تآخیر و مشکل هم در خصوص تهیه کتاب های به روز در فیلد کاری خودم و یا شبکه بود . در بهترین حالت اگر خیلی شانس می آوردم نیاز من با یکی دو ماه کم و زیاد مقارن می شد با نمایشگاه بین المللی کتاب و شـــــــــــــاید گاهی عنوانی که می خواستم در نمایشگاه ارائه می شد . البته در کل این سال ها و همه این نمایشگاه ها من فقط دو بار خوش شانس بودم و عملآ دو عنوان کتاب را به موقع بدست آوردم … { و این داستان ادامه دارد } .
تنها راه حل این مشکل برای من سفارش اقلام درخواستی ام به اقوام و آشنایان در خارج از کشور بوده که تا حدی از این دردسر ها کاسته است .

اخیرآ اوضاع روابط بین الملل (شخصی) کمی بهتر شده و از آنجا که من از سالها پیش عقده خرید راحت محصولات از اینترنت را در ایران داشتم ، با جمعی از هم دردان تصمیم گرفتیم که کمی به افراد مشابه خودم کمک کنیم تا کمتر حرص اوضاع را بخورند !

ماجرا از این قرار است که در صورت تمایل ، شما می توانید اقلام درخواستی خود شامل کتاب ، وسایل الکترونیکی کوچک ( مثل لوازم جانبی کامپیوتر ، کارت های جانبی ، ... ) و هر خرت و پرت دیگری که بشود آنرا آنلاین خرید و با پست منتقل کرد را لیست می کنید و ما آنها را در ایران به شما تحویل می دهیم . مسلمآ ما عاشق چشم و ابروی کسی نیستیم و این کار هزینه هایی را نیز در بر دارد . اما بارها برای خود من پیش آمده که حاضر بودم به هر قیمت (قابل قبولی) اما در زمان کوتاه سفارشم را دریافت کنم . شرکت هایی نیز هستند که در حال حاضر این سرویس را ارائه می دهند . قیمت های پیشنهادی آنها گاهی کاملآ پرت و گاهی به زور !!! قابل قبول است . اما ما سعی می کنیم که تا حد ممکن به کسی فشار نیاید ، چون قصد ما صرفآ سود و تجارت نیست.
در صورتی که نیاز شما فوری باشد ، این امکان وجود دارد که سفارش در کمتر از 10 روز نیز بدست شما برسد . در حالت معمولی این روال بین 20 تا 30 روز تآخیر دارد .

در هر صورت اگر شما هم چنین مشکلی در تهیه اقلام خود دارید ، می توانید درخواست خود را به آدرس ایمیل من ( hamid _@_ OISSG.org) ارسال کنید تا تعرفه سفارش برای شما محاسبه و ارسال گردد .