| Сейчас на форуме: 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, вырезать все лишнее(адреса), кроме строк и написать брутилку пароля к БД на основе библиотеки доступа. Пробуйте, если не получится пишите в личку посмотрим.   | Сообщение посчитали полезным: ursula3030 | 
| 
 | 
Создано: 13 сентября 2018 09:35  · Личное сообщение · #7 GroundHog Огромное спасибо за наводку на BinText! Брутилка пароля к БД была написана в первый же день, но отработав на гиговом словаре пароль так и не был найден. Из чего был сделан вывод, что в качестве него использован нетиповой набор символов, поэтому и был выбран путь поиска в памяти. Защиты никакой там нет (судя по исходникам самого компонента), т.е. хранится в открытом виде, плюс было написано тестовое приложение (на данном компоненте) с фиксированным паролем для доступа к своей БД и пароль действительно в открытом виде висит в памяти в момент подключения. ![]()  | 
| 
 | 
Создано: 13 сентября 2018 12:32  · Личное сообщение · #8 Еще на тему "BinText": . Создает список уникальных строк. Что считать символом строки определяется XLT-маской, могут быть любые не NULL символы. Может обрабатывать бинарные файлы.   ea7e_13.09.2018_EXELAB.rU.tgz - 00.png
![]()  | 
| 
 | 
Создано: 13 сентября 2018 12:37 · Поправил: ursula3030  · Личное сообщение · #9  | 
| 
 | 
Создано: 13 сентября 2018 14:02  · Личное сообщение · #10  | 
| 
 | 
Создано: 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, чтобы зациклить прогу и спокойно снять дамп  
  | Сообщение посчитали полезным: f13nd, ursula3030 | 
| 
 | 
Создано: 14 сентября 2018 04:28  · Личное сообщение · #16 ursula3030 Значит делаем так: собираем в той же версии Delphi и той же компонентой тестовый пример с подключением к запароленной БД. Сборку делаем с максимально включенной отладочной информацией. Сравниваем в IDA дамп и тестовый пример, находим функцию подключения/установки пароля. Надо объяснять как это делать? ![]()  | 
| 
 | 
Создано: 21 сентября 2018 17:09 · Поправил: ursula3030  · Личное сообщение · #17 Окончательный итог - вчера вечером у меня получилось подобрать все пароли ![]() Схема оказалась абсолютно рабочей даже против вмпротек3. Всем принимавшим участие большое спасибо, особенно хочу отметить неоценимый вклад GroundHog в виде очень дельных и предметных советов.. как там молодежь пишет..респект и уважуха!!!  
![]()  | 
| eXeL@B —› Вопросы новичков —› Взлом abs DB | 








 


 Для печати