• # libpcap

    Posté par . En réponse au journal Turla, virus pour tous (oui pour Linux aussi). Évalué à 10. Dernière modification le 12 décembre 2014 à 19:38.

    Voici quelques détails intéressants tirés de l'article de Kaspersky.

    Pour pouvoir contrôler la machine infectée, les pirates ont mis en place dans Turla un moyen pour pouvoir ouvrir un canal de communication à la demande. On pourrait imaginer qu'une fois infectée, la machine ouvre un socket en écoute sur un port bien précis et attende les commandes. Mais cela rend l'intrusion facilement détectable car on se rend compte assez vite que quelque chose cloche.

    La technique utilisé par Turla est de « sniffer » le réseau, en attente d'un paquet dit magique, ou paquet d'activation, une fois ce paquet détecté, Turla ouvre un canal de communication et attend les ordres. « Sniffer » le réseau ne requiert pas l'ouverture d'un socket, et donc c'est un peu plus furtif car le canal de communication est ouvert juste quand il le faut.

    Techniquement, il semblerait d'après Kaspersky que Turla reprend le code de cd00r. cd00r est une preuve de concept (PoC) pour Linux qui implémente le mécanisme d'activation expliqué plus haut. Et pour ce faire il utilise libpcap. Je vous conseille d'aller lire le commentaire d'en-tête de cd00r car tout est très bien expliqué.

    Ce qui nous amène au point suivant : il faut que le programme (le thread en réalité) ait la capability CAP_NET_RAW pour pouvoir sniffer le réseau à l'aide de libpcap. Et si je ne dis pas de bêtises, cela revient sur la plupart des systèmes à être root.

    Note à part, cd00r est intéressant car par exemple il n'y a pas de chaînes de caractères de plus de trois lettres dans le code source pour qu'aucune chaîne suspicieuse apparaisse avec la commande string.