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

 eXeL@B —› Вопросы новичков —› Взлом abs DB
Посл.ответ Сообщение

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

Создано: 12 сентября 2018 20:58
· Личное сообщение · #1

Есть приложение на delphi которое использует в качестве хранилища зашифрованную файловую abs0lute database. Само приложение защищено вмпротект3. Пароль для подключения к БД точно есть в самом exe-приложении и хранится в виде строки. Вопрос - как корректно вытащить значения всех строковых переменных из памяти приложения после его запуска, когда уже произошло подключение к БД?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 12 сентября 2018 21:06
· Личное сообщение · #2

Сдампить и поискать, например.

-----
старый пень




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

Создано: 12 сентября 2018 21:30
· Личное сообщение · #3

А инструментарий какой посоветуете для этого?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 12 сентября 2018 22:13
· Личное сообщение · #4

Я бы посоветовал разобраться какой именно функции и как пароль движку бд передается и перехватить ее. Он как в openssl может оказаться и не строкой, а может существовать в открытом виде очень недолго.

-----
2 оттенка серого




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

Создано: 12 сентября 2018 23:36 · Поправил: ursula3030
· Личное сообщение · #5

f13nd
Спасибо, попробую, правда не силен в этом



Ранг: 20.2 (новичок), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 13 сентября 2018 05:42
· Личное сообщение · #6

ursula3030
В честь 256 дня в году дарю лайфхак. Вам понадобятся утилиты ProcExp и BinText.

С помощью первой делаем Full Dump процесса работающего с БД(лучше это делать в момент обращения программы к БД). Как правило, о секурности никто не думает и, несмотря на навесные протекторы, при работе со сторонними библиотеками в памяти остаются пароли, которые попадают в дамп.

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

Далее два пути. Простой - поискать по строкам значения типа: "DataBase", "Connection", "Password" и обнаружить рядом искомый пароль.

Сложный - из файла, сформированного BinText, вырезать все лишнее(адреса), кроме строк и написать брутилку пароля к БД на основе библиотеки доступа.

Пробуйте, если не получится пишите в личку посмотрим.

| Сообщение посчитали полезным: ursula3030

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

Создано: 13 сентября 2018 09:35
· Личное сообщение · #7

GroundHog
Огромное спасибо за наводку на BinText! Брутилка пароля к БД была написана в первый же день, но отработав на гиговом словаре пароль так и не был найден. Из чего был сделан вывод, что в качестве него использован нетиповой набор символов, поэтому и был выбран путь поиска в памяти. Защиты никакой там нет (судя по исходникам самого компонента), т.е. хранится в открытом виде, плюс было написано тестовое приложение (на данном компоненте) с фиксированным паролем для доступа к своей БД и пароль действительно в открытом виде висит в памяти в момент подключения.




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 13 сентября 2018 12:32
· Личное сообщение · #8

Еще на тему "BinText":
Lister. Создает список уникальных строк. Что считать символом строки определяется XLT-маской, могут быть любые не NULL символы. Может обрабатывать бинарные файлы.

ea7e_13.09.2018_EXELAB.rU.tgz - 00.png



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

Создано: 13 сентября 2018 12:37 · Поправил: ursula3030
· Личное сообщение · #9

gazlan
Спасибо, нашлась еще вот эта тема.
И да присоединяюсь и поздравляю всех с днем программиста!)




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 13 сентября 2018 14:02
· Личное сообщение · #10

Ну если в музее капитал-шоу Поле Чудес еще есть место, то 010 Editor с функцией поиска строк туда же --> Link <-- Но наверное было бы лучше найти-таки в дампе программы rva этой функции, если она вмпротектом не покрыта, и перехватить ее отладчиком или чем-нибудь еще.

-----
2 оттенка серого




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

Создано: 13 сентября 2018 15:24 · Поправил: ursula3030
· Личное сообщение · #11

f13nd пишет:
Но наверное было бы лучше найти-таки в дампе программы rva этой функции

Да, возможно так было бы эффективнее, но мне найти такое место не удалось. Дампы (pe tools|ollydumpex) в отладчике уже не запускаются, а оригинальная прога сразу детектит запуск через отладчик, ни один из stelth-плагинов не сработал.

P.S.
Вообщем среди сдампленных строк пароля тоже не оказалось...
Последовательность действий была следующая:
1) Запуск ProcExplorer
2) Запуск приложения
3) Сделали full dump
4) Загрузили в bintext и strings- получили словари.
5) Полученные файлы были скормлены брутфорсеру.




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 13 сентября 2018 18:27
· Личное сообщение · #12

ursula3030 пишет:
Вообщем среди сдампленных строк пароля тоже не оказалось...

Так это изначально был вариант на удачу, шара не залетела. Особенно учитывая то, что прятать выбранные строчки одна из фич вмпротекта, следовало этого ожидать.

-----
2 оттенка серого




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

Создано: 13 сентября 2018 21:56
· Личное сообщение · #13

f13nd
А есть идеи, как у работающего приложения перехватить обращение к такой функции, ну или чем еще попробовать сдампить приложение?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 13 сентября 2018 22:35
· Личное сообщение · #14

ursula3030 пишет:
А есть идеи, как у работающего приложения перехватить обращение к такой функции, ну или чем еще попробовать сдампить приложение?

Во-первых найти ее в дампе, во-вторых два варианта: правильный и тупой. Правильный - влезть любым способом в процесс и поставить перехватчик туда, это не отладка, протекторы такое обычно прощают. Тупой - вставить в эту функцию что-нибудь, что крашнет процесс, останется только дамп сделать.

-----
2 оттенка серого





Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 14 сентября 2018 00:16 · Поправил: BlackCode
· Личное сообщение · #15

f13nd пишет:
Тупой - вставить в эту функцию что-нибудь, что крашнет процесс, останется только дамп сделать.

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

| Сообщение посчитали полезным: f13nd, ursula3030

Ранг: 20.2 (новичок), 16thx
Активность: 0.020.01
Статус: Участник

Создано: 14 сентября 2018 04:28
· Личное сообщение · #16

ursula3030
Значит делаем так: собираем в той же версии Delphi и той же компонентой тестовый пример с подключением к запароленной БД. Сборку делаем с максимально включенной отладочной информацией. Сравниваем в IDA дамп и тестовый пример, находим функцию подключения/установки пароля. Надо объяснять как это делать?



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

Создано: 21 сентября 2018 17:09 · Поправил: ursula3030
· Личное сообщение · #17

Окончательный итог - вчера вечером у меня получилось подобрать все пароли
Схема оказалась абсолютно рабочей даже против вмпротек3.
Всем принимавшим участие большое спасибо, особенно хочу отметить неоценимый вклад GroundHog в виде очень дельных и предметных советов.. как там молодежь пишет..респект и уважуха!!!


 eXeL@B —› Вопросы новичков —› Взлом abs DB
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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