
در این بخش از دوره SEC504 از موسسه SANS به آشنایی با Rootkit ها و انواع آن ها خواهیم پرداخت. البته در این بخش به Rootkit های سطح اپلیکیشن یا تروجان ها می پردازیم.
Backdoors and Trojans
این ها دو روشی هستند که مهاجمان برای حفظ دسترسی به یک سیستم از آنها استفاده میکنند. یک Backdoor برنامهای است که به نفوذگر اجازه میدهد تا کنترلهای نرمال امنیتی یک سیستم را Bypass نماید. کاربران معمولی یک سیستم ممکن است برای ورود به سیستم از یک نام کاربری و کلمه عبور استفاده نمایند. یک Backdoor به مهاجم اجازه میدهد تا از این مکانیزم عبور کند و بتواند بدون نام کاربری و کلمه عبور به سیستم دسترسی داشته باشد.
یک تروجان، یک مفهومی جداگانه از Backdoor میباشد. تروجان یک برنامهای است که به نظر مفید میرسد ولی در واقع یک برنامه مخرب میباشد. البته تلفیق این دو ابزار با یکدیگر، قدرت نفوذگر را چند برابر مینماید که در اصطلاح به آنها Trojan Horse Backdoor گفته میشود. برخی از مثال هایی که در اینجا مطرح میشوند، یک برنامه هستند که به ظاهر مفید به نظر میرسند ولی در واقع یک Netcat Backdoor Listener هستند.
نوع دیگری از این مدل بدافزارها، Rootkit هستند. البته Rootkit ها سیستمعامل شما را دچار تغییر میکنند به طوری که هرچند سالم و بی نقص به نظر میرسد ولی در واقع تحت کنترل مهاجم میباشد. مورد دیگر هم یک وصله ایمیل است که ظاهرا از یک منبع معتبر ارسال شده است ولی حاوی بدافزارهایی مانند Botها میباشد.
Malware Layers
بدافزارها میتوانند در لایه های مختلفی از سیستم اجرا شوند. در ادامه به تشریح لایهها و بدافزارهایی که در این لایهها فعالیت میکنند، میپردازیم. در تصویر زیر نمایی از این بدافزارها و لایههایی که در آنها فعالیت مینمایند مشخص شده است.

تروجان و Backdoor های لایه اپلیکیشن شامل نصب یک برنامه اضافی بر روی سیستم هدف بدون تغییر در سیستمعامل آن است. Botها در این دسته قرار میگیرند همانند VNC(زمانی که به عنوان یک Backdoor در نظر گرفته میشوند) و Poison lvy
Rootkit های سطح کاربر یا User-mode Rootkits بوسیله تغییر در برنامه های مربوط به سیستمعامل که در مد کاربر فعالیت میکنند به نفوذگر کمک میکند تا بتواند کنترل خود بر روی سیستم قربانی را حفظ کند، همچنین مخفی هم بماند. Rootkit های خانواده لینوکس یا LRK، AFX مربوط به ویندوز و غیره از این دست Rootkit ها هستند.
Rootkit های سطح هسته یا Kernel-mode Rootkits حالت موذیانهتری داشته و قلب سیستمعامل یا همان کرنل را تغییر میدهند. نمونههایی از Rootkit های سطح هسته عبارتند از Rootkit ویندوزی FUTo و Rootkit لینوکسی Linux SuperUser Control Kit
مواردی که ذکر شد، نمونه های رایجی از حملات تروجان و Backdoorها بودند که به آنها اشاره گردید. البته به صورت تکمیلی در ادامه به آنها خواهیم پرداخت.
همچنین برخی از محققان ثابت کردهاند که کدهای مخرب میتوانند در بخش بوت یک دستگاه قابل بوت شدن نیز قرار گیرند. قبل از اینکه سیستمعامل بارگذاری شود، کد بخش بوت (Boot Sector Code) اجرا میشود. ابزار Vbootkit 2.0 این کار را انجام میدهد. همچنین ابزار جالب Kon-Boot هم قادر است کرنل ویندوز های XP، 2003، vista،7 و 2008 را تغییر دهد و بوسیله بوت شدن با این ابزار، بدون داشتن نام کاربری و کلمه عبور یک سیستم، میتوان به آن وارد شد.
لایه بعدی Firmware میباشد. که در واقع یک نرم افزار خاص است که بر روی تراشه سخت افزاری دستگاه های مختلف قرار میگیرد تا آنها را راه اندازی نموده و با آن ارتباط برقرار نماید. پیچیده ترین Firmware، نمونهای است که برای ارتباط با مادربورد از آن استفاده میشود(BIOS / EFI). Firmware یک مادربورد شامل یک برنامه بوت است که دستگاه بوت را پیدا میکند و خودش را بر روی آن بارگذاری نموده و اجرا میکند.
مهاجم میتواند کدهای مخرب را در برنامه بوت Firmware قرار دهد. مجله آنلاین Phrack در شماره 66 خود، مقالهای دارد که در خصوص کد مخرب در BIOS مطالبی نوشته است. علاوه بر این پروژهای به نام Maux نیز شامل قرار دادن کدهای مخرب برای کنترل از راه دور در Firmware های کارت های Ethernet و دستگاه های ویدئویی بود.
همچنین در سال 2009 برخی حملات بر پایه Backdoor در BIOS سیستم انجام شد و در سال 2011 نیز Mebromi Rootkit هم BIOS برخی از مادربوردها را دستکاری مینمود.
Application-Level Trojan Horse Backdoor Suites
مجموعه ابزارهایی که در بخش تروجانها و Backdoor های لایه اپلیکیشنها قرار دارند، به نفوذگر اجازه میدهد تا بر روی ماشین قربانی کنترل کامل داشته باشد که میبایست دارای موارد زیر باشند:
• یک سرور قابل اجرا که بر روی سیستم قربانی نصب شده است.
• سروری که از طریق ماشین کلاینت قابل کنترل است.
• رابط کاربری که به نفوذگر اجازه میدهد تا به صورت کامل کنترل قربانی را در دست بگیرد.
البته اکثر این برنامهها را میتوان با آنتی ویروس کشف کرد ولی لازم به ذکر است که اکثر آنتی ویروس ها، VNC را شناسایی نمیکنند و اغلب نفوذگران از این برنامه برای کنترل از راه دور قربانی استفاده میکنند.
بسیاری از درب های پشتی قابلیت نصب VNC را دارند، زیرا آن یکی از روش های عالی برای ارتباط و تعامل با سیستم قربانی است.
به عنوان مثال تروجان های Poison lvy، Virtual Network Computing، Damware، Sub7، BlackShades و GhostRAT نمونه هایی از این نوع تروجانهامیباشند.
VNC
VNC سرویسی رایگان، محبوب و دارای ویژگی های جالبی است. این سرویس از پورت 5900 TCP استفاده نموده و برای ارسال GUI در شبکه مورد استفاده قرار میگیرد. این سرویس توسط آزمایشگاه AT&T ایجاد شد.
چندین شرکت از آن برای مدیریت از راه دور استفاده میکنند. ولی این برنامه دارای مشکلات امنیتی میباشد. هنگام ارتباط با VNC نیاز به کلمه عبور است ولی در گذشته آسیبپذیریهای مختلفی همچون حملات MITM و سرریز بافر در آن وجود داشت.
با این حال اگر شما VNC را زمانی که از طریق SSH به یک سیستم متصل شده اید، فراخوانی نمایید، ایمن خواهد بود. توجه داشته باشید که SSH میتواند ترافیک های مبتنی بر TCP را در یک کانال رمز شده حمل نماید. به همین دلیل توسط SSH Port Ridirection بر روی پورت 5900 که مربوط به VNC میباشد، شما میتوانید نشست های VNC را امن تر نمایید.
توصیه میکنیم هنگامیکه قصد استفاده از سرویس VNC را دارید، آن را در قالب یک نشست SSH نسخه 2 به کار بگیرید.
البته در ابزار قدرتمند متاسپلویت همچنین VNC به عنوان یک پیلود گنجانده شده است تا امکان کنترل قربانی از راه دور را فراهم نماید.
مهمتر از همه، اکثر ابزارها ضد ویروس VNC را شناسایی نمیکنند، زیرا این ابزار به طور گستردهای به صورت قانونی مورد استفاده قرار میگیرد.
VNC Platform
تعداد زیادی از پلتفرمها VNC را پشتیبانی میکنند. برخی از این پلت فرمها مانند ویندوز، لینوکس، سولاریس، HP-UX 11، Mac OSX میباشند.
ویندوز میتواند با VNC سیستم لینوکسی را کنترل نماید و بالعکس.
این قابلیت انعطاف پذیری و پشتیبانی که در VNC وجود دارد برای نفوذگران بسیار مناسب میباشد.
WInVNC
سرور VNC را میتوان در دو وضعیت اجرا نمود که یکی App mode و دیگری Service mode است. در حالت App mode یک آیکون کوچک VNC در محیط گرافیکی ویندوز و در قسمت Tool Tray نمایش داده میشود. در حالت Service mode، VNC به عنوان یک سرویس در حال اجرا بر روی دستگاه میباشد. بنابراین در نسخههای عمومی WinVNC منتشر شده، نماد VNC بر روی دستگاه قربانی نمایش داده میشود که بیانگر نصب شدن این ابزار است. البته در نسخههای اخیر VNC یک گزینه پیکربندی در سرور WinVNC برای حذف نماد آن از صفحه کاربر وجود دارد.
البته در سرویس VNC، وجود آن در سیستم از طریق لیست نمودن سرویسها و Task Manager قابل مشاهده خواهد بود.

Poison Ivy Configuration
پس از اینکه با VNC آشنا شدیم، بیایید و نگاهی هم به Poison lvy بیاندازیم.
همانند بسیاری از ابزارهای Backdoor قابل کنترل از راه دور، Poison lvy هم برای راه اندازی اولیه سرور، نیاز به یک کاربر، تنظیمات ارتباطی، نام فایل و ویژگی های مختلف دارد.
با این تنظیمات در واقع ما مشغول ایجاد یک فایل اجرایی هستیم که سرور را بر روی سیستم قربانی نصب نماید. بعد از اجرای این فایل بر روی سیستم قربانی، نفوذگر میتواند یک دسترسی گرافیکی از طریق شبکه با سیستم قربانی داشته باشد.

ابزار Poison lvy و همچنین ابزارهای مشابه قادر هستند تا به کلیدهای فشرده شده توسط قربانی، کلمات عبور وی و فایلهای سیستم قربانی دسترسی داشته باشد. البته این تنها گوشهای از امکاناتی است که در چنین ابزارهایی گنجانده شده است.
Wrappers
اکثر کاربران هنگامیکه یک فایل با نام nc.exe برای آنها ارسال میشود، آن را اجرا نمیکنند. (البته متاسفانه برخی از آنها این کار را انجام خواهند داد) برای کسانی که این کار را انجام نمیدهند، مهاجم میتواند از مجموعه ابزارهای Wrapper استفاده نماید. این ابزارها، یک برنامه را با یک Backdoor ادغام میکنند.
ابزارهای Wrapper به عنوان EXE Binder یا Binder هم نامیده میشوند. Wrapperها دو ورودی داشته و یک خروجی ایجاد میکنند.

مهاجم یک برنامه اجرایی مانند یک بازی یا یک برنامه خاص دیگر را با یک Backdoor مانند nc تلفیق میکند که خروجی آن یک فایل اجرایی بوده و میتواند هم نام همان بازی یا برنامه خاص باشد.
مهاجم اغلب سراغ برنامههایی میرود که ترغیب کننده باشند. به عنوان مثال مهاجم ممکن است یک برنامه کارت تولد، یک فیلم غیراخلاقی و مواردی از این دست را با یک تروجان تلفیق کند. پس از ایجاد فایل نهایی، نفوذگر پس از ارسال آن به صدها کاربر، امیدوار است که یکی از آنها این فایل را اجرا نمایند. لازم به ذکر است با توجه به اینکه فایل تروجان با یک فایل دیگر ترکیب شده است، قربانی متوجه نصب تروجان نمیشود. ابزارهای مختلفی برای این کار در دسترس هستند که Saran Wrap و EliteWrap نمونه هایی از آنها هستند.
نفوذگر میتواند هر تروجان یا Backdoor را مانند NC یا Poison lvy، با ابزارهای دیگر تلفیق کند. البته متاسپلویت هم دارای ابزارهایی است که به مهاجم اجازه میدهد، فایلهای .exe را به فایلهای .vba یا .vbs تبدیل نماید. این قابلیت به نفوذگر اجازه میدهد تا بدافزار خود را داخل فرمتهایی مانند .doc یا .xls جاسازی نماید.
همچنین یک ابزاری قدرتمندی مانند Veil هم وجود دارد که به منظور عبور از آنتی ویروسها میتوان از آن استفاده نمود.
البته بسیاری از تکنیکهای مخفی سازی نیز در مجموعه ابزار SET که مخفف Social Engineering Toolkit میباشد قرار گرفته است.
windows Anti-Reverse Engineering for Executables
نفوذگران به منظور خنثی سازی عملیات مهندسیمعکوس در جهت شناسایی فایلهای آلوده از تکنیکهای مختلفی استفاده میکنند. یکی از این تکنیکها استفاده از Packing است. یک فایل اجرایی Packe شده تعداد زیادی از رشتههای (String) مفید را نشان نمیدهد و مستقیما هم قابل Disassembled نخواهد بود.
ابزارهای زیادی برای این کار وجود دارد که یک ابزار رایگان برای این موضوع UPX بوده و ابزار قدرتمند دیگر که به صورت تجاری عرضه میشود، PECompact است.
همچنین ابزارهای Yoda و Themida هم در این بخش بسیار محبوب هستند.
Defense: Unpacking Windows Executables
هنگام تجزیه و تحلیل برنامههای ویندوزی که Pack شدهاند، محقق نیاز دارد که ابتدا کد را Decompress نماید.
ابزارهای زیادی برای Unpacking وجود دارد اما یکی از راههایی که برای این کار مناسب است، استفاده از پلاگینهای Ollydbg میباشد. در همین راستا، فردی که با نام SHaG معروف است، دهها اسکریپت که در ابزار Ollydbg کار میکند را منتشر ساخت که برای Uncompress تعداد زیادی از حالتهای مختلف فشرده سازی مانند PEBundle، PECompact و UPX کاربرد دارد.
البته لازم به ذکر است، در صورتی که الگوریتم Packing یا Obscuring استفاده شده توسط نفوذگر، سفارشی باشد، محقق ممکن است نیاز به ایجاد یک Unpacker سفارشی داشته باشد.
Memory Analyze
پس از ملاحظه تکنیکهای مختلفی که در تروجانهای سطح اپلیکیشن وجود داشت، در این بخش به مکانزیم هایی برای Incident Handlerها در جهت تجزیه و تحلیل سیستمهای مورد حمله قرار گرفته اشاره مینماییم. در این بخش به ابزارهای موجود برای تجزیه و تحلیل حافظه یک سیستم ویندوزی پرداخته و سپس به ابزار Volitility میپردازیم.
تروجانها اطلاعات زیادی را برای Incident Handlerها جهت تجزیه و تحلیل در مموری به وجود میآورند. تحلیلگران با استفاده از ابزارهای زیادی که به همین منظور ایجاده شده اند، اصطلاحا میتوانند مموری را Dump نمایند. اسکریپت Memorydd.bat که بخشی از مجموعه رایگان Mandiant’s free Memoryze میباشد، نمونه ای از این ابزارها میباشد.
علاوه بر این HBGray یک ابزار رایگان با نام Fastdump برای Capture نمودن اطلاعات مموری ارائه داده است.
کتابچه راهنمای امن سازی وب سرور IIS
همچنین Matthieu Suiche هم برنامه رایگانی با نام win32dd را بدین منظور ارائه داده است .
پس از ایجاد Dump از مموری، شما میتوانید آن را از طریق امکان ارسال فایل Netcat و یا کپی آن از طریق SMB، به ماشین دیگری انتقال داده و آن را آنالیز نمایید.
در چند سال گذشته ابزارهای بسیار با کیفیتی برای آنالیز مموری از سیستمهای ویندوز منتشر شده اند. یکی از ابزارهای رایگان که بسیار مورد استفاده تحلیل گران مموری قرار میگیرد، ابزار Volatility میباشد. این ابزار با زبان پایتون نوشته شده است و برای کشف و استخراج اطلاعات مختلف از مموری مورد استفاده قرار میگیرد.
برای دسترسی به آن میتوانید از لینک زیر استفاده نمایید.
https://code.google.com/archive/p/volatility
یکی از ابزارهای بسیار کاربردی دیگر Rekall میباشد که ویژگی هایی مشابه Volatility دارد.
در این بخش نیز بیشتر به ابزار Rekall میپردازیم.
ماژول های مهم در Rekall
Imageinfo: این ماژول تاریخ و زمانی که Memory Dump کپچر شده است را نمایش میدهد.
Netstat: این ماژول سوکت های باز شبکه، Process ID های استفاده شده توسط سوکت، پورت استفاده شده، پروتکل ارتباطی و تاریخ و زمانی که سوکت باز شده است را لیست مینماید.
Pslist: این ماژول لیستی از Processها که شامل PID، نام و PPID یا Prent Process ID میباشد را نمایش میدهد.
Dlllist: این ماژول لیستی از DLL های بارگذاری شده توسط یک پروسس را نمایش میدهد.
Netscan: این ماژول تمامی پورتها و ارتباطات TCP و UDP فعال را نمایش میدهد.
Filescan: این ماژول لیست تمامی فایلهایی که هر پروسس باز نموده است را نمایش میدهد.
Pedump: این ماژول کد اجرایی مرتبط با یک پروسس داده شده داخل یک فایل .EXE را اصطلاحا Dump میکند.
Procmemdump: این ماژول مموری یک پروسس خاص که توسط کاربر Rekall انتخاب شده است را Dump میکند. به جای آنالیز تمام مموری، میتوان تنها بر روی پروسس داده شده متمرکز شد.
Modules: این ماژول درایورهای بارگذاری شده توسط ویندوز که مربوط به یک دستگاه میباشد را نمایش میدهد. این ماژول همچنین فایل های SYS مرتبط با آنها را نیز نمایش میدهد.
برای شروع کار با Rekall، شما میتوانید ابتدا دستور زیر را اجرا میکنیم:
source /home/tools/rekall/bin/activate
سپس شما برای اجرای Rekallباید ایمیج تهیه شده از مموری را به آن معرفی نمود.
(recall) $ rekal -f /liome/tools/504/memimage.dd
این ابزار از دستورات محیط CMD ویندوز برای استخراج اطلاعات از مموری استفاده میکند.
به عنوان مثال خروجی دستور netstat مشابه دستور زیر در محیط اصلی ویندوز میباشد:
C:> netstat -nao I find “ESTABLISHED”
خروجی دستور pslist مشابه دستور زیر در محیط اصلی ویندوز میباشد:
C:> wmic process get name,parentprocessid, processid
دستور dlllist pid=[pid_number] به منظور لیست نمودن DLL های بارگذاری شده توسط یک پروسس استفاده میشود.
خروجی این دستور مشابه با دستور زیر در محیط اصلی ویندوز میباشد:
C:> tasklist /st /fi “pid eq [pid]”
C:> wmic process where processid=[pid] get commandline