Contenuti

Backdoors & Trojan

La prima cosa che viene in mente leggendo la parola Trojan Horse (letteralmente Cavallo di Troia) sono i tool di mministrazione remota, le famose Back Door. In realtà, con il termine Trojan Horse si intendono tutti quei programmi che, sotto le false spoglie di software “pacifici”, si introducono nel sistema vittima e svolgono funzioni dannose, proprio come fece Ulisse per espugnare Troia. Pur essendo riconosciuti generalmente come “virus”, differiscono da essi perché generalmente non hanno la capacità di autoreplicarsi.

Le Tipologie

  • I Trojan più conosciuti sono sicuramente le cosiddette Back Door (o R.A.T.Remote Access Tool” o anche Trojan Client - Server) che permettono di gestire un sistema remoto tramite protocollo TCP/IP. Nati con lo scopo di facilitare il lavoro di chi ha la necessità di lavorare su macchine remote, permettono di avere il pieno controllo del sistema infetto.
  • I Trojan Distruttivi (Descructive Trojan) rappresentano una seconda tipologia di Trojan Horse. Vengono utilizzati per lo più da chi vuole far danni ad una sola macchina e vengono spesso confusi con i virus ma il loro unico punto in comune è l’azione distruttiva: infatti i Destructive Trojan non si replicano e sono composti da codici molto semplici. Non per questo sono da considerare innocui, anzi.
  • Un’altra distinzione all’interno della famiglia sono i Trojan Ladri di Password. Sono scarsamente utilizzati e dovrebbero permettere (dico dovrebbero perché spesso non funzionano) di rubare delle password (ad esempio quella della casella di posta).
  • Leggermente più conosciuti sono i Chat Trojan che, spesso non riconosciuti come veri e propri Trojan, sono dei programmi in grado di svolgere diverse funzioni tramite le chat.

Stiamo navigando tranquillamente nella rete quando improvvisamente il nostro fido PC inizia a fare cose strane: alcune finestre si chiudono, il cassettino del lettore CD sembra posseduto, strane immagini appaiono e scompaiono dallo schermo e una bella musichetta gira in sottofondo… No, non è la trama di un film e non significa che un’entità aliena tenta di mettersi in contatto con noi. La realtà è che qualche lamer (persona che dice di essere un grande hacker quando in realtà è solo una vandalo informatico… ma questo non è il momento di etica) si sta divertendo alle nostre spalle. Ma come fanno questi “individui” (parola da interpretare in modo dispregiativo) a fare cose del genere? Semplice: per mezzo di una Back Door.

Questi programmi permettono di avere il pieno controllo di un PC remoto. Alla loro nascita consistevano in semplici “porte secondarie” (come dice il nome stesso), che i programmatori lasciavano aperte per accedere al loro lavoro e apportarvi delle modifiche. Poi l’idea si è diffusa! Ora la semplicità di utilizzo e l’interfaccia “user friendly” di questi strumenti, permettono a chiunque di violare un sistema remoto. Il vandalo di turno ha la possibilità di utilizzare il computer “vittima” come se lo avesse di fronte (e forse anche meglio).

Generalmente sono costituiti da due parti: il Client e il Server. Il server (la parte di programma da installare sul sistema vittima), quando viene eseguito, apporta delle modifiche al registro di sistema in modo da essere avviato ad ogni sessione e si mette in ascolto su una determinata porta; solitamente è di piccole dimensioni e la sua esecuzione è invisibile all’utente. Il client, invece, è installato sulla macchina “dell’aggressore”. Questa applicazione (come già detto, pienamente conforme all’interfaccia “user friendly” tipica di Windows) permette di comunicare con il server. Esistono centinaia di Back Door ma, grossomodo, la maggior parte tende ad avere le caratteristiche delle tre più famose (ed utilizzate): Net Bus, Back Orifice, Sub Seven.

Quindi i comandi a disposizione variano dalla ricerca di password alla gestione dei file, dalla modifica del registro all’esecuzione di applicazioni. Sono praticamente infinite le cose che si possono fare, limitate solo dalle possibilità della macchina remota (… se è senza stampante non si può pretendere di stampare).

Net Bus Pro

Questo è il RAT (Remote Administrator Tool) più semplice e, manco a dirlo, anche il più diffuso. Un po’ snobbato negli ambienti hacker a causa di alcune funzioni destinate al puro divertimento (ad esempio l’apri/chiudi del lettore CD, oppure il controllo del mouse) è comunque giunto alla versione Pro 2.10.
Caratteristica curiosa: Net Bus pro 2.10 è distribuito in licenza shareware, il costo per registrare il programma è di 15 dollari.

I comandi di Net Bus Pro 2.10

  • IP Scanner: Come ogni altro Back door, ha a disposizione un programmino che scansiona un “range” di indirizzi IP, alla ricerca di PC con il server in ascolto su una determinata porta.
  • Host information: Permette di ricevere alcune informazioni sul sistema remoto, queste informazioni variano dalla memoria ram alle password nascoste nel sistema infetto
  • Chat manager: Oltre alla possibilità di aprire una chat con il sistema remoto, permette di inviare dei messagebox (quei messaggi tipo questo) personalizzati, e di sapere quale è stata la risposta.
  • File manager: E’ simile all’esplora risorse di windows, permette di cancellare o creare file e fare download e upload.
  • Window manager: Permette di sapere quali applicazioni sono attive, e ovviamente di interagire con esse.
  • Registry manager: Esplora o modifica il registro di configurazione.
  • Sound system: Modifica il bilanciamento dei suoni.
  • Plugin manager: L’aspetto di Net Bus può essere cambiato attraverso dei plugin, proprio come winamp.
  • Port redirect: Utilizza il sistema remoto come un proxy.
  • Application redirect: Permette di eseguire delle applicazioni dalla macchina con il client, eseguendone i comandi su quella con il server. (Ad esempio è possibile avere un prompt del dos; i comandi che vengono scritti, verranno eseguiti sul PC remoto.
  • File actions: E’ possibile eseguire dei files, dei suoni, visualizzare delle immagini, aprire documenti e avviare delle stampe.
  • Spy functions: Permette di “leggere” i tasti premuti sulla tastiera remota, di “fotografare” ciò che c’è sul monitor, di catturare un’immagine con la webcam e di registrare dei suoni.
  • Exit windows: Da la possibilità di spegnere e resettare il sistema remoto.
  • Cool functions: Come già detto in precedenza, Net Bus ha la caratteristica di avere dei comandi destinati allo scherzo; ad esempio può aprire/chiudere il cassettino del lettore, disabilitare alcuni tasti o eseguire dei suoni quando alcuni di essi vengono premuti, invertire i bottoni del mouse, aprire il browser verso un URL prestabilito e scrivere al posto della tastiera remota; ad esempio, se l’utente remoto sta chattando, è possibile scrivere a posto suo.
  • Script manager: Da la possibilità di pianificare tutti i comandi.

Questo è ciò che può fare Net Bus Pro 2.10, ho riportato i comandi a puro scopo informativo. Sono convinto che per neutralizzare un pericolo bisogna prima conoscerlo il più possibile; finché non sappiamo quale è la causa di un problema, difficilmente potremo risolverlo con successo.

Il server di Net Bus Pro 2.10

Il server di Net Bus è ampiamente configurabile: come standard lavora sulla porta 20034, ma questo valore può essere facilmente cambiato. Può essere settato per dare il pieno controllo del PC remoto, per darne solo l’accesso base (si limita a riferire il contenuto del sistema remoto, senza poter fare altro) o per darne l’accesso in modalità spia (è possibile fare upload e download ma non si può alterare nulla). Altra possibilità è quella di settare il server come completamente visibile, visibile solo nella systray (dove c’è l’orologio), visibile solo con la combinazione Ctrl+Alt+Canc oppure totalmente invisibile.
E’ possibile dare una password di accesso al server, in questo modo solo chi conosce la chiave di accesso potrebbe entrare nel sistema; ho scritto “potrebbe” perché questa protezione non è molto affidabile.
Esiste anche la possibilità di dare accesso con Telnet e tramite HTTP, su porte configurabili.

Come comunicano il client e il server di Net Bus

Premetto che ciò che state per leggere vale per la versione 1.6 (probabilmente anche 1.7) di Net Bus. La versione 2.10 pro, comunica in modo differente.
Tuttavia ho ritenuto opportuno (ed interessante) inserire queste righe, se non altro per imparare qualcosa di più sui nostri nemici.
La comunicazione tra client e server, avviene tramite pacchetti non codificati, quindi, conoscendo i comandi che il client manda al server, possiamo benissimo utilizzare programmi tipo Telnet per gestire la backdoor.
La struttura dei comandi è la seguente:

1
(nome comando);(parametro);(parametro);\[ASCII D0h\]

Quindi ogni parametro è separato da un “;” e alla fine c’è un INVIO.

Ad esempio, per aprire il cassettino del lettore CD, il server riceve:

1
Eject;1\[INVIO\]

mentre per chiuderlo:

1
Eject;0\[INVIO\]

In uno dei paragrafi precedenti ho detto che la password di accesso al server non è tra le più sicure… infatti appena qualcuno si connette al server, questo invia la propria versione seguita da una “X” se è richiesta una password (in caso contrario invia solamente la versione).

Dall’altra parte, quando il client invia la password, lo fa in questo modo:

1
Password;0;(password digitata)

Il server riceve la password, la confronta con quella originale e, se corrispondono, risponde con:

1
Access;1

Se invece la password è errata la risposta è:

1
Access;0

La protezione non è sicura perché basta sostituire lo “0” con un “1” nel comando inviato dal client, per avere l’accesso anche se la parola d’ordine è errata. Quindi connettendosi con Telnet al server e digitando:

1
2
Password;1;any
ServerPwd;(nuova password)

la password verrà cambiata con una a piacimento.

Il comando ServerPwd, come appena visto, serve per cambiare la password, e prende come unico parametro la nuova password; se questo parametro non viene specificato, la protezione viene annullata.

Altro comando è

1
GetInfo

Lo scambio di comandi che avviene è questo:

1
2
3
4
5
(client) GetInfo
(server) Info;Program Path: C:\\WINDOWS\\PATCH.EXE|
 Restart persistent: Yes|
 Login ID: Pippo|
 Clients connected to this host: 1

Il server risponde con “Info;”, seguito dal contenuto testuale della finestra di info che verrà visualizzata dal client (i caratteri “|” sostituiscono l’invio).

I messaggi

NetBus utilizza due tipi di messaggi: alcuni danno la possibilità di rispondere, mentre altri no. Nel primo caso, il comando che viene inviato al server è

1
Message;1;(testo del messaggio)

e il server risponde:

1
Msg;(testo della risposta)

Nel secondo caso le cose si fanno un po’ più complicate. Il comando inviato al server comprende gli stessi parametri necessari per la chiamata API MsgBox. Ad esempio:

1
Message;0;ciao!;Information;64

fa apparire un messaggio che non da possibilità di rispondere (0), con testo “ciao!”, titolo della finestra “Information”, ed infine con l’icona relativa ai messaggi di informazione e solo il tasto “ok” (64).
Il server risponde in maniera molto semplice… ad esempio nel caso in cui sia stato premuto OK:

1
Answer;Person Answered: OK

Sub Seven

Con un’interfaccia grafica diversa dal solito e molto meno amichevole rispetto a Net Bus ed a Back Orifice, è dotato di innumerevoli comandi, tra cui i più caratteristici sono: la possibilità di scrivere messaggi “matrix” (simili, se non identici, alla scena in cui Neo viene contattato) e un simpatico “tris”. L’ultima versione di questo trojan è la 2.2. Il client è compatibile anche con il server di Net Bus fino alla versione 1.7.

I comandi di Sub Seven 2.2

I comandi di questo trojan, sono organizzati come un menu “ad albero”, simile, ad esempio, alla rappresentazione delle cartelle e sottocartelle del gestione risorse di Windows.

  • Shortcuts: Contiene dei collegamenti ai comandi più utilizzati, divisi in 3 sottogruppi: Local shortcuts, in cui sono presenti una rubrica, una console, alcuni tool per l’indirizzo IP e non (ping, resolve host name e resolve UIN ICQ) e un menu per settare l’aspetto e le funzioni dell’ambiente di lavoro. Misc shortcuts: file manager (un gestione risorse remoto), queue (un menu che tiene sotto controllo i download), Windows manager (che gestisce le finestre aperte), screen capture (per “fotografare” lo schermo), plugin manager (gestisce i plugin del PC remoto). Open, questo sottomenu da la possibilità di aprire il notepad, telnet o la Home Page di Sub Seven 2.2 (sul PC locale).
  • Connection: Da la possibilità di connettersi tramite proxy, di ottenere delle informazioni sul PC remoto, di gestire il server (cambiare la password, la porta, chiudere il server…), di notificare la connessione alla rete su ICQ, IRC o tramite posta, di effettuare download dalla rete, di scandire un “range” di IP dalla macchina remota o da quella locale.
  • Keys/messages: Contiene un keylogger (un programma che salva tutti i tasti premuti in un file di testo; utile per scoprire password non salvate), permette di disabilitare o riabilitare tutti i tasti, di far apparire messaggi tipo matrix (questo non apre una chat, il remoto non può rispondere), di mandare messagebox, di spiare le comunicazioni in chat (supporta ICQ, MSN messenger, Aol instant messenger e Yahoo messenger) e di prendere il controllo di ICQ.
  • Advanced: Permette di impostare un server ftp, di cercare file tramite estensione (come il trova file di Windows), di “sniffare” pacchetti UDP destinati alla macchina remota, di scovare password, di manipolare il registro di configurazione (tramite un registry editor), di curiosare (e disabilitare) fra i drive e le cartelle, di usare il PC remoto per redirect (usarlo come una specie di proxy) ed infine di scoprire tutte le connessioni tramite il comando Netstat.
  • Miscellaneous: Contiene un file manager (esplora risorse remoto), Windows manager (gestore delle finestre), un programmino che (se sulla macchina remota è presente il motore di text2speech) fa parlare la macchina remota, uno strumento che visualizza i contenuti della clipboard e uno che permette di stampare ciò che si vuole.
  • Fun manager: Permette di catturare ciò che c’è sullo schermo e ciò che vede la webcam, di far rimbalzare la schermata, di gestire la stampante, di aprire il browser su un determinato URL, di cambiare la risoluzione, di cambiare i colori di Windows, di giocare a tris con l’utente remoto e di inviare messaggi matrix.
  • Fun other: Tramite questo menu si può spegnere, resettare o bloccare la macchina remota, controllare il mouse, modificare il volume, utilizzare il microfono, cambiare ora e data, nascondere le icone del desktop, nascondere il pulsante “start” e la taskbar, aprire/chiudere il cassettino del lettore CD, nascondere l’orologio, disabilitare Ctrl+Alt+Canc e giocare con i tasti caps lock, num lock e scroll lock.
  • Plugin: Gestisce i plugin remoti.
  • Local option: Permette di configurare il client, dando la possibilità di aggiungere, rimuovere o modificare i comandi e i plugin.

Il server di Sub Seven 2.2

Come per gli altri trojan che campeggiano nel campo, Sub Seven dispone di un editor per il server. Questo usa come default la porta 27374 (ma questo valore è modificabile), ha una dimensione che si aggira intorno ai 55 kb (ovviamente se non compattato) e penso sia il server maggiormente configurabile. Dall’editor è possibile cambiare l’icona, unirlo ad altri file (anche non .exe), settarlo in modo da notificare la connessione alla rete via ICQ, e-mail, Sin, IRC e CGI e fare in modo che modifichi o meno il registro e i files win.ini e system.ini.

Back Orifice

Rappresenta il RAT dall’aspetto più professionale. Originariamente nato per scopi legali (come il concetto stesso di back door) è ora considerato il trojan preferito dai loschi individui. La comprensione del programma è semplice (non come Net Bus, ma comunque semplice); dispone anche di un Wizard Setup per configurare il server. Attualmente la sua ultima versione è la 2000. Questo software è copyright “Cult of the Dead Cow” (Culto della Mucca Morta).

I comandi di Back Orifice 2000

A differenza degli altri trojan più diffusi, i comandi di BO, vengono riportati in una finestra a parte, che appare quando si specifica con che server ci si vuole connettere; all’interno di questa finestra sono organizzati come un menu ad albero.

  • Simple: Contiene ping e query.
  • System: Da questo menu è possibile resettare la macchina remota, bloccarla, ottenere una lista di password e delle informazioni sul PC (remoto).
  • Key logging: Gestisce un keylogger, che permette di sapere quali tasti sono stati premuti (quindi anche le password non salvate).
  • GUI: Manda i messagebox.
  • TCP/IP: Alcune informazioni sulle comunicazioni remote, apre un server HTTP e gestisce le porte aperte.
  • Process control: Permette di gestire tutti i processi della macchina remota.
  • Registry: Modifica il registro di configurazione.
  • Multimedia: Cattura immagini ed esegue file sonori (solo wav).
  • File/Directory: Con questi comandi è possibile gestire file e cartelle, permette anche di modificare gli attributi.
  • Compression: Comprime e decomprime file.
  • DNS: Traduce un Host name in indirizzo IP numerico e viceversa.
  • Server control: Controlla e gestisce il server remoto.
  • Legacy buttplugs: Aggiorna il server tramite dei plugin.

Il server di Back Orifice 2000

Ha una dimensione che si aggira intorno ai 136 Kb ed è ampiamente configurabile, anche grazie ad un Wizard Setup in 8 passaggi. Questo permette di stabilire se la comunicazione avverrà tramite TCP/IP o attraverso pacchatti UDP, la porta da sfruttare (i Wizard ci ricorda persino che scegliendo un porta fra la 1 e la 1024 probabilmente si avranno conflitti con altri demoni), dà la possibilità di scegliere tra due tipi di crittografia per la comunicazione col client e permette di settare una password di accesso (che, a seconda del tipo di crittografia, dovrà essere lunga almeno 4 o 14 caratteri). E’ inoltre possibile installare dei plugin, in modo da aggiornare i comandi del server.

Diffusione

Come detto in precedenza, le back door differiscono dai virus in quanto (generalmente) non hanno la capacità di autoreplicarsi. Ma allora come sono riusciti a diffondersi in tutta la rete?
Ci sono moltissimi modi per infettare nuovi PC con il server di qualche trojan: questo può essere nascosto dentro altri file e diffuso via e-mail o (più raramente) su dischetti; può essere installato da un hacker per mantenere l’accesso root, può unirsi ad un worm (ottenendo così la capacità di autoreplicarsi)… e potremmo andare avanti all’infinito, limitati solo dall’immaginazione.
La posta elettronica, rappresenta sicuramente il mezzo più comune, anche se una normale mail con allegati sospetti sarebbe facilmente smascherbile. Vediamo quindi le principali strategie adottate dai diffusori dei server per inviare mail non troppo normali e ben più pericolose.

Antivirus cechi

La tecnica più pericolosa, in quanto rende il server invisibile agli antivirus, consiste nel compattare il server stesso con un compattatore di eseguibili (come wwpack32 o ASPack) e nel fonderlo con altri file tramite tools (come stealth installer).

I compattatori di eseguibili hanno la caratteristica di comprimere l’area dati e codici del file mantenendo inalterate le sue funzioni, quindi il risultato sarà un server invisibile (in quanto l’antivirus non sarà più in grado di riconoscerlo) ma comunque eseguibile (e pericoloso).

I programmi tipo Stealth Installer e Skillrope invece, riescono a unire più file in un unico eseguibile; all’esecuzione del file ottenuto, i files originari si rigenereranno e verranno eseguiti. La pericolosità di questi tool è che generalmente codificano i codici con chiavi random MOD-OR di lunghezza infinita, rendendo irriconoscibili i files originari.

Exploits

Sono numerosissimi gli exploits che permettono di nascondere e far eseguire un file: il più famoso credo sia quello del MIME (penso sia il più famoso perché è apparso anche su “Io Programmo”). Questo exploit (di dubbia efficacia) viene sfruttato facendo passare un tipo di allegato per qualcos’altro: ad esempio è possibile far passare un exe per un jpg.

Il problema del protocollo MIME è che se il Subject è di 255 caratteri ASCII (quindi anche spazi vuoti), ad esso può essere data un’estensione diversa da quella “dichiarata” nel Content type. Quindi otterremo un allegato con icona (e falsa estensione se in Subject viene messo il nome con una falsa estensione) diversa da quella di default per l’estensione reale. Al posto di un’icona di applicazione vedremo l’icona di immagine.

Questo exploit è quindi in grado di confondere le idee ad un ignaro utente, che vede un’immagine allegata (molto meno sospetta rispetto ad un eseguibile). Se poi l’antivirus non rileva nulla (grazie agli ormai noti “compattatori di eseguibili”) la faccenda è ancora più rischiosa.

Autoreplicazione

E’ vero, per definizione i trojan non si replicano da soli. Tuttavia nessuno impedisce ad un “individuo” di creare un worm che apra delle porte sul sistema infetto. Questa tecnica (molto poco diffusa di cui non si hanno notizie certe) penso comunque sia controproducente per l’individuo stesso; è vero che avrebbe numerose macchine infette a disposizione, ma è anche vero che in tempo breve l’infezione verrebbe scoperta ed eliminata. L’obiettivo dei trojan, invece, è quello di rimanere nascosto il più possibile nella macchina remota. In secondo luogo c’è anche da considerare che la stragrande maggioranza degli utilizzatori di Back Door non è in grado di creare o modificare un worm e viceversa.

Questi sono solo dei piccoli esempi di come un server trojan riesce a diffondersi nella rete. Come già detto le tecniche sono praticamente infinite, limitate solo all’immaginazione e alla creatività di chi li usa.

Per non far confusione, penso sia meglio dividere l’argomento in due parti, ovvero: Prevenire e Curare.

Prevenire

Che dire? Beh, sicuramente la prima regola per evitare infezioni è: Non fidarti se non di te stesso (e in certi casi, non fidarti nemmeno di te stesso :); non cedere mai alla curiosità di sapere che cosa c’è nell’allegato, anche se la mail viene dalla casella del tuo migliore amico, non è detto che sia stato lui a mandarla… Le stesse regole che evitano le infezioni di virus e worm, sono efficaci anche sul campo trojan (vedi sezione virus e worm).

Da sole però non bastano, la mancanza di autoreplicazione infatti, se è un vantaggio da una parte, non lo è dall’altra: non dobbiamo difendere la nostra macchina da un programma (quindi da un qualcosa di ripetitivo, che esegue determinati comandi) ma da una persona che ragiona a modo suo, non seguendo determinati schemi o comandi, e questo rappresenta un pericolo. E’ vero, è un ragionamento paranoico, la rete non è poi così piena di individui che aspettano solo di entrare nel nostro computer (anche perché non contiene informazioni così preziose), ma serve comunque a essere un pochino più cauti, risparmiandoci errori stupidi.

Inutile ricordare che un antivirus non aggiornato è un antivirus semi-inutile e che una scansione ogni tanto non nuoce.

Importante è anche avere un CD o comunque delle copie dei dati importanti, custodite al di fuori del PC connesso alla rete, in modo da limitare gli eventuali danni.

Nel campo dei trojan però, dobbiamo ricordarci che il rischio più grande non è quello di perdere dei dati (o anche tutti i dati): il pericolo reale è che un intruso può usare la nostra macchina per ridirezionare il flusso dei dati. In poche parole, l’intruso navigherà con il nostro IP e, se farà danni, i responsabili potremmo risultare noi.

Come evitarlo? Come disse non mi ricordo più chi, “l’unico computer sicuro è quello sconnesso, spento e chiuso in una stanza schermata da due metri di piombo… e anche in questo caso ho dei dubbi” Ovviamente la situazione non è così grave, basterebbe essere sconnessi… già, ma così non potremo accedere alla rete… quindi ecco che ci vengono incontro i firewalls. Personalmente consiglio ATGuard e Conseal (utilizzati insieme danno una buona protezione, anzi veramente buona). Questi programmi controllano costantemente tutte le connessioni della macchina e chiedono conferma per ogni tipo di comunicazione, cosa che blocca i tentativi di lamer e simili (“per Hacker veri… speriamo che non facciano troppi danni”).

Curare

Il nostro antivirus di fiducia (aggiornato) dovrebbe eliminare il problema, ma non è sempre così. Se il risultato della scansione non ci soddisfa, dobbiamo innanzitutto sapere il più possibile su che tipo di trojan è installato sul nostro PC: la “port list” potrebbe tornarci utili qualora con il comando “netstat” (ne parleremo più sotto) scoprissimo comunicazioni sospette su una determinata porta. Una volta scoperto di che si tratta, possiamo seguire diverse strategie: la più facile penso sia procurarsi il client e chiudere il server per poi eliminarlo manualmente.

Altro metodo consiste nel controllare manualmente il registro di configurazione, eliminando comandi sospetti nella chiave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

stando ovviamente attenti a non cancellare cose utili (o vitali). Una volta eliminata la chiamata “maligna” potremo eliminare il server dal nostro sistema solo dopo aver riavviato; infatti non potremo cancellare il file poiché questo risulta in esecuzione.

In rete si possono trovare dei tool (Netbuster e simili) per eliminare i server dei trojan più famosi. Queste applicazioni sono efficaci la maggior parte delle volte, però spesso hanno il brutto difetto di nascondere altri server di altri trojan… quindi valutatene voi la validità.

Dimenticavo: spesso i server sono accompagnati da un file con estensione dll. Questo è il file dedicato al keylogger… di per se non è pericoloso perché, una volta eliminato il server, cade in disuso: prima di rischiare di eliminare una dll utile, è meglio pensarci due volte; comunque i nomi delle dll possono essere cambiati (non nella configurazione dei server ma in hex) quindi… forse è meglio lasciarle dove sono.

Netstat

Ovvero il miglior amico di chi non si sente al sicuro. Netstat si trova in c:\windows ed è un programma MS-DOS, quindi per lanciarlo bisogna prima aprire il prompt dos e poi digitarne il nome.

Netstat è in grado di visualizzare e monitorare tutte le connessioni e le porte in ascolto della nostra macchina, quindi può anche dirci se c’è qualche demone in ascolto su qualche porta.

Il comando netstat è seguito da diversi parametri, in questo modo:

NETSTAT [-a] [-e] [-n] [-s] [-p XX] [-r] [intervallo]

  • -a: Visualizza tutte le connessioni e le porte di ascolto.
  • -e: Visualizza le statistiche Ethernet. L’opzione può essere associata al parametro -s.
  • -n: Visualizza gli indirizzi e i numeri di porta in forma numerica.
  • **-p XX**Visualizza connessioni del protocollo specificato da “XX” questo può essere TCP o UDP. Se usato con l’opzione -s per le statistiche, “XX” può essere TCP, UDP, o IP.
  • -r: Visualizza la tabella di routing.
  • -s: Visualizza le statistiche per protocollo. Per impostazione predefinita, le statistiche sono visualizzate per TCP, UDP e IP; l’opzione -p può essere utilizzata per specificare un sottoinsieme dell’impostazione predefinita.
  • intervallo: Rivisualizza le statistiche selezionate, interrompendo per un numero di secondi pari a “intervallo” tra ogni visualizzazione. Premere CTRL+C per fermare la visualizzazione delle statistiche. Se omesso, netstat stamperà le informazioni di configurazione correnti una sola volta.

Quindi, lanciando “NETSTAT -an 20” avremo un rapporto aggiornato ogni 20 secondi sulle connessioni della macchina, le porte in ascolto, gli indirizzi (in formato numerico) e le porte delle macchine a cui siamo connessi.

Da tenere sott’occhio sono le porte remote, sapendo che la 80 (o anche 8080) è usata dai server web (non dei trojan ma da quelli che ospitano i siti), la 21 dal protocollo ftp, la 23 da telnet, la 25 per SMTP e la 110 per POP3 (per una lista completa visita la lista delle porte) e che generalmente le porte dalla 1 alla 1024 vengono usate da programmi conosciuti e non bellicosi, se ci troviamo connessi a una porta remota più alta di 1024 e non dovrebbe essere così… beh, allora sapremo su che porta comunica il trojan e, con ogni probabilità, avremo l’IP dell’intruso..'

Esempio di codice C

In questa pagina il nostro discorso andrà oltre l’aspetto esteriore dei trojan. Di seguito viene illustrato il codice di un piccolo server, l’applicazione, che chiameremo miniserver, si metterà in ascolto sulla porta 4444 e, dopo un preciso comando inviatogli dal client (telnet e simili), farà apparire un messaggio avvertendo l’utente della macchina remota che il suo pc è insicuro. Per sviluppare miniserver è stato usato il linguaggio C++ e per la compilazione Dev C++, ma penso che qualsiasi compilatore C/C++ vada bene.

Bene, iniziamo. Per rendere più facile la lettura del codice, lo riportiamo in colori diversi, in azzurro verranno riportati i commenti, mentre in nero ed in verde il codice vero e proprio (in rosso gli avvisi a video).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "stdio.h"
#include "winsock.h"
#define ESC 0x1b

// Fino a qui nulla di speciale, importo le libreri che servono e stabilisco quale tasto è l'escape..
// Cosa importante è ricordarsi di linkare la libreria libwsock32.a (nel caso di DevC++, per gli altri
// compilatori non so se si chiama così)

 int main (void) {

    SOCKET socklis,sockacp;
    sockaddr\_in socklis\_in,sockacp_in;
    WORD wVersionRequested;
    WSADATA wsaData;
    int err, backlog=1, addrlen;
    char sendb\[\]="Miniserver\\r\\nPremi:\\r\\n\\"esc\\" per sconnetterti\\r\\n\\"a\\" per avviso remoto\\r\\n";
    char recvb=' ';
    char comFal\[\]="Comando non valido\\r\\n";
    char comOk\[\]="Comando eseguito!\\r\\n";

    // Qui sopra vengono dichiarate le variabili, da notare le variabili di tipo SOCKET; i socket
    // sono quegli strumenti che servono per comunicare nella rete, possiamo immaginarli come un canale
    // tra 2 punti, una volta aperto e accettato, può essere usato per inviare dati. Altra cosa da notare
    // è la wsaData, in seguito verrà usata per verificare la versione della winsock.dll installata
    // sulla macchina.

    wVersionRequested = MAKEWORD( 2,0 );
    printf("Miniserver su porta 4444\\n\\n");
    WSAStartup( wVersionRequested, &wsaData );

    // Con WSAStartup() la winsock.dll viene inizializzata, indicando la versione richiesta e la locazione
    // della strusttura wsaData, che verrà usata per immagazzinare i dati della dll

    socklis = socket (PF\_INET, SOCK\_STREAM, 0);
    socklis\_in.sin\_family = PF_INET;
    socklis\_in.sin\_port = htons (4444);
    socklis\_in.sin\_addr.s\_addr = INADDR\_ANY;

    // Una volta inizializzata la winsock.dll, viene aperto il socket, specificando il protocollo usato
    // (PF_INET è il TCP/IP), la porta locale e l'indirizzo locale

    bind (socklis, (struct sockaddr*)&socklis_in, sizeof(struct sockaddr_in));
    listen(socklis, backlog);
    printf("In attesa di una connessione...\\n");

    // Ora il socket deve essere inizializzato con la funzione bind(), in questo modo viene inizializzata
    // con i valori contenuti nella struttura socklis_in, definiti prima (protocollo, porta e indirizzo).
    // Dopodiché si mette in attesa il socket, con la funzione listen()

    addrlen=sizeof(struct sockaddr);
    sockacp=accept(socklis, (struct sockaddr*)&sockacp_in, (LPINT)&addrlen);

    // Per preparare il socket ad accettare una connessione, si usa la funzione accept() che, come parametri
    // richiede il socket in ascolto e una struttura tipo sockaddr_in che verrà riempita dai dati
    // che il client invierà al server.

    send(sockacp, &sendb\[0\], strlen(sendb), 0);
    printf("In attesa di ordini...\\n");

    // una volta accettata una connessione, il nostro server abbandona l'ascolto ed invia un messaggio al client,
    // una specie di benvenuto.

    while(recvb!=ESC) {
      recv(sockacp, &recvb, 1, 0);
      if (recvb!=ESC) {
        if (recvb=='a') {
          MessageBox (NULL, "Il suo sistema è insicuro..." ,"Attenzione", 0 + MB_SYSTEMMODAL);
          send(sockacp,comOk,strlen(comOk),0);
        }
        else {
          send(sockacp,comFal,strlen(comFal),0);
        }
      }
    }

    // In questa parte creo un ciclo che permette la ricezione di dati dal client fino a che non riceve
    // il valore del tasto "esc".
    // Inoltre c'è un altro ciclo, che permette di eseguire un comando (in questo caso un messaggio)
    // quando si riceve la lettera "a".
    // Nel caso di più istruzioni, al posto di un ciclo if, sarebbe meglio un case.

    closesocket(sockacp);
    closesocket(socklis);
    return(0);
 }

 // Infine i socket vengono chiusi con la funzione closesocket() e si esce dal programma

Beh, con il codice soprastante non è possibile arrecare danni ad una eventuale vittima, penso serva comunque a capire con che facilità potrebbe essere generato un trojan. A seconda del linguaggio utilizzato, questo potrà avere funzioni più o meno complesse e dimensioni diverse (il nostro miniserver occupa circa 8 kb).

Le porte più diffuse

Port Trojan
2 Death
21 Back Construction, Blade Runner, Doly Trojan, Fore, FTP Trojan, Invisible FTP, Larva, MBT, Motiv, Net Administrator, Senna Spy FTP Server, WebEx, WinCrash
23 Tint Telnet Server, Truva Atl
25 Ajan, Antigen, Email Password Sender, Gip, Haebu Coceda, Happy 99, I Love You, Kaung2, Pro Mail Trojan, Shtrilitz, Stealth, Tapiras, Terminator, WinPC, WinSpy
31 Agent 31, Hackers Paradise, Masters Paradise
41 Deep Throat
48 DRAT
50 DRAT
59 DMSetup
79 Firehotcker
80 Back End, Executer, Hooker, RingZero
99 Hidden Port 2.0
110 ProMail Trojan
113 Invisible Identd daemon, Kazimas
119 Happy99
121 Jammer Killah V
123 Net Controller
133 Faranz, port 146 - Infector
146 UDP Infector
170 A-Trojan
421 TCP Wrappers
456 Hackers Paradise
531 Rasmin
555 ini-Killer, NetAdmin, Phase Zero, Stealth Spy
666 Attack FTP, Back Construction, Cain & Able, NokNok, Satanz Backdoor, ServeU, Shadow Phyre
667 SniperNet
669 DP Trojan
692 GayOL
777 Aimspy
133 Faranz, port 146 - Infector
808 WinHole
911 Dark Shadow
999 Deep Throat, WinSatan
1000 Der Spaeher 3
1001 Der Spaeher 3, Doly Trojan, Silencer, WebEx
1010 Doly Trojan 1.35
1011 Doly Trojan
1012 Doly Trojan
1015 Doly Trojan 1.5
1016 Doly Trojan 1.6
1020 Vampire
1024 NetSpy, Psyber Streaming Server
1029 InCommand Access
1033 NetSpy
1042 Blah 1.1
1045 Rasmin
1050 Mini Command 1.2 Access
1080 WinHole
1081 WinHole
1082 WinHole
1083 WinHole
1090 Xtreme
1095 RAT
1097 RAT
1098 RAT
1099 BFevolution, RAT
1170 Psyber Stream Server, Streaming Audio Trojan, Voice
1200 UDP NoBackO
1201 UDP NoBackO
1207 Softwar
1212 Kaos
1225 Scarab
1234 Ultors Trojan
1243 BackDoor-G, SunSeven, SubSeven Apocalypse
1245 VooDoo Doll
1255 Scarab
1256 Project nEXT
1269 Mavericks Matrix
1313 NETrojan
1338 Millenium Worm
1349 UDP BackOrifice DLL
1492 FTP99CMP
1509 Psyber Streaming Server
1524 Trinoo
1600 Shivka-Burka
1777 Scarab
1807 Spy Sender
1981 Shockrave
1966 Fake FTP
1969 OpC BO
1981 Shockrave
1999 TransScout, Backdoor
2000 Der Spaeher 3, TransScout, Insane Network 4, Milennium
2001 Der Spaeher 3, TransScout, Trojan Cow
2002 TransScout
2003 TransScout
2004 TranScout
2005 TransScout
2023 Ripper Pro, PassRipper
2080 WinHole
2115 Bugs
2140 Deep Throat, The invasor
2155 illusion Mailer
2283 HVL Rat 5
2300 Xplorer
2565 Striker
2583 WinCrash 2
2600 Digital Root Beer
2716 The Prayer 2
2773 SubSeven
2801 Phineas Phucker
2989 UDP Rat
3000 Remote Shutdown
3024 WinCrash
3128 RingZero
3129 Masters Paradise
3150 Deep Throat, The invasor
3459 Eclipse 2000, Sanctuary
3700 Portal Of Doom
3791 Eclypse, Totaleclipse 1.0
3801 UDP Eclypse
4000 Psyber Streaming Server, Skydance
4092 WinCrash
4242 Virtual Hacking Machine
4321 BoBo, SchoolBus 1.0
4444 Prosiak, Swift remote
4567 File Nail
4590 ICQTrojan
5000 Bubbel, Back Door Setup, Sockets de Troie, Socket 23
5001 Back Door Setup, Socket de Troie
5010 Solo
5011 One Of The Last Trojans (OOTLT), OOTLT Cart
5031 NetMetropolitan 1.0/1.04
5032 NetMetropolitan
5321 Filehotcker
5343 wCrat
5400 Blade Runner, Back Construction 1.2/1.5
5401 Blade Runner, Back Construction
5402 Blade Runner, Back Construciton
5512 illusion Mailer
5521 illusion Mailer
5550 Xtcp, Xtcp2
5555 ServeMe
5556 Bo Facil
5557 Bo Facil
5569 RoboHack
5637 Crasher
5638 Crasher
5714 WinCrash
5741 WinCrash
5742 WinCrash
5882 UDP Y3K RAT
5888 Y3K RAT
6000 The Thing
6006 The Thing
6272 Secret Service
6400 The Thing
6666 TCPShell (*NIX Backdoor)
6669 Vampyre
6670 Deep Throat
6711 SubSeven
6712 SubSeven
6713 SebSeven
6723 Mstream
6771 Deep Throat
6776 BackDoor-G, SubSeven
6838 UDP Mstream
6883 DeltaSource
6912 ShitHeep
6913 ShitHeep Danny
6939 Indoctrination
6969 GeteCrasher, Priority, IRC 3
6970 GeteCrasher
7000 Remote Grab, Kazimas
7001 Freak88
7215 SubSeven
7300 NetMonitor
7301 NetMonitor
7302 NetMonitor
7303 NetMonitor
7304 NetMonitor
7305 NetMonitor
7306 NetMonitor
7307 NetMonitor
7308 NetMonitor
7309 NetMonitor
7424 Host Control
7424 UDP Host Control
7789 Back Door Setup, ICKiller
7983 Mstream
8080 RingZero
8787 BO2K
8879 Hack Office Armageddon
8988 BacHack
8989 Rcon
9000 Netministrator
9325 UDP Mstream
9400 InCommand
9872 Portal Of Doom
9873 Portal Of Doom
9874 Portal Of Doom
9875 Portal Of Doom
9876 Cyber Attack, RUX
9878 TransScout
9989 ini-Killer
9999 The Prayer 1
10067 UDP Portal Of Doom
10085 Syphillis
10086 Syphillis
10101 BrainSpy
10167 UDP Portal Of Doom
10520 Acid Shivers
10528 Host Control
10607 Coma
10666 Ambush
10752 LINUX mounts Backdoor
11000 Senna Spy
11050 Host Control
11051 Host Control
11223 Progenic Trojan
12076 Gjamer
12223 Hack 99 KeyLogger
12345 NetBus, GabanBus, X-Bill, Pie Bill Gates
12346 NetBus 1.0, GabanBus, X-Bill
12361 Whack-a-Mule
12362 Whack-a-Mule
12623 UDP DUN Control
12624 Buttman
12631 Whack Job
12701 Eclipse 2000
12754 Mstream
13000 Senna Spy
13010 Hacker Brazil
13700 Kuang 2 The Virus
15092 Host Control
15104 Mstream
16484 Mosucker
16660 Stracheldracht
16772 ICQ Revenge
16959 Subseven DEFCON8 2.1
16969 Priority, Portal Of Doom
17166 Mosaic
17300 Kaung 2 The Virus
17777 Nephron
18753 UDP Shaft
19864 ICQ Revenge
20000 Milennium
20001 Milennium
20002 AcidkoR
20034 NetBus 2 Pro
20203 Logged!, Chupacabra
20331 Bla
20432 Shaft
20432 UDP Shaft
21544 Girl Friend, Kidterror, Schwindler 1.8, Schwindler 1.82
22222 Prosiak
23023 Logged
23432 Asylum
23456 Evil FTP, Ugly FTP, Whack Job
23476 Donald Duck
23476 UDP Donald Duck
23477 Donald Duck
26274 UDP Delta Source
26681 Spy Voice
27374 SubSeven 2.1
27444 UDP Trinoo
27573 SubSeven
27665 Trinoo
29104 Host Control
29891 UDP The Unexplained
30001 TerrOr32
30029 AOL Trojan 1.1
30100 NetSphere
30101 NetSphere
30102 NetSphere
30103 NetSphere
30103 UDP NetSphere
30133 NetSphere Final 1.31.337, Trojan Spirit 2001a
30303 Sockets de troie, Socket 23, Socket 25
30974 Intruse
30999 Kaung 2
31335 UDP Trinoo
31336 BO Whack, ButtFunnel
31337 Baron Night, BO Client, BO2, BO Facil
31337 UDP Back fire, Back Orifice, Deep BO
31338 NetSpy DK, ButtFunnel
31338 UDP Back Orifice, Deep BO
31399 NetSpy DK
31554 Schwindler
31666 BoWhack
31785 Hack a Tack
31787 Hack a Tack
31788 Hack a Tack
31789 UDP Hack a Tack
31791 UDP Hack a Tack
31792 Hack a Tack
32100 Peanut Brittle, Project nEXT
32418 Acid Battery 1.0
33333 Blakharaz, Prosiak
33577 PsychWard
33777 PsychWard
33911 Spirit 2001a
34324 BigGluck, TN, Tiny Telnet Server
34555 UDP Trinoo - Windows
35555 UDP Trinoo - Windows
37651 Yet Another Trojan
40412 The Spy
40421 Masters Paradise, Agent 40421
40422 Masters Paradise
40423 Masters Paradise
40426 Masters Paradise
41666 Remote Boot
41666 UDP Remote Boot
43210 SchoolBus 1.6/2.0
44444 Prosiak
47262 UDP Delta Source
49301 Online KeyLogger
50505 Sockets de Troie
50766 Fore, Schwindler
50776 Fore, Remote Windows Shutdown
51996 Cafeini
52317 Acid Battery 2000
53001 Remote Windows Shutdown
54283 SubSeven
54320 Back Orifice 2000
54321 Back Orifice 2000, SchoolBus 1.6/2.0
54321 UDP Back Orifice
57341 Netraider
58339 ButtFunnel
60000 Deep Throat
60068 Xzip 6000068
60411 Connection
61348 BunkerHill
61466 TeleCommando
61603 BunkerHill
63485 BunkerHill
65000 Devil 1.03, Stacheldracht
65432 The Traitor
65432 UDP The Traitor
65535 RC