
J'ai documenté tous les patchs AMSI que j'ai appris jusqu'à présent.
J'ai documenté tous les correctifs AMSI que j'ai appris jusqu'à présent


a. Pour éviter d'entrer dans amsi!AmsiOpenSession+0x4c via jne, si toutes les instructions réussissent avant l'appel de jne
=> On aboutirait directement à amsi!AmsiCloseSession.
Lien vidéo : https://drive.google.com/file/d/1H0JheGNGzIyWZ62HNLmJ_oeAAUtDGIKd/view?usp=sharing
jne depuis amsi!AmsiOpenSession Github. J'ai utilisé son modèle de code de patch AMSI et ajouté d'autres méthodes sur lesquelles j'ai travaillé jusqu'à présent.b. Pour éviter d'entrer dans amsi!AmsiOpenSession+0x4c (Ouvre une session dans laquelle plusieurs requêtes de scan peuvent être corrélées) via ret, en collant directement c3 au début de amsi!AmsiOpenSession
=> On aboutirait directement à amsi!AmsiCloseSession.
Lien vidéo : https://drive.google.com/file/d/1_tpCfJ-aO1wzeEx3Id7b7bTJUyc5ExBw/view?usp=sharing
a. Pour sauter l'exécution des instructions principales de amsi!AmsiScanBuffer via ret, en collant directement c3 au début de amsi!AmsiScanBuffer
Lien vidéo : https://drive.google.com/file/d/1PljZld1aXz89nCO3gQCjYpwSqbEbi4J_/view?usp=sharing
b. Pour sauter la branche qui effectue le scan proprement dit dans amsi!AmsiScanBuffer et renvoie, en collant directement \\xB8\\x57\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070057; ret') au début de amsi!AmsiScanBuffer
Ici, la valeur (plutôt valeur d'erreur) de HRESULT étant 'E_INVALIDARG' (Source : https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
c. Pour sauter la branche qui effectue le scan proprement dit dans amsi!AmsiScanBuffer et renvoie, en collant directement \\xB8\\x05\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070005; ret') au début de amsi!AmsiScanBuffer
Ici, la valeur (plutôt valeur d'erreur) de HRESULT étant 'E_ACCESSDENIED' (Source : https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
d. Pour sauter la branche qui effectue le scan proprement dit dans amsi!AmsiScanBuffer et renvoie, en collant directement \\xB8\\x06\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070006; ret') au début de amsi!AmsiScanBuffer
Ici, la valeur (plutôt valeur d'erreur) de HRESULT étant 'E_HANDLE' (Source : https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
e. Pour sauter la branche qui effectue le scan proprement dit dans amsi!AmsiScanBuffer et renvoie, en collant directement \\xB8\\x0E\\x00\\x07\\x80\\xC3 ('mov eax, 0x8007000E; ret') au début de amsi!AmsiScanBuffer
Ici, la valeur (plutôt valeur d'erreur) de HRESULT étant 'E_OUTOFMEMORY' (Source : https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
Par Ritaban Das : https://github.com/dosxuz/TradecraftImrprovement
JE à JMP pour qu'il retourne directement... : https://github.com/ZeroMemoryEx/Amsi-Killer