Сейчас на форуме: Lohmaty (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Взлом abs DB |
Посл.ответ | Сообщение |
|
Создано: 12 сентября 2018 20:58 · Личное сообщение · #1 Есть приложение на delphi которое использует в качестве хранилища зашифрованную файловую abs0lute database. Само приложение защищено вмпротект3. Пароль для подключения к БД точно есть в самом exe-приложении и хранится в виде строки. Вопрос - как корректно вытащить значения всех строковых переменных из памяти приложения после его запуска, когда уже произошло подключение к БД? ![]() |
|
Создано: 12 сентября 2018 21:06 · Личное сообщение · #2 |
|
Создано: 12 сентября 2018 21:30 · Личное сообщение · #3 |
|
Создано: 12 сентября 2018 22:13 · Личное сообщение · #4 |
|
Создано: 12 сентября 2018 23:36 · Поправил: ursula3030 · Личное сообщение · #5 |
|
Создано: 13 сентября 2018 05:42 · Личное сообщение · #6 ursula3030 В честь 256 дня в году дарю лайфхак. Вам понадобятся утилиты ProcExp и BinText. С помощью первой делаем Full Dump процесса работающего с БД(лучше это делать в момент обращения программы к БД). Как правило, о секурности никто не думает и, несмотря на навесные протекторы, при работе со сторонними библиотеками в памяти остаются пароли, которые попадают в дамп. Вторая программа нужна для получения текстовых строк из дампа. Это может занять несколько минут, если дамп большой, ждите, программа не зависла. Полученный дамп сохраните в файл. Далее два пути. Простой - поискать по строкам значения типа: "DataBase", "Connection", "Password" и обнаружить рядом искомый пароль. Сложный - из файла, сформированного BinText, вырезать все лишнее(адреса), кроме строк и написать брутилку пароля к БД на основе библиотеки доступа. Пробуйте, если не получится пишите в личку посмотрим. ![]() |
|
Создано: 13 сентября 2018 09:35 · Личное сообщение · #7 GroundHog Огромное спасибо за наводку на BinText! Брутилка пароля к БД была написана в первый же день, но отработав на гиговом словаре пароль так и не был найден. Из чего был сделан вывод, что в качестве него использован нетиповой набор символов, поэтому и был выбран путь поиска в памяти. Защиты никакой там нет (судя по исходникам самого компонента), т.е. хранится в открытом виде, плюс было написано тестовое приложение (на данном компоненте) с фиксированным паролем для доступа к своей БД и пароль действительно в открытом виде висит в памяти в момент подключения. ![]() |
|
Создано: 13 сентября 2018 12:32 · Личное сообщение · #8 Еще на тему "BinText": ![]() ![]() |
|
Создано: 13 сентября 2018 12:37 · Поправил: ursula3030 · Личное сообщение · #9 |
|
Создано: 13 сентября 2018 14:02 · Личное сообщение · #10 Ну если в музее капитал-шоу Поле Чудес еще есть место, то 010 Editor с функцией поиска строк туда же ----- 2 оттенка серого ![]() |
|
Создано: 13 сентября 2018 15:24 · Поправил: ursula3030 · Личное сообщение · #11 f13nd пишет: Но наверное было бы лучше найти-таки в дампе программы rva этой функции Да, возможно так было бы эффективнее, но мне найти такое место не удалось. Дампы (pe tools|ollydumpex) в отладчике уже не запускаются, а оригинальная прога сразу детектит запуск через отладчик, ни один из stelth-плагинов не сработал. P.S. Вообщем среди сдампленных строк пароля тоже не оказалось... Последовательность действий была следующая: 1) Запуск ProcExplorer 2) Запуск приложения 3) Сделали full dump 4) Загрузили в bintext и strings- получили словари. 5) Полученные файлы были скормлены брутфорсеру. ![]() |
|
Создано: 13 сентября 2018 18:27 · Личное сообщение · #12 |
|
Создано: 13 сентября 2018 21:56 · Личное сообщение · #13 |
|
Создано: 13 сентября 2018 22:35 · Личное сообщение · #14 ursula3030 пишет: А есть идеи, как у работающего приложения перехватить обращение к такой функции, ну или чем еще попробовать сдампить приложение? Во-первых найти ее в дампе, во-вторых два варианта: правильный и тупой. Правильный - влезть любым способом в процесс и поставить перехватчик туда, это не отладка, протекторы такое обычно прощают. Тупой - вставить в эту функцию что-нибудь, что крашнет процесс, останется только дамп сделать. ----- 2 оттенка серого ![]() |
|
Создано: 14 сентября 2018 00:16 · Поправил: BlackCode · Личное сообщение · #15 f13nd пишет: Тупой - вставить в эту функцию что-нибудь, что крашнет процесс, останется только дамп сделать. Крашить не обязательно, лодырь накидать примитивный, который по смещению начала функции забьет опкод EB FE, чтобы зациклить прогу и спокойно снять дамп ![]() ![]() |
|
Создано: 14 сентября 2018 04:28 · Личное сообщение · #16 ursula3030 Значит делаем так: собираем в той же версии Delphi и той же компонентой тестовый пример с подключением к запароленной БД. Сборку делаем с максимально включенной отладочной информацией. Сравниваем в IDA дамп и тестовый пример, находим функцию подключения/установки пароля. Надо объяснять как это делать? ![]() |
|
Создано: 21 сентября 2018 17:09 · Поправил: ursula3030 · Личное сообщение · #17 Окончательный итог - вчера вечером у меня получилось подобрать все пароли ![]() Схема оказалась абсолютно рабочей даже против вмпротек3. Всем принимавшим участие большое спасибо, особенно хочу отметить неоценимый вклад GroundHog в виде очень дельных и предметных советов.. как там молодежь пишет..респект и уважуха!!! ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Взлом abs DB |