Ce document est obsolète et ne sera pas mis à jour. Veuillez vous référer aux documentations techniques disponibles sur le site de l’ANSSI : https://www.ssi.gouv.fr/
1 Introduction
Après les actions du mois de février 2000 à l’encontre de divers sites américains, les retombées médiatiques des manifestations « agressives » des outils de déni de service distribué semblent avoir décru. Cependant, des réseaux d’agents et de serveurs sont régulièrement démantelés par les CERTs coopérant au sein du FIRST. Cela confirme que l’activité d’infection ne s’est jamais tarie et que des stations sont toujours activement compromises.
Par ailleurs, les premières versions ont inspiré d’autres pirates et de nouveaux outils continuent à apparaître.
La présente note a pour objet de décrire sommairement deux nouveaux outils d’attaque récemment apparus, trois programmes de détection et de donner des premiers éléments de conduite à tenir en cas de compromission.
2 Description
L’architecture d’un réseau de déni de service distribué reste identique à celle décrite dans la précédente note du CERTA (réf. 1), avec des agents pilotés par un ou plusieurs serveurs, ce(s) dernier(s) étant également accédé(s) à distance par un client dédié ou via telnet.
A ce jour, seuls les systèmes Unix peuvent être infectés par les deux outils décrits ci-dessous.
2.1 Shaft
Shaft est dérivé de Trinoo, les serveurs et agents communiquent via le protcole udp :
20432/tcp 18753/udp
Client ——> Serveur ——> Agent
<——
20433/udp
En l’absence de « rootkit », netstat donne :
- Serveur
Protocole | Adresse locale |
tcp | 0.0.0.0:20432 |
udp | 0.0.0.0:20433 |
- Client
Protocole | Adresse locale |
udp | 0.0.0.0:18753 |
Cependant les agents auraient la capacité de changer le serveur (modification de l’adresse IP) et le port auquel ils s’adressent (mais pas leur port d’écoute) sur ordre du serveur. Cela rend la détection des serveurs beaucoup plus aléatoire.
Lors d’une attaque, les agents envoient des paquets TCP, UDP, ICMP ou un mélange des trois, séquentiellement à chacune des cibles désignées. L’adresse source n’est falsifiée que lorsqu’un agent s’éxécute avec les droits de root.
2.2 Mstream
mstream est outil de déni de service distribué peu sophistiqué basé sur le code du programme de déni de service stream.c apparu il y a quelques mois. Sa principale caractéristique est l’efficacité de l’attaque qui, par conséquent, nécessite moins d’agents que les outils semblables, pour un résultat équivalent.
Par ailleurs, le serveur prévient les clients déjà connectés de toute activité sur ses ports d’écoute (connection, authentification réussie ou non, nouvel agent). Il est donc important d’être en mesure d’isoler très rapidement du réseau (voir paragraphe 4) un hôte infecté par un serveur.
Plusieurs versions ont déjà été découvertes, d’où plusieurs ports caractéristiques possibles :
6723/tcp ou 15104/tcp 7983/udp ou 10498/udp
Client ———–> Serveur ———–> Agent
ou 12754/tcp <———–
9325/udp ou 6838/udp
En l’absence de « rootkit », netstat donne :
- Serveur
Protocole | Adresse locale | |
tcp | 0.0.0.0:x | où x=6723, 15104 ou 12754 |
udp | 0.0.0.0:x | où x=9325 ou 6838 |
- Client
Protocole | Adresse locale | |
udp | 0.0.0.0:x | où x=7983 ou 10498 |
Le serveur stocke la liste des clients identifiés dans un fichier nommé « .sr » par défaut.l
Durant une attaque, les agents envoient des paquets TCP avec le drapeau ACK (accusé de réception) activé et une adresse source aléatoire. Lorsque le port destinataire de la cible est ouvert, le paquet nécessite une analyse plus poussée de la part de la pile IP de la victime qu’avec les leurres usuels avant d’être rejeter, et peut en outre induire un traffic supplémentaire dû à la notification du refus.
3 Outils de détection
Tout système de routage possédant une capacité de journalisation des connections peut être utilisé pour réaliser une détection sommaire de compromission. On peut mettre en place, sur un garde-barrière ou un routeur, les règles de journalisation suivantes (sans pour autant bloquer les paquets correspondants) concernant les ports sources ou destinations internes suivants :
- TCP:
- 27665/tcp, serveur Trinoo,
- 27444/tcp, agent Trinoo,
- 16660/tcp, serveur Stacheldraht,
- 61111/tcp et 65512/tcp, serveur Stacheldraht V4,
- 65000/tcp, agent Stacheldraht,
- 65512/tcp et 65513/tcp, agent Stacheldraht V4,
- 20432/tcp, serveur Shaft,
- 6723/tcp, 15104/tcp et 12754/tcp, serveur Mstream.
- UDP:
- 31335/udp, serveur Trinoo,
- 27444/udp, agent Trinoo,
- 34555/udp, agent WinTrinoo (Trinoo sous Windows),
- 20433/udp, serveur Shaft,
- 18753/udp, agent Shaft,
- 9325/udp et 6838/udp, serveur Mstream,
- 7983/udp et 10498/udp, agent Mstream.
Ces ports n’étant pas privilégiés, ils peuvent être attribués par le système d’exploitation à n’importe quel programme ouvrant une socket. Cependant leur apparition régulière dans les fichiers journaux peut être révélatrice d’une machine compromise. Il convient alors d’investiguer l’hôte correspondant pour déterminer si le port est utilisé par un programme légitime ou non.
Il existe également des outils dédiés permettant une analyse plus systématique, décrits ci-dessous.
3.1 Remote Intrusion Detector (RID)
RID est un programme de génération et capture de paquets IP. Il permet donc de détecter des programmes ayant une réponse réseau caractéristique pour une sollicitation donnée (réf. 5).
Après analyse des sources des versions 1.10 puis 1.11 (la version 1.11 est une modification de la 1.10 après suggestions du CERTA) et utilisation dans l’environnement du CERTA, il apparaît que ce logiciel ne semble faire aucune action nuisible et semble répondre à ce qui est décrit dans sa documentation.
Il est joint sous la forme d’une archive contenant les sources, une version éxécutable pour Linux sur Intel et une version modifiée du fichier rid.conf de la version 1.11 en vue de détecter mstream accompagnée d’un mode d’emploi en français (réf. 2).
(voir les hachages md5 correspondants en annexe A).
3.2 Nessus
Nessus est un scanner de vulnérabilités réseau développé sous l’égide de Renaud Deraison résidant en France. Il fonctionne selon une architecture client/serveur. Le serveur, réalisant les tests, tourne sous Linux, Solaris, OpenBSD et FreeBSD. Il existe des clients permettant de le piloter depuis Windows, Linux, Solaris, FreeBSD ainsi qu’une version Java (réf. 6).
Les vulnérabilités sont testées à travers des scripts dont certains recherchent la présence d’outils distribués en envoyant des stimuli semblables à ceux de RID.
Les sources n’ont pas fait l’objet d’une analyse, mais le produit est utilisé dans l’environnement du CERTA sans effets nuisibles apparents.
3.3 find_ddos
find_ddos est un outil réalisé par le FBI. Il analyse les programmes de la station sur laquelle il s’éxécute à la recherche de signatures caractéristiques des outils de déni de service distribué (réf. 7).
Le FBI ne distribue que des versions compilées (pour Solaris sur Sparc et Intel et Linux sur Intel) mais en revanche aucunes sources. Il n’est donc pas possible de connaître facilement le fonctionnement exact du programme et donc de se prononcer sur son inocuité.
Cependant, il a été utilisé avec succès, à plusieurs reprises, par des clients d’un autre CERT français sur des machines préalablement déclarées compromises (en isolant l’hôte du réseau).
4 Conduite à tenir en cas de détection
Il est essentiel de préserver l’ensemble des traces disponibles sur une machine (disque(s) et mémoire) et dans son environnement réseau. Il convient donc de ne pas intervenir directement sur la machine concernée jusqu’à la collecte. Les actions à entreprendre immédiatement (en consignant tout ce qui est entrepris) :
- supprimer l’accès réseau : au mieux en interdisant toute connection depuis et vers la machine en configurant le routeur ou le garde-barrière le plus proche (configurer les journaux pour enregistrer le plus d’informations possible sur ces accès nouvellement bloqués, idéalement des « dumps » complets), au pire en débranchant le cable réseau,
- limiter l’accès physique au matériel,
- contacter le CERTA,
- en cas d’intervention obligatoire sur la machine : utiliser des programmes externes compilés statiquement (ls, ps, netstat,… sont très probablement compromis), noter toutes les commandes utilisées (utiliser script par exemple), minimiser les fichiers écrits localement.
5 Bibliographie
- Note CERTA-2000-INF-001 « Le déni de service distribué » du 21 février 2000.
- Note d’information CERTA-2000-INF-004 « Détection des outils d’attaque distribuée » du 29 mai 2000.
- Analyse de Shaft par S. Dietrich, N. Long et D. Dittrich
http://netsec.gsfc.nasa.gov/~spock/shaft_analysis.txt
- Analyse de mstream par D. Dittrich, G. Weaver, S. Dietrich et N. Long
http://staff.washington.edu/dittrich/misc/mstream.analysis.txt
-
RID, détection réseau d’outils distribués par D. Brumley
http://theorygroup.com/Tools/RID/
-
Nessus, scanner réseau de vulnérabilités par R. Deraison
http://www.nessus.org
-
find_ddos, détection locale d’outils distribués, réalisé par le FBI
http://www.nipc.gov/trinoo.htm
A. MD5 des fichiers joints dans l’archive
- ed63bb3aa16274aa752a07f0ca1b56bb ./source-rid-1.11/CVS/Root
- 09cb555fcabe0ea63cd66ab2339de7c4 ./source-rid-1.11/CVS/Repository
- bdedde1b34287bc6c59c751b6a887470 ./source-rid-1.11/CVS/Entries
- 3152f046cc4f8c30a88bc9651acba29c ./source-rid-1.11/.h
- feac3b0da1b00fc2a0f9cce9debeaa6c ./source-rid-1.11/BUGS
- 94bd123fc2f7972b1cf2d679dacd5aee ./source-rid-1.11/CHANGES
- 88923787dd054a3b1c6a7196cd207f09 ./source-rid-1.11/COPYRIGHT
- 07aa4b71b1229170197f8695382e88f4 ./source-rid-1.11/CREDITS
- 2bd50652025b5b2f9d49b6eb9aa497e9 ./source-rid-1.11/Makefile.in
- efcf547a500eb33a640f271c37a1f8f1 ./source-rid-1.11/README
- 86829804843dc9788c59930d9154fb98 ./source-rid-1.11/config.guess
- 9ea90fddfa35f0bcd7214df135afa32a ./source-rid-1.11/config.h.in
- 9b6423290a5b9e54465d120adc3ccd9b ./source-rid-1.11/config.sub
- f74d1e202bfb83a809f6d7610522f140 ./source-rid-1.11/configure
- faa519094d7f16c50f1ed0f6ddcd261a ./source-rid-1.11/configure.in
- 2269c0beddfc299507a59377127b0501 ./source-rid-1.11/functions.h
- 3152f046cc4f8c30a88bc9651acba29c ./source-rid-1.11/grammer.h
- a1dfc11bef5c6f1b33db869fd51182ac ./source-rid-1.11/grammer.y
- ca4c8e08be31723608758c97c4001862 ./source-rid-1.11/install-sh
- fbdc6043ec14b7a8d5e3e68d4a65032a ./source-rid-1.11/listen.c
- 393d298125f8e03c13364afe447b308d ./source-rid-1.11/missing
- 264cf0e0c373684dfed5a27b4ae39890 ./source-rid-1.11/mkinstalldirs
- 7a079ac8b7ef1643572e6db205e60dc0 ./source-rid-1.11/myconfig.in
- 39995303524a9707ecebf10bb9129360 ./source-rid-1.11/netconfig.h
- 29a1ebf1ebf610f8ea7f4d95ebc1fdc9 ./source-rid-1.11/parser.l
- bcf94fcc9091197881b726338d7363e8 ./source-rid-1.11/pinger.c
- 98cdc88fe364a07463efee74036271e9 ./source-rid-1.11/rid.c
- c9600224a6493bcabeaf3274e5b1adc0 ./source-rid-1.11/rid.conf
- 45e65e0d9d03c1f92ba845dcf7c40d1b ./source-rid-1.11/sender.c
- ed63bb3aa16274aa752a07f0ca1b56bb ./source-rid-1.11/.deps/CVS/Root
- b34a842f241e8e1ecc14ceee72e02096 ./source-rid-1.11/.deps/CVS/Repository
- 22da040614547628c3b2a933f9796021 ./source-rid-1.11/.deps/CVS/Entries
- 6a5c95e0ed4cbb36ac268bf7fe644b38 ./source-rid-1.11/.deps/grammer.P
- 471252c2e6a715f95eae0a105861c397 ./source-rid-1.11/.deps/listen.P
- a105d37353fea53d000de4cff4f462fb ./source-rid-1.11/.deps/parser.P
- b49fef1bc376b57ee16ca5520362615f ./source-rid-1.11/.deps/pinger.P
- ba30677a015c38eb29ad51c9b700690c ./source-rid-1.11/.deps/rid.P
- fef080fa416ec170450b6640fae3e333 ./source-rid-1.11/.deps/sender.P
- a8de6b2a512c5007a018e5109802cf7e ./source-rid-1.11/.directory
- bede090e900d2b5cb928d0d2d92097db ./binaire/rid
- c9600224a6493bcabeaf3274e5b1adc0 ./binaire/rid.conf
- d77ca6390f05ad7e805c63b0106a0537 ./rid.tar.gz