Использование глобальных переменных для эффективности в Metasploit

Kali LinuxBeginner
Практиковаться сейчас

Введение

При работе с 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) переменными, что позволит вам принимать более эффективные решения по настройке во время тестирования на проникновение. Освоение этой простой концепции может сэкономить значительное количество времени и уменьшить количество ошибок в сложных сценариях.