• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Write-UP: HTB Keeper Собираем мастер-пароль KeePass из дампа памяти процесса

Эрмано

(L3) cache
Пользователь
Регистрация
28.08.2024
Сообщения
261
Решения
1
Реакции
182
Источник: https://xakep.ru/2024/02/12/htb-keeper/

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

Разведка

Сканирование портов​

Добавляем IP-адрес машины в /etc/hosts:
10.10.11.227 keeper.htb

И запускаем сканирование портов.
1731249526964.png


Сканер нашел два открытых порта:
  • 22 — служба OpenSSH 8.9p1;
  • 80 — веб‑сервер Nginx 1.18.0.
SSH, как обычно, пока оставляем в покое, поскольку учетных данных у нас нет. Пойдем искать уязвимости в веб‑сайтах.

Точка входа​

На веб‑сервере нас встречает ссылка на службу поддержки, ведущая на другой поддомен: tickets.keeper.htb.
1731249626633.png


Новый поддомен тоже добавляем в файл /etc/hosts
10.10.11.227 keeper.htb tickets.keeper.htb

1731249684567.png


Теперь перейдем по ссылке. На новом сайте нас встречает страница авторизации системы заявок Request Tracker. Поиск эксплоитов ничего не дал, а типичная пара учетных данных оказалась невалидной. Однако всегда стоит проверять еще и учетные данные, заданные в том или ином ПО по умолчанию. Для Request Tracker это root:password, что я узнал из официальной вики.
1731249824787.png


C дефолтными логином и паролем авторизуемся в Request Tracker, при этом, как оказалось, сразу от имени привилегированного пользователя.
1731249888405.png


В любых системах, связанных с тикетами и прочими заявками, первым делом нужно искать по словам вроде pass, secret, login, token. В данном случае при поиске подстроки pass отыскивается всего один тикет. Какие-то проблемы с клиентом KeePass для Windows.
1731249934106.png


К сожалению, ничего существенного не находим. Комментарии к заявке тоже никакой полезной информации не содержат.
1731250000590.png


Точка Опоры
В меню переходим по пути Admin → Users → Select и получаем список существующих в системе пользователей.
1731250114826.png


1731250137143.png


Как минимум уже нашли имя пользователя.
Теперь открываем профиль каждого пользователя и собираем информацию. Возможно, по ней получится сгенерировать список паролей для перебора, это тоже рабочий вектор.
1731250187611.png


В профиле пользователя lnorgaard мы находим не то что какую-то информацию, а целый пароль: Welcome2023!. С именем пользователя и паролем получается авторизоваться по SSH и забрать пользовательский флаг.
1731250268796.png


Локальное повышение привилегий
Теперь пора собрать информацию о системе, запущенных процессах, необычных файлах и прочих вещах, которые помогут нам найти возможность для повышения привилегий до рута. Я для этого использую скрипты PEASS.

Давай скачаем самую свежую версию скрипта для Linux
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -O /tmp/linpeas.sh

Теперь нужно загрузить его на удаленный хост. Для этого можно использовать стандартные средства SSH. После загрузки необходимо дать скрипту право на выполнение и выполнить его.

Код:
scp /tmp/linpeas.sh lnorgaard@keeper.htb:~/
chmod +x ~/linpeas.sh
~/linpeas.sh

В выводе — масса информации, поэтому нужно отобрать только значимую.
К сожалению, интересного не так много. Разве что в домашнем каталоге пользователя нашелся какой-то архив RT30000.zip, оставленный рутом.
1731250452833.png


Также я всегда загружаю на хост утилиту pspy64, которая позволяет в реальном времени отслеживать выполняемые команды и процессы, запускаемые от имени любого, даже привилегированного пользователя. Увы, я прождал пять минут и ничего интересного не обнаружил.

Возвращаемся к найден ному архиву и скачиваем его на свой хост стандартными средствами SSH.
scp lnorgaard@keeper.htb:/home/lnorgaard/RT30000.zip ./

Внутри архива находим базу дан ных менеджера паролей KeePass passcodes.kdbx, а также, судя по названию, полный дамп работающего процесса этого менеджера паролей - KeePassDumpFull.dmp
1731250708221.png


На ум сразу приходит недавняя уязвимость CVE-2023-32784.

Дело в том, что в KeePass 2.x до вер сии 2.54 есть возможность восстановить мастер-пароль в открытом виде из дампа памяти, даже если рабочее пространство заблокировано. Также есть возможность восстановить пароль, если KeePass больше не работает. Дамп можно получить не только дампингом памяти процесса KeePass или всей системы, но и из файла подкачки(pagefile.sys) и файла гибернации (hiberfil.sys). Но есть и ограничение: пароль должен быть набран с клавиатуры, а не скопирован из буфера обмена.

О способе восстановления пароля из дампа я уже писал в своем канале. Давай повторим этот метод, для чего будем использовать KeePwn.

Код:
# install
git clone https://github.com/Orange-Cyberdefense/KeePwn.git
cd KeePwn
pip3 install -r requirements.txt
sudo python3 setup.py install

# run
KeePwn parse_dump --dump_file KeePassDumpFull.dmp --bruteforce
passcodes.kdbx

1731251075062.png


Спустя несколько минут работы программа завершает свое выполнение.
Мастер-пароль подобрать не удалось, однако мы получили 13 приблизительных кандидатов. Я загрузил последний вариант, так как он может навести нас на более полную информацию о пароле. Однако поисковый движок предложил другой вариант поиска.
1731251150813.png


Соглашаемся на измененный поиск и получаем похожую на нашу строку фразу rødgrød med fløde.
1731251295850.png


Из Google узнаём, что это название популяр ного в Дании киселя, но куда важнее, что это и есть мастер-пароль, который позволяет получить доступ к данным в базе KeePass. Видимо, из-за использования символа ø KeePwn не смог довести дело до конца.
1731251355867.png


В базе сохранен пароль рута и SSH-ключ в формате PuTTY. С паролем авторизоваться не вышло, поэтому кон вертируем ключ
puttygen key.putty -O private-openssh -o id_rsa_root

Теперь с ключом авторизуемся по SSH и забираем последний флаг.
1731251393402.png


Машина захвачена!
 
Есть еще такая фишка как конфиг keepass который лежит в /home/user/.config/keepass, если был использован автовход то пароль сохранялся в файл конфига. На данный момент незнаю, не могу проверить, но аналоги keepassx и keepassxc были вылечены от этого. Так же можно брутить файл паролей keepass2john и hashcat

Код:
└─$ hashcat --example | grep -i -B2 keepas

Hash mode #13400
  Name................: KeePass 1 (AES/Twofish) and KeePass 2 (AES)
--
  Kernel.Type(s)......: pure
  Example.Hash.Format.: plain
  Example.Hash........: $keepass$*2*24569*0*c40432355cce7348c48053ceea0...97bf7 [Truncated, use --mach for full length]
--

Hash mode #29700
  Name................: KeePass 1 (AES/Twofish) and KeePass 2 (AES) - keyfile only mode
--
  Kernel.Type(s)......: pure
  Example.Hash.Format.: plain
  Example.Hash........: $keepass$*2*60000*0*02078d460c3c837003f22ee2ba4...98ed1 [Truncated, use --mach for full length]
 
Именно? KeePWN? Или что-то другое?
Сорян, по диагонали прочитал. Сначала увидел скан портов, потом ЦВЕху и вспомнил, что видел то ли ПОЦ, то ли статью по этой ЦВЕ. Но короче не то это, каюсь.
 
Ничо нипанимаю. Кипасс это программа ехе под винду. А тут какой-то интранет взламывают, линукс какой-то. Как так то?
1. Видимо не только под винду)
2. Ну и кто вообще говорил, что дампы памяти, не могли быть собраны с винды и перенесенны на линукс?
 
1. Видимо не только под винду)
2. Ну и кто вообще говорил, что дампы памяти, не могли быть собраны с винды и перенесенны на линукс?
То есть ты статью написал, но не прочитал?
 
То есть ты статью написал, но не прочитал?
Статью я читал - именно, про то, может ли оказаться на линуксах ки пас, вроде нет, да по чесноку - я даже таким вопросом не задался, подумал, вдруг адаптировали - так и оказалось
 
я даже таким вопросом не задался
Ну ясно - что-то на хакерском, значит можно постить. :) Ты понимаешь, насколько странный и особый случай описан в статье? Кто-то сначала сдампил память кипасса, непонятно в винде или в линухе. Причём, специально взял старый кипасс, под который есть читалка дампа. Выложил это на какой-то дырявый интранет. И потом - пришёл "хакер" и всё это "взломал", статья готова. :)
 
Ну ясно - что-то на хакерском, значит можно постить. :) Ты понимаешь, насколько странный и особый случай описан в статье? Кто-то сначала сдампил память кипасса, непонятно в винде или в линухе. Причём, специально взял старый кипасс, под который есть читалка дампа. Выложил это на какой-то дырявый интранет. И потом - "взломал", статья готова. :)
Начнём с того, что это был таск с HTB, а там возможно всякое.
Ну ясно - что-то на хакерском, значит можно постить.
Если, ты заметил, то я написал, что у меня в голове сразу возникла мысль об адаптации, поэтмоу я и не поинтересовался:)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх