quelque notes sur l’OPSEC avec sliver
L'obfuscation d’implant est un point fort de sliver
. Il est écrit en Golang, et utilise garble
pour l'obfuscation ainsi que go-donut
pour la création de shellcode.
OPSEC note: les EDR/AV essaient de détecter la capacité d'obfuscation de
sliver
. on peut utiliser un loader custom, mais pour le moment, sliver a beaucoup moins de signatures que la plupart des autres C2.
sliver supporte uniquement le staging protocol de msf qui est servit soit en TCP soit en HTTP/S.
data = (DWORD)len(shellcode) + shellcode
le staging shellcode est juste un shellcode de msf, sauf qu'il pointe toujours vers une url aléatoire se terminant par une extension préconfigurée (.woff
par défaut)
OPSEC note: Évidemment, on peut utilise un custom staging pour sliver. il faut prendre en compte que les implants sont gros, et c’est à planifier en conséquence. (attention aux différentes techniques de stomping).
sliver
fournit une communication C2 obfusqué, structuré et de manière procédurales:
obfuscate(encrypt(protobuf(C2_message)))
cela signifie que la plupart des problèmes liés au profil de communication ont disparu. par contre il y a quelque chose qui peut être configuré et des détections possibles dont on doit être conscient.
Si vous êtes intéressé par le fonctionnement de l'échange de clés asymétriques de sliver, c’est ici