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

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

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

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



    

samba با استفاده از metasploit کار نمی کند

من از metasploit برای بهره برداری از یک نسخه آسیب پذیر Samba در یک میزبان از راه دور استفاده می کنم.
Samba نسخه 2.2.8، به طور مستقیم از سایت cv دانلود شده است.

اما زمانی که من از exploit trans2open با payload استفاده می کنم (generic / shell_reverse_tcp)، خطا زیر را می بینم:

 Exploit failed [no-access]: Rex :: Proto :: SMB :: Exceptions :: LoginError Login failed: متغیر یا روش undefined args برای # 
[*]  Exploit completed، اما هیچ session ایجاد نشد.

این است که چگونه متغیرهای من تنظیم می شوند:

 گزینه های نمایش

من دو ماشین مجازی را در AWS اجرا می کنم. یکی با کالی لینوکس و یکی دیگر با سامبا است. و بله تمام فایروال ها غیرفعال می شوند.

آیا کسی یک سرنخ دارد که شاید علت مشکل باشد؟

exploit – trans2open در metasploit کار نمی کند

من از metasploit با msfconsole استفاده می کنم تا از یک نسخه آسیب پذیر سامبا در یک میزبان از راه دور استفاده شود.

نسخه سامبو هیچ تغییری نداشته و نسخه آن 2.2.8 است و به طور مستقیم از سایت cv دانلود شده است.

اما هنگام استفاده از exploit trans2open با payload (generic / shell_reverse_tcp) خطا زیر را دریافت میکنم: [19659002[Exploitfailed] [no-access]: Rex :: Proto :: SMB :: Exceptions :: LoginError Login failed: متغیر یا روش undefined 'args' برای #
[*] انفجار تکمیل شد، اما هیچ جلسه ای ایجاد نشد.

دو ماشین مجازی را بر روی Aws اجرا می کنم. یکی با کالی لینوکس و یکی دیگر با سامبا است. و بله تمام فایروال ها غیر فعال هستند!

شبکه – خطرات امنیتی برای افشای VM به آدرس IP تنها در اینترنت

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

در حال حاضر سرور فیزیکی نیز به عنوان یک سرور VPN عمل می کند و Cloud VM به شبکه محلی اداری از طریق این VPN با L2TP و IPSec متصل می شود. هنگامی که سرور فیزیکی را خاموش می کنم، VPN نیز کشتن خواهد شد.

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

سوال من این است که خطرات امنیتی واقع بینانه در این فرآیند دخیل هستند؟ آیا آسان است که به استفاده از آن، حتی زمانی که من آن را فقط به یک آدرس IP منحصر به فرد؟ آیا باید از این استراتژی جلوگیری کنم و رویکرد VPN را حفظ کنم؟

مهندسی معکوس – آیا امکان سوءاستفاده از نرم افزارهای C / C ++ غیر فشرده بدون فوروارد وجود دارد؟

بله، کاملا امکان پذیر است. شما می توانید از طریق تمام مأموریت ها بخوانید، تعیین کنید چه شرایطی برای آنها حساب نشده و سپس آنها را مورد سوء استفاده قرار دهید. در حقیقت، حتی هنگام استفاده از fuzzing، شما نیاز به خواندن از طریق مونتاژ برای کشف کردن وجود دارد: یک اشکال قابل بهره برداری است، و b تعیین نحوه ایجاد این استثمار.

همه fuzzing آیا شما کمک می کند تا تعیین کنید که در آن شرایط خطا ممکن است با تلاش بیشترین ورودی ها ممکن باشد.