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
RID (Remote Intrusion Detection) est un outil permettant de tester les hôtes d’un réseau à la recherche de machines infectées.
C’est un programme C développé par David Brumley de l’Université de Stanford et disponible à l’adresse :
http://www.theorygroup.com/Tools/RID/
2 Avantages et inconvénients
Il existe d’autres outils disponibles avec des fonctionnalités similaires : gag, dds, Zombie Zapper,… RID possède la particularité de lire un fichier ASCII de configuration (rid.conf) qui permet donc de rajouter très facilement de nouveaux tests correspondant à l’évolution de la menace.
Toutefois l’ensemble de ces outils simulent le comportement d’un agent ou d’un serveur pour obtenir une réponse caractéristique d’une machine infectée. Il y a donc un risque de ne pas détecter un outil distribué dont les sources ont été modifiées et qui ne présente donc pas la même signature. Cependant, en cas de découverte d’une nouvelle version d’un outil, RID permet de tester rapidement l’ensemble d’un réseau en modifiant le fichier de configuration en conséquence.
3 Installation
3.1 Prérequis
De manière à garantir la meilleure portabilité, l’outil est livré sous forme de code source C compilable sous Unix (testé au CERTA sous Linux). Il nécessite par ailleurs la librairie de capture de paquets libpcap qui doit être installée préalablement. Cette dernière est également utilisée par tcpdump et donc présente conjointement, et est également disponible à l’adresse :
http://ee.lbl.gov
De plus, la compilation de l’analyseur du fichier de configuration nécessite lex et yacc (ou flex et bison en version libre).
3.2 Compilation – utilisation
La procédure est classique :
- [./configure]
- [make]
- [./rid <adresses ip>]le fichier rid.conf étant présent dans le même répertoire.
Où <adresses ip> représente le réseau à tester sous la forme adresse/taille_du_masque1.
Exemples :
./rid 192.168.10.12 teste uniquement la machine d’adresse 192.168.10.12
./rid 192.168.0.0/16 teste les adresses comprises entre 192.168.0.1 et 192.168.255.254.
Remarques :
- l’outil testant des ports « exotiques », son efficacité peut être grandement diminuée si il est utilisé à travers un firewall,
- les outils distribués étant dérivés les uns des autres, il peut y avoir des fausses alarmes dues à des comportements similaires (alertes AgentTrinoo et WinTrinoo pour la même machine alors que les 2 outils fonctionnent sous des OS différents). Cependant toute alerte doit donner lieu à une analyse de l’hôte concerné.
4 Options
La ligne de commande accepte un certain nombre d’options, énumérées ci-dessous :
- -f fichier_liste_ip
- contenant la liste des machines à tester (1 par ligne),
- -t durée
- temps d’attente des réponses (30s par défaut),
- -b nombre
- maximum de machines testées simultanément (défaut 128),
- -s taille
- nombre d’octets capturés en écoute (défaut 1500),
- -c fichier_config
- (défaut rid.conf)
- -n nombre
- nombre de pings pour tester les hôtes « vivants » (3),
- -v
- mode verbeux,
- -h
- aide.
5 Syntaxe du fichier de configuration
Le fichier rid.conf inclu est une suggestion du CERTA, tout retour d’expérience des utilisateurs permettra de l’enrichir.
Il est composé de plusieurs entrées encadrées par les mots clés « begin » et « end », chacune correspondant à une menace testée :
- begin
- <IDENTIFIANT>
- send
- <PROTOCOLE><OPTIONS>
- recv
- <PROTOCOLE><OPTIONS> nmatch = <nombre>
- end
- <IDENTIFIANT>
PROTOCOLE=: tcp | udp | icmp
OPTIONS =: ICMP_OPTIONS | UDP_OPTIONS | TCP_OPTIONS
ICMP_OPTIONS =: seq=<sequence> | id=<id> | type=<type ICMP> | code=<code ICMP> | data= »<chaîne> »
UDP_OPTIONS =: sport=<port> | dport =<port> | data= »<chaîne> »
TCP_OPTIONS=: sport=<port> | dport =<port> | data= »<chaîne> »
- send
- décrit le paquet ip envoyé,
- recv
- décrit le paquet ip attendu, nmatch représentant le nombre d’options qui doivent être vérifiées pour générer une alarme.
Exemple :
- start
- WinTrinoo
- send
- udp dport=34555 data= »png []..Ks l44″
- recv
- udp sport=35555 data= »PONG » nmatch=1
- end
- WinTrinoo
Un paquet udp contenant la chaîne « png []..Ks l44 » est envoyé vers le port 34555 de chaque hôte, une alerte WinTrinoo est générée si une réponse udp revient depuis le port 35555 ou contient la chaîne « PONG ».
- … adresse/taille\_du\_masque1
- RID n’accepte pas de tester plus de 254 machines à la fois (x.x.x.x/16) ce qui encombre déjà beaucoup un réseau…