c – Exploit SEH Overwite

من در آزمایشگاه Overwrite Lab از دوره Exploits 2 توسط Corey Kallenberg از آموزش امنیتی باز استفاده کردم.

محیطی است که 32 بیتی ویندوز ایکس پی SP3 است و برنامه های Visual C ++ 2008 Express Edition بدون DEP و ASLR

لطفا کد زیر را در نظر داشته باشید:

 #include 
#include 
#include 

جایزه خالی () {
    printf ("جایزه !!!  n")؛
}

int unsigned int FileErrorExceptionHandler () {
    printf ("FileErrorExceptionHandler () نامیده می شود ")؛
    printf ("فرآیند کشتن  n")؛
    ExitProcess (1)؛
    بازگشت 0؛
}

void read_file (char * file، int * bytes_read) {
    FILE * fp؛
    کاراکتر امضا نشده [1024]؛

    memset (buf، 0x00،1024)؛
    printf ("آدرس buf: 0x٪ 08x  n"، & buf [0])؛

    fp = fopen (فایل، rb)؛
    اگر (fp == NULL) {
        printf ("فایل را نمی توان باز کرد  n")؛
        برگشت؛
    }

    * bytes_read = fread (buf، 1،2048، fp)؛
    fclose (fp)؛
}

int main (int argc، char ** argv) {
    HMODULE hFlash؛
    hFlash = LoadLibrary ("Flash6.ocx")؛
    اگر (hFlash)
        printf ("فلش بارگیری شده با موفقیت  n")؛
    چیز دیگری
        printf ("فلش بارگیری نشد  n")؛
    int n؛
    printf ("آدرس جایزه: 0x٪ 08x  n"، جایزه)؛
    printf ("آدرس n است:٪ x  n"، & n)؛
    n = 0x11223344؛
    اگر (argc! = 2) {
        printf ("استفاده:٪ s نام پرونده  n"، argv [0])؛
        بازگشت -1؛
    }

    read_file (argv [1]، & n)؛
    printf ("read_file گزارش خواندن٪ d بایت  n"، n)؛
    بازگشت 0؛
}

به یاد آوردن ساختار زنجیره ای SEH:

سوءاستفاده من به شرح زیر است:

 2 bytes 2 bytes 4 bytes
 ...  <jmp به > 
<jmp به >

از کجا

، اشاره گر به استدلال استثنا را لغو می کند. این در واقع نشانی است که برنامه به زمانی که یک استثنا اتفاق می افتد (یک استثنا درست پس از تماس fread وجود دارد).

ما انتخاب می کنیم که به pop، pop، ret کد در بخش متن به دلیل غیر ممکن است برای پرش به یک کد در پشته (برخی از مکانیسم دفاعی SEH پایه). چرا پاپ، پاپ، رت ؟ از آنجایی که در زمانیکه دستیار استثنائی شروع به کار می کند، ESP 8 بایت از آدرس اشاره گر به رکورد بعدی SEH است که ما نیز کنترل می کنیم:

 0: 000> مبادله
* 0012ffb0 *: seh_overflow! ILT + 85 (__ except_handler4) +0 (0041105a)
0012ffe0: kernel32! ValidateLocale + 2b0 (7c839ac0)
پشته اشتباه اشتباه در ffffffff
0: 000> گرم
(614.f68): نقض دسترسی - کد c0000005 (شانس اول)
استثناهایی که در اولین فرصت وجود دارد قبل از هرگونه استثناء گزارش شده است.
این استثنا ممکن است مورد انتظار و مورد استفاده قرار گیرد.
:
0: 000> dd esp L4
0012f6f8 7c9032a8 0012f7e0 * 0012ffb0 * 0012f7fc

<jmp به > (2 NOP به دلیل اینکه اندازه jmp کوتاه 2 بایت است) از اشاره گر به رکورد بعدی SEH (در آدرس 0012ffb0 ) و پرش به <jmp به > . بنابراین، هنگامی که ما پرش و اجرا پاپ، پاپ، ret ما به پرش کوتاه برسد. از <jmp به > به شل کد کد تزریق می رسد .

آدرس ها و مکان های خود را با WinDBG تایید کردم و مطمئن شدم که shellcode کار می کند. من حتی موفق به دریافت برنامه برای پرش به جایزه، اما نمی تواند اجرا شل کد کد تزریق (اجرا calc.exe)، من نیز شل کد متفاوت را امتحان کردم. من در windbg می بینم که من به ابتدای shellcode می روم اما به هر دلیلی shellcode بدون اجرا calc.exe پایان می یابد و من پیام را می بینم:

 0: 000> g
eax = 00000000 ebx = 00000000 ecx = 7c800000 edx = 00340608 esi = 7c90de50 edi = 0012f890
eip = 7c90e4f4 esp = 0012f680 ebp = 0012f77c iopl = 0 nv تا ei pl zr na pe nc
cs = 001b ss = 0023 ds = 0023 es = 0023 fs = 003b gs = 0000 efl = 00000246
ntdll! KiFastSystemCallRet:
7c90e4f4 c3 ret

آیا کسی میتواند توضیح دهد که چرا من نمیتوانم شل کد را اجرا کنم؟

خیلی ممنون از قبل.

توجه: خصوصیات پیکربندی را پیوست میکنم تا مطمئن شوم هیچ چیزی را که ممکن است با سوءاستفاده دخالت نکرده باشد:



    

ویروس – در واقع Goggle.com واقعا بدافزار دیوانه در سال 2006 بود؟

اجازه دهید من آنچه را که می بینم خلاصه کنم:

  • کسی به سایت توهین آمیز (goggle.com)
  • هدایت می شود و سپس با مرورگرهای متعدد، پنجره های هشدار و غیره پر می شود
  • ، ضد ویروس شروع به شناسایی بدافزارها میکند
  • سقوط دستگاه

دشوار است فکر کنیم که متخصصان تکنولوژی جوان در حال حاضر برای آنها این دنباله تازه و عجیب است. برای کسانی که از اینترنت در سال 2006 بودند، این واقعیت بود. من این را تجربه کردم، خودم، بارها بیشتر از آنچه که می توانستم حساب کنم. [1965،9007] برای پاسخ به سوال شما، این نه دیوانه و نه محدود به این یک سایت بود.

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

پنجره های هشدار دهنده، در واقع، پنجره های مرورگر بود، و هنگامی که با آنها تعامل داشتید ، آن را کلیک کنید کاربر را به "OK" برای نصب چیزی ترجمه شده است. این چگونه ویروس ها نصب شده اند.

بنابراین، این سنگهای کوچک ماشین شما را خراب می کنند (باعث راه اندازی مجدد سیستم) و تمام انواع ویروس ها را نصب می کند. گاهی اوقات غیرممکن است که آنها را بدون "ناپدید شدن از مدار" حذف کنند.

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

بازیابی اطلاعات – هنگام بارگذاری مجدد ویندوز، فایل های رمزگذاری شده را باز کنید

شما باید مشکلات را با جزئیات توضیح دهید. برای مثال، کدام الگوریتم برای رمزگذاری فایل مورد استفاده قرار گرفت.

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

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

تنها راهی که می توانید فایل های خود را بازگردانید، تلاش برای بازگرداندن فایل های کلیدی است. اگر شما خوش شانس هستید، می توانید آنها را از هارد دیسک خود بازگردانید.

درس شما باید یادآوری شود که بایستی کلیدهای شما را پشت سر بگذارند.