Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Исследование SAMInside 2.0 Demo

Обсудить статью на форуме

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.
Description : [WIN] SAMInside 2.0 DEMO
Crack subject : Alphbet can't be changed
Crack made by : Runtime_err0r
Crack made at : 27-02-2003
Comments : http://pwlinside.narod.ru/
Protection : (X)Beginner ( )Intermediate ( )Advanced ( )Expert
Time for hack : 00:20
Type of hack : Bit Hack
Used packer : WWPack32
Used unpacker : GUW32
File size : 74240 bytes
Src language : Assembler
Price : $40 US
Used tools : pe-scan 3.31, TRW 1.22 REGISTERED, LordPE, HIEW 6.83, IDA Pro 4.15 (or higher), calc.exe :-)))
Under Music : Radio ULTRA (100.5 FM)


Внимание !!!
Данная статья носит образовательный характер и предназначена для разработчиков программных защит.
Автор не несёт никакой ответственности за возможное использование материалов данной статьи в противозаконных целях.

1. ВВЕДЕНИЕ

Описание программы
Программа SAMInside выполняет следующие функции:
  • Получения информации о пользователях из SAM-файлов Windows'NT/2000/XP.
  • Подбор паролей пользователей из SAM-файлов операционной системы Windows'NT.
  • Подбор паролей пользователей из SAM-файлов операционных систем Windows'NT/2000/XP, зашифрованных SYSKEY.
В данной программе впервые была реализована возможность подбора паролей к SAM файлам систем Windows'NT/2000/XP, зашифрованных системным ключом SYSKEY. Пока ни одна другая программа не претендует на это, ввиду сложившегося стереотипа, что это невозможно! Однако, программа SAMInside доказывает обратное.


Ограничение demo-версии
Программа является Demo и требует небольшой платы за ее использование.
Вы можете использовать demo-версию неограниченно долго, но она имеет одно ограничение: нельзя использовать другой алфавит для перебора (цифры, национальные символы и пр.), кроме латиницы. То есть, Demo-версия программы полнофункциональна практичеcки на 95%!

2. РАСПАКОВКА

Прежде всего необходимо определить, чем прога запакована. Для этого можно воспользоваться утилитой pe-scan 3.31, хотя можно просто открыть её через F3 в FAR'е и обнаружить там секцию с названием WWP32, так что можно догадаться, что это WWPack32 (оф. сайт http://www.webmedia.pl/. Поскольку готового распаковщика для этой шняги нет, придётся сделать это самим (вообще-то он без проблем распаковывается универсальным анпакером GUW32, который можно скачать с сайта Unpacking Gods, но распаковать его вручную будет полезно для общего развития). Итак, загружаем файл SAMInside.exe в TRW жмём F10 и оказываемся здесь:
 019F:0041E000  PUSH     EBX
 019F:0041E001  PUSH     EBP
 019F:0041E002  MOV      EBP,EAX
 019F:0041E004  XOR      EBX,EBX
 019F:0041E006  JMP      SHORT 0041E068
 019F:0041E008  OR       EAX,570A0D0A
 019F:0041E00D  PUSH     EDI
 019F:0041E00E  PUSH     EAX
 019F:0041E00F  POPA
 
Далее есть два способа добраться до OEP - быстрый и классический:
  • Быстрый - ввести в TRW команду pnewsec;

  • Классический - жмём F10 ещё несколько раз, доходим до JMP SHORT 0041E068 и попадаем в секцию WWP32:
     019F:0041E068  CALL     0041E06D
     019F:0041E06D  POP      EAX
     019F:0041E06E  SUB      EAX,6D
     019F:0041E073  PUSH     EAX
     019F:0041E074  PUSHA
     019F:0041E075  XOR      ECX,ECX
     019F:0041E077  PUSH     EAX
     019F:0041E078  POP      EAX
     019F:0041E079  PUSH     EAX
     019F:0041E07A  PUSH     EAX
     019F:0041E07B  MOV      EBP,EAX
     019F:0041E07D  PUSH     ECX
     
    Теперь надо прокрутить окно кода немного вниз, пока не дойдём до команды POPA 1:
     019F:0041E27B  JZ       0041E265
     019F:0041E27D  ADD      ESI,EDX
     019F:0041E27F  JMP      SHORT 0041E271
     019F:0041E281  POP      EAX
     019F:0041E282  POPA 
     019F:0041E283  POP      EAX
     019F:0041E284  MOV      EBP,EAX
     019F:0041E286  ADD      EAX,[CS:EBP+0295]
     019F:0041E28D  ADD      EAX,0299
     019F:0041E292  POP      EBP
     019F:0041E293  POP      EBX
     019F:0041E294  JMP      004010E0   <--- Прыжок на OEP
     019F:0041E299  ADD      [EAX],AL
     019F:0041E29B  INC      EAX
     019F:0041E29C  ADD      [EAX],AL
     
    Теперь ставим бряк на 41E282 и F5, брякаемся жмём F10 несколько раз, пока не дойдём до джампа и оказываемся здесь:
     019F:004010DD  RET      08
     019F:004010E0  PUSH     BYTE +00 
     019F:004010E2  CALL     `KERNEL32!GetModuleHandleA`
     019F:004010E7  MOV      [00413A5C],EAX
     019F:004010EC  MOV      [00413A04],EAX
     019F:004010F1  PUSH     BYTE +0B
     019F:004010F3  PUSH     EAX
     019F:004010F4  CALL     `USER32!LoadBitmapA`
     
Теперь надо прогу зациклить, для этого в TRW есть замечательная команда suspend, теперь можно запустить LordPE и сдампить процесс (пусть дамп называется по умолчанию dumped.exe), потом жмём кнопку PE Editor и открываем наш дамп dumped.exe правим в нём EntryPoint на 10E0, потом жмём кнопку Sections и правим характеристики первой секции (.text) на E0000020 (на всякий случай). Теперь жмём Save и получаем готовый к употреблению распакованный exe'шник. Импорт этот пакер не портит, так что ImpRec и иже с ним нам не понадобится.

3. СНЯТИЕ ОГРАНИЧЕНИЙ

Теперь приступим непосредственно к увеличению алфавита: для этого открываем распакованный файл dumped.exe в HIEW и ищем строчку ABCDEF, после неё идёт много нулей, так что можно добавить к ней новые символы, я дописал 0123456789. Теперь надо сохранить изменения, найти где-нибудь файлы SAM и system и запустить перебор. Но нетрудно заметить, что в переборе участвуют только латинские буквы, несмотря на то, что в файле SAMInside.ini появилась строка Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.
Теперь самое время применить тяжёлую артиллерию, то есть IDA Pro (разумеется, у меня есть замечательный релиз DataRescue.IDA.Pro.Advanced.V4.3.0.740.RETAIL.READNFO-ZENiTH, но я пока пользуюсь старой проверенной версией 4.17). Итак, загружаем наш распакованный exe'шник в IDA, дожидаемся окончания анализа и идём в меню Search -> text... Вводим строку для поиска: ABCDEF и находим несколько ссылок:



меня заинтересовали 3-я и 5-я, где в регистр EDI помещается адрес начала алфавита.
Тут следует отметить, что длина стандартного алфавита равна 26-и символам, что в 16-ричной системе равно 1Ah (если в не можете пересчитать в уме, воспользуйтесь стандартным Виндузовским калькулятором). Теперь попробуем перейти по третьей ссылке:
 .text:00401C45 loc_0_401C45:                           ; CODE XREF: start+990.j
 .text:00401C45                                         ; start+B44.j
 .text:00401C45                 mov     eax, 1Ah
 .text:00401C4A                 mov     dword_0_413988, eax
 .text:00401C4F                 pxor    mm0, mm0
 .text:00401C52                 mov     esi, offset word_0_414169
 .text:00401C57                 movq    qword ptr [esi], mm0
 .text:00401C5A                 movq    qword ptr [esi+7], mm0
 .text:00401C5E                 push    esi             ; lParam
 .text:00401C5F                 push    0Fh             ; wParam
 .text:00401C61                 push    0Dh             ; Msg
 .text:00401C63                 push    dword_0_413958  ; hWnd
 .text:00401C69                 call    SendMessageA
 .text:00401C6E
 .text:00401C6E loc_0_401C6E:                           ; CODE XREF: start+B9D.j
 .text:00401C6E                 lodsb
 .text:00401C6F                 cmp     al, 20h
 .text:00401C71                 jb      short loc_0_401CAE
 .text:00401C73                 mov     edi, offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 .text:00401C78
 
Тут всё очевидно - надо просто открыть файл dumped.exe в HIEW и исправить mov eax, 1Ah на mov eax, 24h (24 HEX = 36 DEC). Теперь прога подбирает пароли состоящие из латинских букв и цифр !!!


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


Обсуждение статьи: Исследование SAMInside 2.0 Demo >>>


Комментарии к статье: Исследование SAMInside 2.0 Demo

6aHguT 22.02.2005 05:53:59
всё хорошо но у меня вместо строки
mov edi, offset aAbcdefghijklmn ; \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"
строка
mov edi, offset WindowName
почему так ,и как от этого избавиться ?
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS