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

Видео Атаки на VPS. Почему VPS небезопасно использовать. Форензика, криминалистика

jaskolka

RAID-массив
Пользователь
Регистрация
28.05.2024
Сообщения
85
Реакции
158
Гарант сделки
2
P.S. я соавтор, о чем и было сказано в видео, но не являюсь человеком на видео


link to file

Знаю как все любят текст, специально для XSS много текста))

Почему нужно отказаться от использования VPS, то есть виртуальных приватных серверов. Я покажу, какие атаки может совершить каждый хостер в отношении серверов, и продемонстрирую, насколько сложно или даже невозможно защититься от этих атак. В частности, я покажу, каким образом хостер получит доступ к вашим файлам и паролям, даже если вы будете использовать полно-дисковое шифрование файловой системы LUKS, криптоконтейнеры VeraCrypt, TrueCrypt и т.д. Я покажу, насколько легко это делается и насколько критически важная информация легко попадает в чужие руки.

Ниже спойлер: как в ОЗУ хранится пароль LUKS
1.jpg



Screenshot_35.png


Давайте разберемся в терминах: VPS — это ВИРТУАЛЬНЫЙ сервер, не стоит путать его с ВЫДЕЛЕННЫМ сервером. В примере, выделенный сервер — это когда вы получаете в аренду полный компьютер, тогда как виртуальный — это когда вы получаете лишь часть мощностей этого компьютера.


Все тесты я буду показывать на VirtualBox. Да, VirtualBox не используется в гипервизорах хостинг-провайдеров, они используют Proxmox VE, ESXi или Microsoft Hyper-V. По сути, разницы никакой нет, потому что каждый гипервизор дает возможности дампа ОЗУ. Абсолютно каждый. Я показываю на примере VirtualBox, потому что исследовать дамп я буду под операционной системой Windows. Но, поверьте, все то же самое можно сделать под любым гипервизором. Я приведу примеры, как это делается на других гипервизорах:

Vbox:


Код:
VBoxManage debugvm "Win10_tests" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Test_Win\dump.elf"

ESXi:

Код:
vim-cmd vmsvc/snapshot.create <VMID> "MemoryDumpSnapshot" "Snapshot with memory dump" 1 0


Virt-manager Qemu/KVM:

Код:
sudo virsh dump --memory-only --domain win10 '/home/user/Рабочий стол/forensics/win10_ram_dump.raw'


Proxmox VE:

Код:
qm snapshot VMID snapshot_name --dumpdir /path/to/dumpdir


Microsoft Hyper-V и VMware Workstation: через создание снапшота


В рамках видео я покажу, как хостер может перехватить пароль от LUKS. LUKS — это шифрование файловой системы на Linux. Также покажу на примере Windows, какие атаки может проводить хостер на арендованную у него VM, насколько это просто и насколько эти атаки могут быть опасны, и как сложно от них защититься.


Начнем с Linux-систем и шифрования LUKS.
В качестве тестового диструбутива выбираем Ubuntu, и доходим до выбора, где нужно включить LUKS, соответственно включаем его и задаем тестовый пароль LUKS 123456@54321

Screenshot_37.png


Screenshot_38.png


В качестве рута задаем 123@321 и продолжаем установку.

Screenshot_40.png


И пока идет установка делаем 2 дампа ОЗУ

Screenshot_41.png


Код:
VBoxManage debugvm "ubuntu" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\LUKS_install.elf"
VBoxManage debugvm "ubuntu" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\LUKS_install_2.elf"

На видео было отлично видно, что для клиента эти дампы создаются практически незаметно. В теории, для опытных хостеров не составит труда сделать скрипт систематического авто-дампа ОЗУ с модифицированного "специалистами" гипервизора.
При помощи FTK Imager далее производим в дампах поиск паролей:

Что лично меня удивило, это то, насколько легко доступном виде в ОЗУ пароль хранится, взят в кавычки и с пометкой от чего пароль)) в дампе он встречается несколько раз, первый раз в неразборчивом виде без контекста, видимо это были нажатия клавиатуры, дальше уже все понятно

Screenshot_42.png


Screenshot_43.png


Screenshot_44.png


Screenshot_46.png



Пароль рута конечно же тоже удалось в дампе обнаружить, ему особо внимания не удаляю:


Screenshot_47.png


Теперь давайте представим ситуацию, что у хостера не было дампа ОЗУ при создании LUKS, но ему очень интересно посмотреть VPS.
Дождался установки Ubuntu, перезагрузился и вижу окно LUKS, 1 раз специально ввожу неправильный пароль, и следом правильный, интересно посмотреть как это будет отображаться в дампе ОЗУ:

3.jpg

Screenshot_48.png

Делаю пару дампов:

Screenshot_49.png

Код:
VBoxManage debugvm "ubuntu" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\LUKS_boot_1.elf"
VBoxManage debugvm "ubuntu" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\LUKS_boot_2.elf"

Пару - просто на всякий случай, как показала практика, не в каждом дампе можно найти пароль, в отличии от ключа.

Итого поиск пароля в ОЗУ на скринах ниже, в некоторых местах фейковый пароль от настоящего идут подрят. В целом можно выделить какую-то сигнатуру для их поиска в ОЗУ.

Screenshot_50.png

Screenshot_51.png

Screenshot_52.png


Как и сказал ранее, не всегда получается в ОЗУ найти пароль LUKS, поэтому отдельно покажу как я извлекал ключ из ОЗУ, воспользовался для этого утилитой findaes-1.2 (https://sourceforge.net/projects/findaes/files/), она отлично ищет ключи в ОЗУ:

Screenshot_53.png


Ключ LUKS имеет размер 512 бит, что соответственно 2 по 256 )) тут нужно теперь взять эти значения, которые нашел findaes, оставить только те, которые встречаются 1 раз, без повторений и пробовать их комбинировать.

К примеру (упрощенный пример) имеем следующие 3 значения:

123
345
567

из них у нас получится 6 ключей (123345, 345123, 345567, 567345, 123567, 567123), т.е. нужно пробовать их соединять разными сторонами))
и да, нужно удалить пробелы, чтоб получить что-то около того:

Код:
dd8ea32cb3b1ee904cc19abf4604626032cbf96a2089ab80f0c922f50df1d90cc7e23cd38d61e17b60fc2bd143c51382f328a32acae527685db32024c6f1afa3

Теперь нужно привести этот ключ (dd8ea32cb3b1ee904cc19abf4604626032cbf96a2089ab80f0c922f50df1d90cc7e23cd38d61e17b60fc2bd143c51382f328a32acae527685db32024c6f1afa3), и соответственно другие тоже в бинарный формать, т.к. сейчас он находиться в шестнадцатеричном формате, делается это очень просто командой:

Код:
xxd -r -p key1.txt key1.bin

это же проделываем со всеми ключами

Для того что бы расшифровать LUKS нам нужен сам виртуальный диск с файловой системой LUKS VM, на видео я это сделал прям с горячей системы, чтоб показать что не обязательно даже выключать или ставить на паузу VM, чтоб сделать копию виртуального диска, я делал это через FTK Imager, это криминалистический софт который очень многое позволяет сделать внутри системы, им же можно и файлы подкачки прям с запущенной системы копировать, и многое другое, поэтому сделать копию запущенного виртуального диска не составило проблемы.


Входной формат дисков может быть разный в зависимости от источника. Например, на Qemu/KVM — «Qcow2», в VirtualBox — VDI, в ESXi — VMDK. Это не создает никаких сложностей, потому что все эти форматы можно преобразовать в RAW формат, а RAW в абсолютно любой формат. Для криминалистики RAW, он же DD, — это идеальный формат. Если вы занимаетесь криминалистикой, старайтесь все образы, за исключением E01, преобразовывать в RAW, а не использовать их в исходном оригинальном формате. Исключение, конечно, если нативный софт и нативный формат.

Ниже несколько примеров, как преобразовать разные форматы дисков гипервизоров в RAW:


Код:
qemu-img convert -f vmdk -O raw /path/to/source.vmdk /path/to/destination.raw
qemu-img convert -f qcow2 -O raw /path/to/source.qcow2 /path/to/destination.raw
qemu-img convert -f vpc -O raw /path/to/source.vhd /path/to/destination.raw
qemu-img convert -f vhdx -O raw /path/to/source.vhdx /path/to/destination.raw


Для LVM (XEN):


Код:
sudo qemu-img convert -f raw /dev/vgname/lvname -O raw /path/to/destination.raw
sudo dd if=/dev/vgname/lvname of=/path/to/destination.raw bs=64K conv=noerror,sync


В моем случае я буду использовать VirtualBox. Представим, что входной формат диска у меня был нейтральный — RAW. RAW формат сразу я не могу подключить, поэтому у меня есть два варианта: создать файл дескриптор — VMDK либо преобразовать в формат, который без проблем воспримет VirtualBox.

Первый вариант через дескриптор:

Код:
VBoxManage internalcommands createrawvmdk -filename /path/to/your/disk.vmdk -rawdisk /path/to/your/disk.raw

Второй вариант: RAW to VDI


Код:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" convertdd C:\raw\disk.raw C:\vdi\disk.vdi --format VDI

Screenshot_58.png


LUKS можно расшифровать как самим паролем, так и ключем

Screenshot_57.png


Для того чтобы расшифровать ключом LUKS, нужно знать адрес устройства, его видно на скриншоте ниже

Screenshot_56.png



И теперь имея ключи и зная устройство пробуем расшифровать:

Код:
sudo cryptsetup --master-key-file key1.bin luksOpen /dev/sdb3 bHDD

На скрине ниже отлично видно что не каждый ключ подошел, и все же нужный ключ был найден))

Screenshot_54.png



Что мы и видим

Screenshot_59.png




Это не конец, следующим постом (ниже) будет текстовая версия Windows форензики
 

Вложения

  • Screenshot_55.png
    Screenshot_55.png
    44.6 КБ · Просмотры: 15
  • Screenshot_39.png
    Screenshot_39.png
    41.7 КБ · Просмотры: 13
  • Screenshot_45.png
    Screenshot_45.png
    253.7 КБ · Просмотры: 14
Последнее редактирование:
и далее переходим на Windows форензику, т.к. множество людей использует на VPS именно Windows удаленные рабочие столы.
В качестве теста создаем несколько криптоконтейнеров в TrueCrypt, VeraCrypt, в них помещаем суперсекретные какие-то документы, монтируем эти контейнеры и пробуем до чего может дотянуться хостер.

Пароли для монтирования контейнеров TrueCrypt, VeraCrypt намерено вводятся ручками, а не из буфера обмена, чтоб лишний раз в ОЗУ не оставлять пароль. В VeraCrypt включаем шифрование ключей и паролей в ОЗУ

Screenshot_25.png



после того как примонтировали криптоконтейнеры, мы их открываем, и открываем просто для просмотра файлы на этих контейнерах

Screenshot_60.png


Screenshot_61.png


Содержимое не копируем, просто открыли и закрыли, и просто открыли браузер в нем несколько вкладок и закрыли.

Сделали 3 дампа ОЗУ после монтирования контейнера TrueCrypt, VeraCrypt и работы браузера:

Screenshot_62.png


Код:
VBoxManage debugvm "Win10_tests" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\Win_vera.elf"
VBoxManage debugvm "Win10_tests" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\Win_true.elf"
VBoxManage debugvm "Win10_tests" dumpvmcore --filename "C:\Users\admin\Desktop\Forensics\Ubuntu\Win_3.elf"

Смотрим что есть в ОЗУ:

Сразу с выводов: пароля от контейнеров в ОЗУ нет, ни от TrueCrypt, ни от VeraCrypt, ключ TrueCrypt достать из дампа не составляет труда, а вот ключ VeraCrypt найти в дампе получается только на версии 1.24 и только если отключено шифрование ключа и пароля в ОЗУ, если включена - найти имеющимся софтом не получается. Ключ в последней VeraCrypt не удается извлечь из ОЗУ даже при отключенной функции шифрования ключа и пароля в ОЗУ, о чем ранее говорил, в рамках сегодняшних тестов еще раз проверил.

Касательно других моментов:

Все содержимое криптоконтейнеров очевидно в ОЗУ отлично хранится и находятся

Screenshot_63.png


Screenshot_64.png


И открытые вкладки бразура:

Screenshot_65.png



Теперь давайте полноценно изучим файловую систему, для этого образ VDI конвертируем в RAW, т.к. RAW формат, он же DD является наилучшим для форензики, это аксиома)) посоревноваться RAW может только с E01, но если вы не обладаете опытом в форензике храните всё всегда в RAW и по возможности конвертируйте все в RAW перед тем как загружать в криминалистический софт.

В моем случае я это сделал так:

Код:
vboxmanage clonehd "C:\Users\admin\VirtualBox VMs\Win10_tests\Win10_tests.vdi" "C:\Users\admin\Desktop\Forensics\Test_Win\DISK_win10.raw" --format raw

и через 10 минут получил нужный мне DISK_win10.raw, который примонтировал с помощью FTK Imager для оперативного осмотра содержимого файлов:

Screenshot_66.png


Screenshot_67.png



Теперь мы прям из нашей системы можем работать с файловой системой VM, и чтоб не анализировать это все вручную, мы будем использовать криминалистический софт NirLauncher

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

Screenshot_69.png


Screenshot_70.png


Screenshot_71.png


Но не оставим же Вас без контента)) этот RAW диск закинул в Magnet Axiom, на мое личное мнение лучший криминалистический софт

Обращу внимание, что многие уверуют в то, что галочка на скрине ниже, спасает от всех проблем)), просто покажу что это не так

Screenshot_26.png



Magnet Axiom мощный форензик софт, имеет множество парсеров, которые работают лучше чем у его конкурентов, умеет работать с облачными данными, даже дампы ОЗУ отлично распарсивает. Он даже лучше себя показывает в тех кейсах, где узко-специализированные парсеры показывают себя хуже, чем этот Kit.

Конечно же он нашел креды в браузере, но пароли шифрованы паролем пользователя, и для того чтобы получить их в открытом виде идем за SAM и SYSTEM файлами, от туда берем NTLM хэш и брутим его, и будет Вам счатье)))

Screenshot_72.png


Специально для неверующих вот они 3 криптоконтейнера, которые софт отлично нашел


Screenshot_75.png


И просто еще один скрин

Screenshot_73.png



Конечно для полноценного обзора софта этого мало, и нужен реальный RAW образ реальной системы, тогда можно в полном объеме оценить парсеры софта

В видео также цитируются сообщения Dread Pirate Roberts, из темы https://xss.pro/threads/94447/, не буду дублировать его сообщения, очень рекомендую к прочтению про Grub, BMC, и много другого

Рекомендую к прочтению смежные темы:

https://xss.pro/threads/94447/
https://xss.pro/threads/97855/
https://xss.pro/threads/98554/
https://xss.pro/threads/118430

Итого вывод: даже не смотря на то, что не удалось достать пароли от контейнеров, само содержимое этих контейнеров все так же находится в открытом виде в ОЗУ, в ОЗУ которое хостер может сдампить в одну секунду.
 

Вложения

  • Screenshot_74.png
    Screenshot_74.png
    102.5 КБ · Просмотры: 23
Последнее редактирование:
Есть технология шифрования ОЗУ от хостовой системы SEV/TDX, которые конечно же спасут от таких атак, но это отдельно нужно сесть и вникнуть в это:

1) Какие конкретно хостеры предоставляют эти услуги?
2) Как достоверно убедиться что эта технология применяется и ОЗУ на самом деле шифруется для хоста?
3) Как достоверно убедиться что хостер в один день не отключит SEV/TDX и не начнет дампить ОЗУ?
 
Есть технология шифрования ОЗУ от хостовой системы SEV/TDX, которые конечно же спасут от таких атак, но это отдельно нужно сесть и вникнуть в это:

1) Какие конкретно хостеры предоставляют эти услуги?
2) Как достоверно убедиться что эта технология применяется и ОЗУ на самом деле шифруется для хоста?
3) Как достоверно убедиться что хостер в один день не отключит SEV/TDX и не начнет дампить ОЗУ?
1) к сожалению, не знаю ни одного из таких. не популярная услуга.
2) как минимум нужно иметь доступ к консоли удалённой системы,
т.е. иметь возможность самому настроить SEV/TDX через Bios.
как проверить - сделать дамп работающей системы.
3) только в режиме реального времени мониторить систему через ipmi.
соответственно, это должна быть выделенная железка с ограниченным доступом.
но а если это впс, то никак)
 
Самая лучшая защита - это если твоя жена дочь генерала ФСБ
 


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