
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.
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.
a. Per saltare l'esecuzione delle istruzioni principali di amsi!AmsiScanBuffer tramite ret, incollando direttamente c3 all'inizio di amsi!AmsiScanBuffer
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)
JE a JMP così ritorna direttamente... : https://github.com/ZeroMemoryEx/Amsi-Killer