0.
Legal Stuff
Non mi ritengo responsabile dell'uso che sarà fatto di questo materiale.
Il codice sorgente, come il binario sono stati distribuiti con un unico
scopo e cioè quello didattico-informativo. L'unica funzione di
DarkFTP è quella di descrivere il funzionamento di una backdoor
basata sia su un client IRC che su un server FTP. Ogni utilizzo diverso
da quello didattico non è contemplato e le conseguenze derivanti
da esso non devono in alcun modo essere ricollegate all'autore di questa
applicazione. Pertanto l'uso di questo materiale per uno scopo diverso
da quello didattico solleva l'autore da ogni responsabilità e implica
che si accetti questa condizione.
1. Cosa è DarkFTP
DarkFTP è un trojan (o meglio, è la sua parte invisibile)
che si installa nella macchina sulla quale viene lanciato e vi attiva
un servizio di ftp serving tramite il quale sono possibili operazioni
di lettura e scrittura su qualsiasi file o directory del filesystem della
macchina; contemporaneamente viene attivato un piccolo client IRC che
si collega ad un IRC server, entra in un canale e vi rimane fino a quando
viene a mancare la connessione o la macchina viene riavviata, un po nello
stile di un bot. Mediante una sorta di chat col Dark, attraverso IRC,
è possibile impartire una serie di comandi che vengono eseguiti
sulla macchina ospite e che sono atti alla gestione completa del trojan.
2. Principali funzionalità
- Accesso completo al filesystem della macchina ospite (con WinNT limitato
ai diritti dell'utente loggato in quel momento)
- Controllo remoto tramite IRC
- Possibilità di esecuzione (locale) da remoto di comandi o applicazioni
- Capacità di bypassare il firewall WRQ AtGuard agendo in locale
sulle chiavi del registro
- Completa configurabilità
- Tool di configurazione incluso
3. Configurazione
La configurazione può essere eseguita sia a mano che tramite il
tool di configurazione. A differenza delle versioni precedenti in cui
era possibile editare facilmente l'eseguibile attraverso un hexeditor,
in questa versione è un po' più complicato. Tuttavia chi
non resiste al fascino dell'esadecimale può trovare una stringa
di configurazione all'offset 0x00058090 . Tale stringa contiene tutti
i dati di configurazione di cui il Dark ha bisogno. Si tratta di una stringa
di 105 bytes suddivisa in campi di lunghezza fissa. Se si opera direttamente
su questa stringa è necessario conoscere alcune cose; prima di
tutto la sua suddivisione in campi:
Campo
|
Nome
|
Lunghezza
|
Descrizione
|
1.
|
IRC
Server
|
30
bytes
|
Nome (o indirizzo ip) del server da utilizzare per la connessione
ad IRC.
|
2.
|
IRC
Server Port
|
5
bytes
|
Numero
della porta per il server IRC
|
3.
|
IRC
Channel
|
30
bytes
|
Nome
del canale in cui entrare
|
4.
|
IRC
Enabled
|
1
bytes
|
Switch
per attivare o disattivare la funzione IRC
|
5.
|
FTP
Port
|
5
bytes
|
Numero
della porta sulla quale sarà attivo il servizio FTP
|
6.
|
FTP
Max Users
|
2
bytes
|
Numero
di connessioni contemporanee ammesse
|
7.
|
FTP
User
|
16
bytes
|
Username
per accedere al servizio FTP
|
8.
|
FTP
Password
|
16
bytes
|
Password
per accedere al servizio FTP
|
E' molto
importante fare attenzione alla lunghezza dei campi in quanto se si oltrepassa
la lunghezza di un campo il successivo risulta illeggibile o errato e
può causare talvolta il crash dell'applicazione. Se vi è
passata la voglia di usare l'hexeditor ma non volete ancora usare il tool
potete creare manualmente la stringa che viene costruita dal tool e che
deve essere "appesa" all'exe finale. Si tratta in pratica di
scrivere su una unica riga la configurazione riempendo con degli spazi
i byte che sono superflui facendo in modo che la lunghezza finale di ogni
singolo campo sia sempre fissa. Tale stringa deve cominciare con le lettere
CFG e deve essere lunga 107 bytes (3+105). Qui vi
è una stinga valida. Una volta costruita è sufficiente appenderla
alla fine dell'eseguibile tramite un semplice COPY /B exenonconfigurato.exe
+ cfg.txt execonfigurato.exe
Tramite IRC è possibile agire sulla configurazione in ogni suo
parametro. Le modifiche saranno salvate nel registro di Windows e riutilizzate
ogni volta che DarkFTP si avvierà. Se anche questa strada vi sembra
complicata rimane solo il tool il cui utilizzo è intuitivo e perciò
non viene trattato. :)
4. Comandi IRC
Il set di comandi si è molto esteso rispetto alle versioni precedenti.
La modalità di utilizzo è comunque la solita; si possono
inviare comandi al Dark attraverso una semplice query (non DCC) facendo
precedere ogni comando dalla stringa USER:PASSWORD. Facendo un esempio
supponiamo chel'username che ho scelto nella configurazione sia "linux"
(senza apici), la password sia "rulez" e che volglia inviare
il comando "ABOUTYOU" ad un DarkFTP. In query scriverò:
Se la sintassi
del comando è corretta e sia l'username che la password coincidono
con quelle della configurazione ottengo una risposta dal Dark che mi informa
sul suo stato attuale. Nel caso in cui il comando non sia corretto ottengo
un messaggio di errore, mentre nel caso in cui abbia sbagliato user o password,
ottengo una risposta un po' più "umana" che mi consiglia
di levarmi dai piedi... :)
Per quanto riguarda l'user è importante ricordare che se si tratta
di "anonymous" come è di default non è necessario
inviare la stringa USER:PASS bensì è sufficiente il comando
e il suo eventuale parametro. Detto questo vediamo la lista dei comandi:
CHUP
newusr:newpwd
|
Cambia
l'username e la password con quelli specificati. Vale la stessa
regola precedente ovvero si deve inviare l'username e la password
nel formato USER:PASS. Sia l'user che la password non possono essere
più lunghi di 16 caratteri ciascuno.
|
CHFTPPORT
port
|
Cambia
la porta dell'FTP con quella specificata. Le connessioni attive
al momento non vengono reimpostate e possono proseguire.
|
CHUSEIRC
[Y/N]
|
Attiva
o disattiva la funzione IRC. Il parametro deve essere una tra le
lettere Y o N che rispettivamente attivano o disattivano la funzione.
Inviando un CHUSEIRC N non si perde comunicazione col Dark all'istante
ma al suo riavvio.
|
CHCHAN
chan
|
Cambia
il canale. Anche qui è richiesto un riavvio.
|
CHIRCSRV
srv
|
Cambia
il nome o l'ip del server IRC da usare. Valida solo al prossimo
collegamento.
|
CHIRCPORT
port
|
Cambia
la porta per il server IRC.
|
CHMAXUSER
maxusr
|
Cambia
il numero di connessioni contemporanee ammessse. Non richiede alcun
riavvio.
|
DESTROY
|
Distrugge
l'intero trojan. Viene rimossa la chiave che lo attiva all'avvio
di Windows e viene terminato.
|
SHUTDOWN
|
Termina
il trojan che però ripartira al riavvio del sistema.
|
RESTART
|
Riavvia
il Dark implementando il comando CLOSEALL.
|
CLOSEALL
|
Disconnette
tutte le connessioni FTP attive al momento.
|
FTPRESTART
|
Riavvia
il server FTP.
|
DRIVES
|
Elenca
i drives collegati alla macchina fornendo il nome del volume.
|
GEOMETRY
drv
|
Fornisce
la geometria del drive specificato. E' necessario specificare solo
la lettera dell'unità.
|
ABOUTYOU
|
Invia
alcune informazioni utili sullo stato del server e sulla versione.
|
VIEWCFG
|
Mostra
la configurazione corrente.
|
SWAPEXE
path
|
Scambia
le applicazioni. Viene usato per fare aggiornamenti; in pratica si
carica attraverso l'FTP una nuova versione del Dark in una directory
dell'host e poi si lancia questo comando che provvede a terminare
il Dark corrente ed avviare quello appena caricato. E' necessario
specificare il percorso completo del file da lanciare. Può
essere usato anche con applicazioni diverse dal Dark.
|
EXEC
path
|
Lancia
l'applicazione specificata nel path.
|
HELPME
|
Mostra
la lista dei comandi disponibili. |
5. Comprimere l'exe
E' possibile comprimere l'exe usando un compressore per eseguibili quale
ad esempio WWPack 32 ricordando
però che la configurazione "appesa" va fatta solamente
*DOPO* aver compresso il file. Infatti se si comprime il file già
configurato il compressore comprimerà anche la stringa alla fine
del file rendendola illeggibile per il Dark. Se invece si modifica direttamente
l'exe allora non ci sono problemi. Bisogna ricordare però che se
sarà presente una stringa di configurazione alla fine del file,
la stringa interna sarà ignorata.
6. Sorgenti
I sorgenti presenti nel pacchetto ovviamente sono completamente free e
sono di pubblico dominio. Potete farci quello che vi pare, dal copiaincolla
al SelezionaTutto-Taglia-Salva :)
Ho cercato di essere abbastanza chiaro nello scriverli e talvolta ho aggiunto
anche dei commenti. Sono inclusi anche alcuni file non miei che però
fanno parte del Dark. Si tratta delle librerie per il controllo del Winsock
e per la gestione del server FTP. Sono stati scritti da François PIETTE
che voglio ringraziare infinitamente per il suo ottimo lavoro. I componenti
(per Delphi) sono disponibili gratuitamente all'indirizzo http://www.rtfm.be/fpiette.
7.Ringraziamenti
In conclusione vorrei ringraziare ancora una volta in particolar modo
Francois Piette, StolenByte che ha fornito un valido supporto in formato
HTML, la WRQ che ha prodotto @Guard, uno dei firewall più robusti
per Windows 9x, la Borland per aver prodotto il Delphi 4 (a mio avviso
una delle migliori suite di programmazione esistenti sul mercato), Opium,
Made, Ginny, Vale, Sdra che si sono prestati a pesanti fasi di betatesting
(talvolta senza neppure saperlo ;). Spero che questo materiale possa servire
a chi ha voglia di imparare e spero possa nuocere a chi ha voglia di fare
il lamer.
|