You are on page 1of 28

SECURITE DES SYSTEMES ET RESEAUX

PLAN
1. INTRODUCTION
2. Un système d'information.
1. Architecture.
2. Logiciels de communications.
3. Les actions pirates.
1. Le décryptage des mots de passe.
1. introduction
2. le fonctionnement des logiciels "crackers".
2. Le "sniffage" des mots de passe.
3. L'accès à des données "interdites".
1. chercher les trous de sécurité
2. La mascarade IP(ip spoofing)
3. Le détournement de paquets IP (ip spoofing + icmp redirects)
4. Le détournement de paquets éthernet (ARP spoofing)
5. Le détournement de paquets IP par détournement de leur route
6. Le routage a la source (source routing)
7. Recuperer le fichier des mots de passe
4. Endommager un système
1. Crasher une machine avec une "Land attack".(exemple typique de
bug)
2. Crasher une machine avec une "Teardrop attack".
3. Endomager X-Window
4. Les moyens de protection.
1. Utilisation de xhost, .rhosts.
2. Controle d'accès des serveurs au moyen de:
3. Configuration des routeurs et création d'un firewall.
1. Le filtrage au niveau des routeurs
2. Le filtrage au niveau des machines : Utilisation de inetd + tcpd.
3. Le filtrage au niveau des machines : Utilisation de xinetd.
4. Syslog et vérification des fichiers de log
5. Conclusion

------------------------------------------------------------------------------

1
INTRODUCTION
La sécurité informatique est une notion de plus en plus présente dans le monde
actuel. En effet, l'informatique joue un rôle de plus en plus important au sein de
l'entreprise et la moindre défaillance du système informatique aurait de lourdes
conséquences sur sa productivité. De plus, les systèmes d'informations de
l'entreprise sont de plus en plus ouverts sur le monde ce qui ouvre une voie
d'accès a l'entreprise a n'importe qui.

Cette page Web a pour but de donner un aperçu sur les différents types de
piratages et quand c'est possible, d'y proposer un remède.

On pourra y trouver les 2 types de piratages suivants :


Ceux qui sont dus aux protocoles de communication en eux même (protocoles
qui n'ont pas été prévus pour la sécurité).
Ceux qui sont dus a des bugs dans les logiciels de communications.

Deux moyens de protection seront ensuite expliques : les Firewalls et les


analyseurs de trames.

Certains passages nécessitent des connaissances concernant les protocoles


suivants : éthernet, arp, icmp, ip et tcp. (il y aura quelques rappels concernant
leur fonctionnement).

Un système d'information.
Le système d'information a pour but l'échange d'informations entre différents
logiciels situes sur une machine seule ou sur des machines distantes.

Le système d'information se compose de machines mises en réseaux et de


logiciels assurant la communication entre ces machines.

Suivant l'architecture de réseaux mis en place ou les types de logiciels qui


communiquent, les menaces sont plus ou moins importantes.
Architecture

2
Nous pouvons classer les réseaux en plusieurs catégories par ordre croissant de
risque :

• une machine isolée (en réseau avec elle même).

En général une machine gérant des comptes utilisateur.


Peu de risques, les problèmes ne peuvent venir que d'un utilisateur local.

• une machine isolée avec des terminaux.

Un terminal est compose d'un clavier, d'un écran et d'une interface le reliant a
un gros ordinateur.
Plusieurs utilisateurs peuvent travailler en même temps sur le gros ordinateur.
idem que précédemment mais possibilité communications inter-ecran/display
(voir xhost)
pour le cas de terminaux X.

• des machines situées sur un réseau local.

Le réseau local peut comprendre plusieurs centaines de machines être étendu


sur plusieurs centaines de mètres.
De nombreux utilisateurs se partagent les machines.
Communications inter-machines au niveau physique-ligne (ex éthernet)

• des machines situées sur un réseau global.

idem que pour un réseau local mais en plus il y a communication avec des
réseaux extérieurs, utilisation de routeurs.
une attaque pourrait venir de n'importe ou dans le monde.

3
Logiciels de communications. Les logiciels de communication ont 2 buts
différents :

• Assurer les communications nécessaires aux systèmes d'exploitation et


permettre l'administration et l'utilisation a distance des machines.

Ils utilisent les protocoles servant a la gestion du système (NIS, NFS, RIP,
SNMP, Syslog etc..)
ex : routed, gated, ypbind etc...
+ Login distants (rlogin, telnet etc..).

NIS=Network Information Service : permet de centraliser des informations


nécessaires a chaque ordinateur d'un réseau.
ex:les utilisateurs d'un réseaux ont leur nom de login et mot de passe
centralise sur une seule machine.

NFS=Network File System : permet a un ordinateur du réseaux d'avoir accès


aux disques des autres.

RIP=Routage Internet Protocole : met a jour les tables de routage.

4
SNMP=Simple Network Management Protocole : permet d'administrer un
réseau a distance.

Un piratage de ces communications aboutirait a de sérieux problèmes au niveau


du fonctionnement du système d'exploitation.
Tous les programmes tournant sur ce système seraient compromis ainsi que tous
les utilisateurs.

• Assurer les communications entre les différents utilisateurs.

Ils utilisent des protocoles comme SMTP (pour les mails), HTTP (pour les pages
Web),FTP (pour les transferts de fichiers) ainsi que tous les protocoles
propriétaires.
Un piratage de ces communications n'affecterait que les applications et
utilisateurs concernes.

Les actions pirates.


Elles varient suivant les architectures et les logiciels de communications utilises.

En générale, elles exploitent les trous de sécurité.


Ceux-ci sont toujours dues a des bugs dans les serveurs de communications, a
une mauvaise configuration des programmes de communication et d'une facon
generale au fait que les protocoles TCP-IP n'aient pas ete cree pour faire de la
securite.
Les bugs des serveurs sont souvent dues a un manque de tests sur les requetes
fournis par un client.
ex:le programme ne fait aucun test sur la longueur d'une chaîne entrée par
l'utilisateur ou sur les caractères formant cette chaîne etc.. (cas typique de
programmes cgi).
Les exemples que nous allons voir se limitent aux systèmes Unix et aux réseaux
TCP-IP.
Le décryptage des mots de passeIntroduction

5
Les systèmes Unix sont multi-utilisateurs ce qui nécessite un mécanisme
d'identification de l'utilisateur nécessaire a l'autorisation de login.
C'est le mécanisme du mot de passe qui est utilise (il peut y avoir sur certains
systèmes des mécanismes de reconnaissance vocale, ou de reconnaissance
d'empreintes digitales etc ..).
Dans la plus part des systèmes Unix, c'est le fichier /etc/passwd qui contient les
mots de passe cryptes associes aux noms de login.
Ce fichier est accessible en lecture par tout utilisateur de la machine et par tout
programme tournant sur la machine y compris les programmes cgi (voir plus
loin).
N'importe quel utilisateur de la machine peut alors récupérer ce fichier et faire
tourner chez lui un programme qui va décrypter les mots de passe sans que
personne ne le sache.
Ce fichier peut aussi être récupéré par des utilisateurs extérieurs (voir : accès à
des données "interdites") le fonctionnement des logiciels "crackers"

Le logiciel "cracker" ne décrypte pas a proprement parler, mais il va essayer


pour chaque login une série de mots de passe appartenant a des dictionnaires
jusqu'à ce qu'il y en ait un qui marche.
Plus le dictionnaire contiendra de mots, plus le "cracker" aura de chance de
trouver le mot de passe.
Ces logiciels sont disponibles un peu partout sur le net comme par exemple
Crack disponible a l'adresse : ftp://ftp.inria.fr/system/secur/.

Rem : il suffit qu'un seul mot de passe soit trouve pour pouvoir utiliser
illegalement la machine.
Le "sniffage" des mots de passe.

Il y a 2 moyens de sniffer les mots de passe.

1er cas :
L'attaquant recupere le trames ethernet qui circulent sur le reseau avec un
logiciel comme TCPDUMP ou Snoop ...
Dans ce cas, l'attaquant (le sniffeur) doit se trouver sur le meme reseau local que
la cible qui emmet son mot de passe ou alors sur le meme reseau local que le
recepteur (un serveur).
Il attent que la cible se connecte sur un serveur qui attend son mot de passe ex :
rlogin, telnet, ftp etc ...
et en general, le mot de passe se trouve en clair dans les premieres trames

6
echangees.

attention : un cas particulier est celui ou le sniffeur se trouve sur un reseau par
lequel va transiter le mot de passe (en effet, celui-ci est transmit de routeurs en
routeurs par IP jusqu'au reseau ou se trouve le serveur recepteur).

2eme cas :
L'attaquant ouvre un DISPLAY sur l'ordinateur de la cible et recupere les
touches frappees par celle-ci.
Ce type d'attaque n'est possible que dans un environnement X-Window, mais
l'attaque peut venir de n'importe ou sur Internet (l'attaquant peut etre separe
de la cible par 1 ou plusieurs routeurs).

L'acces à des données "interdites"

chercher les trous de sécuritéChercher les trous de securite, c'est d'abord se


renseigner sur la cible :

• Il est important de connaitre la topologie du reseau cible.

Pour cela, la commande unix Traceroute permet de savoir quel est le "chemin"
vers la cible.

exemple :
traceroute www.supaero.fr
traceroute to iris.supaero.fr (134.212.188.2), 30 hops max, 20 byte packets
1 cisco33 (139.124.33.250) 2 ms 2 ms 2 ms
2 ciscocampus (139.124.250.250) 3 ms 3 ms 2 ms
3 193.48.48.137 (193.48.48.137) 6 ms 6 ms 7 ms
4 marseille1.r3t2.ft.net (193.48.48.17) 22 ms 21 ms 6 ms
5 marseille.renater.ft.net (193.48.48.249) 18 ms 20 ms 12 ms
6 stamand1.renater.ft.net (195.220.180.21) 44 ms 48 ms 31 ms
7 stamand2.renater.ft.net (195.220.180.42) 47 ms 37 ms 41 ms
8 toulouse.renater.ft.net (192.93.43.38) 50 ms 52 ms 48 ms
9 toulouse1.remip.ft.net (192.70.80.100) 44 ms 47 ms 44 ms
10 onera-cert-toulouse.remip.ft.net (193.55.155.98) 54 ms 53 ms 51 ms
11 memphisP1.onecert.fr (134.212.177.1) 53 ms 48 ms 48 ms
12 iris.supaero.fr (134.212.188.2) 58 ms 46 ms 56 ms

7
=> la cible est sur un reseau de classe B. (subnette ?)

• Il est important de connaitre l'@IP de la cible

Avec nslookup

exemple :
conan /export/conan/home/promo98/dev/securite :nslookup
Using /etc/hosts on: conan

> www.supaero.fr
Using /etc/hosts on: conan

Name: iris.supaero.fr
Address: 134.212.188.2

• On peut aussi connaitre d'autres machines de son reseau local

Toujours avec nslookup

exemple :
conan /export/conan/home/promo98/dev/securite :nslookup
Using /etc/hosts on: conan

> 134.212.188.1
Using /etc/hosts on: conan

Name: naurouze.cert.fr
Address: 134.212.188.1

=> on apprend que le www de sup-aero est sur le meme reseau local que la
machine naurouze.cert.fr du CERT (ils ont la meme politique de securite).

l'attaque la plus connue : la mascarade IP(ip spoofing)


La mascarade d'adresse IP ou spoofing permet a une machine du réseau

8
extérieur de se faire passer pour une machine du réseau intérieur et ainsi de
profiter de tous ses droits.
L'attaquant donne a son ordinateur l'adresse IP d'une machine appartenant au
réseau interne.

Rem 1 : Le site interne peut aussi donner des droits a un site externe dit "ami".
l'attaquant pourra alors se faire passer pour une des machines externe du site
ami.

Les noms et adresses IP de cet exemple sont dus au

hasard.

Rem 2 : Ca permet a l'attaquant de passer au travers des filtres de type TCP


Wrapper.

Voici le filtre de type TCP Wrapper du "serveur X" qui est abuse par une
attaque de type mascarade.
monhost a l'@IP:144.135.10.1
monhost / :cat /etc/hosts.allow
fingerd : ALL : ( mail -s finger-from-%h admin@monhost.mon-domaine.fr )
ALL : LOCAL
ALL : .mon-domaine.fr
ALL : 144.135.10. ==========>monhost autorise accès a tous ses

9
daemons a toute machine dont l'adresse IP commence par 144.135.10.

La machine killer appartenant a un réseau externe se fait passer pour la station


de travail (144.135.10.2) du réseau interne et peut ainsi acceder a tous les
programmes de communications de monhost (144.135.10.1).
==> rem1 : en général, les machines autorisent tous les accès venant de leur
propre réseau local (ici 144.135.10.).
==> rem2 : une seule ligne dans le fichier de configuration des filtres du
ROUTEUR permet de détecter et de repousser toute tentative de mascarade.(cf.
: Configuration des routeurs).

==> rem3 : Le routeur laisse passer les paquets IP de l'attaquant vers le


"serveur X" ---MAIS--- au retour, le "serveur X" voyant que l'@IP source est
sur le même réseau local passera ses réponses a la couche physique (éthernet)
=> les réponses du serveur iront vers la station de travail et non pas vers
l'attaquant. => ca limite, heureusement la puissance des attaques de type
mascarade.

Le détournement de paquets IP (avec icmp redirects) les paquets redirection


icmp servent au routeur par défaut a indiquer l'adresse IP d'un nouveau
routeur par défaut.Trame ICMP : Redirection

demandée

L'attaque redirection ICMP permet de détourner les paquets éthernet d'une

10
station ayant pour destination son routeur par défaut vers une autre station du
même réseau local causant la perte des paquets.
===> la station attaquée ne peut plus émettre vers l'extérieur.

La trame icmp est encapsulee dans une trame IP : l'attaquant peut être
extérieur au réseau interne.
La station qui reçoit la trame icmp vérifie qu'elle vient bien de son routeur par
défaut => l'attaquant doit utiliser l'IP spoofing pour se faire passer pour le
routeur par défaut.Les attaques spoofing ip + icmp

redirects Le détournement de
paquets éthernet (arp spoofing)Le détournement de paquets éthernet n'est
possible que sur un réseau local.
Rappels sur l'utilisation d'ARP :
ARP est un protocole nécessaire a la communication sur un réseau local éthernet.
En général, les applications communiquent entre elles grâce a la couche 5 (TCP).
Elles utilisent comme paramètres l' adresse IP et le port de la machine sur laquelle
s'exécute l'application distante.
L'idee est de transmettre (router) les paquets de données a travers tout Internet

11
jusqu'au dernier routeur : celui qui possède la station distante sur un des ses réseaux
locaux(éthernet) et qui se chargera de transmettre au niveau local (dans une trame
éthernet avec comme @ethernet destination celle de la station distante) les paquets de
données.
La difficulté pour le routeur est de passer de l'@IP qui lui a été fourni par le routeur
précédent et qui sert au niveau global pour le routage a l'@ethernet qui sert au niveau
local.
ARP réalise la conversion @IP -> @éthernet.

Le routeur envoie une trame ARP request en diffusion sur son réseau local.
Une station reconnaît son adresse IP et retourne alors au routeur une trame ARP
réponse contenant son adresse éthernet.
rem : la trame ARP agissant au niveau local est encapsulé dans une trame éthernet.

rem 1 : RARP = reverse ARP => donne l'@IP en fonction de l'@ethernet.Trame

ARP ARP : principes et

12
spoofing Voici quelques
passages d'un programme permettant d'envoyer des trames arp :

struct arp_packet {
// pour la partie éthernet :
u_char targ_hw_addr[ETH_HW_ADDR_LEN]; // @eth destination
u_char src_hw_addr[ETH_HW_ADDR_LEN]; // @eth source
u_short frame_type; // type du paquet encapsulé dans la trame éthernet
// pour la partie arp :
u_short hw_type; // type de hard 0001=ethernet
u_short prot_type; // type d'@ que l'on veut résoudre 0800=internet
u_char hw_addr_size; // longueur des @éthernet
u_char prot_addr_size; // longueur des @IP
u_short op; // code du paquet
u_char sndr_hw_addr[ETH_HW_ADDR_LEN]; // @eth source
u_char sndr_ip_addr[IP_ADDR_LEN]; // @IP source
u_char rcpt_hw_addr[ETH_HW_ADDR_LEN]; // @eth cible
u_char rcpt_ip_addr[IP_ADDR_LEN]; // @IP cible
u_char padding[18]; //bourrage pour ethernet=min 64 octets
};

sock=socket(AF_INET,SOCK_PACKET,htons(ETH_P_RARP));
pkt.frame_type = htons(ARP_FRAME_TYPE);

13
pkt.hw_type = htons(ETHER_HW_TYPE);
pkt.prot_type = htons(IP_PROTO_TYPE);
pkt.hw_addr_size = ETH_HW_ADDR_LEN;
pkt.prot_addr_size = IP_ADDR_LEN;
pkt.op=htons(OP_ARP_REQUEST);

get_hw_addr(pkt.targ_hw_addr,argv[4]);
get_hw_addr(pkt.rcpt_hw_addr,argv[4]);
get_hw_addr(pkt.src_hw_addr,argv[2]);
get_hw_addr(pkt.sndr_hw_addr,argv[2]);

get_ip_addr(&src_in_addr,argv[1]);
get_ip_addr(&targ_in_addr,argv[3]);

Le passage suivant montre le résultat d'une attaque contre 139.124.51.48 (la


machine a Vincent) vue avec TCPDUMP.
Une machine du réseau 139.124.51 envoie a 139.124.51.48 une fausse réponse arp
avec une mauvaise @eth pour la machine "Marvin".
Résultat :
tcpdump host 139.124.51.48
# On regarde tous les paquets reçus et émis par 139.124.51.48

tcpdump: listening on eth0


20:25:13.970310 arp reply Marvin.esil.univ-mrs.fr is-at 0:c0:6c:60:2a:4b
# 139.124.51.48 reçoit une fausse trame ARP
20:25:31.390310 139.124.51.48.1036 > Marvin.esil.univ-mrs.fr.ftp: S
2476235:2476235(0) win 8192 (DF)
20:25:34.530310 139.124.51.48.1036 > Marvin.esil.univ-mrs.fr.ftp: S
2476235:2476235(0) win 8192 (DF)
20:25:41.120310 139.124.51.48.1036 > Marvin.esil.univ-mrs.fr.ftp: S
2476235:2476235(0) win 8192 (DF)
# 139.124.51.48 essaye a 3 reprises de faire un ftp sur Marvin (échec)

4 packets received by filter


0 packets dropped by kernel
=> TOUT LIEN EST ROMPU ENTRE 139.124.51.48 ET MARVIN A CAUSE DU
PETIT PLAISANTIN ....

14
Le détournement de paquets

IP

rem 1 : les tableaux du schemat correspondent aux tables rip : reseau_dest,


chemin et cout.

Le détournement des paquets IP se fait au niveau des routeurs. Le routeur pirate


informe ses routeurs voisins que sa "distance" avec le réseau cible est la plus
petite. ==> la conclusion est que tous les paquets a destination du réseau cible
vont passer par lui. Et toutes les informations qu'ils contiennent peuvent être
exploitées par le routeur pirate.

rem 2 : RIP est utilise a l'interieur du systeme autonome ce qui limite un peu ce
type d'attaque.

15
Le routage a la source

(source routing)

Il est possible de préciser dans un paquet IP la route exacte qu'il doit suivre.
Dans ce cas, les routeurs considèrent ces paquets comme prioritaires et les
laissent passer sans leur appliquer de filtre.
De plus, la réponse parcourra le même chemin qu'a l'allée ce qui veut dire que
si quelqu'un fait de l'IP spoofing, celui qui reçoit le paquet va y répondre a
n'importe qui.

16
Recuperer le fichier des mots de passe
Ce fichier s'appelle généralement /etc/passwd ou aussi /etc/shadow dans le cas de
mots de passe caches. Pour les systèmes utilisant les yellow pages (NIS) il est
accessible par la commande ypcat passwd.

Pour un utilisateur de la machine, le fichier /etc/passwd est disponible en lecture


ce qui autorise à n'importe qui la recopie de ce fichier.
Dans le cas de NIS, n'importe quel utilisateur d'une machine ayant accès au
serveur NIS peut récupérer le fichier par la commande :ypcat passwd > passwdnis
Si la machine utilise des mots de passe caches, ceux-ci sont dans le fichier
/etc/shadow qui est accessible en lecture uniquement par root.
Mais n'importe quel utilisateur de la machine peut profiter d'un bug du serveur
X-Window pour récupérer la première ligne du fichier /etc/shadow qui est la plus
importante puisqu'elle contient le mot de passe du root.
exemple:
/usr/X11R6/bin/X -config /etc/shadow
Unrecognized option: root:MtjJb1lBrS1SE:10148:0:99999:7:::
use: X [:] [option]
-a # mouse accélération (pixels)
-ac disable access control restrictions
-audit int set audit trail level
... Endomager un systèmeEndomager X-Window
Voici un exemple de trou de sécurité que l'on peut trouver sous X-Window:

le répertoire suivant /tmp/.X11-unix/ semble être, sur de nombreux systèmes


UNIX, accessible en écriture pour tous le monde.
Ainsi que le fichier X0.

buffet /tmp/.X11-unix :l
total 3
drwxrwxrwx 2 root sys 512 Dec 20 20:49 .
drwxrwxrwt 6 sys sys 1024 Dec 24 16:20 ..
Srwxrwxrwx 1 root sys 0 Dec 20 20:49 X0
buffet /tmp/.X11-unix :mv X0 Y0

X0 est un socket utilise par X-Window, le fait de le renommer ou de l'effacer


ralenti considérablement l'ouverture ou la fermeture de fenêtres X-Window
(sur IRIX) ce qui gène l'utilisateur de la machine.

17
L'effacer peut aussi empêcher l'ouverture de fenêtres (xterm...) sur d'autres
systèmes (sur Linux).

Crasher une machine avec une "Land Attack"Le principe d'une Land Attack :
Envoyer un paquet masque (spoofed) sur la machine cible sur un port en cours
d'utilisation avec le bit SYN mis a 1 et l'@IP source et le port source EGAL a
@IP cible et le port cible.

J'ai personnellement teste le programme land.c contre une machine Windows-95


située sur le même réseau éthernet et sur un des ports utilises par Windows-95 :
137 ou 138 ou 139 => le résultat a été un blocage complet de WIN-95.

Detail des ports Win-95 (d'après /etc/services):


netbios_ns 137/tcp # NetBIOS Name Service
netbios_ns 137/udp #
netbios_dgm 138/tcp # NetBIOS Datagram Service
netbios_dgm 138/udp #
netbios_ssn 139/tcp # NetBIOS Session Service
netbios_ssn 139/udp #

Microsoft propose un patch qui corrige le problème sur Windows :


http://support.microsoft.com/download/support/mslfiles/Vtcpupd.exe

Voici les points clé du source land.c :


ipheader->saddr=sin.sin_addr.s_addr; // @IP source = @IP destination
ipheader->daddr=sin.sin_addr.s_addr;
tcpheader->th_sport=sin.sin_port; // port source = port destination
tcpheader->th_dport=sin.sin_port;
tcpheader->th_flags=TH_SYN; // bit SYN mis a 1

Voici le résultat d'une Land Attack sur les systèmes suivants :


BSDI 2.1 (vanilla) IS vulnérable
BSDI 2.1 (K210-021,K210-022,K210-024) NOT vulnérable
BSDI 3.0 NOT vulnérable
Digital UNIX 4.0 NOT vulnérable
FreeBSD 2.2.2-RELEASE IS vulnérable
FreeBSD 2.2.5-RELEASE IS vulnérable
FreeBSD 2.2.5-STABLE IS vulnérable
FreeBSD 3.0-CURRENT IS vulnérable

18
HP-UX 10.20 IS vulnérable
IRIX 6.2 NOT vulnérable
Linux 2.0.30 NOT vulnérable
Linux 2.0.32 NOT vulnérable
MacOS 8.0 IS vulnérable (TCP/IP stack crashed)
NetBSD 1.2 IS vulnérable
NeXTSTEP 3.0 IS vulnérable
NeXTSTEp 3.1 IS vulnérable
Novell 4.11 NOT vulnérable
OpenBSD 2.1 IS vulnérable
OpenBSD 2.2 (Oct31) NOT vulnérable
SCO OpenServer 5.0.4 NOT vulnérable
Solaris 2.5.1 IS vulnérable (conflicting reports)
SunOS 4.1.4 IS vulnérable
Windows 95 (vanilla) IS vulnérable
Windows 95 + Winsock 2 + VIPUPD.EXE IS vulnérable

Some misc stuff:

Ascend Pipeline 50 rev 5.0Ap13 NOT vulnérable


NCD X Terminals, NCDWare v3.2.1 IS vulnérable
LaserJet Printer NOT vulnérable

Crasher une machine avec une "Teardrop Attack" le programme teardrop.c

L'attaque de type Teardrop exploite un bug du module de reassemblage de fragments


IP present dans le noyau.
Le principe est d'envoyer 2 fragments IP dont les informations de fragmentation sont
eronnees (recouvrement des fragments).
De nombreux systems d'exploitation sont compromis.
=> le resultat est un plantage de la machine.

Voici une attaque de type Teardrop vue de TCPDUMP :

tcpdump -x
tcpdump: listening on eth0
20:54:56.030574 linux20.35616 > 139.124.51.48.49398: udp 28 (frag 242:36@0+)
4500 0038 00f2 2000 4011 dc86 8b7c 3314
8b7c 3330 8b20 c0f6 0024 0000 0000 0000

19
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000
20:54:56.070574 linux20 > 139.124.51.48: (frag 242:4@24)
4500 0018 00f2 0003 4011 fca3 8b7c 3314
8b7c 3330 8b20 c0f6

On peut remarquer l'offset du 2ieme fragment (=24) qui est inferieure a la


longueur du premier fragment.. Les moyens de protections.Les moyens de
protections sont de trois types :

• les filtres et les Firewalls


• Une politique de sécurité de la part de l'administrateur
• les analyseurs de trames (courtney + tcpdump)

Utilisation de xhost et de rhost.

xhost permet d'interdire ou d'autoriser aux autres machines l'ouverdure du display de


la machine sur laquelle on se trouve.

ex:
xhost + autorise l'ouverture pour toutes les autres machines.
xhost + hostname autorise l'ouverture pour la machine hostname
xhost - interditl'ouverture pour toutes les autres machines.
xhost - hostname interdit l'ouverture pour la machine hostname

.rhosts est un fichier qui contient tous les noms de machine a partir de laquelle tel ou
tel utilisateur peut se rloguer sans taper de mot de passe
=> le mot de passe ne circule pas sur le reseau Utilisation de inetd + tcpd

Voici un exemple de filtre tcpd : /etc/hosts.allow


# /etc/hosts.allow: list of hosts that are allowed to access the system.
See
# hosts_access(5) and /usr/doc/net/portmapper.txt
#
# Example: ALL: LOCAL @some_netgroup
# ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#

20
#in.fingerd: LOCAL :spawn (echo "finger local ok by %h %u %d"|Mail -s report
root)&
in.fingerd: .esil.univ-mrs.fr :spawn (echo "finger ok by %h %u %d"|Mail -s
report root)&
ALL EXCEPT in.fingerd: 139.124Utilisation de xinetd

Voici un passage du fichier /etc/xinetd.conf


service finger
{
only_from = 139.124.51
log_type = FILE /var/log/servicelog
log_on_success = PID USERID HOST
log_on_failure = USERID HOST RECORD
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/sbin/in.fingerd
# server_args = /usr/sbin/in.fingerd
}Configuration des routeurs et création d'un firewall.Le filtrage au niveau
du routeur.

Le filtrage permet de faire une sélection des paquets qui passent par le routeur.
Un filtre est une table située dans le routeur au format suivant:
autorisation protocole @IPsource son_masque @IPdest son_masque op port
(permit/deny) (tcp/ip..) @ et masques (eq/gt..) port

Cette sélection se fait :

• au niveau machine : on définit quelles sont les machines externes et


internes qui peuvent communiquer entre elles.
• au niveau application : on définit les serveurs internes qui sont accessibles
a partir de l'extérieur.(ex : serveur mail : SMTP sur le port 25).
• au niveau machine - application : on définit les machines extérieurs qui ont
le droit de se connecter sur tel ou tel application interne.

voici un exemple de filtre pour l'interface d'entrée d'un routeur :L'interface


entrée du routeur est celle qui le relie aux réseaux extérieurs (Internet).

21
! no ip source-routing //commentaire rappelant que le
routeur est configure pour ne pas admettre de paquets IP contenant leur route a
suivre (cette configuration est independante du système de filtrage).
=> en effet, ces paquets ne sont jamais filtres.
!
! Filtres sur interface (a) en entrÕe
! ===================================
!
! Protection contre la mascarade
access-list 101 deny ip X.Y.0.0 0.0.255.255 0.0.0.0 255.255.255.255
=>interdire toutes les @IP source (du réseau externe : Internet) dont la partie
réseau est X.Y. et allant vers toutes les machines du réseau interne.
On a vu que la mascarade etait a l'origine de nombreux types d'attaques
complexes. Celles-ci sont rendues totalement ineficaces juste grace a cette ligne
du filtre disant que tout paquet provenant d'un réseau exterieur ne doit pas
avoir ne doit pas avoir son adresse réseau egale a celle du réseau interieur (ici
X.Y.).
Cette condition realisee, aucune machine exterieure ne pourra avoir la même
adresse IP qu'une machine interieur (son adresse réseau etant toujours
differente).
!
! Eviter des attaques douteuses.
!
access-list 101 deny ip 127.0.0.0 0.255.255.255 0.0.0.0 255.255.255.255
=>interdire les @IP source commencant par 127.
En effet, les @IP commencant par 127 sont reservees par ex : 127.0.0.1 est l'@
de loopback.
!
! Regle explicite pour n'autoriser sur le réseau d'interconnexion
! que les deux CISCO (utile?)
!
access-list 101 permit ip E.F.G.1 0.0.0.0 E.F.G.2 0.0.0.0
!
! autoriser tout ce qui entre si la destination est A.B.C.0 (autre site ami)
!
access-list 101 permit ip 0.0.0.0 255.255.255.255 A.B.C.0 0.0.0.255
=>autoriser a toutes les machines exterieures de communiquer avec toutes les
machines interieures appartenant au réseau A.B.C.
!

22
! Barrer la route Á qui l'on veut (sites vraiment douteux), et pour tout!
!
access-list 101 deny ip a.b.c.0 0.0.255.255 0.0.0.0 255.255.255.255
=>interdire a toutes les machines du réseau a.b.c de communiquer avec toutes les
machines du réseau interieur.
!
! Pour certains sites (un peu douteux) ne leur autoriser que le mail, le DNS
! et les choses dont les port sont >1023
!
access-list 101 permit tcp b.n.0.0 0.0.255.255 0.0.0.0 255.255.255.255 gt 1023
access-list 101 permit udp b.n.0.0 0.0.255.255 0.0.0.0 255.255.255.255 gt 1023
access-list 101 permit udp b.n.0.0 0.0.255.255 0.0.0.0 255.255.255.255 eq 25
access-list 101 permit udp b.n.0.0 0.0.255.255 0.0.0.0 255.255.255.255 eq 53
access-list 101 deny ip b.n.0.0 0.0.255.255 0.0.0.0 255.255.255.255
!
! interdire les connexions entrantes tftp, portmapper, NFS,
!
access-list 101 deny udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq
69
access-list 101 deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq
111
access-list 101 deny udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq
111
access-list 101 deny udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq
2048
access-list 101 deny udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq
2049
!
! empêcher accès aux terminaux X
!
deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 6000
deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 6001
=>empeche un ordinateur externe d'ouvrir un DISPLAY sur un ordinateur
interne.
En effet, l'ouverture d'un DISPLAY sur un ordinateur distant permet de
récupérer tous les caracteres tapes sur celui-ci dont les mots de passe (sniffing).
!
! autoriser telnet vers une machine uniquement
! (machine que l'on peut considÕrer comme bastion)

23
!
permit tcp 0.0.0.0 255.255.255.255 X.Y.x.y 0.0.0.0 eq 23
=>type de filtre nécessaire pour la construction d'un firewall : envoyer les
trames vers une machine contenant des proxy.
!
! barrer accès telnet, rlogin et rsh vers le reste
!
deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 23
deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 512
deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 513
deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 514
!
!
! ...et autoriser tout le reste.
access-list 101 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255
=>dans cet exemple de filtre, les accès sont tres larges. Il serait interessant de
proteger en plus certains services comme les daemons fingerd (port 79), syslogd
(port 514), netBios(port 137,138,139), SNMP (port 161,162), routed (port 520), .

On vient de voir qu'un routeur filtrant ne protege qu'un minimum le réseau interne
(on acceptera toujours des trames suceptibles être dangereuses).
Un premier pas vers un veritable firewall :
On peut donc a la place d'utiliser les filtres, imposer aux routeurs d'envoyer toutes les
trames qu'ils recoivent a une machine P, dans un réseau dit bastion, qui va les
prendres en charges pour assurer d'un cote le dialogue avec la machine externe et
d'un autre le dialogue avec la machine interne (le logiciel de la machine P qui se
charge de ces operations est appele proxy).
REM 1 : pour envoyer tous les paquets IP vers P, il faut que P soit declare comme
"routeur" de passage obligatoire pour traverse le réseau bastion sur les 2 routeurs qui
entourent ce réseau bastion (ces 2 routeurs ne doivent pas se

24
connaitre).

REM 2 : la machine P ne devrait pas faire marcher ses couches 3 et sup (pour ne pas
perdre son temps a jeter les paquets IP qui ne lui sont pas destines) et pour laisser agir
le logiciel "proxy".
REM 3 : le logiciel "proxy" doit prentre en charge les paquets au niveau éthernet et se
servire des entetes ip et tcp pour de l'autre cote ouvrir une connexion avec le
destinataire normal. C.a.d. le proxy doit gerer toutes les couches du modele OSI =>
On arrive la a la notion de PASSERELLE.

D'ou le deuxieme pas : Rassembler les 2 routeurs et les proxys en une seule machine :
une passerelle (gateway) specialisee sécurité.
Cette machine utilise un noyau securise : par exemple un noyau unix modifie pour le
seul fonctionnement des services du firewall.
Cette passerelle peut mettre en oeuvre tous les mécanismes qu'elle veut avant que le
proxy etablisse la connexion avec l'interieur : filtrage, authentification du client (ex :
avec le programme Sock), etc...

voici un passage du fichier log d'un serveur www Apache :

25
mailbox.nomreseau.fr - - [20/Jan/1998:13:42:35 +0100] "GET /Eleves/P98/dev/
HTTP/1.0" 200 644 "-" "Mozilla/3.0 (X11; I; IRIX 5.3 IP20) via proxy gateway
CERN-HTTPD/3.0 libwww/2.17"
mettant en evidance l'utilisation de proxy dans un firewall.
Voici une liste de sites proposant une solution firewall-proxy:
http://www.actane.com/ : firewall utilisant SNMP
http://www.wingate.net/

Voici une liste de fournisseurs proposant des firewalls:

Border Network Technologie : Borderware, Firewall Server


http://www.seachange.ca/bwdesc.htm
Checkpoint Software Technologie : Firewall-1
Digital : Digital Firewall for Unix
Harris Computer : Cyberguard
IBM : Net SP Secure, Network Gateway
Trusted Information Systems : Gauntlet

Pour plus de renseignements sur les routeurs :


http://www.esil.univ-mrs.fr/Eleves/P98/hop/rapport/
Pour plus de renseignements sur l'utilisation des routeurs dans la sécurité (avec
des exemples de filtres :
http://www.esil.univ-mrs.fr/Eleves/P98/hop/rapport/main/securite.html
CONCLUSION
Les types d'attaque se basant sur l'insecurite des protocoles lies a TCP-IP
(spoofing ip, arp ; icmp redirections) sont tres efficaces mais bien connues par
les administrateurs systèmes qui peuvent les controler par des filtres, des
firewalls et du controle en temps reel des trames éthernet circulant sur leurs
réseaux locaux.
De plus, la nouvelle version de IP sera plus securisee ce qui limitera ce type
d'attaques (une raison de plus de passer a IPv6).

Les types d'attaques se basant sur des bugs des logiciels de communication (ici
IP et TCP : teardrop, land attack etc ...) sont beaucoup plus difficiles a controler.
En effet, l'administrateur système doit attendre que l'editeur ou le constructeur
distribue un patch qui corrige l'erreur.

26
Entre le temps que le bug soit decouvert par les organismes de sécurité et
corrige, les pirates ont tout leur temps de l'exploiter.
Les adminstrateurs systèmes doivent en permanance se tenir au courant de ces
bugs en etant abonne aux listes les concernant ex :
http://www.netsys.com/firewalls/ .(backup)
ou la liste d'ISS (Internet security systems) :
mail majordomo@iss.net avec dans le corp du message : subscribe alert <your
email>
Le site ISS propose aussi des logiciels de sécurité : internet security systems
:www.iss.net

Rem : on peut penser que logiciels de sécurité vont evoluer en parallele des
logiciels anti-virus et suivant les memes principes :

• un nouveau virus est identifie => l' antivirus doit evoluer pour le prendre
en compte
• une nouvelle methode de piratage est identifiee => le logiciel de sécurité
doit evoluer pour la prendre en compte.

Une bonne protection du site nécessite de prendre en compte ces 3 points :

• Structurer l'architecture du réseau de sorte a ce que les trames éthernet ne


soient accessibles que la ou elles sont utiles, sensibiliser les utilisateurs a
proteger leurs comptes, bien configurer NFS, NIS etc ..
• Mettre en place un firewall
• Installer sur certaines machines des logiciels qui analysent les trames (ex:
Courtney ...).

Pour finir, pour ceux qui veulent être toujours au courant des nouveaux
problèmes de sécurité : Internet vous apportera toujours la solution : un moteur
de recherche associe a la requete "security hole" ou firewall+proxy vous donnera
des réponses precises.

27

You might also like