
Script Python IDA per decifrare le stringhe da KPOT e impostarle come commenti
Script Python per IDA che decifrano le stringhe del KPOT stealer e le impostano come commenti accanto alla variabile che le riceverebbe durante l'esecuzione. Funziona così:
Recupera l'offset passato in eax alla funzione di decifratura (ce ne sono due, motivo per cui questo repository contiene due script), usando mov o pop eax.
Decifra la stringa da un array leggendone la dimensione corrispondente e la chiave XOR
Stampa la stringa decifrata e l'offset del punto in cui è stata impostata come commento, oltre a qualsiasi stringa che non è riuscito a decifrare (vedi Considerazioni importanti qui sotto)
Ci sono alcuni casi nel codice in cui il malware usa un metodo diverso da quelli gestiti dagli script. Puoi trovare questi casi seguendo gli indirizzi con il messaggio Could not decrypt xref: e decifrarli fornendo manualmente l'offset alle funzioni pertinenti.
Lo script converte l'array decifrato in una stringa tramite decode(). Nella mia esperienza ci sono tre array di byte decifrati da KPOT che non sono stringhe, il che fa crashare lo script. Questi sono gli offset ignorati in kpot-string-decrypter-pt1.py.
search_offset() che stampi l'indirizzo corrente può aiutarti a trovare il punto in cui lo script va in crash.decrypt_str() in return(newarray.hex()).Per sapere quale dei due script usare, controlla la routine di decifratura: la pt1 è pensata per la sub che esegue solo uno XOR sui byte, mentre la pt2 è per quella che esegue AND 0xFF dopo lo XOR.