Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CallObfuscator — Offusca API specifiche di Windows con API diverse | Kitploit
Strumenti/GitHubGitHub/d35ha/callobfuscator
Strumenti DifensiviAnalisi StaticaAnalisi Dinamica (Sandboxing)Evasione IDS/IPSReverse EngineeringAnalisi MalwareAnalisi di Binari
GitHubd35ha/callobfuscator

CallObfuscator

Offusca API specifiche di Windows con API diverse

Vedi Repository
1.0k1745 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CallObfuscator

Oscura (nascondi) le importazioni PE dagli strumenti di analisi statica/dinamica.

Teoria

È abbastanza semplice, supponiamo di aver usato VirtualProtect e vogliamo oscurarlo con Sleep, lo strumento manipolerà l'IAT in modo che il thunk che punta a VirtualProtect punti invece a Sleep, ora all'esecuzione del file, il caricatore di Windows caricherà Sleep invece di VirtualProtect, e sposta l'esecuzione al punto di ingresso, da lì l'esecuzione verrà reindirizzata allo shellcode, posizionato prima dallo strumento, per trovare l'indirizzo di VirtualProtect e usarlo per sostituire l'indirizzo di Sleep assegnato in precedenza dal caricatore.

Come usarlo

  • Può essere incluso direttamente come libreria, vedi il seguente frammento (basato sull'esempio), puoi anche dare un'occhiata a cli.cpp.
root@kitploit:~
#include <cobf.hpp>

int main() {
	cobf obf_file = cobf("sample.exe");
	obf_file.load_pe();
	obf_file.obf_sym("kernel32.dll", "SetLastError", "Beep");
	obf_file.obf_sym("kernel32.dll", "GetLastError", "GetACP");
	obf_file.generate("sample_obfuscated.exe");
	obf_file.unload_pe();
	return 0;
};
  • Può anche essere usato come strumento da riga di comando fornendo il percorso del PE di input, il percorso del PE di output e opzionalmente il percorso del file di configurazione (predefinito è config.ini).
    cobf.exe <file input> <file output> [file config]
    Il file di configurazione contiene le oscurazioni necessarie (dll, simboli, ...).
    Ecco un template per il contenuto del file di configurazione
root@kitploit:~
; Template per il file di configurazione:
; 	* Le sezioni possono essere scritte come:
; 		[nome_dll]
; 		vecchio_simbolo=nuovo_simbolo
;	* Il nome della dll non è sensibile alle maiuscole, ma
;	il vecchio e il nuovo simbolo lo sono.
; 	* Puoi usare il carattere jolly sia sul
;	nome della dll che sul vecchio simbolo.
; 	* Puoi usare '#' all'inizio di
;	il vecchio o il nuovo simbolo per contrassegnare
;	un ordinale.
;	* Il nuovo simbolo deve essere esportato
;	dalla dll affinché il caricatore di Windows possa risolverlo.
; Per esempio:
; 	* Oscurare tutti i simboli
;	importati da user32.dll con ordinale 1600.
[user32.dll]
*=#1600
;	* Oscurare i simboli importati sia da
;	kernel32.dll che da kernelbase.dll con Sleep.
[kernel*.dll]
*=Sleep
;	* Oscurare fprintf con exit.
[*]
fprintf=exit

Esempio

Compila questo esempio di codice

root@kitploit:~
#include <windows.h>
#include <stdio.h>

int main() {
	SetLastError(5);
	printf("Last error is %d\n", GetLastError());
	return 0;
};

Dopo averlo compilato, ecco come appaiono le importazioni di kernel32

pic1

Ora oscuriamo sia SetLastError che GetLastError con Beep e GetACP (in realtà qualsiasi api da kernel32 andrà bene anche se non è importata affatto).
Le configurazioni utilizzate sono

root@kitploit:~
[kernel32.dll]
SetLastError=Beep
GetLastError=GetACP

Ecco l'output (puoi anche usare la libreria direttamente come mostrato sopra).

pic2

Ancora, diamo un'occhiata alle importazioni di kernel32

pic3

Non c'è traccia di SetLastError o GetLastError
Una conferma che i due file funzioneranno correttamente

pic4

Impatto

IDA HexRays Decompiler

pic5

IDA Debugger

pic6

Ghidra

pic7

ApiMonitor

pic8

Questo perché tutti gli strumenti di analisi statica dipendono dal nome dell'api scritto nell'IAT, che può essere manipolato come mostrato.
Per ApiMonitor, a causa dell'uso dell'hooking dell'IAT, esiste lo stesso problema.

D'altra parte, per strumenti come x64dbg, i nomi delle api mostrati dipenderanno solo da ciò che viene effettivamente chiamato (non da ciò che è scritto nell'IAT).

pic9

Aggiuntivo

  • Scaricare il PE oscurato dalla memoria non lo deoscurerà, perché l'IAT manipolato rimarrà lo stesso.
  • Lo scopo principale di questo strumento è interferire con il processo di analisi (renderlo più lento).
  • Si può oscurare qualsiasi simbolo importato (per nome o per ordinale) con un altro simbolo (nome o ordinale).
  • Lo shellcode viene eseguito come prima callback TLS per elaborare i simboli oscurati necessari alle altre callback TLS prima che il punto di ingresso venga eseguito.
  • Lo shellcode è distribuito come codice C, generato quando lo strumento viene compilato per facilitarne la modifica.
  • I nomi dei simboli oscurati vengono risolti tramite hash, non direttamente per nome.
  • Lo strumento disabilita i rilocazioni e rimuove eventuali simboli di debug.
  • Lo strumento crea una nuova sezione rwx chiamata .cobf per contenere lo shellcode e gli altri dati necessari.
  • Può essere utilizzato più volte sullo stesso PE oscurato.
  • Testato solo su Windows 10 x64.
  • Ottieni il sorgente con git clone https://github.com/d35ha/CallObfuscator.
  • Scarica i binari dalla Sezione Release.

DA FARE

  • Oscuramento dello shellcode (probabilmente con obfusion).
  • Supporto per i simboli a caricamento ritardato.
  • Minimizzare la dimensione della sezione creata.
  • Hashing in fase di compilazione.
  • Test migliori.
Scarica lo strumento