
Ho documentato tutte le patch AMSI che ho imparato fino ad ora
Ho documentato tutte le patch AMSI che ho imparato finora


a. Per saltare l'ingresso in amsi!AmsiOpenSession+0x4c tramite jne, se tutte le istruzioni riescono prima della chiamata di jne
=> Finiremmo direttamente in amsi!AmsiCloseSession.
Link video: https://drive.google.com/file/d/1H0JheGNGzIyWZ62HNLmJ_oeAAUtDGIKd/view?usp=sharing
jne da amsi!AmsiOpenSession Github. Ho usato il suo template di codice per la patch AMSI e ho aggiunto altri metodi su cui ho lavorato finora.b. Per saltare l'ingresso in amsi!AmsiOpenSession+0x4c (Apre una sessione all'interno della quale più richieste di scansione possono essere correlate) tramite ret, incollando direttamente c3 all'inizio di amsi!AmsiOpenSession
=> Finiremmo direttamente in amsi!AmsiCloseSession.
Link video: https://drive.google.com/file/d/1_tpCfJ-aO1wzeEx3Id7b7bTJUyc5ExBw/view?usp=sharing
a. Per saltare l'esecuzione delle istruzioni principali di amsi!AmsiScanBuffer tramite ret, incollando direttamente c3 all'inizio di amsi!AmsiScanBuffer
Link video: https://drive.google.com/file/d/1PljZld1aXz89nCO3gQCjYpwSqbEbi4J_/view?usp=sharing
b. Per saltare il ramo che esegue la scansione effettiva in amsi!AmsiScanBuffer e ritorna, incollando direttamente \\xB8\\x57\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070057; ret') all'inizio di amsi!AmsiScanBuffer
Qui, il valore (anzi, il valore di errore) di HRESULT è 'E_INVALIDARG' (Fonte: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
c. Per saltare il ramo che esegue la scansione effettiva in amsi!AmsiScanBuffer e ritorna, incollando direttamente \\xB8\\x05\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070005; ret') all'inizio di amsi!AmsiScanBuffer
Qui, il valore (anzi, il valore di errore) di HRESULT è 'E_ACCESSDENIED' (Fonte: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
d. Per saltare il ramo che esegue la scansione effettiva in amsi!AmsiScanBuffer e ritorna, incollando direttamente \\xB8\\x06\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070006; ret') all'inizio di amsi!AmsiScanBuffer
Qui, il valore (anzi, il valore di errore) di HRESULT è 'E_HANDLE' (Fonte: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
e. Per saltare il ramo che esegue la scansione effettiva in amsi!AmsiScanBuffer e ritorna, incollando direttamente \\xB8\\x0E\\x00\\x07\\x80\\xC3 ('mov eax, 0x8007000E; ret') all'inizio di amsi!AmsiScanBuffer
Qui, il valore (anzi, il valore di errore) di HRESULT è 'E_OUTOFMEMORY' (Fonte: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
Di Ritaban Das: https://github.com/dosxuz/TradecraftImrprovement
JE a JMP così ritorna direttamente... : https://github.com/ZeroMemoryEx/Amsi-Killer