Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   Реверсинг протокола авторизации PKO/TOP/Пиратия (https://forum.antichat.xyz/showthread.php?t=106921)

data3000 19.02.2009 03:17

Реверсинг протокола авторизации PKO/TOP/Пиратия
 
Вообщем первым шагом устанавливается tcp соединение с 85.192.47.44 Destination port: 1973
Отправляем пакет с пустым содержанием получаем ответ вида:
Код:

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].

на этот ответ клиет отправляет
Код:

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 байтный, меняется при изменении логина, пароля, даты.

вок кусок процедуры из клиента:
Код:

.text:0041C7D9                                              ; sub_41BF40+6DAj ...
.text:0041C7D9 68 B8+                push    offset aNetlogin ; "netlogin"
.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  ; "nobill"
.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: где дальше копать

zeppe1in 19.02.2009 03:44

надо смотреть в отладчике.

neprovad 19.02.2009 08:10

у peid есть плагин неплохой - Kanal, поможет узнать какие криптобиблиотеки использовались

data3000 19.02.2009 10:35

Цитата:

Сообщение от neprovad
у peid есть плагин неплохой - Kanal, поможет узнать какие криптобиблиотеки использовались

спасибо действительно помогает хоть теперь примерно знаю что используется дальше буду пробовать в отладчике копать
Код:

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


data3000 19.02.2009 12:00

в серверной части также используетвся
Код:

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)" что это

Chaak 19.02.2009 12:08

Дес - алгоритм хэширования, кроме бейс64(ты его сразу узнаешь по разного регистра буквам и иногда по знакам равно на конце) в проге нет.

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

Скорей всего, как и в практически любом другом протоколе, используется бинарное пакование данных. Ищи его с помощью отладчика.
Бряк на WM_COMMAND в WndProc(это по нажатию кнопки если).

geezer.code 19.02.2009 12:42

Цитата:

Сообщение от ChaaK
Дес - алгоритм хэширования, кроме бейс64(ты его сразу узнаешь по разного регистра буквам и иногда по знакам равно на конце) в проге нет.

DES - data encryption standart - как раз таки алгоритм шифрования. А хэширование - вырожденные случай шифрования, просто всесто 56-битного ключа берется по 7 бит из первых 8 байт шифруемого сообщения, так получаем хэширование вместо шифрования.

geezer.code 19.02.2009 12:47

Цитата:

Сообщение от data3000
подскажите может кто встречал DES [pbox] [char] "DES key permutation (PBox) (1-based)" что это

pbox - матрица изменения ключа. 56битный ключ - проходит процедуру расширения до 64 бит. после этого кажется перед каждым циклом проходит пермутацию, на основе pbox, это матрица с зараниее известными значениям. pbox - обычно закладываются 1 раз в самом коде.

ProTeuS 19.02.2009 13:35

1. geezer.code все верно сказал
2. data3000. советую 2 способа, первый брякнуться не на коде самой отсылки, а до него, поставив бряку, на пример на винсоковский connect при установке соединения и там смотришь кто куда и за4ем коннектится. а немного далее по коду будет функи генерации пакетов, крипто и все 4то тебе нужно; второй, если не выйдет с первым, в том коде который ты привел выше, брякаешься, жмешь альт+к в отльке, смотришь откуда пришли по стеку, там дизасмишь, перезапускаешь прогу уже с бряками выше в надфункциях и исследуешь пока не найдешь код перекодирования вменяемых данных в шифрованые

zeppe1in 19.02.2009 15:04

а я бы брякнулся перед отправкой этого хеша поставил на него хардваре брекпойнт на акес и рестарт) он скорее всего копироваца будет много раз но так можно и найти место генерации.


Время: 04:08