Service Hacktion - Notes attachées au balado S01E05 - Erreurs volontaires dans les Preuves de Concept et les outils offensifs

Saison Épisode
1 5

Lexique#

  • PdC - Preuves de Concept - Production d'un code source permettant de prouver la présence ou l'exploitabilité d'une vulnérabilité dans un système informatique.
  • IdC - Indicateur de Compromission - Artefact observé sur un système informatique indiquant une intrusion informatique avec un haut niveau de certitude.
  • Piratin - Pirate amateur à la recherche d'une intrusion facile, souvent irresponsable et sans éthique, qui utilise des scripts déjà existants, disponibles gratuitement sur le Net, pour effectuer ses attaques malveillantes. (source)

Exemple n°1 - Rubeus, nom du processus de connexion#

User32LogonProcesss (avec 3 s) avec un commentaire surprenant :

1
2
3
4
5
6
public static IntPtr LsaRegisterLogonProcessHelper()
{
// helper that establishes a connection to the LSA server and verifies that the caller is a logon application
// used for Kerberos ticket enumeration for ALL users

var logonProcessName = "User32LogonProcesss"; // yes I know this is "weird" ;)

Visible dans les journaux d'évènement Windows.

Supprimé quelques heures après avoir été exposé dans un tweet, avec un message de transaction lui aussi évocateur :

1
2
3
4
5
 Removed call to LsaRegisterLogonProcess

-Removed call to `LsaRegisterLogonProcess` as it was ultimately unnecessary.

So long User32LogonProcesss IOC, we hardly knew thee :)

Référence :

Exemple n°2 - mimikatz, domaine de connexion#

1
2
3
4
KIWI_NEVERTIME(&validationInfo.PasswordMustChange);
RtlInitUnicodeString(&validationInfo.LogonDomainName, L"<3 eo.oe ~ ANSSI E>");

validationInfo.EffectiveName = ticket.ClientName->Names[0];

Exemple n°3 - PdC EDB#

  • virgules en trop
  • guillemet ou parenthèse manquante
  • valeurs codées en dur (ex : 127.0.0.1)
  • indentation ou saut de ligne arbitraire

Questions#

  • Doit-on placer ce genre d'Indicateur de Compromission dans les PdC ? Contre les piratins.
    • Efficacité ? Combien se font avoir ? Qui surveille ces IdC ?
    • Les piratins arrivent-ils réellement à utiliser ce genre d'outil ?
    • Les menaces persistantes avancées développent leurs propres outils, relisent et modifient les outils existant de base pour évader les signatures ?
    • Le haché du binaire ou les nombreuses chaines de caractères uniques ne sont-elles pas suffisantes ?
  • Si oui, doit-on placer un indice pour le lecteur attentif ?
  • Si l'on découvre ce genre d'IdC, doit-on en faire part publiquement ?
    • Aider les équipes défensives ? Vraiment ? Car ils auront déjà sans doute une règle dans leur outil de détection sans le savoir.
    • Risque d'aider les cybercriminels ?
  • Quand code compilé, ne pas fournir de binaire pré-compilé suffit à repousser les piratins ?
    • Ne prouve pas qu'on a lu le code et sait ce que l'on fait.
    • IdC dans le binaire pré-compilé, mais pas dans le code source ?
  • Il paraît que des groupes soutenus par des états utilisent les binaires pré-compilés, fait exprès ou non ?
    • Simuler des attaquants non avancés ?
    • Attaque sous faux drapeau ?
  • IdC trop connu ? Faux-positif ?
  • Pour les outils, obliger de faire confiance à partir d'un certain moment ?
    • Pour un outil d'une taille très conséquente, difficile d'auditer l'ensemble du code ?
    • Pour un outil évolue souvent, difficile d'effectuer un suivi des modifications fréquent ?
    • Nombre d'outils ?
    • Variété des langages de programmation ?
    • Qui a déjà lu entièrement le code de nmap ? De netexec ?
    • Et les outils propriétaires ? Nessus ? Rétro-ingénieurie ?
    • Où situer le curseur de confiance ?
      • PdC -> systématiquement ?
      • Outils
        • Selon l'auteur ?
        • Selon le niveau d'adoption ?
        • Selon les distributions Linux qui empaquètent ?
Partager