Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Брутфорсер на Асме
. 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 18.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 14 октября 2006 03:40 · Поправил: RUffex
· Личное сообщение · #1

«Этот топик просвещается всем тем, кто видел на экране страшное «Черное окно», обрывающее все наивные детские мечты. Своим невыносимым «Enter Password» оно убивало в нас радость и душевный покой. Многие наши товарищи пытались избавиться от него, долгими зимними вечерами, набирая все пришедшие в голову комбинации, но лишь единицы этих великих людей дожили до наших дней, нервно выстукивая чечётку пальцами уже не только на клавиатуре, но и на лавочках, в подвалах, на вокзале. Не знали она, бедные, о том, что процесс подбора пароля можно автоматизировать, программно обращаясь к окнам и их элементам. Это совсем легко, надо лишь освоить нехитрые принципы взаимодействия окон» (журнал «Хакер»)»


Респект низкоуровневые кодеры!
Я начал писать свой переборщик паролей (можно и для брутфорса рег.ключей юзать).

Какие функции необходимо использовать?

Алгоритм такой:
А) находим окно для ввода пароля
Б) находим EditBox
В) генерируем пароль
Г) помещаем его в EditBox
Д) Эмулируем нажатие кнопки ОК
Е) Если вылетает MessageBox, проверяем по тексту сообщения
Угадали ( переход на п. И)
не угадали ( переход на п. Ж)
Ж) Закрываем ругательство
З) Вычеркиваем неправильный пароль ( переход на п. Б)
И) Сообщаем радостное известие с правильным паролем


A)
RegText db "Register Software",0
invoke FindWindow, NULL,OFFSET RegText
test eax,eax
jnz found

Б)
found:
invoke FindWindowEx,NULL,NULL,EditBox,ADDR RegText
; Правильно ли я указываю параметры этой функции? Не компиллится что-то...



Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 14 октября 2006 03:48 · Поправил: Cigan
· Личное сообщение · #2

invoke FindWindowEx,NULL,NULL,EditBox,ADDR RegText
Правильно так :
invoke FindWindowEx,NULL,NULL,offset EditBox,ADDR RegText

А вообще в спарвочнике по API все описано. Или msdn на крайней случай




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 14 октября 2006 03:51
· Личное сообщение · #3

это плохой вариант. будешь терять время из-за работы апи. самый правильный вариант - инжектить брут в процесс и передавать из него управление сразу на функцию проверки. А из неё обратно в брут при неправильном пассе.
Не забывай, что иногда делают закрывающееся окно ввода номера при направильном вводе, проверку при загрузке, паузу между вводами. ИМХО, не трать время а фигню

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




Ранг: 18.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 14 октября 2006 04:01
· Личное сообщение · #4

Rascal пишет:
самый правильный вариант - инжектить брут в процесс и передавать из него управление сразу на функцию проверки. А из неё обратно в брут при неправильном пассе.

Интересно… где можно про это почитать?


Rascal пишет:
иногда делают закрывающееся окно ввода номера при направильном вводе, проверку при загрузке, паузу между вводами

Иногда, да не всегда.


Rascal пишет:
не трать время а фигню

Хочу хоть чуть-чуть научиться программировать на ассемблере. Делать проги по книжкам и туторам – неинтересно, а вот самому до чего-то дойти – другое дело. Брутфорсер в моем случае – хороший вариант.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 14 октября 2006 04:20
· Личное сообщение · #5

Rascal пишет:
самый правильный вариант - инжектить брут в процесс и передавать из него управление сразу на функцию проверки.

В случае универсального подборщика не катит. Например, в прогу вводится имя класса окошка, время задержи и т.д.
Но для конкретной проги - прекрасная оптимизация. Исключения могут составить функции проверки, изменяющие глобальные данные, самомодифицирущийся код и т.д.

RUffex пишет:
Делать проги по книжкам и туторам – неинтересно, а вот самому до чего-то дойти – другое дело.

ЛОЛ. Сама идея такого подбора весьма нетривиальна, где ж здесь ты сам до чего-то дошел?




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 14 октября 2006 04:23
· Личное сообщение · #6

RUffex пишет:
Интересно… где можно про это почитать?

А чё читать - ищешь в программе процедуру проверки, смотришь параметры, смотришь что на выходе. Далее дописываешь куда хчешь код переборщика, и делаешь переход из переборщика на проверку, с проверку на переборщик. При правильном переход на конец. Всё.

RUffex пишет:
Хочу хоть чуть-чуть научиться программировать на ассемблере.

Чё на нём программить. Почитай обсуждение --> Link <--

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





Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 14 октября 2006 04:27
· Личное сообщение · #7

HoBleen пишет:
В случае универсального подборщика не катит

Универсальный подборщик такого плана как хочет RUffex не будет быстрым.

HoBleen пишет:
Исключения могут составить функции проверки, изменяющие глобальные данные, самомодифицирущийся код и т.д.

Всё относительно. Таких штук меньше, чем проверок при запуске и закрытий окон.

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





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 14 октября 2006 04:46 · Поправил: Flint
· Личное сообщение · #8

RUffex
Тут посмотри

[url=http://wasm.ru/print.php?article=cycle_pwd
]http://wasm.ru/print.php?article=cycle_pwd
[/url]

А еще вот на досуге накатал на скорую руку. (Сильно не пинать!)

Код Brute-forcera для перебора пароля из 9 символов
Для того чтоб это работало необходимо найти место где берется пароль и где проверяется

00407D28 |. MOV EDI,EAX
00407D2A |. PUSH 400 ; /Count = 400 (1024.)
00407D2F |. PUSH EDI ; |Buffer
00407D30 |. PUSH 0BB9 ; |ControlID = BB9 (3001.)
00407D35 |. MOV EAX,DWORD PTR DS:[40A850] ; |
00407D3A |. PUSH EAX ; |hWnd => 00E10388 ('[Cracking]',class='#32770')
00407D3B |. CALL 004045DC ; \GetDlgItemTextA
00407D40 |. CMP BYTE PTR DS:[EDI],0 EDI = 0090083C

Здесь видно что фукция GetDlgItemTextA берет введенный пароль и возвращает его в регистре EDI. Следует запомнить два адреса. 1. Адрес следующей инструкции - 00407D40, он нам понадобится для того чтобы на него сделать jmp после инкремента пароля.
2. Адрес хранимого пароля = 0090083C, он нужен для того чтобы работать с введенным паролем.

Теперь доходим до места условного перехода, где решается верный/неверный пароль.

00407F77 JNZ SHORT 00407FA4

Испралять его не нужно, а вот место куда он указывает: 00407FA4, следует осмотреть.
Тут мы попадаем в функцию SetDlgItemTextA, которая сообщает нам что пароль не верный.
Делаем так. Меняем первую инструкцию функции SetDlgItemTextA на JMP XXXX,
где, XXXX - адрес процедуры инкремента пароля. Теперь, если пароль неверный происходит джамп на инкремент пароля. Адресс XXXX, выбирается просто: любое пустое место в памяти программы, в которое поместится код инкремента пароля.
В моей программе он был такой:

________________________________________________________________

004094A0 PUSHAD ; Следует сохранить все регистры в стеке
004094A1 MOV EAX,90083C ; <<<<< Сюда помещаем адрес введенного пароля
004094A6 NOP
004094A7 XOR CL,CL
004094A9 MOV CL,BYTE PTR DS:[EAX+8] ; помещаем 9 символ в cl
004094AC CMP CL,0FF ; сравниваем не равен ли он ff
004094AF JE SHORT 004094BB ; если равен переходим на обнуление
004094B1 INC CL ; иначе увеличиваем ASCII код символа на 1
004094B3 MOV BYTE PTR DS:[EAX+8],CL ; и записываем на место 9 символа пароля
004094B6 JMP 00409574 ; Идем к выходу з цикла
004094BB MOV BYTE PTR DS:[EAX+8],20 ; Обнуляем 9 символ
004094BF XOR CL,CL ; Обнуляем регистр cl
004094C1 MOV CL,BYTE PTR DS:[EAX+7] ; и переходим к 8 символу
004094C4 CMP CL,0FF ; и т. д.
004094C7 JE SHORT 004094D3
004094C9 INC CL
004094CB MOV BYTE PTR DS:[EAX+7],CL
004094CE JMP 00409574
004094D3 MOV BYTE PTR DS:[EAX+7],20
004094D7 XOR CL,CL
004094D9 MOV CL,BYTE PTR DS:[EAX+6]
004094DC CMP CL,0FF
004094DF JE SHORT 004094EB
004094E1 INC CL
004094E3 MOV BYTE PTR DS:[EAX+6],CL
004094E6 JMP 00409574
004094EB MOV BYTE PTR DS:[EAX+6],20
004094EF XOR CL,CL
004094F1 MOV CL,BYTE PTR DS:[EAX+5]
004094F4 CMP CL,0FF
004094F7 JE SHORT 00409503
004094F9 INC CL
004094FB MOV BYTE PTR DS:[EAX+5],CL
004094FE JMP SHORT 00409574
00409500 NOP
00409501 NOP
00409502 NOP
00409503 MOV BYTE PTR DS:[EAX+5],20
00409507 XOR CL,CL
00409509 MOV CL,BYTE PTR DS:[EAX+4]
0040950C CMP CL,0FF
0040950F JE SHORT 0040951B
00409511 INC CL
00409513 MOV BYTE PTR DS:[EAX+4],CL
00409516 JMP SHORT 00409574
00409518 NOP
00409519 NOP
0040951A NOP
0040951B MOV BYTE PTR DS:[EAX+4],20
0040951F XOR CL,CL
00409521 MOV CL,BYTE PTR DS:[EAX+3]
00409524 CMP CL,0FF
00409527 JE SHORT 00409533
00409529 INC CL
0040952B MOV BYTE PTR DS:[EAX+3],CL
0040952E JMP SHORT 00409574
00409530 NOP
00409531 NOP
00409532 NOP
00409533 MOV BYTE PTR DS:[EAX+3],20
00409537 XOR CL,CL
00409539 MOV CL,BYTE PTR DS:[EAX+2]
0040953C CMP CL,0FF
0040953F JE SHORT 0040954B
00409541 INC CL
00409543 MOV BYTE PTR DS:[EAX+2],CL
00409546 JMP SHORT 00409574
00409548 NOP
00409549 NOP
0040954A NOP
0040954B MOV BYTE PTR DS:[EAX+2],20
0040954F XOR CL,CL
00409551 MOV CL,BYTE PTR DS:[EAX+1]
00409554 CMP CL,0FF
00409557 JE SHORT 00409563
00409559 INC CL
0040955B MOV BYTE PTR DS:[EAX+1],CL
0040955E JMP SHORT 00409574
00409560 NOP
00409561 NOP
00409562 NOP
00409563 MOV BYTE PTR DS:[EAX+1],20
00409567 XOR CL,CL
00409569 MOV CL,BYTE PTR DS:[EAX]
0040956B CMP CL,0FF
0040956E JE SHORT 0040957F ; Выход из цикла, если пароль не найден
00409570 INC CL
00409572 MOV BYTE PTR DS:[EAX],CL
00409574 POPAD ; Восстанавливаем регистры
00409575 MOV EDI,90083C ; Записываем измененный пароль в EDI
0040957A JMP 00407D40 ; Выход из цикла инкремента пароля
на следующую проверку. 00407D40 - адресс инструкции
следующей после GetDlgItemTextA.
______________________________________________________________________ ____________________


00407F77 JNZ SHORT 00407FA4 Условный переход который определяет верный/неверный пароль

Следующие за ним инструкции следует поменять на:

PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
PUSH 403030 ; |Title = "Пароль найден" <<<< Пишем эту строку где-нибудь в пямяти
PUSH 90083C ; |Text = "" <<<< Адрес буфера введеного пароля
PUSH 0 ; |hOwner = NULL
CALL 004010EA ; \MessageBoxA


Чтобы после нахождения верного пароля появился MessageBoxA

-----
Nulla aetas ad discendum sera




Ранг: 18.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 14 октября 2006 05:00
· Личное сообщение · #9

Rascal пишет:
ищешь в программе процедуру проверки, смотришь параметры, смотришь что на выходе. Далее дописываешь куда хчешь код переборщика, и делаешь переход из переборщика на проверку, с проверку на переборщик. При правильном переход на конец. Всё.

Попробую.

HoBleen пишет:
где ж здесь ты сам до чего-то дошел

Я не беру готовых вариантов. Думаю сам. Может и иду по уже проторенной дороге, зато САМ.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 14 октября 2006 05:34
· Личное сообщение · #10

RUffexRUffex пишет:
Алгоритм такой:
А) находим окно для ввода пароля
Б) находим EditBox
В) генерируем пароль
Г) помещаем его в EditBox
Д) Эмулируем нажатие кнопки ОК
Е) Если вылетает MessageBox, проверяем по тексту сообщения
Угадали ( переход на п. И)
не угадали ( переход на п. Ж)
Ж) Закрываем ругательство
З) Вычеркиваем неправильный пароль ( переход на п. Б)
И) Сообщаем радостное известие с правильным паролем


для такого алгоритма знание ассемблера необязательно.
Есть утилита Inqsoft Sign of Misery 2.7, на ней можно скрипт забабахать и все. Правда скорость перебора будет очень низкая.

-----
Nulla aetas ad discendum sera





Ранг: 327.3 (мудрец)
Активность: 0.250
Статус: Участник

Создано: 14 октября 2006 05:58
· Личное сообщение · #11

такой переборщик уже есть

-----
in search of sunrise




Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 14 октября 2006 07:40
· Личное сообщение · #12

Да а если там буквы и цифры приведите кто нить если знаете как быть.
Да и чета алгоритм большой.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 14 октября 2006 08:21
· Личное сообщение · #13

Dark Star
Сам напиши для начала. Все знают как быть, видимо кроме тебя. На счёт большой - да.

bloom пишет:
такой переборщик уже есть

Молодёж считает хорошим путём учения программингу из-обретение велосипеда. И в некоторых случаях это правильный выбор

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




Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 14 октября 2006 08:32
· Личное сообщение · #14

Ну еслиб знал то не спрашивал бы наверное.
а остальные не знают, либо впадлу либо жаба душит написать.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 14 октября 2006 11:19
· Личное сообщение · #15

Dark Star
Сколько тебе лет? Если ты такого не можешь написать, значит или у тебя слишком мало опыта, или мозга. Без обид. Простейшая алгоритмическая задачка. Вариантов решения немало. Сам придумать можешь которые. Если такое не написать, то программингом заниматься не советую.

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




Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 14 октября 2006 11:32
· Личное сообщение · #16

Ну да а если английский,русский алфавит,символы,цифры.
Если я вообще брутов раньше не писал то что?
Неделю что сидеть и разбираться и накатаю на хуе... тучу страниц текста и бедет работать Ruffex хочет написать.Нах он такой нужен проще уж ломануть или качнуть готовый.
Потому и спрашиваю что хочу увидеть наиболее оптимизированный и быстрый.




Ранг: 233.1 (наставник), 30thx
Активность: 0.210
Статус: Участник

Создано: 14 октября 2006 12:18
· Личное сообщение · #17

bloom пишет:
такой переборщик уже есть


заделись!
линку в студию...
=)

-----
AutoIt





Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 14 октября 2006 12:23
· Личное сообщение · #18

Dark Star пишет:
Если я вообще брутов раньше не писал то что?

Написать для понятия работы и посмотреть как сможешь улучшить своё. Очень полезное занятие.

Dark Star пишет:
Потому и спрашиваю что хочу увидеть наиболее оптимизированный и быстрый.

Нет предела совершенству. Смотри на васме. Там была тема и обсуждение активное. Вроде в статьях

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




Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 14 октября 2006 14:29
· Личное сообщение · #19

Ща поищу но всеравно дал бы свою линку.



Ранг: 18.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 14 октября 2006 19:21 · Поправил: RUffex
· Личное сообщение · #20

Flint пишет:
Есть утилита Inqsoft Sign of Misery 2.7

Слыхал про такие, даже пробовал..

Dark Star пишет:
проще уж ломануть

Иногда проще, но не всегда.

Dark Star пишет:
качнуть готовый

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



Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 15 октября 2006 03:24
· Личное сообщение · #21

Ну так лучше по какой никакой дороге чем через лес и горы напрямик.

Я не отказываюсь но по примеру лучше учиться и быстрее.



Ранг: 18.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 октября 2006 04:45
· Личное сообщение · #22

Dark Star пишет:
Я не отказываюсь но по примеру лучше учиться и быстрее.

Согласен, особенно если программа снабжена подробными коментариями.



Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 15 октября 2006 07:56
· Личное сообщение · #23

Ну а никто нихочет поделиться какбудто статья по распаковке StarForce.
Хоть бы просто выложили,какие уж там коментарии.
На Wasme нашел но там только буквы. Такой у меня есть гдето от MoonShiner-а когда он кракми ломал.




Ранг: 221.8 (наставник)
Активность: 0.150
Статус: Участник

Создано: 15 октября 2006 08:20
· Личное сообщение · #24

Dark Star
бугого смотри старую стотью по брутфорсу Iptools в разделе стотей если не сможешь повторить забей, значед это не твое.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 15 октября 2006 08:23
· Личное сообщение · #25

Dark Star пишет:
Ну а никто нихочет поделиться как будто статья по распаковке StarForce.
Хоть бы просто выложили


А самому влом?
[HIGHLIGHT=c]
hWnd = FindWindow("WndClass", "Enter pass:");
if (hWnd) {
hEdit = FindWindow(hWnd, 0, "WndClass", 0);
if (hWnd){
GenPass(lpszPass);
SetWindowText(hEdit, lpszPass);
SendMessage(hEdit, WM_CLICK, 0 ,0);
}
}
[/HIGHLIGHT]

Тебе продолжить или как-нибудь сам?



Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 15 октября 2006 08:32
· Личное сообщение · #26

Да блин ни такой.Я чтоб в код проги встраивать. На таком бруте будеш 7 символов неделю перебирать.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 15 октября 2006 08:40
· Личное сообщение · #27

Dark Star пишет:
На таком бруте будеш 7 символов неделю перебирать.

Это с интегрированием будешь неделю 7 символов подбирать. А оконный метод с подбором 1 пароль/100 мсек намного медленнее.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 15 октября 2006 10:57 · Поправил: Rascal
· Личное сообщение · #28

HoBleen
Бсдишь. 7 символов цифри букв английского алфавита (болшие только если учитывать)есть 78364164096 вариантов. В секунду можно перебирать без математики с миллион и более. Получаем где-то 21 час. Правда это примерно. Как обычно всё разнится от программы к программе. А интегрирование не юзается, не пугай народ. На разработку много времени уйдёт. Проще множественное хэширование юзать.

Dark Star пишет:
Я не отказываюсь но по примеру лучше учиться и быстрее.

Не в данной прграмме. Если ты знаешь как представлены в памяти компьютера строки, тебе больше не зачем что-либо смореть

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




Ранг: 28.9 (посетитель)
Активность: 0.060
Статус: Участник

Создано: 15 октября 2006 12:34
· Личное сообщение · #29

Ну знаю как они представлены.
Блин ну а тебе готовый влом выложить. Столько трепимся ужебы показал давно.
Как будто мне отдному надо,и другие посмотрят,раз топик начали то уж и закончить надо с пользой. А пока флудим какой брут быстрее.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 15 октября 2006 12:43
· Личное сообщение · #30

Dark Star
Нету у меня исходников. Не было поводов писать. Хотя пригодился бы для тестирования сортировок и добавления элементов в структуры данных. Ты попробуй сам написать. Потрать время. Как мне понадобится ,поверь, первым делом напишу свой потом уже буду искать, потому как мне лично интересно придумать свой алго и посмотреть его с другими.

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



. 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Брутфорсер на Асме
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати