October 2, 2008

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

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

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

یکی از ساده ترین راه هایی که برای آنالیز نمونه به ذهن می رسد ، اجرای نمونه بدست آمده بر روی یک سیستم ، و نظارت کردن بر فعالیت های انجام شده توسط باینری است . این روش بررسی را می توان به دو صورت دستی و خودکار انجام داد . در روش دستی نمونه بر روی یک سیستم (معمولآ تحت Virtual Machine) کاملآ پاک (Fresh Install) اجرا شده و در طی مدت فعالیت سیستم ، توسط ابزارهای مختلف و متعددی آنچه بر روی سیستم در حال رخ دادن است ثبت و بررسی می گردد . این بررسی می تواند شامل نظارت بر فعالیت های دیسک (خواند و نوشتن) ، فعالیت های شبکه (ترافیک ارسالی/دریافتی) ، فعالیت های انجام شده در رجستری ، API های فراخوانی شده ، آدرس های حافظه فراخوانی شده ، و بسیاری موارد دیگر باشد . مجموعه ابزارهای SysInternals که حقوق آن اخیرآ توسط مایکروسافت خریداری شده از جمله ابزارهای مفید در این زمینه می باشند.

روش دستی علاوه بر نیاز به دقت و مهارت در استفاده از ابزارهای مختلف زمانبر نیز می باشد . همچنین ممکن است نمونه تحت بررسی فعالیت هایی را انجام دهد که از دید ابزارهای متفرقه و روش بررسی دستی پنهان بماند و یا کنترل آنها بدین صورت مشکل باشد. به همین دلیل گرایش به سمت استفاده از مکانیزم های خودکار بررسی بیشتر است . در روش بررسی خودکار ، نمونه در یک محیط شبیه سازی شده ، مجازی و یا حتی واقعی اجرا شده و توسط مکانیزم های خاصی در سطح پایین (سیستم عامل و منابع سیستم ) تحت نظارت قرار می گیرد . این محیط معمولآ توسط ابزارها و اسکریپت های خاصی کنترل می گردد تا هر آنچه بر روی آنها اتفاق می افتد به دقت و با جزئیات ثبت گردد . سیستم های Sandbox موجود دقیقآ همین امکانات را در اختیار قرار می دهند . مفهوم Sandboxing تنها در بحث جاری کاربرد ندارد بلکه اساس و ریشه آنرا در محیط هایی مانند Java ، .Net و یا Flash(Action Script) می توانید دنبال کنید . اساس Sandboxing بر اجرای کد و دستورات ناشناخته (نا امن) در یک محیط کاملآ ایزوله از سیستم میزبان است ، بطوری که حتی در صورت مخرب بودم دستورات اجرا شده آسیب و تهدیدی متوجه سیستم میز بان نباشد .

Sandbox هایی که در حال حاضر موجود بوده و برای بررسی Malware ها از آنها استفاده می شوند ، علی رغم تعدد در نام های تجاری و قابلیت ، همگی از تکنیک های مشابهی استفاده می کنند . سیستم های کنونی یا از روش مانیتور کردن فعالیت های پروسس اجرا شده (در سطح فراخوانی API ها ) در یک سیستم عامل واقعی استفاده می کنند ، و یا نمونه در یک محیط شبیه سازی شده (Emulated) اجرا شده و API هایی که نمونه قصد استفاده از آنها را دارد را شبیه سازی کرده و پاسخ های از پیش برنامه ریزی شده ایی به آنها می دهند . در ادامه چند نمونه از شناخته شده ترین سیستم های Sandbox آورده شده اند .

هر یک از این سیستم ها از روش خاص خود برای پیاده سازی ایده Sandboxing استفاده کرده اند . CWSandbox با تکیه بر روش Process Injection ، یک DLL خاص را به نمونه اجرا شده تزریق کرده و بکمک آن API Call ها را تحت نظر گرفته و یا دستکاری می کند (API Hooking). این سیستم مبتنی بر استفاده از ماشین های مجازی (مانند VMware) است اگرچه به راحتی با استفاده از مکانیزم کاری نرم افزار DeepFreez امکان استفاده از یک ماشین واقعی را نیز به ما می هد.

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


TTAnalyzer با استفاده از QEMU ،یک سیستم عامل ویندوزی را اجرا کرده و با روش API Hooking فعالیت ها را شناسایی می کند .


ایده بکار برده شده در SandNet کمی متفاوت است . در این سیستم ، نمونه ابتدا در یک سیستم و سیستم عامل واقعی اجرا می شود و پس از 60 ثانیه مکانیزم Sandbox سیستم را مجبور به Reboot می کند و پس از آن سیستم توسط روش PXE ( بوت از طریق شبکه) بوت شده و در سیستم عامل لینوکس اجرا شده دیسک سیستم عامل ویندوزی Mount شده و تغییرات حاصله در آن با یک نمونه پاک و دست نخورده مقایسه شده و تغییرات در رجیستری و فایل سیستم مشخص می گردد . سپس Image پاک بر روی دیسک بازنویسی شده و سیستم برای بررسی نمونه بعدی آماده می شود .


مکانیزم کاری Truman نیز بی شباهت به TTAnalyzer نیست . در سیستم Truman مجموعه ای از سیستم ها و ابزارها یک شبکه اینترنت مجازی را نیز در اختیار نمونه قرار می دهند . همچنین علاوه بر تغییرات ثبت شده بر روی دیسک ، یک کپی از حافظه سیستم عامل اجرا شده تحت Sandbox نیز آنالیز می شود .


روش کاری JoeBox تقریبآ مشابه سیستم Norman Sandbox می باشد ، اما تجربه شخصی من نشان داد که این سیستم بسیار بهتر و کامل تر از Norman عمل می کند .


سیستم Anubis در واقع ادامه و نمونه تکمیل شده سیستم TTAnalyze می باشد و تقریبآ از همان مکانیزم کاری بهره می برد .

خروجی هایی که سیستم های Sandbox در اختیار قرار می دهند در برخی موارد چیزی جز اطلاعات خام نیست و به خودی خود استفاده مستقیمی نمی توان از آن داشت . یکی از مهم ترین اطلاعاتی که در خلال بررسی نمونه می بایست بدست آید ، مکانیزم کاری سیستم Command & Control یا فرماندهی نمونه بات می باشد . در بسیاری از موارد این مکانیزم یا مبتنی بر IRC بوده و یا بر اساس Web می باشد . در صورتی که نمونه ما فاقد تمهیدات امنیتی باشد و بصورت شفاف با سرور فرماندهی خود ارتباط برقرار کند ، با دنبال کردن پکت های ارسالی و حتی استفاده از نرم افزارهای کلاینت معمولی می توان دامنه اطلاعات در خصوص سیستم C&C مورد استفاده توسط نمونه را گسترش داد . اما همیشه کار به همین راحتی نیست !

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

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

4 comments:

  1. hi,

    excellent article,
    please continue..

    ReplyDelete
  2. salam hamid , omidvaram in matalab dar zamine botnet ha edame peyda kone. chon resource ha to in zamine to keshvare ma kheili mahdode.
    movaffagh bashi ;)

    ReplyDelete
  3. thanks..manabe mahdode..lotfan edame bedin..

    ReplyDelete
  4. bale manabe mahdod hast..lotfan edame bedin..

    ReplyDelete