Ciao,
un RAT e' principalmente una backdoor che ti consente di ottenere il controllo totale della macchina che infetti con l agent, ed e' spesso adottato per la creazione di botnet push mode.
Principalmente, puoi immaginarne la struttura come 2 socket comunicanti: uno funge da server, ed e' quello che fai installare sulla macchina target, in modo da creare una reverse shell, mentre l altro funge da client, e quindi lo utilizzi per collegarti alla macchina target in ascolto e per inviargli comandi.
Naturalmente da queste cose cosi' semplici si passa a cose ben piu' complesse, come botnet pull mode [a breve rilasciero' un tutorial su come crearne una in Python], ma puoi anche crearne una usando protocolli come ssh, http, irc ....., in modo da avere maggiori possibilita' di riuscita.
Ora, nel caso di un RAT essenziale, la struttura e' la seguente:
Codice:
botmaster <-------> pannello C&C <---------> bot [macchina vittima]
, e come vedi la richiesta [quindi un comando], viene mandato dal botmaster, che attraverso il pannello di controllo [Command & Control], recapita letteralmente i comandi impartiti al bot. Questo a sua volta li esegue, e rimanda l output al pannello, che lo rendera' visualizzabile al botmaster. Come noti, poiche' e' la richiesta esterna ad essere in entrata sulla macchina target, c'e' il pericolo che un eventuale firewall blocchi il traffico. Inoltre, l adozione di un pannello esterno alla tua macchina, magari sotto Tor, e' importante poiche' rende molto piu' facile governare i bot, e allo stesso tempo la risposta non arriva a te, ma ad un host sotto Tor che tu puo raggiungere, dunque tra te e la vittima, non ci sarebbe un collegamento diretto [
Codice:
botmaster [nella stessa macchina vi e' il C&C panel] <-------------> target
], ma ottieni un collegamento oscurato da 6 proxy Tor ..... 3 della vittima per mandare l out al pannello e 3 tuoi nel raggiungere lo stesso, rendendo il tutto molto anonimo [
Codice:
botmaster <------ TOR [3 proxy] ---------> Pannello C&C <------- TOR [3 proxy] -------> target
].
Sinceramente, trovo che studiare concetti cosi' su youtube non sia il massimo, dato che perdi la parte teorica [il piu' delle volte], e non apprendi nel modo migliore che un programmatore puo' attuare: sbagliando.
Ogni errore ti fortifica, ti da' modo di trovare strade migliori o vie traverse, ed e' sicuramente scocciante, ma utilissimo per aumentare le proprie capacita'.
Per capire bene come programmarle, assieme ai moduli di keylogging, piuttosto che quelli per gli screenshot, ti conviene dare un occhiata su Github, dove con pochissimo troverai centinaia, anzi migliaia di progetti con codice in Python, in C, in Java e in molti altri linguaggi.