mercredi 14 mars 2012

Il y a un an, RSA était victime d'un APT. Etat des lieux.

Il y a un an, la compagnie RSA annonçait qu'une partie de son infrastructure était sous le contrôle d'attaquants via une attaque de type APT (Advanced Persistent Threat). Le post de blog très technique de RSA (voir la 2e partie du message "anatomy of an attack") indiquait un spear phishing  associé à un 0day, puis un RAT qui a permis à un attaquant de se déplacer latéralement dans le réseau extrêmement rapidement avant d'exfiltrer les données. L'attaque a été rapide car RSA avait détecté la brèche, mais n'a malgré tout pas pu éviter le vol de données.

La compagnie command five a produit un rapport sur les canaux de communication utilisés par des APT d'un groupe de pirate qui utilise les mêmes systèmes et serveurs de commandes et contrôles. Parmi les compagnies citées nous retrouvons RSA. Le rapport confirme effectivement le post de blog à quelques détails près (apparemment le RAT pour RSA n'était pas poison ivy, mais murcy). Ce rapport permet d'éclairer certains points très intéressants sur le mode de fonctionnement et sur la détection des APT.

1/ L'installation du RAT
Rien de bien nouveau, nous retrouvons dans les cas exposés un RAT qui s'installe via du spear phishing et éventuellement un certificat valide volé dans certain cas. Les RAT n'ont rien de spécialement avancé puisque ce sont des outils que l'on trouve sur internet, certains d'entre eux existant en version commerciale (!) : X-shell par exemple ou Poison Ivy.

2/ Le contrôle des machines
Pour contrôler les machines, les ports et protocoles classiques sont utilisés: DNS puis du HTTP ou HTTPs. Les machines se connectent régulièrement sur les serveurs C&C et envoient de l'information.
Rien de très avancé non plus, depuis les réseaux RFC1918 il est plus simple à une machine d'un LAN de se connecter sur une machine à IP publique que l'inverse.

Certains noms de domaine sont choisis pour ressembler à des domaines connus, comme
*.windowupdate.com (il manque le 's' à windows) ou *.alyac.org (alyac est un outil de sécurité) afin de leurrer l'oeil non exercé d'un administrateur vérifiant ses logs.

Les protocoles sont basés sur du HTTP, c'est du GET ou du POST normal avec des données, ce qui signifie qu'un firewall ou un proxy applicatif laissera passer ces données.

3/ Comportement et détection de ces RAT
Commençons par le mauvais côté, celui ou il est difficile de se défendre.
  • Révocation de certificats: Comme l'indique le rapport, certains certificats n'ont pas été révoqués pour ne pas pénaliser l'usage d'outils légitimes étant signés par celui-ci (!)
  • Analyse antivirale: Bien qu'utilisant un nombre réduit de RAT, les attaquants n'hésitent pas à les recompiler, cela ayant comme effet de bord de rendre toute détection antivirale basée sur un hash du binaire inefficace (l'auteur du rapport conseille de faire un hash de certaines parties, le .rdata .text etc.. car elles sont souvent identiques).
Le bon côté c'est qu'il existe des moyens de détecter ces APT en raison de leur comportement. Ils existe deux types de défense à ces APT, tout d'abord celles qui existent déjà et dont les entreprises sont coupables de ne pas les avoir mises en oeuvre, et les défenses qui n'existent pas encore mais qui devraient être développées.

Défenses possibles:
  • Les RAT appellent fréquemment leur serveur de C&C. Dans certains cas, le RAT appelle son C&C toutes les 8 seconds, ce qui représente +10000 appels par jour. Ce volume de connexions devrait être immédiatement détecté comme suspect et analysé.
  • Certains RAT n'utilisent pas les DNS locaux, mais au contraire des serveurs DNS sur internet. Une politique de sécurité sur le firewall devrait empêcher ces résolutions d'être faites et alerter l'administrateur.
  • Les auteurs de l'attaque continuent à utiliser des noms de domaines pour leurs C&C, même une fois que ces domaines sont blacklistés dans diverses listes. Bloquer ces listes apparaît donc comme un premier pas essentiel, mais surveiller les machines tentant de s'y connecter permet d'augmenter les chances de détection de malware.
 Défenses à créer:
  • Les RAT appellent leur serveur de C&C à fréquence fixe, c'est à dire à intervalle régulier. Existe-t'il au monde une sonde IDPS qui sait indiquer les connexions régulières? Ce serait un des meilleurs moyens je pense de trouver des flux malveillants[1].
  • Pour contourner les systèmes de blacklist DNS, certains RAT utilisent directement les IP pour joindre leur C&C. Existe t'il un mécanisme de suivi de connexion qui soit capable d'indiquer si une connexion vers une IP a été précédée d'une requête DNS? Cela serait également un mécanisme de surveillance efficace.
4/ Conclusion
EDIT: Pour résumer, nous pouvons considérer que l'entrée d'un attaquant dans un réseau est difficile à bloquer: spear phishing évolué, 0day (et inefficacité des certificats). Par contre, l'auteur de l'APT va chercher par la suite à se déplacer latéralement dans le réseau visé. C'est sans doute là qu'il est le plus vulnérable, du fait de ses fréquents allers-retours entre le C&C et les machins vulnérables.
Nous verrons peut-être un jour des malwares se déplacer à la manière de drone absolu sans aucun contact avec l'extérieur si ce n'est l'exfiltration des données finale. Ceux-là seront particulièrement difficile à bloquer. Mais un malware pourra t'il embarquer suffisamment d'intelligence?

[1] C'est d'ailleurs un problème mathématique amusant: Soit une distribution de noms associés à leur heure de résolution ['nom',heure]. Comment détecter dans cette distribution des évènements répétitifs?

4 commentaires:

  1. Le problème mathématique est pas très difficile à résoudre : pour chaque nom, on note les écarts entre les horodatages ordonnés et on regarde la distribution : si c'est toujours le même écart : ho miracle on a bien un système périodique (transformée de fourrier du pauvre). :)

    RépondreSupprimer
  2. Je pense que les solutions proposées dans l'article sont en partie inapplicables.

    «Les RAT appellent fréquemment leur serveur de C&C. Dans certains cas, le RAT appelle son C&C toutes les 8 seconds, ce qui représente +10000 appels par jour. Ce volume de connexions devrait être immédiatement détecté comme suspect et analysé.»

    Pourquoi pas, mais ça risque de générer énormément de faux positifs. Certains sites ou programmes font ce genre de choses (j'ai personnellement un widget qui récupère le status de mon serveur MPD/Icecast toutes les 7 secondes, est-ce que ça fait de moi un rat ?).

    « Les RAT appellent leur serveur de C&C à fréquence fixe, c'est à dire à intervalle régulier. Existe-t'il au monde une sonde IDPS qui sait indiquer les connexions régulières? Ce serait un des meilleurs moyens je pense de trouver des flux malveillants[1]. »

    Même remarque que ci-dessus, et on peut au passage ajouter les vieux programmes avec des IPs en dur qui ne marchent plus, et tous les petits trucs auxquels on ne pense pas. C'est un coup à crouler sous les alertes, donc pas forcément optimal.

    « Pour contourner les systèmes de blacklist DNS, certains RAT utilisent directement les IP pour joindre leur C&C. Existe t'il un mécanisme de suivi de connexion qui soit capable d'indiquer si une connexion vers une IP a été précédée d'une requête DNS? Cela serait également un mécanisme de surveillance efficace. »

    Je ne reprend pas les arguments du dessus (si je n'avais pas de domaine j'utiliserais l'IP dans mon script), et j'ajouterais que c'est certainement de l'ordre du possible, mais certainement une mauvaise idée. Essayer de tracer les connexions là dessus est très compliqué (mécanismes de cache selon l'application, analyse niveau 4 et 7 en même temps...), pour un gain qui est vraiment moindre au vu de la complexité ajoutée.


    Pour moi, les solutions présentées ici sont trop complexes à mettre en oeuvre efficacement pour vraiment répondre à la problématique de sécurité. Peut-être y a-t-il des cas où ça peut se justifier, mais dans la plupart des cas je ne pense pas.

    RépondreSupprimer
  3. @Anonyme: merci des commentaires.
    "j'ai personnellement un widget qui récupère le status de mon serveur MPD/Icecast toutes les 7 secondes, est-ce que ça fait de moi un rat ?"

    Comme indiqué dans le message: "Ce volume de connexions devrait être immédiatement détecté comme suspect et analysé.". Ce n'est pas une méthode sans faux positif, mais ces connexions devraient être détectées. Ceci dit, il est vrai qu'il existe beaucoup de programmes qui se connectent de façon régulière (dropbox par exemple); l'important étant de le détecter et le monitorer.

    Pour le lien requête DNS/connexion vers IP, je pense qu'il y a creuser dans cette direction. Une connexion directe vers une IP sans requête DNS doit être étudiée. De manière analogue, un très grand nombre de connexions vers une IP unique avec systématiquement des noms de domaines différents doit faire lever une alerte.

    RépondreSupprimer