Kali LInux: Что можно найти в оперативной памяти?

Если хорошенько поискать, в оперативной памяти компьютера можно найти самые неожиданные вещи. К примеру, ключи, с помощью которых получится мгновенно расшифровать содержимое криптоконтейнеров TrueCrypt, BitLocker и PGP Disk.

Поиск информации в оперативной памяти

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



А если компьютер запаролен?

Снять образ памяти легко, если доступ к компьютеру открыт или если криминалисту известен пароль от любой действительной учетной записи. Но что, если доступ к компьютеру закрыт неизвестным паролем, а времени на его взлом катастрофически не хватает?

криминалист подключает собственный компьютер к компьютеру подозреваемого с использованием самого обычного кабеля FireWire. На компьютере криминалиста запускается программа (самые простые образцы, к примеру Inception или pyfw, написанный на языке Python, доступны в открытом доступе; впрочем, криминалисты используют более продвинутый софт), с помощью которой все содержимое оперативной памяти исследуемой машины скачивается на компьютер следователя. Этот способ можно опробовать самостоятельно. Например, пользователи Linux и OS X могут воспользоваться бесплатной утилитой Inception.


При поиске информации на компьютере нужно помнить, что она размещена не только в постоянных хранилищах (твердотельные накопители, жёсткие диски, сменные носители и т. д.), но и в оперативной памяти, в процессах, которые её обрабатывают.



Информация при размещении на жёстком диске и в оперативной памяти далеко не всегда одинакова:

  • на жёстком диске она может быть зашифрована, а в оперативной памяти — нет (пример: на зашифрованном диске VeraCrypt хранится текстовый файл с паролями, который открыт в текстовом редакторе — в этом случае в оперативной памяти пароли из этого файла будут находится в виде простого текста)
  • информация может создаваться в процессе вычислений, либо получения данных из сети (в этом случае исходная информация отсутствует в постоянных хранилищах)

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

Можно придумать и другие способы навыка анализа и поиска по оперативной памяти:

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

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

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

Эта программа:

  • ищет в запущенных процессах строки по регулярным выражениям. Можно указать сразу несколько регулярных выражений.
  • можно выполнять поиск по одному процессу или сразу по всем запущенным процессам.
  • показывает найденные результаты в понятном виде.

Для установки mXtract в Kali Linux выполните команды:

git clone //github.com/rek7/mXtract
cd mXtract && sh compile.sh
sudo mv bin/mxtract /usr/bin/
sudo mkdir -p /usr/share/doc/mxtract/
mv example_regexes.db /usr/share/doc/mxtract/

Для установки mXtract в BlackArch выполните команду:

sudo pacman -S mxtract

У программы mXtract довольно много опций, обязательной является одна из двух: -r= или -wm. Если вы хотите выполнить поиск в оперативной памяти определённых строк, то нужно использовать опцию -r=, после которой нужно указать путь до файла, содержащего одно или несколько регулярных выражений. Если вы хотите записать всю информацию, которую процесс имеет в оперативной памяти, то используйте опцию -wm. Эти опции можно использовать и одновременно, тогда будет выполнен поиск, а также будут сохранены дампы всех процессов (даже не совпавшими с условиями поиска).

Итак, начнём с поиска строк в процессах. Вместе с программой поставляется файл example_regexes.db, который содержит следующее регулярное выражение:

(\d{1,3}(\.\d{1,3}){3})

Оно примерно соответствует IPv4 адресам.

Запустим поиск:

sudo mxtract -wr -e -i -d=/tmp/output/ -r=/usr/share/doc/mxtract/example_regexes.db

В этой команды значение опций следующее:

  • -r=/usr/share/doc/mxtract/example_regexes.db — путь до файла с регулярными выражениями
  • -e означает просканировать файлы рабочего окружения процесса
  • -i нужна для показа подробной информации о Процессе/Пользователе
  • -d=/tmp/output/ — пользовательская директория вывода. При использовании опции -wm, в неё сохраняются дампы процессов. Также в неё сохраняется файл с результатами, если используется опция -wr.
  • -wr — нужна для записи найденных совпадений в файл (появится в Директории вывода)

Пример вывода при работе программы:

 

Эти IP адреса, которые содержит процесс NetworkManager:

 

Эти IP из процесса Writer офисного пакета LibreOffice (хотя это не означает, что программа соединена хотя бы с одним из них):

 

В результате запуска предыдущей команды будет создан файл /tmp/output/regex_results.txt с найденными совпадениями строк.

Рассмотрим несколько сценариев, которые я смог придумать для использования поиска по оперативной памяти.

Оценка качества программ, предназначенных для хранения паролей.

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

Вместо регулярных выражений можно указать буквальные строки для поиска. В качестве этих строк вы можете записать несколько паролей. Каждое регулярное выражение должно быть на отдельных строках. Например, можно создать файл passwords.db и записать туда:

пароль1
пароль2
пароль3

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

После этого можно запустить поиск по содержимому процессов в оперативной памяти:

sudo mxtract -wr -e -i -d=/tmp/output/ -r=passwords.db

К примеру, пароли в открытом текстовом файле, даже если он на зашифрованном разделе, прекрасно находятся таким методом.

Поиск программ, имеющих доступ к буферу обмена.

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

Создадим файл clipboard.db и запишем в него любую уникальную строку, например:

fghfgjhgfhkgjlbnmnvbregfghdgfjgch

Скопируем её в буфер обмена и запустим сканирование процессов:

sudo mxtract -wm -wr -e -i -d=/tmp/output/ -r=clipboard.db

Вы сможете обнаружить программы, которые содержат эту строку (на скриншоте легитимная программа — я взял её просто в качестве примера):

 

Поиск паролей и ключей в запущенных процессах (редакторы кода, веб-сервер).

С помощью программы DumpsterDiver , среди огромного количества строк можно найти особые строки, у которых высокая энтропия и которые, следовательно, могут оказаться паролями, ключами и другими секретами.

Можно совместить работу этих двух программ. Сделаем так, чтобы mXtract извлекала практически все строки, для этого создадим файл strings.db и скопируем в него примерно следующее:

[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=]{30,}

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

sudo mxtract -wr -e -i -d=/tmp/output/ -r=strings.db

А теперь с помощью DumpsterDiver ищем строки с нужной нам энтропией:

python3 DumpsterDiver.py -p /tmp/output/ --entropy 5.3

Это очень грубый концепт, в реальной ситуации нужна более тонкая настройка DumpsterDiver.

Извлечение содержимого буфера обмена.

В зависимости от используемого программного обеспечения, вы можете найти программу, которая хранит буфер обмена (скопированный текст) в виде обычного текста. Используя опцию -p= можно указывать идентификатор (PID) одного процесса для сканирования. Если правильно настроить регулярные выражения, то можно извлекать содержимое буфера обмена.

Для детального анализа содержимого процесса пригодится опция -wm — при её указании будут сохранены сырые данные полного содержимого каждого процесса. Либо одного процесса, если указана опция -p=.

 

Источники статьи: https://hackware.ru/ и https://xakep.ru

RuCoreNET - лучшее для вас!


Поделись статьей с друзьями


94 просмотров


0 0 vote
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments


Do NOT follow this link or you will be banned from the site!
0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: