Analisi di SkypeACLKeyGen.exe per hacking team
Quindi...
cosa analizziamo oggi? beh, oggi analizziamo un software del team di hacking. Si tratta di Skype? perché lo facciamo? non lo so, lo trovo interessante.
Comunque, iniziamo ispezionando il comportamento a runtime. Come puoi vedere, richiede un nome utente e un percorso del plugin e restituisce un acl? quindi... di cosa ca**o si tratta? Beh, ispezionando questo https://airbus-seclab.github.io/skype/vskype-part2.pdf, ci dice che - "Skype implementa un sistema simile all'ACL per consentire o negare ai plugin di agganciarsi a un'istanza in esecuzione. Una "firma" del plugin viene aggiunta al file di configurazione in base alla risposta dell'utente a un dialogo di avviso" -. Quindi ok, cosa c'è nella cartella di quel software?
Quindi ehm ok... ancora non ci dice nulla. giusto, quindi vediamo uno shellcode stage 1 con finale office in quella cartella che potrebbe indicare un exploit office (non ancora confermato), fakeport che è un'app c# tracer.exe e altre cose. Figo, il mio sospetto è che il plugin vero e proprio che verrà registrato sia tracer.exe. Perché? Beh, dallo stesso pdf - "Il motore vocale di Skype può generare file di trace criptati se Logging e Logging2 sono impostati. La crittografia è molto più semplice, uno XOR di base con una chiave di 31 byte" -. Quindi diamo un'analisi del generatore effettivo dell'acl, e poi passiamo a tracer, e magari in un altro post allo shellcode ;)
Iniziamo con questo
Poi passiamo a questo
E infine confluiamo in questi
Da lì si passa a questo




Figo, un altro comportamento dinamico da easter egg è questo: quando inserisci utente e plugin da eseguire ottieni .png)
Comunque, andiamo avanti e analizziamo



Quindi, da una vista top-down, calcola lo sha2 del contenuto del file e mappa anche i suoi contenuti in memoria. Sfortunatamente per me, dinamicamente è fallito e quindi non ha fatto nulla :/ cosa possiamo fare? Andiamo avanti. Entriamo in probably_do_hash_based_function_function_recovery.


Purtroppo è lo stesso caso del precedente in cui non riusciamo a mapparlo in memoria e usciamo dalla funzione. Ciononostante calcoliamo solo md5 e probabilmente facciamo un recupero di funzioni basato sul confronto md5.
Poi andiamo avanti e facciamo un po' di malloc e memset
.png)
Poi convertiamo il nome del file in maiuscolo

Stessa cosa per il nome utente

Figo e poi facciamo questo:
In pratica creiamo il nostro acl per permetterci di eseguire il nostro plugin. In questo caso, ora presuppongo che sarà Tracer.exe che teoricamente suppongo registrerà i file di trace generati dal motore vocale di Skype.



Risultato dell'output delle funzioni delle immagini superiori

Risultato dell'output delle funzioni delle immagini superiori
Per ora è tutto. Più tardi oggi tornerò e aggiornerò questo post. Per ora ciò che resta è analizzare solo questa metà di funzione
Inoltre, più tardi quando tornerò, ci addentreremo in some_decode function solo per divertimento e da lì andremo nel binario tracer.exe. Buon hacking e a presto.