Реверсинг протокола авторизации PKO/TOP/Пиратия

Discussion in 'Реверсинг' started by data3000, 19 Feb 2009.

  1. data3000

    data3000 New Member

    Joined:
    18 Feb 2009
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    Вообщем первым шагом устанавливается tcp соединение с 85.192.47.44 Destination port: 1973
    Отправляем пакет с пустым содержанием получаем ответ вида:
    Code:
    00 1F-80 00 00 00 03 AC 00 15  
      ..?....¬..
    5B 30 32 2D 31 38 20 32-31 3A 31 30 3A 34 38 3A  
      [02-18 21:10:48:
    34 36 31 5D 00                                    
      461].
    
    на этот ответ клиет отправляет
    Code:
    00 54-80 00 00 00 01 AF 00 07   
      .T?....¯..
    6E 6F 62 69 6C 6C 00 00-09 64 61 74 61 33 30 30   
      nobill...data300
    31 00 00 18 B1 DD 38 E6-43 6B 90 9B 27 EF CA 4C   
      1...±Ý8æCk�›'ïÊL
    98 29 B4 09 47 57 F6 33-D5 16 0E 24 00 18 30 30   
      ˜)´.GWö3Õ..$..00
    2D 44 30 2D 44 37 2D 30-46 2D 36 41 2D 34 33 2D   
      -D0-D7-0F-6A-43-
    30 30 2D 30 30 00 03 8F-00 88 
        00-00..�.ˆ
    
    т.е идет nobill...ИМЯ......ХЭШ

    хэш похоже идет 24 байтный, меняется при изменении логина, пароля, даты.

    вок кусок процедуры из клиента:
    Code:
    .text:0041C7D9                                               ; sub_41BF40+6DAj ...
    .text:0041C7D9 68 B8+                push    offset aNetlogin ; "[B]netlogin[/B]"
    .text:0041C7DE 8D 45+                lea     eax, [ebp+var_4C]
    .text:0041C7E1 50                    push    eax
    .text:0041C7E2 E8 39+                call    sub_404A20
    .text:0041C7E7 83 C4+                add     esp, 8
    .text:0041C7EA 84 C0                 test    al, al
    .text:0041C7EC 74 2F                 jz      short loc_41C81D
    .text:0041C7EE B8 10+                mov     eax, 10h
    .text:0041C7F3 39 45+                cmp     [ebp+var_6C], eax
    .text:0041C7F6 8B 4D+                mov     ecx, [ebp+var_80]
    .text:0041C7F9 73 03                 jnb     short loc_41C7FE
    .text:0041C7FB 8D 4D+                lea     ecx, [ebp+var_80]
    .text:0041C7FE
    .text:0041C7FE       loc_41C7FE:                             ; CODE XREF: sub_41BF40+8B9j
    .text:0041C7FE 39 45+                cmp     [ebp+var_18], eax
    .text:0041C801 8B 45+                mov     eax, dword ptr [ebp+var_2C]
    .text:0041C804 73 03                 jnb     short loc_41C809
    .text:0041C806 8D 45+                lea     eax, [ebp+var_2C]
    .text:0041C809
    .text:0041C809       loc_41C809:                             ; CODE XREF: sub_41BF40+8C4j
    .text:0041C809 68 B0+                push    offset aNobill  ; "[B]nobill[/B]"
    .text:0041C80E 51                    push    ecx
    .text:0041C80F 50                    push    eax
    .text:0041C810 E8 AB+                call    sub_5077C0
    .text:0041C815 83 C4+                add     esp, 0Ch
    .text:0041C818 E9 CE+                jmp     loc_41F3EB
    
    
    .text:005077C0       sub_5077C0      proc near               ; CODE XREF: sub_41BF40+8D0p
    .text:005077C0                                               ; sub_4C4D50+5Ep ...
    .text:005077C0
    .text:005077C0       arg_0           = dword ptr  4
    .text:005077C0       arg_4           = dword ptr  8
    .text:005077C0       arg_8           = dword ptr  0Ch
    .text:005077C0
    .text:005077C0 8B 44+                mov     eax, [esp+arg_8]
    .text:005077C4 8B 4C+                mov     ecx, [esp+arg_4]
    .text:005077C8 8B 54+                mov     edx, [esp+arg_0]
    .text:005077CC 50                    push    eax
    .text:005077CD A1 08+                mov     eax, dword_6C2508
    .text:005077D2 51                    push    ecx
    .text:005077D3 8B 88+                mov     ecx, [eax+324h]
    .text:005077D9 52                    push    edx
    .text:005077DA E8 C1+                call    sub_51A5A0
    .text:005077DF C3                    retn
    .text:005077DF       sub_5077C0      endp
    
    
    .text:0051A5A0       sub_51A5A0      proc near               ; CODE XREF: sub_5077C0+1Ap
    .text:0051A5A0
    .text:0051A5A0       hostshort       = word ptr -4E0h
    .text:0051A5A0       var_4DC         = dword ptr -4DCh
    .text:0051A5A0       var_4A4         = dword ptr -4A4h
    .text:0051A5A0       var_4A0         = dword ptr -4A0h
    .text:0051A5A0       var_490         = dword ptr -490h
    .text:0051A5A0       var_48C         = dword ptr -48Ch
    .text:0051A5A0       var_488         = dword ptr -488h
    .text:0051A5A0       var_410         = dword ptr -410h
    .text:0051A5A0       var_10          = dword ptr -10h
    .text:0051A5A0       var_C           = dword ptr -0Ch
    .text:0051A5A0       var_4           = dword ptr -4
    .text:0051A5A0       arg_0           = dword ptr  4
    .text:0051A5A0       arg_4           = dword ptr  8
    .text:0051A5A0       arg_8           = dword ptr  0Ch
    .text:0051A5A0
    .text:0051A5A0 6A FF                 push    0FFFFFFFFh
    .text:0051A5A2 68 CC+                push    offset loc_5F6FCC
    .text:0051A5A7 64 A1+                mov     eax, large fs:0
    .text:0051A5AD 50                    push    eax
    .text:0051A5AE 64 89+                mov     large fs:0, esp
    .text:0051A5B5 81 EC+                sub     esp, 4D4h
    .text:0051A5BB A1 44+                mov     eax, dword_65F044
    .text:0051A5C0 8B 15+                mov     edx, dword_6C2508
    .text:0051A5C6 55                    push    ebp
    .text:0051A5C7 56                    push    esi
    .text:0051A5C8 57                    push    edi
    .text:0051A5C9 8B BC+                mov     edi, [esp+4ECh+arg_0]
    .text:0051A5D0 8B E9                 mov     ebp, ecx
    .text:0051A5D2 89 84+                mov     [esp+4ECh+var_10], eax
    .text:0051A5D9 8B CF                 mov     ecx, edi
    .text:0051A5DB 81 C2+                add     edx, 3ACh
    .text:0051A5E1
    .text:0051A5E1       loc_51A5E1:                             ; CODE XREF: sub_51A5A0+49j
    .text:0051A5E1 8A 01                 mov     al, [ecx]
    .text:0051A5E3 41                    inc     ecx
    .text:0051A5E4 88 02                 mov     [edx], al
    .text:0051A5E6 42                    inc     edx
    .text:0051A5E7 84 C0                 test    al, al
    .text:0051A5E9 75 F6                 jnz     short loc_51A5E1
    .text:0051A5EB 8B B4+                mov     esi, [esp+4ECh+arg_4]
    .text:0051A5F2 8B 15+                mov     edx, dword_6C2508
    .text:0051A5F8 8B CE                 mov     ecx, esi
    .text:0051A5FA 81 C2+                add     edx, 410h
    .text:0051A600
    .text:0051A600       loc_51A600:                             ; CODE XREF: sub_51A5A0+68j
    .text:0051A600 8A 01                 mov     al, [ecx]
    .text:0051A602 41                    inc     ecx
    .text:0051A603 88 02                 mov     [edx], al
    .text:0051A605 42                    inc     edx
    .text:0051A606 84 C0                 test    al, al
    .text:0051A608 75 F6                 jnz     short loc_51A600
    .text:0051A60A 56                    push    esi             ; char *
    .text:0051A60B 57                    push    edi             ; int
    
    
    имеется и клиентская часть и серверная часть (без исходников конечно),

    вот всё пытаюсь самостоятельно сгенерировать этот ХЭШ но всё никак не могу найти где он генерируется в клиете, если кто может подскажите чем можите :confused: где дальше копать
     
    #1 data3000, 19 Feb 2009
    Last edited: 19 Feb 2009
    2 people like this.
  2. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    надо смотреть в отладчике.
     
  3. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    у peid есть плагин неплохой - Kanal, поможет узнать какие криптобиблиотеки использовались
     
  4. data3000

    data3000 New Member

    Joined:
    18 Feb 2009
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    спасибо действительно помогает хоть теперь примерно знаю что используется дальше буду пробовать в отладчике копать
    Code:
    ADLER32 :: 00147F3A :: 00547F3A
    	The reference is above.
    BASE64 table :: 00214608 :: 00614608
    	Referenced at 00575DD5
    	Referenced at 00575E01
    	Referenced at 00575E2E
    	Referenced at 00575E4C
    	Referenced at 00575E8A
    	Referenced at 00575ECA
    	Referenced at 00575EF4
    CRC32 :: 00212A38 :: 00612A38
    	Referenced at 00540AD2
    	Referenced at 00540AE4
    	Referenced at 00540AF9
    	Referenced at 00540B0E
    	Referenced at 00540B23
    	Referenced at 00540B38
    	Referenced at 00540B4D
    	Referenced at 00540B62
    	Referenced at 00540B86
    DES [pbox] [char] :: 002147D0 :: 006147D0
    	Referenced at 00576D12
    DES [pbox] [char] :: 00214B28 :: 00614B28
    	Referenced at 00578384
    DES [pbox] [char] :: 00214E70 :: 00614E70
    	Referenced at 0057889A
    DES [sbox] :: 002569E0 :: 006569E0
    	Referenced at 004E4F42
    	Referenced at 004E4FD4
    MD5 :: 0018552E :: 0058552E
    	The reference is above.
    SHA1 [Compress] :: 001762D4 :: 005762D4
    	The reference is above.
    SHA1 [Compress] :: 00177A4A :: 00577A4A
    	The reference is above.
    ZLIB deflate [long] :: 00213310 :: 00613310
    	Referenced at 005492FD
    
     
  5. data3000

    data3000 New Member

    Joined:
    18 Feb 2009
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    в серверной части также используетвся
    Code:
    BASE64 table :: 000549B8 :: 004549B8
    DES [pbox] [char] :: 00054B80 :: 00454B80
    DES [pbox] [char] :: 00054ED8 :: 00454ED8
    DES [pbox] [char] :: 00055220 :: 00455220
    MD5 :: 0003896E :: 0043896E
    SHA1 [Compress] :: 00031F44 :: 00431F44
    SHA1 [Compress] :: 000336BA :: 004336BA
    
    подскажите может кто встречал DES [pbox] [char] "DES key permutation (PBox) (1-based)" что это
     
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Дес - алгоритм хэширования, кроме бейс64(ты его сразу узнаешь по разного регистра буквам и иногда по знакам равно на конце) в проге нет.

    Дес строго 12 символов в длину. 12 + 12 = 24

    Скорей всего, как и в практически любом другом протоколе, используется бинарное пакование данных. Ищи его с помощью отладчика.
    Бряк на WM_COMMAND в WndProc(это по нажатию кнопки если).
     
    #6 Chaak, 19 Feb 2009
    Last edited: 19 Feb 2009
    1 person likes this.
  7. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    DES - data encryption standart - как раз таки алгоритм шифрования. А хэширование - вырожденные случай шифрования, просто всесто 56-битного ключа берется по 7 бит из первых 8 байт шифруемого сообщения, так получаем хэширование вместо шифрования.
     
  8. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    pbox - матрица изменения ключа. 56битный ключ - проходит процедуру расширения до 64 бит. после этого кажется перед каждым циклом проходит пермутацию, на основе pbox, это матрица с зараниее известными значениям. pbox - обычно закладываются 1 раз в самом коде.
     
    #8 geezer.code, 19 Feb 2009
    Last edited: 19 Feb 2009
  9. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    541
    Reputations:
    445
    1. geezer.code все верно сказал
    2. data3000. советую 2 способа, первый брякнуться не на коде самой отсылки, а до него, поставив бряку, на пример на винсоковский connect при установке соединения и там смотришь кто куда и за4ем коннектится. а немного далее по коду будет функи генерации пакетов, крипто и все 4то тебе нужно; второй, если не выйдет с первым, в том коде который ты привел выше, брякаешься, жмешь альт+к в отльке, смотришь откуда пришли по стеку, там дизасмишь, перезапускаешь прогу уже с бряками выше в надфункциях и исследуешь пока не найдешь код перекодирования вменяемых данных в шифрованые
     
    1 person likes this.
  10. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    а я бы брякнулся перед отправкой этого хеша поставил на него хардваре брекпойнт на акес и рестарт) он скорее всего копироваца будет много раз но так можно и найти место генерации.