Domanda:
Malware Hooking INT 1 e INT 3
mrduclaw
2013-03-31 07:48:01 UTC
view on stackexchange narkive permalink

Capisco che su x86, INT 1 viene utilizzato per single-stepping e INT 3 viene utilizzato per impostare punti di interruzione e qualche altro interrupt (di solito 0x80 per Linux e 0x2E per Windows) veniva utilizzato per le chiamate di sistema.

Se un pezzo di malware aggancia la tabella dei descrittori di interrupt (IDT) e sostituisce i propri gestori INT 1 e INT 3 che eseguono chiamate di sistema simili funzionalità, come posso utilizzare un debugger per tracciarne l'esecuzione? O sono bloccato con l'utilizzo di strumenti di analisi statica?

Una soluzione sarebbe applicare una patch all'esempio in modo che gli hook vengano rimossi o spostati su interrupt che non interferiscono con il debug. Per curiosità sai se ci sono esempi pubblicamente disponibili che lo fanno su Windows?
Rimuovere gli hook è abbastanza facile se il codice non utilizza gli hook per funzionalità simili a chiamate di sistema. Spostarli su un altro interrupt sembra che dovrebbe funzionare. Il problema ora è che il codice è piuttosto pesante, quindi la modifica è fastidiosa. : / E no, nessun campione disponibile pubblicamente che io sappia, mi dispiace.
Giusto per essere sicuri, questo interferisce anche con i debugger a livello di kernel, giusto?
Questo è una specie di approccio Ave Maria, ma se lo facessi in Linux, potresti ricompilare il tuo kernel con un IDT personalizzato e ricostruire il tuo debugger con la nuova mappatura. Probabilmente ne varrebbe la pena solo se ti imbatterai spesso in questo tipo di campioni.
@amccormack: ma se il malware si basa sulla funzionalità del kernel presente in quei vettori di interrupt, non smetterà di funzionare? Mi aspetto che dovrai stare molto attento a come fai la modifica del kernel ...
Una risposta:
#1
+9
deroko
2013-03-31 18:33:58 UTC
view on stackexchange narkive permalink

Suggerirei questo come una soluzione http://accessroot.com/arteam/site/download.php?view.185 poiché ho avuto un problema simile in uno dei crackmes. Quello che ho fatto è stato scrivere i miei hook per SoftICE per bypassare gli hook ring0 di int 3 e int 1. Potrebbe essere utile per il tuo problema. La sezione interessante è "SoftICE viene in soccorso".

Si prega di citare le parti pertinenti dal collegamento invece di fornire il collegamento qui.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...