Авторские статьи Исследование защиты Acunetix Web Scanner 4 build 20060809

Discussion in 'Статьи' started by Go0o$E, 17 Aug 2006.

Thread Status:
Not open for further replies.
  1. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    В этой статье будет описано исследование защиты и создание лоадера для Acunetix Web Scanner 4 build 20060809.
    Я буду использовать:
    1. Peid http://cracklab.ru/download.php?action=get&n=NTYw
    2. IDA http://cracklab.ru/download.php?action=get&n=MjE1
    3. OllyDBG http://cracklab.ru/download.php?action=get&n=MzYw
    4. Yoda's Process Patcher http://wasm.ru/baixado.php?mode=tool&id=41
    И так, в самом начале открываем wvs.exe в Peid и видим, что он ничем не запакован. Отлично! Можно сразу загнать wvs.exe в IDA. Подождем пока он закончит свою работу… Теперь можно приступать к анализу.
    1. Для разогрева уберем надписи EVALUATION edition.
    В IDA щелкаем по Strings Window, потом меню->Search->Search… и ищем строчку EVALUATION. Находим <Status>Evaluation</Status>, щелкаем по этой строчке и видим:

    CODE:007CBEC4 aStatusEvaluati db 9,' <Status>Evaluation</Status>',0
    CODE:007CBEC4 ; DATA XREF: sub_7CB32C+292 o

    Теперь щелкаем по CODE:007CB5BE и переходим сюда:
    CODE:007CB5B1 mov edx, [ebp-1E0h]
    CODE:007CB5B7 mov eax, ebx
    CODE:007CB5B9 call sub_4CA40C
    CODE:007CB5BE mov edx, offset aStatusEvaluati ; "\t <Status>Evaluation</Status>"
    CODE:007CB5C3 lea eax, [ebp-1CCh]
    CODE:007CB5C9 call sub_405654
    CODE:007CB5CE call sub_403A70

    А выше видим:
    CODE:007CB578 mov eax, [eax]
    CODE:007CB57A sub eax, 1
    CODE:007CB57D jb loc_7CB65A
    CODE:007CB583 jz short loc_7CB5F7 /CONSULTANT/
    CODE:007CB585 dec eax
    CODE:007CB586 jz short loc_7CB594 /EVALUATION/
    CODE:007CB588 dec eax
    CODE:007CB589 jz loc_7CB6E0
    CODE:007CB58F jmp loc_7CB714

    Запускаем OllyDBG, открываем wvs.exe и переходим на 007CB583.
    И изменяем CODE:007CB583 jz short loc_7CB5F7
    На CODE:007CB583 jmp short loc_7CB5F7

    Теперь внешне программа выглядит как Consultant Edition, кроме надписи при старте приложения.

    2. Уберем счетчик дней.
    Ищем строчку Your license period has expired и The evaluation period has expired
    Находим:

    CODE:007D61A3 cmp dword ptr [eax], 0
    CODE:007D61A6 jnz short loc_7D6221
    CODE:007D61A8 mov eax, ds:eek:ff_83DB0C
    CODE:007D61AD cmp byte ptr [eax], 0
    CODE:007D61B0 jz short loc_7D6221
    CODE:007D61B2 mov eax, ds:eek:ff_83D854
    CODE:007D61B7 push dword ptr [eax+4]
    CODE:007D61BA push dword ptr [eax]
    CODE:007D61BC push dword ptr ds:dbl_843728+4
    CODE:007D61C2 push dword ptr ds:dbl_843728
    CODE:007D61C8 call sub_5EC1B4
    CODE:007D61CD test al, al
    CODE:007D61CF jg short loc_7D6221
    CODE:007D61D1 mov eax, ds:eek:ff_83D0D4
    CODE:007D61D6 cmp byte ptr [eax], 0
    CODE:007D61D9 jnz short loc_7D61F2
    CODE:007D61DB push 0
    CODE:007D61DD mov cx, word_7D62B0
    CODE:007D61E4 xor edx, edx
    CODE:007D61E6 mov eax, offset aYourLicensePer ; "Your license period has expired.\r\nYou n"...
    CODE:007D61EB call sub_487FB0
    CODE:007D61F0 jmp short loc_7D6214
    CODE:007D61F2 ; ---------------------------------------------------------------------------
    CODE:007D61F2
    CODE:007D61F2 loc_7D61F2: ; CODE XREF: sub_7D5F24+2B5j
    CODE:007D61F2 push offset aYourLicensePer ; "Your license period has expired.\r\nYou n"...
    CODE:007D61F7 push 1

    Меняем jnz short loc_7D6221
    на jmp short loc_7D6221

    CODE:007D6226 cmp dword ptr [eax], 1
    CODE:007D6229 jnz short loc_7D628A
    CODE:007D622B mov eax, ds:eek:ff_83DB48
    CODE:007D6230 mov eax, [eax]
    CODE:007D6232 mov edx, ds:eek:ff_83D0B8
    CODE:007D6238 cmp eax, [edx]
    CODE:007D623A jl short loc_7D628A
    CODE:007D623C mov eax, ds:eek:ff_83D0D4
    CODE:007D6241 cmp byte ptr [eax], 0
    CODE:007D6244 jnz short loc_7D625D
    CODE:007D6246 push 0
    CODE:007D6248 mov cx, word_7D62B0
    CODE:007D624F xor edx, edx
    CODE:007D6251 mov eax, offset aTheEvaluationP ; "The evaluation period has expired.\r\nYou"...
    CODE:007D6256 call sub_487FB0
    CODE:007D625B jmp short loc_7D627F
    CODE:007D625D ; ---------------------------------------------------------------------------
    CODE:007D625D
    CODE:007D625D loc_7D625D: ; CODE XREF: sub_7D5F24+320j
    CODE:007D625D push offset aTheEvaluationP ; "The evaluation period has expired.\r\nYou"...
    CODE:007D6262 push 1

    И jnz short loc_7D628A
    на jmp short loc_7D628A


    Этим действием мы перепрыгиваем через сообщение об окончание времени использования триальной версии и теперь даже если количество дней уйдет в минус, программа будет работать дальше.

    3. Разблокировка ограничения сканирования сайтов.

    Ищем строчку (unable to resolve).
    Находим:

    CODE:005E7822 cmp byte ptr [ebx+42BCh], 0
    CODE:005E7829 jz short loc_5E783F
    CODE:005E782B test esi, esi
    CODE:005E782D jnz short loc_5E783F
    CODE:005E782F lea eax, [ebx+42C0h]
    CODE:005E7835 mov edx, offset aUnableToResolv ; "(unable to resolve)"
    CODE:005E783A call sub_404FBC

    А выше:

    CODE:005E77F3 test esi, esi
    CODE:005E77F5 jz short loc_5E781B
    CODE:005E77F7 mov eax, esi
    CODE:005E77F9 xor eax, 50EDC6ECh
    CODE:005E77FE jz short loc_5E781B
    CODE:005E7800 mov eax, esi
    CODE:005E7802 xor eax, 50EDC6EDh
    CODE:005E7807 jz short loc_5E781B
    CODE:005E7809 mov eax, esi
    CODE:005E780B xor eax, 50EDC6EDh
    CODE:005E7810 jz short loc_5E781B
    CODE:005E7812 mov byte ptr [ebx+42BCh], 1
    CODE:005E7819 jmp short loc_5E7822

    И меняем CODE:005E77F9 xor eax, 50EDC6ECh
    CODE:005E77FE jz short loc_5E781B
    На CODE:005E77F9 xor eax, eax
    CODE:005E77FE jmp short loc_5E781B


    Дальше ищем LE_CHECK
    Находим:

    CODE:0068B3B0 call sub_5CD2B8
    CODE:0068B3B5 push [ebp+var_18]
    CODE:0068B3B8 push offset aCgiBinLe_check ; "/cgi-bin/le_check_v3.exe"
    CODE:0068B3BD lea eax, [ebp+var_10]
    CODE:0068B3C0 mov edx, 4
    CODE:0068B3C5 call sub_4052F8
    CODE:0068B3CA mov edx, [ebp+var_10]
    CODE:0068B3CD mov eax, [ebx+0C4h]
    CODE:0068B3D3 call sub_5ED2B8
    CODE:0068B3D8 mov dl, 2
    CODE:0068B3DA mov eax, [ebx+0C4h]
    CODE:0068B3E0 call sub_5ED798
    CODE:0068B3E5 mov eax, [ebx+0C4h]
    CODE:0068B3EB mov eax, [eax+18h]
    CODE:0068B3EE mov ecx, [ebx+0BCh]
    CODE:0068B3F4 mov edx, offset aLe_check ; "LE_CHECK"
    CODE:0068B3F9 call sub_5E9E0C
    CODE:0068B3FE mov eax, [ebx+0C4h]
    CODE:0068B404 mov [eax+44h], ebx
    CODE:0068B407 mov dword ptr [eax+40h], offset sub_695758
    CODE:0068B40E call sub_5ED518
    CODE:0068B413 jmp loc_68B8AA

    И чтобы перескочить проверку, меняем
    CODE:0068B3F9 call sub_5E9E0C
    На CODE:0068B3F9 JMP SHORT 0068B418

    Теперь мы можем сканировать любые сайты, но только из текстового файла. Но так как это не всегда удобно каждый раз записывать сайт в текстовый файл, чтобы просканировать его. Поэтому, мы разблокируем ввод сайта в программе.

    4. Разблокировка ComboBox.

    Ищем строку Scan Wizard

    CODE:007C06C7 call sub_6191C8
    CODE:007C06CC mov dl, 2 / Заблокированный ComboBox/
    CODE:007C06CE call sub_618A10
    CODE:007C06D3 xor edx, edx
    CODE:007C06D5 mov eax, [ebx+34Ch]
    CODE:007C06DB call sub_619234
    CODE:007C06E0 mov eax, [ebx+3BCh]
    CODE:007C06E6 call sub_6191C8
    CODE:007C06EB call sub_6189F8
    CODE:007C06F0 mov edx, [eax]
    CODE:007C06F2 call dword ptr [edx+44h]
    CODE:007C06F5 mov eax, [ebx+3BCh]
    CODE:007C06FB call sub_6191C8
    CODE:007C0700 call sub_6189F8
    CODE:007C0705 mov edx, eax
    CODE:007C0707 mov eax, offset aScanWizardFile ; "\\Scan Wizard\\File History"
    CODE:007C070C call sub_6E951C

    Чтобы разблокировать ввод адреса нужно изменить
    CODE:007C06CC mov dl, 2
    На CODE:007C06CC mov dl, 1

    Этим действием мы разблокировали ввод адреса в Scan Wizard, но остался еще один в Web Scanner.

    Ищем Data\\Profiles\\VulnXML\\CrawlerAlerts.xml

    CODE:007FCC84 call sub_6191C8
    CODE:007FCC89 mov dl, 2
    CODE:007FCC8B call sub_618A10
    CODE:007FCC90 mov eax, [ebp-4]
    CODE:007FCC93 mov eax, [eax+29Ch]
    CODE:007FCC99 xor edx, edx
    CODE:007FCC9B call sub_619234
    CODE:007FCCA0 mov eax, ds:eek:ff_83D608
    CODE:007FCCA5 call sub_407024
    CODE:007FCCAA xor eax, eax
    CODE:007FCCAC push ebp
    CODE:007FCCAD push offset loc_7FCCFA
    CODE:007FCCB2 push dword ptr fs:[eax]
    CODE:007FCCB5 mov fs:[eax], esp
    CODE:007FCCB8 mov edx, ds:eek:ff_83D17C
    CODE:007FCCBE mov edx, [edx]
    CODE:007FCCC0 lea eax, [ebp-18h]
    CODE:007FCCC3 mov ecx, offset aDataProfiles_7 ; "Data\\Profiles\\VulnXML\\CrawlerAlerts.xml"...
    CODE:007FCCC8 call sub_405284

    И опять изменяем CODE:007FCC89 mov dl, 2
    На CODE:007FCC89 mov dl, 1

    Почти все, до полой версии осталось разблокировать Обновление и Сохранение отчетов. Но я думаю вам стоит попробовать сделать это самим, для закрепления материала.


    Теперь сохраняем все изменения в OllyDBG в файл. Если кто не знает: Правая кнопка мыши->Copy to Executable->All modifications и Save file. Теперь вроде все, но в этой версии еще добавили проверку целостности файла, поэтому сейчас мы сделаем лоадер, который будет делать изменения в памяти, а не в файле. А раз файл не изменяется, то и программа думает, что все хорошо.

    Запускаем Yoda's Process Patcher и нажимаем compare files, выбираем оригинальный и только что модифицированный нами файл. Сравниваем их, в Filename пишем wvs.exe(имя файла, который будет модифицирован при запуске лоадера) и, нажав кнопку make Loader, делаем лоадер.

    Вот мы и исследовали защиту новой версии Acunetix Web Scanner.
     
    #1 Go0o$E, 17 Aug 2006
    Last edited: 18 Aug 2006
    4 people like this.
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,297
    Reputations:
    327
    снимаем защиту от изменения wvs.exe (правим сразу файл на диске):

    Virtual addr: 004501B0
    File offset: 0004F5B0

    оригинальный вид:
    55 push ebp
    заменяем на:
    C3 retn

    .. все, терь экзешник никогда не заругается
    на модификацию кода.

    все, никаких лоадеров етц, пишем статический патч. :)
     
    #2 sn0w, 17 Aug 2006
    Last edited: 17 Aug 2006
  3. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>от мы и исследовали защиту новой версии Acunetix Web Scanner.
    только уто4ню, 4то далеко не новой, а 4астный слу4ай (Consultant Edition), так как обы4ный релиз О4ЕНЬ отли4ен от сабжа (особенно тут call sub_5E9E0C).

    НО в любом слу4ае, Go0o$E, респект за тутор и дерЖи +
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,297
    Reputations:
    327
    кстати примененный патч не работает нифига... те работает, но толку мало)
     
    #4 sn0w, 18 Aug 2006
    Last edited: 18 Aug 2006
  5. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    ну дык я ж писал, топикстартер исследовал лишь 4асти4ный слу4ай (консультант эдишн, в котором даж нагов нету), а в полном релизе защита на порядок сложнее
     
  6. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Да хотелось бы полную версию поюзать...
    кто нить вообще может сломать?
     
  7. silver

    silver New Member

    Joined:
    10 Oct 2006
    Messages:
    13
    Likes Received:
    0
    Reputations:
    -1
    лучше кейген делать.
     
  8. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>лучше кейген делать
    лу4ше - да
    проЩЕ - нет (особенно у4итывая объем кода модуля проверка клю4ей в либе)
     
  9. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    молодец всё понятно да и читать удобно держи +

    З.Ы. Ты в crack-team или сам по себе?
     
  10. silver

    silver New Member

    Joined:
    10 Oct 2006
    Messages:
    13
    Likes Received:
    0
    Reputations:
    -1
    >>лучше кейген делать
    > лу4ше - да
    > проЩЕ - нет (особенно у4итывая объем кода модуля проверка клю4ей в либе)

    понятно, что это намного сложнее чем делать патчи (которые нестабильны или вообще не работают). Но Acunetix того стоит.

    Допустим, есть реальный 7 day evaluation license key, содержит 38 знаков. Истекший правда, действовал с 02 Oct 2006 - 08 Oct 2006. Есть полная версия Enterprise на 1 website. Не так много данных для иследования ключей, но все же кое-что реальное.
     
    #10 silver, 11 Oct 2006
    Last edited: 11 Oct 2006
  11. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>которые то работают, то нет
    так же и про кейгены можно сказать

    >>допустим, есть реальный 7 day evaluation license key, содержит 38 знаков. Истекший правда, действовал с 02 Oct 2006 - 08 Oct 2006. Есть полная версия Enterprise на 1 website. Не так много данных для иследования ключей, но все же кое-что реальное.
    а вот имея хоть какие-то (даже истекшие) клю4и кейненнинг можно было бы намного ускорить... мне бы их в свое время...
     
  12. silver

    silver New Member

    Joined:
    10 Oct 2006
    Messages:
    13
    Likes Received:
    0
    Reputations:
    -1
    >>которые то работают, то нет
    > так же и про кейгены можно сказать
    если найти алгоритм, то будут генерить правильные ключи, к тому же кейгены не нарушают исходного кода.

    сейчас интерес к Acunetix есть?
     
  13. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>если найти алгоритм, то будут генерить правильные ключи
    если найти алгоритм...это уже из области теории вероятности

    >>к тому же кейгены не нарушают исходного кода.
    а пат4и нарушают исходный функционалный код? они, как правило, просто меняют логику выполнения модуля проверки

    и аргументы твои тут неуметсны, в 99% слу4аев кейгеннинг занимает гораздо больше времени пропат4ивания или нахождения верного клю4а (несмотря на то, 4то этот метод более универсален, эстети4ен и удобен)
     
  14. silver

    silver New Member

    Joined:
    10 Oct 2006
    Messages:
    13
    Likes Received:
    0
    Reputations:
    -1
    >>к тому же кейгены не нарушают исходного кода.
    >а пат4и нарушают исходный функционалный код? >они, как правило, просто меняют логику выполнения модуля проверки

    не надо ничего нарушать в логике программы, тем более в сложной. отсюда всякие баги и прочее.
    Да, поиск ключа времени занимает гораздо больше. Ломать напрямую проще, конечно. но отсюда и качество соответствующее. К примеру, SSG team создает кейгены, которые работают хорошо..
     
    #14 silver, 11 Oct 2006
    Last edited: 11 Oct 2006
  15. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    silver, а 4асто видишь кейгены от видных команд, которые работают плохо?


    хватит флеймить - тема закрыта
     
Thread Status:
Not open for further replies.