Введение
При работе с Metasploit Framework часто возникает необходимость устанавливать различные опции для разных модулей, такие как LHOST (локальный хост для прослушивания) и LPORT (локальный порт). Повторная установка этих опций для каждого модуля может занимать много времени. Metasploit предоставляет функцию глобальных переменных для решения этой проблемы. Установив переменную глобально, она будет автоматически применяться к любому модулю, использующему эту опцию, что значительно повысит эффективность вашего рабочего процесса.
В этой лаборатории вы научитесь устанавливать, использовать и снимать глобальные переменные в консоли Metasploit.
Использование команды setg для установки глобального LHOST
На этом шаге вы запустите консоль Metasploit и установите глобальную переменную для LHOST. Команда setg используется для установки переменной, которая будет сохраняться между различными модулями в рамках одной сессии msfconsole.
Сначала найдем IP-адрес вашей лабораторной среды. Этот IP будет использоваться в качестве значения для LHOST.
hostname -I | awk '{print $1}'
Вы увидите вывод, похожий на этот (ваш IP-адрес будет другим):
192.168.3.123
Запомните этот IP-адрес. Теперь запустите консоль Metasploit Framework. Флаг -q используется для "тихого" режима, который подавляет стартовый баннер.
msfconsole -q
Ваш приглашение изменится на msf6 >. Теперь установим переменную LHOST глобально. Используйте команду setg, за которой следует имя переменной и IP-адрес, который вы только что нашли.
Примечание: Пожалуйста, замените
YOUR_IP_ADDRESSна фактический IP-адрес из командыhostname -I.
setg LHOST YOUR_IP_ADDRESS
Вы должны увидеть подтверждающее сообщение:
LHOST => YOUR_IP_ADDRESS
Эта команда теперь сохранила ваш IP-адрес как глобальное значение LHOST для этой сессии. Чтобы проверить это, вы можете использовать команду show с флагом -g, который отображает все глобально установленные переменные.
show -g
Вывод перечислит все глобальные переменные:
Global
=======
Name Value
---- -----
LHOST YOUR_IP_ADDRESS
Выбор нового модуля эксплойта
На этом шаге вы выберете модуль эксплойта, чтобы увидеть, как глобальная переменная применяется автоматически. В качестве первого примера мы будем использовать универсальный обработчик полезной нагрузки, exploit/multi/handler. Этот модуль часто используется для прослушивания входящих соединений.
В приглашении msfconsole используйте команду use для выбора модуля:
use exploit/multi/handler
После выполнения команды ваше приглашение изменится, отражая текущий выбранный модуль:
msf6 exploit(multi/handler) >
Это означает, что вы теперь находитесь в контексте модуля exploit/multi/handler. Любые опции, которые вы установите или отобразите, будут специфичны для этого модуля, но он также будет наследовать любые соответствующие глобальные переменные.
Убедитесь, что значение LHOST уже заполнено
Теперь, когда у вас загружен модуль, давайте проверим его параметры, чтобы увидеть, было ли применено наше глобальное значение LHOST.
На этом шаге вы используете команду show options для отображения конфигурации текущего модуля.
Из приглашения msf6 exploit(multi/handler) > выполните следующую команду:
show options
Вы увидите таблицу параметров для этого модуля. Найдите переменную LHOST. Вы заметите, что ее значение уже установлено на IP-адрес, который вы глобально настроили на первом шаге.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST YOUR_IP_ADDRESS yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Как вы можете видеть, вам не пришлось использовать команду set LHOST для этого модуля, потому что глобальное значение было автоматически унаследовано. В этом и заключается сила использования глобальных переменных.
Использование команды unsetg для удаления глобальной переменной
На этом шаге вы узнаете, как удалить глобальную переменную. Если вам больше не нужно, чтобы переменная применялась глобально, вы можете использовать команду unsetg. Это полезно, когда вы хотите вернуться к установке параметров для каждого модуля отдельно или хотите очистить конфигурацию вашей сессии.
Из приглашения Metasploit выполните команду unsetg, за которой следует имя переменной, которую вы хотите удалить.
unsetg LHOST
Эта команда удалит переменную LHOST из глобальной области видимости. Вы увидите подтверждающее сообщение:
Unsetting LHOST...
Теперь, если вы снова выполните show options для того же модуля, вы увидите, что значение LHOST теперь пустое.
show options
В выводе теперь будет показано, что для LHOST не установлено никакого значения.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Теперь вам потребуется установить LHOST локально для этого модуля с помощью команды set, если вы захотите его использовать.
Обсуждение использования глобальных и локальных параметров
На последнем этапе мы обсудим практические различия между установкой локальных и глобальных переменных и когда их следует использовать. Понимание этого поможет вам более эффективно работать в Metasploit.
Локальные переменные (с использованием set)
- Область видимости: Переменная, установленная командой
set(например,set RHOSTS 10.10.10.1), является локальной для текущего загруженного модуля. - Поведение: Когда вы переключаетесь на новый модуль с помощью команды
use, эта локальная переменная отбрасывается. Новый модуль будет иметь свое собственное значение по умолчанию или пустое значение для этого параметра. - Когда использовать: Используйте
setдля параметров, которые специфичны для одного целевого объекта или модуля. Наиболее распространенным примером являетсяRHOSTS(IP-адрес удаленного хоста/цели), который почти всегда меняется для каждого используемого эксплойта. Другие примеры включаютTARGETURIили конкретноеUSERNAME.
Глобальные переменные (с использованием setg)
- Область видимости: Переменная, установленная командой
setg(например,setg LHOST 192.168.3.123), является глобальной для всей сессииmsfconsole. - Поведение: Переменная и ее значение будут автоматически унаследованы любым модулем, который использует это имя параметра. Она сохраняется даже при переключении модулей.
- Когда использовать: Используйте
setgдля параметров, которые, вероятно, останутся неизменными на протяжении всей вашей сессии.LHOSTявляется идеальным примером, поскольку IP-адрес вашей атакующей машины обычно не меняется.LPORTтакже может быть хорошим кандидатом для глобальной переменной, если вы постоянно используете один и тот же порт прослушивания.
Сводка команд:
set <VARIABLE> <VALUE>: Устанавливает переменную только для текущего модуля.setg <VARIABLE> <VALUE>: Устанавливает переменную глобально для всех модулей в сессии.unset <VARIABLE>: Очищает локальную переменную в текущем модуле.unsetg <VARIABLE>: Очищает глобальную переменную.
Стратегически используя set для параметров, специфичных для цели, и setg для параметров, общих для всей сессии, вы можете минимизировать повторяющуюся настройку и больше сосредоточиться на процессе эксплуатации.
Теперь вы можете выйти из консоли Metasploit.
exit
Резюме
В этой лабораторной работе вы научились эффективно использовать глобальные переменные в Metasploit Framework для оптимизации рабочего процесса. Вы практиковались в использовании команды setg для определения глобального LHOST, наблюдали, как она автоматически заполняется в различных модулях, и использовали команду unsetg для ее удаления. Вы также узнали ключевые различия между локальными (set) и глобальными (setg) переменными, что позволит вам принимать более эффективные решения по настройке во время тестирования на проникновение. Освоение этой простой концепции может сэкономить значительное количество времени и уменьшить количество ошибок в сложных сценариях.


