حالة الموضوع:
مغلق
  1. unCoder

    unCoder Developer

    الأنتساب:
    ‏3 ديسمبر 2012
    المشاركات:
    11
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الإقامة:
    NTOSKRNL
    [​IMG]

    T I B
    Thread Information Block

    كما نعلم أن كل عملية تعمل في نظامنا لها مساحة في الذاكرة وهي مساحة خاصة بها
    تقوم بتحميل ماتحتاج من [COLOR=Teal]مك[/COLOR][SIZE=3][COLOR=Teal]تبات ومعلومات فيها [/COLOR]
    [SIZE=3][SIZE=3][SIZE=3]ولابد من أن ت[SIZE=3]كون هذ[SIZE=3]ه المعلومات والبيانات [SIZE=3]من[SIZE=3]ظمة لنقل على شكل طبقات لن نتطرق لشرح مفصل

    [SIZE=3][COLOR=Teal][SIZE=3]أحد هذه الطبقات واللتي ت[SIZE=3]دعى TIB إختصار إل[SIZE=3]ى [/SIZE][/SIZE][/SIZE][/COLOR][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE]
    [SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=5][SIZE=3]
    Thread Information Bloc[SIZE=3]k

    [SIZE=3][SIZE=3]أحد طبقات [SIZE=3]الذاكرة الر[SIZE=3]ائعة [SIZE=3]لما تحتويه من معلومات وستركشرات عديدة ومفيدة

    [SIZE=3][SIZE=3][COLOR=Teal]في البداية [/COLOR][SIZE=3][COLOR=Teal]لم[/COLOR][SIZE=3][COLOR=Teal]ن [/COLOR][SIZE=3][COLOR=Teal]يتعامل او [/COLOR][SIZE=3][COLOR=Teal]لديه لمحة بسيطة ع[/COLOR][SIZE=3][COLOR=Teal]ن الأسمبلي [/COLOR][SIZE=3][COLOR=Teal]فلا بد أنه سمع عن [/COLOR][SIZE=3][COLOR=Teal]FS[/COLOR]
    [SIZE=3][SIZE=3][SIZE=3]هذا المسجل [SIZE=3]وهو المسجل المؤشر إلى طبقة ا[SIZE=3]لـ [SIZE=3]TI[SIZE=3]B والتبي تبدء من F[SIZE=3]S:[0] [COLOR=White]x[/COLOR][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE]


    لاكننا فعليا لانريد هذه الطبقة لما تحتويه من معلومات فنحن نريد
    طبقة توجد بداخل هذه الطبقة وتدعى TEB
    [SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=5][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3][SIZE=3]- Thr[SIZE=3]ead [/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE]Environment Block

    [​IMG]

    لنطلع على محتوى الطبقة العريقة هذه !!:{ وإلى ماذا تؤشر كل قيمة من FS

    كود PHP:
    Contents of the TIB
      
    Position Length Windows Versions Description
     
    FS
    :[0x004 Win9x and NT Current Structured Exception Handling (SEHframe
     
    FS
    :[0x044 Win9x and NT Top of stack
     
    FS
    :[0x084 Win9x and NT Current bottom of stack
     
    FS
    :[0x0C4 Unknown TIB Subsystem?
     
    FS:[0x104 NT Fiber data
     
    FS
    :[0x144 Win9x and NT Arbitrary data slot
     
    FS
    :[0x184 Win9x and NT Linear address of TIB
      
    ---- End of NT subsystem independent part ----
      
    FS:[0x1C4 NT Environment Pointer
     
    FS
    :[0x204 NT Process ID
     
    FS
    :[0x244 NT Current thread ID
     
    FS
    :[0x284 NT Active RPC Handle
     
    FS
    :[0x2C4 Win9x and NT Linear address of the thread-local storage array
     
    FS:[0x304 NT Linear address of Process Environment Block (PEB)
     
    FS:[0x344 NT Last error number
     
    FS
    :[0x384 NT Count of owned critical sections
     
    FS
    :[0x3C4 NT Address of CSR Client Thread
     
    FS
    :[0x404 NT Win32 Thread Information
     
    FS
    :[0x44124 NTWine
     
    Win32 client information 
    (NT),
     
    user32 private data (Wine), 0x60 LastError (Win95), 0x74 LastError (WinME)
      
    FS:[0xC04 NT Reserved for Wow32
     
    FS
    :[0xC44 NT Current Locale
     
    FS
    :[0xC84 NT FP Software Status Register
     
    FS
    :[0xCC216 NTWine Reserved for OS (NT), kernel32 private data (Wine)
     
    FS:[0x1244 NT Pointer to KTHREAD (ETHREADstructure
     
    FS
    :[0x1A44 NT Exception code
     
    FS
    :[0x1A818 NT Activation context stack
     
    FS
    :[0x1BC24 NTWine Spare bytes (NT), ntdll private data (Wine)
     
    FS:[0x1D440 NTWine Reserved for OS (NT), ntdll private data (Wine)
     
    FS:[0x1FC1248 NTWine GDI TEB Batch (OS), vm86 private data (Wine)
     
    FS:[0x6DC4 NT GDI Region
     
    FS
    :[0x6E04 NT GDI Pen
     
    FS
    :[0x6E44 NT GDI Brush
     
    FS
    :[0x6E84 NT Real Process ID
     
    FS
    :[0x6EC4 NT Real Thread ID
     
    FS
    :[0x6F04 NT GDI cached process handle
     
    FS
    :[0x6F44 NT GDI client process ID (PID)
     
    FS:[0x6F84 NT GDI client thread ID (TID)
     
    FS:[0x6FC4 NT GDI thread locale information
     
    FS
    :[0x70020 NT Reserved for user application
     
    FS
    :[0x7141248 NT Reserved for GL
     
    FS
    :[0xBF44 NT Last Status Value
     
    FS
    :[0xBF8532 NT Static UNICODE_STRING buffer
     
    FS
    :[0xE0C4 NT Pointer to deallocation stack
     
    FS
    :[0xE10256 NT TLS slots4 byte per slot
     
    FS
    :[0xF108 NT TLS links (LIST_ENTRY structure)
     
    FS:[0xF184 NT VDM
     
    FS
    :[0xF1C4 NT Reserved for RPC
     
    FS
    :[0xF284 NT Thread error mode (RtlSetThreadErrorMode)
    ربما أثار إنتباهكم وجود طبقة او ستركشر اخر ايضا
    PEB - Process Environment Block

    يمكننا إلقاء نظرة على محتواه أيضا

    كود PHP:
        typedef struct _PEB {
        
    BOOLEAN InheritedAddressSpace;
        
    BOOLEAN ReadImageFileExecOptions;
        
    BOOLEAN BeingDebugged;
        
    BOOLEAN Spare;
        
    HANDLE Mutant;
        
    PVOID ImageBaseAddress;
        
    PPEB_LDR_DATA LoaderData;
        
    PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
        
    PVOID SubSystemData;
        
    PVOID ProcessHeap;
        
    PVOID FastPebLock;
        
    PPEBLOCKROUTINE FastPebLockRoutine;
        
    PPEBLOCKROUTINE FastPebUnlockRoutine;
        
    ULONG EnvironmentUpdateCount;
        
    PPVOID KernelCallbackTable;
        
    PVOID EventLogSection;
        
    PVOID EventLog;
        
    PPEB_FREE_BLOCK FreeList;
        
    ULONG TlsExpansionCounter;
        
    PVOID TlsBitmap;
        
    ULONG TlsBitmapBits[0x2];
        
    PVOID ReadOnlySharedMemoryBase;
        
    PVOID ReadOnlySharedMemoryHeap;
        
    PPVOID ReadOnlyStaticServerData;
        
    PVOID AnsiCodePageData;
        
    PVOID OemCodePageData;
        
    PVOID UnicodeCaseTableData;
        
    ULONG NumberOfProcessors;
        
    ULONG NtGlobalFlag;
        
    BYTE Spare2[0x4];
        
    LARGE_INTEGER CriticalSectionTimeout;
        
    ULONG HeapSegmentReserve;
        
    ULONG HeapSegmentCommit;
        
    ULONG HeapDeCommitTotalFreeThreshold;
        
    ULONG HeapDeCommitFreeBlockThreshold;
        
    ULONG NumberOfHeaps;
        
    ULONG MaximumNumberOfHeaps;
        
    PPVOID *ProcessHeaps;
        
    PVOID GdiSharedHandleTable;
        
    PVOID ProcessStarterHelper;
        
    PVOID GdiDCAttributeList;
        
    PVOID LoaderLock;
        
    ULONG OSMajorVersion;
        
    ULONG OSMinorVersion;
        
    ULONG OSBuildNumber;
        
    ULONG OSPlatformId;
        
    ULONG ImageSubSystem;
        
    ULONG ImageSubSystemMajorVersion;
        
    ULONG ImageSubSystemMinorVersion;
        
    ULONG GdiHandleBuffer[0x22];
        
    ULONG PostProcessInitRoutine;
        
    ULONG TlsExpansionBitmap;
        
    BYTE TlsExpansionBitmapBits[0x80];
        
    ULONG SessionId;
        } 
    PEB, *PPEB;
    [​IMG]
    أما الآن فكيف نستطيع إستغلال هذه الطبقة ؟
    بمجرد النظر للمحتوى السابق نجد الكثير من الإستغلالات

    وبدلا من جلب الأدرس بشكل يدوي رغم أنه ثابت فهو موجود كما قلنا في FS[0x18] x
    لكن توجد دالة غير مدونة من ميكروسوفت بإسم NtCurrentTeb تمكنك من جلبه ايضا

    مثال بسيط على جلب نسخة الوندوز [ VB 6 ]

    كود PHP:
    'karcrack
        Private Declare Function NtCurrentTeb Lib "NTDLL" () As Long
        Private Declare Sub GetMem4 Lib "msvbvm60" (ByVal Addr As Long, ByRef RetVal As Long)

        Public Function VersiyonuOgren() As String
            Dim lPEB        As Long
            Dim lOSMa       As Long
            Dim lOSMi       As Long
            Dim lOSPlat     As Long

            Call GetMem4(NtCurrentTeb + &H30&, lPEB)
            Call GetMem4(lPEB + &HA4, lOSMa)
            Call GetMem4(lPEB + &HA8, lOSMi)
            Call GetMem4(lPEB + &HB0, lOSPlat)

            VersiyonuOgren = Join(Array(lOSPlat, lOSMa, lOSMi), ".")
        End Function

        Public Function SystemVersiyonuIsmeCevir(ByVal sVersion As String) As String
            Select Case sVersion
                Case "1.0.0":     SystemVersiyonuIsmeCevir = "Windows 95"
                Case "1.1.0":     SystemVersiyonuIsmeCevir = "Windows 98"
                Case "1.9.0":     SystemVersiyonuIsmeCevir = "Windows Millenium"
                Case "2.3.0":     SystemVersiyonuIsmeCevir = "Windows NT 3.51"
                Case "2.4.0":     SystemVersiyonuIsmeCevir = "Windows NT 4.0"
                Case "2.5.0":     SystemVersiyonuIsmeCevir = "Windows 2000"
                Case "2.5.1":     SystemVersiyonuIsmeCevir = "Windows XP"
                Case "2.5.3":     SystemVersiyonuIsmeCevir = "Windows 2003 (SERVER)"
                Case "2.6.0":     SystemVersiyonuIsmeCevir = "Windows Vista"
                Case "2.6.1":     SystemVersiyonuIsmeCevir = "Windows 7"
                Case "2.6.2":     SystemVersiyonuIsmeCevir = "Windows 8"
                Case Else:        SystemVersiyonuIsmeCevir = "Bilinmiyor"
            End Select
        End Function

        Sample : 


        Private Sub Form_Load()
        Text1.Text = SystemVersiyonuIsmeCevir(VersiyonuOgren)
        End Sub
    [​IMG]
    أتمنى أن ينال الموضوع على إعجابكم
    كمآ أتمنى أن تقوموا بالبحث والتعمق أكثر في هذا الموضوع فهو مفيد جدا &:"

     
حالة الموضوع:
مغلق

مشاركة هذه الصفحة