Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
MMOIRE de n d'tudes
pour obtenir le titre de
Master en Informatique
Mention :
Systmes et Rseaux
TA Thanh Dinh
Remerciements
Ce travail n'aurait jamais vu le jour sans l'aide prcieuse de monsieur Jean-Yves Marion. Il m'a guid tout au long de la priode de stage par ses explications aussi claires que prcises. Je tmoigne toute ma gratitude monsieur Romain Pchoux qui m'a initi au calcul appliqu au travers des discussions hebdomadaires et m'a donn des remarques sur la mmoire. Je tiens remercier monsieur Eric Thrond pour sa gentilesse. Il m'a aid dcouvrir la vie en France, particulirement Nancy. Nous avons coopr l'execution d'un simulateur du botnet Waledac. Je remercie chaleureusement toutes les personnes de l'quipe CARTE pour une ambiance de travail particulirement favorable. Merci enn mes parents, ma femme et mon ls pour leur patience et leur encouragement tout l'instant.
Rsum
Les travaux raliss pendant la priode de stage portent sur l'application des mthodes de la vrication des protocoles cryptographiques l'attaque des botnets. La vrication automatique des protocoles cryptographiques est un sujet de recherche trs actif. Elle vise montrer mathmatiquement la scurit d'un protocole et dtecter galement des failles. Les botnets rcents ont tendance d'utiliser des protocoles cryptographiques pour protger leur communication. Nous tudions un botnet particulier, Waledac, qui utilise des algorithmes cryptographiques pour scuriser la communication entre ses bots. Ensuite, nous abordons quelques approches de la vrication des protocoles : spi calcul et clauses de Horn. Pour attaquer de tels botnets, nous proposons nalement une mthode gnrique qui exploite des vulnrabilits situes dans ses protocoles de communication.
Mots cls : mthode formelle, vrication des protocoles cryptographiques, spicalcul, clauses de Horn, Waledac, botnet.
Abstract
In this internship, we deal with some methods of protocol verication to propose a new method for attacking botnets. The verication of cryptographic protocols is a very active research topic. It aims to prove mathematically the security of communication protocol. The recent botnets tend to use cryptographic protocols to secure its communications. We study the Waledac botnet as an particular use case. The bots of Waledac use some cryptographic algorithms to protect their communications. Then we discus some approaches to protocol verication : spi-calculus and Horn clauses. Finally, we propose a generic method to attack Waledac botnet which exploits vulnerabilities located in their communication protocols.
Keywords : formal method, protocol cryptographic verication, spi-calculus, Horn clauses, Waledac, botnet.
1
1 1 1 2
2.2 3.1
Botnets . . . . . . . . . . . . . . 2.1.1 Origin . . . . . . . . . . . 2.1.2 Architecture . . . . . . . . 2.1.3 Objectif . . . . . . . . . . Mthodes de protection contre les
. . . . . . . . . . . . . . . . . . . . botnets
3
3 3 4 5 6
3 Botnet Waledac
3.2
3.3
3.4
3.5
3.6
Introduction . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Waledac . . . . . . . . . . . . . . . . . . . . 3.1.2 Objectif . . . . . . . . . . . . . . . . . . . . Caractritiques techniques . . . . . . . . . . . . . . 3.2.1 Vecteurs d'infection . . . . . . . . . . . . . 3.2.2 Code binaire et protection . . . . . . . . . . 3.2.3 Taille du rseau Waledac . . . . . . . . . . . 3.2.4 Protocole de communication . . . . . . . . . Structure du rseau . . . . . . . . . . . . . . . . . . 3.3.1 Architecture . . . . . . . . . . . . . . . . . . 3.3.2 Communications et messages changs . . . Primitives cryptographiques . . . . . . . . . . . . . 3.4.1 Chirement symtrique AES . . . . . . . . 3.4.2 Utilisation du chirement asymtrique RSA Attaques contre Waledac . . . . . . . . . . . . . . . 3.5.1 Attaque de l'homme du milieu . . . . . . . 3.5.2 Attaque Sybil . . . . . . . . . . . . . . . . . Mthodes gnriques d'attaque . . . . . . . . . . . 3.6.1 Analyses . . . . . . . . . . . . . . . . . . . . 3.6.2 Problmatique et objectif . . . . . . . . . . 3.6.3 Outline de l'approche propose . . . . . . .
9 10 10 10 10 10 11 11 12 12 13 15 15 16 16 17 18 19 19 19 20
Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Mthodes formelles pour la vrication de programmes . . . . 4.1.2 Protocole cryptographique, attaque et vrication . . . . . . .
25
25 26 27
vi
4.2 4.1.3 Proprits de scurit . . . . . . . . . . . . Protocole cryptographique . . . . . . . . . . . . . . 4.2.1 Primitives cryptographiques . . . . . . . . . 4.2.2 Exemple : protocole "Wide-Mouthed-Frog" Modles formels . . . . . . . . . . . . . . . . . . . . 4.3.1 Algbre de processus . . . . . . . . . . . . . 4.3.2 Pi-calcul et spi-calcul . . . . . . . . . . . . . 4.3.3 Modle de traces et clauses de Horn . . . . Modles formels des attaques . . . . . . . . . . . . 4.4.1 Attaques en spi calcul . . . . . . . . . . . 4.4.2 Attaques en clauses de Horn . . . . . . . . .
4.3
4.4
5.2
Mthode gnrique d'attaque . . . . . . . . . . . . . . . 5.1.1 Plan d'attaque et analyses . . . . . . . . . . . . . 5.1.2 Solution propose . . . . . . . . . . . . . . . . . . Reprsentation de l'attaque contre Waledac . . . . . . . 5.2.1 Modlisation du protocole de communication . . 5.2.2 Attaque contre la distribution de la cl de session Contribution Limite . . . . Perspective . Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
47 47 48 49 50 51 55 56 57 57 59 59
6 Conclusion et perspective
6.1 6.2 6.3 6.4
55
A ProVerif
A.1 ProVerif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Modlisation du protocole de Waledac . . . . . . . . . . . . . . . . . B.1 Processus Squentiels Communicants . . . . . . . . . . . . . . . . . . B.2 LOTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3 Pi-calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.1 Modle symbolique . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Modle calculatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1 Conception du simulateur . . . . . . . . . . . . . . . . . . . . . . . . D.2 Exprimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
B Algbre de processus
65
65 65 66 67 68
67
69
69 70
Bibliographie
73
vii 80
Solution ralisable . . . . . . . . . . . . . . . . . . . . . . . . Communications entre les couches du botnet . . . . . . . . . . Distribution de la cl session entre le spammeur et le serveur Attaque contre protocole cryptographic du Waledac . . . . . . Variant du protocole Needham-Schroeder
. . . . . . . . . . . . . . .
C.1 Variant simple du protocole de Denning-Sacco . . . . . . . . . . . . . D.1 D.2 D.3 D.4 D.5 Routage de messages . . Paramtres par dfaut . Simulateur de Waledac . Le dbut du simulateur Tous les spammeurs sont . . . . . . . . . . . . . . . . . . . . . . . . . . . . compromis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction
Sommaire
1.1 1.2 1.3 1.4 Problmatique Ob jectif . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Environnement de travail . . . . . . . . . . . . . . . . . . . . . Contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1
1.1
Problmatique
Les botnets sont des rseaux de machines infectes. Ce rseau est structur et une machine communique avec les autres par l'intermdiaire de protocoles scuriss. Nous avons tudi le cas du botnet Waledac. partir de cette tude, nous avons conu une attaque contre ce botnet. Il s'agit de pntrer le botnet et de se faire passer pour une machine infecte. partir de l, il est possible de neutraliser une partie du botnet. Ce concept d'attaque n'est possible que si le protocole de communication entre les machines du botnet est vulnrable. La problmatique gnrale est de concevoir une mthode pour pntrer un botnet et le neutraliser.
1.2 Objectif
L'objectif du stage est la recherche d'attaque sur des protocoles malicieux. Pour cela, il faudra concevoir un modle des communications du botnet. Ce modle sera bas sur la logique du premier ordre ou sur un calcul de processus. Une fois la modlisation tablie, il faudra concevoir un modle d'attaque. Enn, il faudra rchir sur des outils automatiques capables de trouver une vulnrabilit dans ce protocole qui pourrait conduire neutraliser un botnet. Le travail demand s'appuie sur les rsultats tablis dans le domaine de la vrication de protocoles et nos propres rsultats en virologie et sur les botnets.
1.3 Environnement de travail
Ce stage s'inscrit dans la mise en uvre du laboratoire de haute scurit (LHS) en informatique du LORIA. Les objectifs du LHS sont de conduire certaines exprimentations lies la scurit informatique, et plus particulirement la virologie.
Chapitre 1. Introduction
Cette plateforme de recherche est unique dans le monde acadmique et ore de nombreuses opportunits l'application des recherches scientiques la ralit.
1.4 Contribution
Les travaux raliss pendant la priode de stage se concentrent sur l'attaque contre des protocoles cryptographiques utiliss par des botnets. Dans la section 3.6.3, nous proposons un nouveau "framework" servant construire une attaque gnrique contre les botnets. Une telle attaque casse la scurit des protocoles de communication des botnet, donc peut tre utilise comme une base sur laquelle les attaques successives peuvent se droulent. Dans la section 4.4.1, nous proposons une nouvelle ide de la modlisation de l'attaque en spicalcul. L'attaque est reprsente comme un processus qui se fonctionne paralllement au protocole, et essaie rvler des informations que le protocole protge. Cette modlisation nous permet de mettre en application une attaque formelle car la reprsentation en spi calcul d'un processus est proche de sa reprsentation en un langage de programmation. Dans le chapitre 5, nous donnons des analyses dtaills pour la mise en place du framework. D'une part, nous expliquons la ncessit d'utilisation des mthodes formelles permettant de vrier automatiquement les protocoles cryptographiques. Nous transformons donc un problme rel des botnets en un problme assez formel pour proter les mthodes thoriques existantes. D'autre part, nous dcrivons clairement quelle mthode approprie utiliser dans chaque tape du framework et proposons une solution ralisable du framework en se basant sur un outil de vrication automatique, ProVerif. Nous appliquons ces mthodes dans un cas particulier du botnet Waledac. Dans la section 5.2, nous prsentons une reprsentation du protocole de communication utilis par le botnet en spi calcul. Puis, nous utilison ProVerif pour vrier cette reprsentation1 . L'attaque contre Waledac est modlise par un processus en spi calcul, et nous dcrivons une dmonstration formelle qu'elle casse la condentialit du protocole. Notre framework ne se limite pas aux tels protocoles errons comme ceux de Waledac. Il est capable de dtecter des vulnrabilits (de protocole cryptographique) de n'importe quel botnet. Finalement, nous implementons un simulateur2 de Waledac en C++. Ce simulateur nous permet de visualiser le fonctionnement du botnet.
1 2
Le script de ProVerif est dcrit dans l'annexe A Ce simulateur peut tre consult dans l'annexe D
Chapitre 2
3 4 5
6
2.1
Botnets
Cette section peut tre considre comme une introduction au monde des botnets. La plupart des informations prsentes ici se base sur le travail de F. Ducrot, M. Danho et X. Marronnier[Ducrot 2007]. D'ailleurs, une analyse plus complte peut tre consulte dans [Nachreiner 2008]. Nous commencerons par dcrire l'origine et le dveloppement des botnets, puis nous les examinerons au niveau de topologie de rseau. Ensuite, nous prsenterons quelques objectifs de botnet. Finalement, nous aborderons des mthodes de protection.
2.1.1 Origin
Le terme botnet est revenu souvent dans l'actualit de la scurit informatique depuis quelques annes. Ce terme vient de la contraction de l'expression "roBOT NETwork", soit littralement rseau de robots. Le botnet est donc l'ensemble de robots ou de bots, chacun tant un programme localis sur la machine de victim et eectue des ordres prdenis ou reus par un serveur de contrle. Les premiers bots apparaissaient sur les rseaux IRC[Oikarinen 1993]. Les oprateurs du rseau IRC ont besoin des programmes qui les aident grer automatiquement des services du rseau, ils crent donc les robots IRC. Les robots IRC restent toujours sur un canal IRC an de le maintenir tous les temps. Ils travaillent comme un utilisateur normal du canal, mais il reste au repos jusqu' ce qu'il ait une action particulire (une commande via canal IRC) ectuer[EggHeads 2008]. Par exemple, le robot Eggdrop[Eggdrop 2008] est develop par R. Pointer en 1993 an de grer et protger le canal #gayteen sur le rseau EFnet[EFnet 2010].
En 1999, le premier botnet utilisant IRC comme moyen de contrle t son apparition. Il s'agissait de W32. PrettyPark[Symantec 2007]. Ce botnet ne dclencha pas d'eet de mode immdiat. la n de l'anne 2000, le GTBot, un dtournement du client IRC Windows mIRC, t son apparition. Ces robots de premire gnration n'apparurent pas cependant comme une menace majeure et sont aujourd'hui pratiquement oublis. Ce fut partir de 2002 que la menace commena prendre sa forme actuelle. Les programmes Agobot[InfectionVectors 2004], SDBot puis, l'anne suivante, SpyBot sont les briques de base sur lesquelles se sont appuys par la suite les crateurs de botnets. Ces programmes sont construits de faon faciliter l'mergence de nouvelles variantes en multipliant les moyens d'intrusion, les fonctionnalits oensives et les moyens de protection.
2.1.2 Architecture
Un botnet est donc un ensemble de machines esclaves - les zombies, organises en rseauu et contrles distance par une ou plusieurs personnes. Du point de vue de l'organisation, un botnet a pour objectif de permettre un individu - le crateur du botnet, de contrler simultanment l'ensemble des machines esclaves. Le botnet est donc un rseau hiarchis comprenant un serveur de contrle et plusieurs machines esclaves. L'architecture traditionnelle comprend un ou plusieurs serveurs IRC qui sont utiliss comme canal de commande et contrle. Aprs infection, les machines clientes du botnet se connectent au serveur matre sur un calnal IRC priv an de signaler leur existence, d'obtenir des mises jour ou des instructions.
Fig.
Le point faible de ce modle d'organisation est sa sensibilit la dtection. En eet, une fois les matres identis, il sut de surveiller et de ltrer ceux-ci pour dmanteler le botnet ou le rendre inoprant sur un segment de rseau. L'architecture pair--pair est caractrise par la topologie dcentralise du rseau dans laquelle il n'y a plus de serveur de contrle. Chaque machine infecte dispose
2.1. Botnets
d'une liste initiale d'adresses IP de points d'entre dans le botnet. Une fois le bot intgr au rseau, cette liste est mise jour dynamiquement.
Fig.
Les commandes du matre sont relayes travers l'ensemble du rseau grce aux bots. Ils mettent donc plus de temps se propager dans ce contexte, mais le rseau est plus robuste : la perte d'un nud ne met pas mal l'existence du rseau tout entier. Il existe aussi des architectures variantes grce l'apparition de nouvelles mthodes de communication. Il s'agit de conserver les concepts essentiels de ces deux architectures, mais en changeant le canal de contrle. Par exemple, il est possible d'utiliser un serveur web en lieu et place du serveur IRC comme matre. L'avantage pour le pirate provient du fait que le trac web sortant d'un site n'est pratiquement jamais interdit, car trop abondant pour pouvoir tre surveill sans informations complmentaires. La taille des botnets est trs variable, de quelques centaines de machines zombies plusieurs dizaines de milliers. La moyenne est de l'ordre du millier d'lments.
Fig.
2.1.3 Objectif
En fait, les botnets sont l'illustration de la transformation du pirate informatique. Le d technique a fait place une conomie souterraine dans laquelle le
piratage n'est qu'un outil qu'il faut rentabiliser. Le changement d'orientation dans les motivations des pirates, de la curiosit et de la recherche de notorit vers la recherche de prots nanciers, a t marqu par l'apparition de bots de plus en plus sophistiqus et intgrant des fonctionnalits permettant de mener diverses actions frauduleuses depuis les postes infects. Les botnets prsents servent donc aux objectifs malveillants : attaques en dnie de service, diusion de spams, etc. Il est possible de louer les services d'un botnet pour monter une attaque de dni de service distribu 1 . Ainsi, sur l'ordre du serveur matre, les machines esclaves peuvent lancer des attaques en prsentant pour origine le site pirat. Par exemple, l'envoi sur le canal IRC d'une commande dclenche une attaque en dni de service. En utilisant plusieurs milliers de machines mettant des requtes simultanment, il est possible, par exemple, d'interdire l'accs un site web. Les pertes subies par un site commercial paralys pendant plusieurs heures sont sans commune mesure avec le cot de location d'un botnet. En 2004, Jay Echouafni, CEO d'une socit de tlvision enligne, a recouru aux services d'un botnet pour attaquer des entreprises avec lesquelles il tait en conit. Sur le plan nancier, l'attaque a cot 1000$ son organisateur et a entran des pertes de l'ordre de 2.000.000$ ses victimes[Poulsen 2004]. Les bots peuvent tre utiliss pour mettre massivement des spams . Cette technique ore l'avantage son commanditaire de camouer son origine, permettant ainsi de contourner les ltrages par liste noire et les retours de bton lis l'envoi massif de spams2 ou encore le ltrage de son accs par son fournisseur d'accs. Il est possible d'utiliser les zombies3 pour recueillir des informations personnelles sur les utilisateurs, informations qui seront utilises dans le cadre de vols d'identit ou de fraude la carte bancaire. Une autre attaque dirige par les machines zombies est la diusion de logiciels publicitaires sur celles-ci.
2.2 Mthodes de protection contre les botnets
Dans cette section, nous aborderons des mthodes de protection contre les botnets. D'une part, il s'agit des mthodes concernant l'tre humain, c'est--dire qu'elles visent duquer les utilisateurs se mer. D'autre part, il existe des mthodes techniques qui liminent les botnets en s'attaquant directement ses vulnrabilits. En fait, les deux mthodes se compltent en se formant un bouclier de multi-couches. Nous ne dcrirons cependant que les mthodes techniques. Les mthodes techniques visent exploiter des vulnrabilits se situant dans toutes les caractristiques (techniques) du botnet. Remarquons que le botnet n'est rien d'autre qu'un rseau de bots, ces caractristiques peuvent tre divises donc en deux catgories, l'une concerne des codes binaires fonctionnant sur la machine infecte, l'autre concerne des protocoles de communication sur le rseau.
1 2
Distributed denial-of-service (DDoS) Comme les vagues de retours d'erreurs massives pouvant survenir aprs les envois 3 Les machines infectes
Le code du botnet fonctionne sur la machine infecte, il veux donc toujours se cacher de l'utilisateur. Les logiciels antivirus (ou anti-malware) visent dtecter, puis lminer ce code malveillant. Ils doivent tre capable donc de casser les techniques de protection donc le bot se muni. Le botnet peut tre limin en attaquant sa topologie du rseau. Par exemple, nous pouvons attaquer un botnet en isolant son matre et en bloquant tous ses ordres.
Botnet Waledac
Sommaire
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Chapitre 3
10 10
10
Vecteurs d'infection . . . . . Code binaire et protection . . Taille du rseau Waledac . . Protocole de communication
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
10 10 11 11
12
Structure du rseau . . . . . . . . . . . . . . . . . . . . . . . .
12 13
15
15 16
16
17 18
19
19 19 20
3.1
Introduction
Dans ce chapitre, nous prsenterons tout d'abord les caractristiques techniques du botnet Waledac, puis nous parlerons de sa structure et de son protocole de communcication. Ensuite, nous nous concentrerons sur ses algorithmes cryptographiques qui sont utiliss pour scuriser ses messages. Nous dcrirons aussi les attaques existantes contre ce botnet. Finalement, nous prsenterons des remarques sur ces attaques et proposons en bref le survol d'une mthode gnrique d'attaque. Les analyses prsentes ici se basent principalement sur des travaux de J. Calvet et P. M. Bureau[Calvet 2009a, Calvet 2009b]. Ils ont dcouvert les caractristiques techniques de Waledac grce l'ingnierie inverse sur son code binaire.
10
3.1.1 Waledac
Waledac a fait son apparition sur l'Internet vers la n de l'anne 2008. Ce malware a d'abord attir l'attention des chercheurs par sa ressemblance avec la clbre famille Storm [Sarat 2008], qui venait alors de s'teindre. Au del de ce probable lien de liation, Waledac est particulirement intressant en lui mme, ne serait-ce que parce que les machines du botnet qu'il constitue communiquent l'aide d'un protocole cryptographique pair--pair, ou bien encore parce que ses techniques de protection logicielles s'avrent particulirement ecaces contre les antivirus.
3.1.2 Objectif
Le but principal de Waledac est d'envoyer des courriels indsirables (spams), que cela soit pour ses propres sites an d'infecter de nouvelles machines, ou pour d'autres groupes de spam comme Canadian Health&Care Mall[Trackers 2010]. Quelques mois aprs la premire version, une volution apporte au binaire a cr un nouveau thread charg d'explorer le disque dur de la machine infecte la recherche d'adresses de courrier lctronique. Le bot est aussi capable de ltre le trac du rseau pour rechercher les mots de passe FTP, SMTP et HTTP. En plus d'tre install par d'autres familles de malwares, Waledac inclut une fonctionnalit qui lui permet de tlcharger et d'xcuter des autres malwares.
3.2 Caractritiques techniques
Dans cette section, nous nous concentrerons plutt sur les caractristiques techniques qui sont concernes aux activits locales de bots.
Social engineering
11
s'aidant de mcanismes lis au compilateur utilis par les crateurs de Waledac, TM Microsoft Visual C++[Skochinsky 2006]. Avant de lancer une nouvelle vague de propagation, la couche de protection des binaires Waledac est prpare et modie an d'viter la dtection par les outils de scurit. Pendant le premier mois de propagation, les binaires Waledac taient compresss avec UPX[UPX 2010], un packer libre disponible sur Internet qui ne possde aucune capacits de protection2 . En Janvier 2009, la premire famille de protection a apparu : rsolument oriente contre les logiciels antivirus, ses premires versions utilisaient des techniques anti-mulations. Les versions plus rcentes sont remarquables par l'arrive de protection anti-dbuggages.
Fig.
Selon les informations recueillies le 06 Aot et le 01 Septembre en 2009, ils valuaient le nombre de machines infectes est de 164.182, et il y avait environ 55.000 bots activs par jour.
12
3.2: Distribution de machines infectes pendant la journe 24 Aot 2009. Crdit photo[Stock 2009]
Fig.
sages circulant sur le rseau, Waledac utilise deux algorithmes cryptographiques : AES[NIST 2001] et RSA[Rivest 1978]. Pour cela, la bibilothque cryptographique OpenSSL[OpenSSL 2010] est intgre au code binaire du bot.
3.3 Structure du rseau
Dans cette section, nous nous concentrerons sur les activits de la couche de rseau du botnet, c'est--dire la topologie du rseau et les protocoles de communication entre ses participants. Nous ne dcrirons cependant que les communications de base, les analyses en dtail (types des messages changs, structure des messages, mcanisme de mise jour la liste de rpteurs, etc) peuvent tre consultes dans [Calvet 2009a, p.7-16].
3.3.1 Architecture
Du point de vue de l'organisation, l'architecture de Waledac est traditionnelle. Cette architecture se compose d'un serveur de commande et de contrle, et de plusieurs machines esclaves. Les auteurs de Waledac ajoutaient cependant des couches supplmentaires visant protger les serveurs matres. Le botnet se muni donc d'une architecture hirarchique qui comprend (au moins) 4 couches. Spammeurs : les spammeurs sont les bots qui ralisent le travail de base comme envoyer des spams ou excuter les attaques DDOS. Ce sont des machines TM Windows ayant seulement des adresses IP prives. Ils ne se connaissent pas entre eux mais chacun d'eux possde une liste de rpteurs 5 avec lesquels il prend contact pour chercher des tches accomplir. Rpteurs : les rpteurs servent de relais pour les commandes de contrle du botnet. Ils sont aussi des serveurs de nom qui rsolvent des requtes DNS envoyes
5
RList
13
Fig.
par les spammeurs. Chaque rpteur a une adresse IP publique directement sur une de ses intefaces et modie le pare-feu TM Windows pour tre joignable de l'extrieur. Les rpteurs relayent les requtes des spammeurs vers le serveur de contrle en passant par les protecteurs. Protecteurs : les protecteurs sont des serveurs TM Linux qui excutent direntes versions de nginx[Sysoev 2010], un serveur HTTP lger utilis comme un mandataire6 . Il y avait 5 ou 6 protecteurs dissmins partout dans le monde (2 ou 3 en Allemagne, 1 aux tats-Unis, 1 en Russie, et 1 aux Pays-Bas). Serveur de contrle : l'existence du serveur de contrle est en fait une hypothse. Les chercheurs trouvaient que les valeurs du champ HTTP Date des rponses des protecteurs sont identiques quand ils les interrogent au mme moment. Comme il semble peu probable que les auteurs de Waledac aient synchronis les 6 protecteurs, ils sont plutt les mandataires pour une autre couche constitue d'un serveur de contrle. C'est le serveur qui contient toutes les informations sur le botnet et son fonctionnement.
POST /jyl.png HTTP/1.1 Referer: Mozilla Accept: */* Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla nHost: A.B.C.D Content-Length: Y
6
Proxy server
14
Spammeur o
messages
/ Serveur
Fig.
Le spammeur ne contacte pas directement le serveur de contrle. Il transmet son message un rpteur qui va relayer (grce un protecteur) ce message au serveur de contrle. Le rpteur mandataire est choisi alatoirement dans une liste de rpteurs, RList , stocke par le spammeur. L'ide principale de la procdure peut tre reprsente par la gure 3.5. Le spammeur transmet une partie de sa RList contenant les informations sur 100 rpteurs un rpteur alatoire. Ceux-ci sont aussi choisis alatoirement dans cette liste. En rponse, le spammeur reoit aussi du rpteur un extrait de sa propre list.
Il y a de nombreux types de paramtres, e.x "b" indique l'adresse IP de l'metteur spammeur, repeateurs, protecteurs, et serveur de contrle 9 RList 10 PList
8 7
15
/
Spammeur
o
{RList}K2
Repeteur
Fig.
3.4
Primitives cryptographiques
An d'assurer la scurit des messages changs, les auteurs du botnet ont cr par leur-mmes un protocole cryptographique de "textbook"11 [Mao 2003, p.13] dans lequel le chirement des messages se fait par un systme cl secrte. Cette cl secrte est change de faon scurise (selon l'ide des auteurs du botnet) par un protocole d'change de cls qui utilise un chirement cl publique. Les deux algorithmes cryptographiques sont utiliss par Waledac sont tous forts, l'algorithme de chirement symtrique12 AES[NIST 2001] vise chirer tous les messages changs entre les participants du botnet, l'algorithme de chirement asymtrique13 RSA[Rivest 1978] est utilis dans le mcanisme d'change de cls de session[Menezes 1997, p.494] entre les bots et le serveur de contrle.
Ceci signie un protocole qui n'est pas encore srieusement vri Chirement cl secrte 13 Chirement cl publique 14 National Institute of Standards and Technology. 15 C'est--dire qu'elle n'est que valide en une session de communication
16
Spammeur
o
{K3 }pkspammeur
Serveur
Fig.
Le spammeur gnre une paire de cls, constitue d'une cl prive skspammeur et d'une cl publique pkspammeur . Il divulgue sa cl publique en le chirant par la cl K1 et envoye le message chir, {pkspammeur }K1 , au serveur de contrle. Le serveur dchire ce message, grce la cl K1 , pour obtenir la cl publique pkspammeur . Puis, le serveur de contrle gnre alatoirement une cl de session K3 , la chire avec la cl publique pkspammeur du spammeur. Finalement, il renvoie cette cl de session chire, {K3 }pkspammeur , au spammeur. Personne, l'exception du spammeur, ne connait la cl secrte skspammeur . Ainsi personne, l'exeception du spammeur, ne peut obtenir la cl de session K3 en dchirant le message envoy.
3.5 Attaques contre Waledac
Le mcanisme de communication entre les participants du botnet, celui de mise jour le RList des bots, et surtout ses vulnrabilits cryptographiques conduisent deux mthodes d'attaque. La premire mthode se base sur le fait que les bots et le serveur de contrle se contactent en utilisant toujours des serveurs de mandataire17 . La deuxime mthode exploite le mcanisme de mise jour le RList pour propager les informations d'un faux rpteur. Il existe une vulnrabilit trs srieuse situe dans le gnrateur de cls de session K3 du serveur de contrle, la cl gnre a toujours la mme valeur. De plus, les
Le protocole d'change de cl ne se passe qu'entre deux participants, il n'a pas besoin d'une autorit de conance qui distribue les cls[Stinson 2006, p.394] 17 Les rpteurs et les protecteurs
16
17
deux cls K1 et K2 sont codes en dur dans le code binaire des bots, elles sont donc identiables par la rtro-ingnierie. Ce qui permet de dchirer trs facilement tous les messages changs dans le botnet.
18
<lm> <localtime>0</localtime> <nodes> <node ip="ourIPaddress" port="80"time="0"> 00000000000000000000000000000001</node> <node ip="ourIPaddress" port="80" time="0"> 00000000000000000000000000000002</node> ... <node ip="ourIPaddress" port="80" time="0"> 00000000000000000000000000000500</node> </nodes> </lm>
Lorsque le bot reoit un tel message, toutes les entres de sa RList seront remplaces grce la dirence zro entre le timestamp global et les locaux, qui indique
24 25
Le rapport de spam est situ dans le message taskrep Pour chaque bot, sa taille maximale de la RList est 500[Calvet 2009a, p.16].
19
L'tude de cas prsente ci-dessus a illustr certains attaques contre le botnet Waledac, cependant les attaques prsentes ne sont pas les seules solutions possibles. Pour les types dirents de botnet[Bacher 2005, Dierent Types of Bots], de nombreuses autres mthodes sont envisageables. Tous les mthodes d'attaque (et d'protection) se basant sur un bouclier de multi-couches. Elles se divisent en deux catgories : l'une vise liminer des activits malveillantes sur les machines infectes (ex. les logiciel antivirus), l'autre essaie d'analyser, de tracer et d'arrter les activits de botnet sur la couche de rseau (ex. [TechNet 2010] ou [Honeynet 2010]). Les travaux raliss dans ce stage se concentreront sur l'tude des mthodes qui nous permettent de bloquer les botnets au niveau de topologie de rseau. Plus prcisment, ces mthodes visent exploiter des vulnrabilits, surtout des vulnrabilits cryptographiques situes dans le protocole de communications entre les participants du botnet. Nous ignorons des attaques visant exploiter des vulnrabilits "locales", qui concernent plutt aux activits sur la machine infecte.
3.6.1 Analyses
Les deux mthodes d'attaque prsentes dans la section 3.5 se basent sur un fait : nous pouvons toujours dchirer, falsier et changer tous les messages changs. En eet, l'attaque de l'homme du milieu utilise un faux-rpteur qui imite des comportements du rpteur rel26 . En dchirant des messages relays, nous pouvons obtenir des informations du botnet. De faon analogue, l'attaque Sybil change (ou falsie ) les messages de mise jour de RList pour propager l'identit du superrpteur. Nous notons que tous les messages changs entre les parties du botnet sont dchirs par l'alogrithme de chirement AES (avec un des trois cls de 128 bit K1 , K2 ou K3 ). Les deux cls K1 et K2 sont codes en dur dans le code binaire du bot, la cl de session K3 est change par le protocole d'change de cls (cf. gure 3.6). Plus gnralement, nous disons que les parties de Waledac se communiquent en utilisant un protocole cryptographique.
20
Actuellement, les crateurs de codes malveillants ont tendance utiliser les primitives cryptographiques pour protger leurs produits[Stamford 2002], [Vogt 2007] : les logiciels malveillants27 , les botnets, etc. La premire ide, le cryptovirologie , a t propose par A. Young et M. Yung[Young 1996]. Ces auteurs proposent mme un exemple pratique utilisant le cryptocounter [Young 2004, p.130]. Un rsultat rcent d'E. Filiol[Filiol 2004] a propos un virus informatique exprimental, le virus Bradley, dont la complexit d'analyse est NP-complet28 . Dans un article rcent[Desnos 2009], A. Desnos a mise cette ide en pratique en propsant une implmentation de virus Bradley en Python. Les botnets utilisent aussi les algorithms de chirement pour scuriser leurs communications, le botnet Rustock[Chiang 2007] chire ses messages par l'algorithme de chirement ot RC4[Rivest 1992]. Le ver informatique Storm utilise l'algorithme de chirement asymtrique RSA pour scuriser certaines communications[Holz 2008]. Les trois auteurs R. Hund, M. Hamann, et T. Holz ont propos mme un botnet avanc, le Rambot, qui est dot des primitives cryptographiques fortes[Hund 2008]. Les primitives cryptographiques, surtout les algorithmes de chirement asymtrique, fournissent aux auteurs de codes malveillants un outil trs fort. Dans le cas du botnet, grce aux algorithmes de chirement, les auteurs peuvent cacher tous les messages circulant en utilisant un tel protocol cryptographique. Ainsi, pour empcher ces nouvelles menaces de scurit, la question fondamentale est de casser le protocole cryptographique utilis par botnet. Une attaque avec succs au protocole va nous orir des possibilits pour raliser des attaques successives, comme attaque Sybil ou attaque de l'homme du milieu29 . En consquence, nos travaux dans ce stage se concentreront sur les attaques gnriques contre les protocoles cryptographiques.
21
vrier ce protocole
construire l'attaque
yes
no s'arrter
Fig.
propos en 1978, mais sa vulnrabilit n'a t prouve qu'en 1981[Denning 1981]. Il va sans dire qu'un retard de trois ans n'est pas acceptable pour la protection contre une attaque botnet. Nous avons donc besoin d'une mthode qui permet de vrier automatiquement des protocoles cryptographiques et, dans le cas o ces protocoles sont vulnrables, de reconstruire des attaques. Il s'agit maintenant d'un problme de vrication des protocoles cryptographiques et de reconstruction des attaques. Heureusement, notre problme se situe dans un contexte connu de la vrication automatique des protocoles cryptographiques. Les mthodes formelles nous fournissent une preuve mathmatique de la scurit d'un protocole. Jusqu' prsent, il existe de nombreuses approches du problme de vrication des protocoles cryptographiques, un bref survey peut tre consult dans [Comon 2002]. Pour que les outils mathmatiques soient applicables, une mthode formelle de vrication a besoin essentiellement d'un modle formel du protocole vrier. Ce modle formel fournit des techniques servant modliser le protocole. Nous avons maintenant des ides principales d'une mthode gnrique d'attaque. Nous proposons dans la gure 3.8 un survol de l'approche utilise, l'attaque gnrique contre le protocole de communication du botnet se compose donc les tapes suivantes : 1. Dcouvrir le protocole de communication en analysant (coutant, bloquant ou
22
construire l'attaque
yes
no s'arrter
Fig.
La premire tape a pour but de dcouvrir le protocole de communication. Elle comprend donc des mthodes qui visent analyser le code binaire du bot (ex. rtroingnierie informatique), lire ou intercepter des donnes circulantes sur le rseau (ex. en utilisant le renieur de paquets30 ), etc. Il est bien entendu que la plupart de codes malveillants essaient de se protger l'aide de plusieurs mthodes31 . Par exemple, pour empcher l'analyse par les chercheurs, les codes binaires de Waledac32 sont compresss avec UPX et se munissent de techniques anti-mulations. En fait, il faut accepter que la premire tape soit extrmement dicile dpasser dans certains cas. Si les algorithmes du bot sont bien dresss et son code est implment correctement, il est trs dicile de dcouvrir les protocoles de communication sous-jacents. L'exemple typique est Skype[Skype 2010], un logiciel propritaire de messagerie instantane, dlivr la premire fois en 2003. Il se muni volontairement de techniques de protection tellement compliques que les chercheurs ne
Packet snier Ces mthodes se situent dans la contexte de la scurit par l'obscurit[Fortier 2005] 32 Remarquons que les deux cls AES 128 : K1 et K2 sont codes en dur dans le code binaire de bot
31 30
23
peuvent pas savoir exactement ses protocoles de communication jusqu' prsent33 , une liste des articles analysant les mthodes utilises par Skype peut tre consulte dans [Salman 2010]. Les botnets les plus populaires ne disposent pas d'une telle protection. En fait, il n'existe pas encore de botnet qui peut rendre impossible l'analyse par rtroingnierie. La raison est peut-tre que le but premier des auteurs du botnet et le gain rapide, ils n'ont aucune raison de chercher crer un botnet parfait qui prend plus de temps se dvelopper et se dployer et donc tre rentabilis[Calvet 2009a, p.19]. Nous acceptons donc que les protocoles de communication des botnets soient toujours facilement dtectables 34 . Ainsi nos travaux se concentrerons sur la rsolution des problmes poss dans les tapes 2, 3 et 4. Dans les chapitres suivants, nous travaillerons sur des modles formels servant modliser les protocoles de communication.
Rcemment, une quipe des hackers proclame son succs pour le dchirement des donnes envoys par Skype[O'Neil 2010] 34 Ce n'est pas une supposition irrationnelle, e.x les bots de Waledac se communiquent en utilisant le protocole HTTP, les en-ttes du protocole ne sont jamais chirs et sont facilement dtecter
33
Chapitre 4
4.1.1 Mthodes formelles pour la vrication de programmes . . . . 4.1.2 Protocole cryptographique, attaque et vrication . . . . . . 4.1.3 Proprits de scurit . . . . . . . . . . . . . . . . . . . . . .
4.2 Protocole cryptographique . . . . . . . . . . . . . . . . . . . .
26 27 29
29
29 30
31
4.3.1 Algbre de processus . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Pi-calcul et spi-calcul . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Modle de traces et clauses de Horn . . . . . . . . . . . . . .
4.4 Modles formels des attaques . . . . . . . . . . . . . . . . . .
32 35 40
44
44 45
4.1
Motivations
Revenons la question de mthode gnrique pour attaquer le protocole de communication des botnets. Ds que nous trouvons le protocole de communication, l'tape suivante, la deuxime tape dans la gure 3.8, sera de modliser formellement ce protocol pour que, dans le troisime tape, nous puissions detecter des vulnrabilits du modle en utilisant des outils mathmatiques. Ce chapitre est consacr donc aux mthodes formelles visant la vrication des protocoles scuriss. La vrication des protocoles scuriss trouve son contexte dans la ralisation des systmes informatiques ables. Nous voulons parler de cas des systmes critiques dans lesquels les erreurs informatiques ne sont pas absolument acceptables. La vrication des programmes critiques ont donc besoin de mthodes formelles qui peuvent assurer que aucun comportement du systme ne peut entraner d'erreurs. De faon analogue, les protocoles de communication peuvent tre considrs comme un type particulier des programmes. Ce type de programme se forme de plusieurs
26
processus, ceux dpendent de nombre de parties qui participent au protocole, qui se communiquent en changant des messages.
4.1. Motivations
27
l'approche retenue l'heure actuelle est de fait la preuve mathmatique an d'assurer que le logiciel est juste dans tous les cas. C'est ce qu'on appelle la vrication de logiciels grce aux mthodes formelles [Cortier 2009, p.7].
A
o
Fig.
{m}k
Le protocole prsent dans le gure 4.1 est une version simplie du protocole de distribution de cls de Denning-Sacco[Denning 1981] cl publique. Message 1.A B : Message 2.B A :
Le participant A choisit une cl frache k chaque excution du protocol, signe la cl k avec sa cl secrte skA , et chire la signature avec la cl publique du participant B . Enn, A envoie la signature chire B . Quand le participant B reoit le message chir, il le dchire en utilisant sa cl secrte skB et obtient la cl k . Ayant vri
Dans ces travaux, les protocoles de communication est consacr aux protocoles informatiques Nous ignorons des techniques immatures, par exemple les techniques de la cryptographie quantique comme la distribution quantique de cls[Mao 2003, p.203]
8 7
28
la signature9 , B est convaincu que la cl k a t choisie par A, et le chirement sous la cl publique pkB garantit que seul B peut dchire le message, donc la cl k doit tre partage entre A et B . Le participant B peut donc envoyer, de manire scurise, un messages s au participant A en le chirant avec la cl k et seul A est capable d'obtenir ce message en dchirant le message chir[Blanchet 2008, p.3]. premire vue, en supposant que les chirements utiliss dans le protocole 4.1 soient parfaits 10 , c'est--dire qu'il est absolument impossible d'obtenir d'information sur un message chir moins de connatre la cl de dcryptage[Cortier 2005, p.2]. En suivant exactement sur ce que le protocole nous renseigne, tape par tape, nous pouvons naturellement croire que le protocole est absolument scuris. En fait, il est assez facile de casser ce protocole en utilisant l'attaque de l'homme du milieu.
{{k}skA }pkC
{{k}skA }pkB
A
o
{m}k
C (attaquant)
o
{m}k
Fig.
Dans cette attaque, le participant A excute le protocole avec un participant malhonnte C , c'est ce qu'on appelle homme du millieu . L'attaquant C rcupre le premier message du protocole {{k }skA }pkC , le dchire avec sa cl secrte skC et le rechire avec la cl publique pkB du participant B . Le message obtenu {{k }skA }pkB correspond exactement au premier message d'une session entre A et B . L'attaquant C envoie alors ce message B en se faisant passer pour A. Le participant B se leurre sur l'identi de l'metteur du message, et rpond en envoyent un message m, destin A, chir sous la cl k . En possdant la cl k , l'attaquant C est toujours capable de dchire le message m[Blanchet 2008, p.4]. Maintenant, nous voyons aisment que la scurit du protocole n'est pas compltement la scurit des primitives cryptographiques sous-jacentes. D'une part, les protocoles cryptographiques doivent tre assurs qu'aucun comportement ne peut pas entraner de vulnrabilits. D'autre part, la vrication informelle sera facilement faire d'erreurs ds que le protocole devient compliqu[DeMillo 1982, p.2], par exemple : le protocole comprend de nombreux participants, le protocole a besoin de plusieurs interactions de communication11 , l'existence de l'attaquant et ses activits, etc. Ainsi, nous devons rsoudre le mme problme que la vrication des programmes critiques, la vrication des protocoles cryptographiques a besoin galement une mthode formelle.
Nous ne montrons par clairement comment le participant B peut obtenir la cl publique du participant A. En fait, les cls publiques sont distribues implicitement par une autorit de certication. 10 C'est celui qu'on appelle l'hypothse du chirement parfait [Cortier 2005, p.3] 11 Le nombre de messages requis forme le protocole
9
29
Un protocole est une convention dterminant les messages changs entre plusieurs participants. Un protocole cryptographique utilise des primitives cryptographiques (chirement, signature, ...) an de garantir que les donnes14 sont changes de faon sre15 , mme si le rseau lui-mme n'est pas sr. Il sut de remarquer que nous distinguons la couche logique des protocoles cryptographiques qui dtermine la suite des messages changs, et des primitives cryptographiques qui crent ces messages.
30
du texte clair partir de la chire se fait par un algorithme de dchirement Dk , prenant en entre la chire et la mme cl[ENS 2004, p.7]. Le chirement et le dchirement ont une rlation :
Dk (Ek (m)) = m
Remarquons aux primitives cryptographiques utilises par botnet Waledac, le chirement symtrique AES 128 garantit la condentialit des messages. Jusqu' prsent, le dcryptement 17 de AES avec la taille de cl de 128 bits est extrmement dicile18 . La cryptographie asymtrique 19 utilise une paire de cls. La cl publique e, est utilise pour le chirement : c = Ee (m). La cl prive d, est utilise pour le dchiffrement m = Dd (c). Le chirement est le dchirement ont donc une rlation :
Le dcryptement est l'opration qui consiste calculer le texte clair m partir du chir
Cette taille est susante pour protger des donnes dont le niveau de scurit est SECRET [NIST 2007, p.67] 19 Cryptographie cl publique 20 C'est--dire il est trs dicile de calculer la cl secrte partir des informations connues (cl publique, etc) en un temps raisonnable 21 En fait, la signature numrique est cre en signant sur la hachage du message[Krawczyk 1997]
31
kkk kkkk k k k k o k
Fig.
L'expditeur A genre une nouvelle cl de session kAB , elle cre un message qui se compose de l'identit de la destinataire B et la cl de session. Ce message est chir par la cl secrte kAS partage entre A et le serveur d'authentication S : {B, kAB }kAS . Puis, A envoie au serveur S la composition : A, {B, kAB }kAS . Le serveur S obtient la cl de session kAB et la destinataire B en dchirant le message {B, kAB }kAS . Ensuite, S envoie B le message chir par la cl secrte partage kBS : {A, kAB }kBS . B chire alors le message M sous la cl partage kAB , et l'envoie A. Message 1. A S : Message 2. S B : Message 3. B A :
Le protocole "Wide-Mouthed-Frog" utilise la cryptographie symtrique an de protger des informations changes sur les rseaux. Il n'exite que deux personnes A et S qui procdent la cl secrte kAS , grce la cryptographie symtrique, le contenu du message {B, kAB }kAS est donc protg contre les autres. La cl secrte kAS n'est partage que entre le serveur S et la destinataire B , le contenu du message {A, kAB }kBS ne peut tre dchir que par S et B . En utilisant ce protocole, les deux interlocuteurs sont convaincus que la cl de session kAB est change de faon scurise entre eux. Ils peuvent alors s'changent de faon scurise des messages en les chirant par cette cl.
4.3 Modles formels
Le modlisation d'un protocole n'est pas simplement une traduction symbolique de la spcication de cet protocole. En eet, considrons le protocole illustr dans la gure 4.1, sa spcication peut tre traduite en une reprsentation symbolique dcrite ci-dessous :
{m}k
32
La reprsentation 4.4 ne parle que d'un droulement normal du protocole, il est assez facile d'y s'apercevoir de quelques lacunes : il n'y a auccun existence d'attaquant : sa capacit, ses activits, etc. la reprsentation ne peut parler rien de proprit de scurit qu'elle assure (dans ce cas c'est le secret du message m). le comportement de chaque participant est ambigu : si le participant B ne reoit pas le premier message, est-ce qu'il envoie le deuxime message ?. La modlisation doit est donc capable de dcrire non seulement les activits du protocole mais encore l'environnement dans lequel ce protocole se droule. L'environnement du protocole est eectivement les activits des attaquants et leurs capacits. De plus, la modlisation doit fournir exactement et formellement des proprits de scurit que le protocole assure. De nombreux modles ddis la vrication des protocoles cryptographiques ont t dvelopps dans littrature, tels ques les systmes de contraintes[Millen 2001], les rgles de rcriture[Cervesato 1999], les clauses de Horn[Blanchet 2001], les strand spaces[Fabrega 1999] ou les algbres de processus[Abadi 2001, Schneider 1998]22 . Ces modles peuvent tre diviss en deux grandes familles : les modles de traces et les algbres de processus [Cortier 2005, p.11]. Les modles de traces reprsentent les protocoles et les attaquants par des rgles d'infrence. Les rgles dcrivent les transitions possibles entre traces. Les traces contiennent en gnral l'ensemble des messages circulants sur le rseau et ventuellement les tats locaux des participants ou des annotations dcrivant explicitement les transitions eectues[Cortier 2005, p.11]. Dans ces travaux, nous aborderons un modle de traces particulier : les clauses de Horn (cf. section 4.3.3). Les algbres de processus reprsentent le protocole par des processus. Cela correspond une modlisation plus proche de l'implmentation des protocoles : chaque participant est reprsent par un processus indpendant des processus reprsentant les autres rles[Cortier 2005, p.11]. En particulier, nous utiliserons un modle de l'algbre de processus : le spi calcul (cf. section 4.3.2). Dans ces travaux, nous nous concentrons plutt sur des mthodes d'algbre de processus parce qu'elles correspondent une modlisation plus proche de l'implmentation des protocoles. C'est--dire, il est assez facile de crer une reprsentation formelle partir d'une spcication informelle de protocole et d'implmenter un protocole si nous savons sa reprsentation formelle23 . Cependant, nous utiliserons aussi les modle de traces pace qu'ils permettent de reconstruire facilement des attaques.
33
rallles, c'est--dire composs de plusieurs processus qui s'excutent simultanment et s'changent des messages. L'algbre de processus (ou calcul de processus) est un formalisme mathmatique pour la description et l'tude des systme concurrents[Garavel 2003, p.1]. Le processus s'addresse aux comportements d'un systme. Nous pouvons imaginer qu'un systme est caractris (ou dni) par ses comportements dans les interactions avec des autres. Ainsi, le systme est quelque chose qui montre des comportements. Nous considrons ici des exemples : Excution d'un logiciel : quand un logiciel fonctionne, d'une part il communique toujours avec d'autres services du systme informatique. D'autre part, il est caratris par ses comportements (ex. pour un chier MP3, une application multimdia restitue ses sons, un diteur de chiers binaires ache ses octes). Activits d'une machine : un distributeur automatique de caf nous ore une tasse de caf si le montant d'argent que nous lui donnons est susant, sinon il attend et compte (avec chaque sou) jusqu' le montant d'argent est susant. Dans les cas ci-dessus, l'excution du logiciel et celui du distributeur de caf peuvent tre considres comme des processus. Chacune d'entre elles change son comportement au long de sa vie. Le comportement du systme se compose gnralement de : (1) un ensemble des actions que ce systme peut ectue, (2) un ordre avec lequel les actions sont ectues. Pour modliser un systme particulier, nous ne mettons que en valeur certains aspects de son comportement et les autres aspects sont laisss passer, c'est--dire on ne considre que une abstraction ou une idalisation d'un systme rel[Baeten 2009, p.1]. Par exemple, dans la spcication du protocole de communication scuris SSH[Ylonen 2006b], nous ngligons tous les dtails qui sont concerns la couche physique, tels que les signaux lectriques, ou sa modulation. Nous nous concentrons plutt sur les algorithmes de l'tabilissement de cls ou d'authentication[Ylonen 2006a]. L'abstraction d'un systme est cre par une ralisation des observations sur ce systme (en d'autres termes, sur des comportements du systme). Une activit24 est constate pour chaque observation ectue sur le systme. Ainsi, l'abstraction du systme se compose des plusieurs activits discrtes, le processus s'appelle aussi systme vnements discrets 25 [Baeten 2009, p.1]. Pour illustrer la modlisation par processus, nous dcrivons dans la gure 4.5 un exemple d'un distributeur automatique des boissons : l'opration du distributeur des boissons est modlise par un diagramme d'tats-transitions. L'tat start n'est que un tat-faux 26 , la machine commence en attendant des sous (tat 1) jusqu' l'utilisateur met deux sous (tat 2). A cet tat, si l'utilisateur appuye sur le button tea, la machine lui donne une tasse de th et elle change son tat 1. Si l'utilisateur continuer met deux sous, la machine change son tat 3. A l'tat 3, si l'utilistateur
Une activit est une priode de temps pendant lequel l'tat du systme ne change pas[Naoufel 2002] 25 Discrete Event System 26 pseudo-state
24
34
appue sur le button cof f e, la machine lui donne une tasse de caf et elle change son tat 1. start
, WVUT PQRS ONML HIJK
2p
il
tea
- _^]\ XYZ[
2p
- _^]\ XYZ[
cof f e
Fig.
Le process est illustr par le diagramme d'tats-transitions 4.5 qui se compose des tats et des transitions, l'tat 1 est la fois l'tat initial et l'tat nal27 . Une transition signie l'excution d'une activit, le processus comprend donc des activits : 2p, tea, cof f e. Le comportement est une suite des activits successives de l'tat initial l'tat nal, le processus se compose donc deux comportements : 2p . tea et 2p . 2p . cof f e. Le terme algbre signie une structure mathmatique qui se compose d'un ensemble des valeurs et des oprations sur les valeurs. Les oprations bncient des proprits algbriques, tels que commutavit, associativit, idempotence, distributivit[Wing 2002, p.3]. L'algbre de processus est donc un algbre qui se muni d'un ensemble des processus et les oprations sur les processus (ex. la composition parallle, l'addition). Nous donnons ici la dnition du groupe en mathmatiques pour illustrer clairement le terme algbre de processus :
Groupe. Un groupe est un ensemble G muni d'une opration interne (g, g ) g g vriant les proprits suivantes : il existe un lment e G tel que pour tout g G, e g = g e = g (existence d'un lmnt neutre ) pour tout g G, il existe g G tel que g g = g g = e (existence d'un inverse ) pour tous g, g , g G, on a g (g g ) = (g g ) g ) (associativit )
Le groupe28 est donc une structure mathmatique qui consiste en un ensemble des lmnts et une opration qui satisfait des axiomes du groupe. Il en va de mme pour l'algbre de processus : l'algbre consiste en un ensemble des processus et des oprations satisfaissant des axiomes prdnis. Les axiomes permettent de raliser des calculs sur les processus.
27 28
Dans ce cas, le diagramme tats-transitions est en fait un automate Un exemple simple d'un groupe est l'ensemble des rels non nuls avec la multiplication
35
Pi-calcul
Le calcul[Milner 1999] modlise un systme de communication en dnissant formellement ses processus. Le processus se caractrise par une liste des activits. Il peut envoyer ou recevoir des messages par ses canaux, de mme qu'il peut ectuer des actions internes. Le processus en calcul est donc reprsent par une formule des termes dnissant ses activits, ses messages changs et ses canaux. En fait, il existe de nombreuses versions de calcul. Ces versions se distinguent par ses propres dnitions des termes, qui reprsentent les structures des messages changs et dnissent des oprations internes. Nous dcrivons ici une version particulire dont les termes sont dnis par la grammaire :
. L, M, N = x, y, z, . . . a, b, c, k, s, . . . (M, N )
Les noms a, b, c, k, s reprsentent des donnes atomiques, alors que les variables x, y, z peuvent tre substitues par n'importe quel message. La paire (M, N ) reprsente une structure de message. En suite, les processus sont dnis par la grammaire :
Le processus M (x).P reoit un message sur le canal29 M , le stocke dans la variable x, puis execute P . Le processus M N .P envoie un message, qui est dni par le terme N sur le canal M , puis s'execute comme le processus P . Le processus 0 dni un cas spcial o il s'agit d'un processus qui ne fait rien. Le processus P |Q
29
36
se compose de deux processus concurrents P et Q. Le processus !P veut dire qu'il comprend des plusieurs processus P qui fonctionent simultanment. Le processus (new a)P cre un nouveau nom priv a, puis s'execute comme le processus P . Pour illustrer la modlisation de protocoles en calcul, nous dcrivons cidessous une modlisation de la premire tape d'un protocole trs rpandu sur l'Internet, le TCP[Postel 1981]. L'tablissement de la connexion du protocole TCP est ralis grce au mcanisme appel three way handshake :
{m}SY N
Ao
B
/
Fig.
L'tablissement d'une connexion TCP entre deux parties A (l'metteur) et B (le rcepteur) se droule comme le suivant : Etape 1 : l'metteur A initialise l'tablissement en transmettant un segment dont le drapeau SY N est activ (le bit SY N du segment est mise 1) au rcepteur B . Etape 2 : le rcepteur B reoit le segment initial provenant de l'metteur A, il rpond un accus de rception tant un segment dont le drapeau SY N et le drapeau ACK sont activs. Etape 3 : l'metteur A transmet au rcepteur B un accus de rception tant un segment donc le drapeau ACK est activ. A partir de cette spcication informelle, le calcul modlise formellement l'tablissement par un systme PT CP de deux processus indpendants PA et PB qui correspondent respectivement aux rles de A et B :
= PA |PB
Le processus PA modlise des activits de l'metteur A. Il se compose de quatre activits (processus) squentielles : c mSY N , c(xSY N _ACK ), c mACK et FA . La suite des activits signie que le processus PA doit fonctionner conformment l'ordre dni par la suite : il doit transmettre le segment SY N , reprsent par le nom mSY N avant il peut recevoir le segment SY N _ACK , reprsent par la variable xSY N _ACK . Le nom c reprsente un canal publique, qui signie l'environnement publique de l'Internet, tous les segments sont envoys sur un environnement publique. Le processus FA signie le fonctionnement de l'metteur A aprs l'tablissement
37
de la connexion. Le processus PB modlise des activits du rcepteur B , il se compose de quatre processus squentiels : c(xSY N ), c mSY N _ACK , c(xACK ) et QB . Le processus QB signie le fonctionnement du rcepteur B aprs l'tablissement de la connexion. Finalement, le protocole d'tablissement de la connexion TCP PT CP est aussi un processus qui se compose deux processus concurents PA et PB . Le calcul utilise des rgles propres pour modliser les interactions entre des processus, s'appellant rlations de raction : TAU : REACT : PAR : RES : STRUCT :
Les signications de ces rgles peuvent tre consultes dans [Milner 1999, p.34]. Nous ne utilisons que ici le rgle REACT pour modliser les interactions entre deux processus PA et PB . Il sut de remarquer que ces interactions sont des activits externes de PA et de PB . Ils sont cependant des activits internes du processus PT CP :
PT CP = PA |PB = c mSY N . c(xSY N _ACK ) . c mACK . FA | c(xSY N ) . c mSY N _ACK . c(xACK ) . QB c(xSY N _ACK ) . c mACK . FA | c mSY N _ACK . c(xACK ) . QB c mACK . FA | c(xACK ) . QB FA | QB
Il en rsulte que
REACT REACT REACT
PT CP FA | QB
L'quation ci-dessus signie que : aprs l'tape de l'tablissement ni avec succs30 , le protocole PT CP se transforme en l'intraction entre deux processus FA et
30 En fait, cette modlisation n'est pas tout fait complte, il faut ajouter chaque processus PA et PB des oprations ayant pour but de vrier des messages reu. Pour simplier les expressions formelles de A (PA ) et de B (PB ) nous ignorons ces oprations
38
QB qui reprsente l'change des donnes entre PA et PB lorsque la connexion TCP a t tablie.
Spi-calcul
Le spi calcul est une extension31 de pi calcul. Il est propos la premire fois par M. Arbadi et A. D. Gordon[Abadi 1998] ayant pour but de modliser et de vrier les protocoles cryptographiques. La version originale de calcul[Milner 1999] n'a pas d'oprations cryptographiques qui sont ncessaires pour la modlisation des protocoles cryptographiques. Les auteurs ont tendu donc calcul en y ajoutant des primitives cryptographiques : spi-calcul = pi-calcul + cryptographiques primitives Les oprations cryptographiques en spi calcul sont dnies par les paires (constructeur, destructeur)32 . En gnral, le constructeur reprsente le chirement et le destructeur reprsente le dchirement. Les primitives cryptographiques (cf. section 4.2.1) sont reprsentes comme les suivantes : Chirement symtrique Constructeur : chirement de x sous la cl y , sencrypt(x, y ) Destructeur : dchirement sdecrypt(sencrypt(x, y ), y ) y Chirement asymtrique Constructeur : chirement de x sous la cl y , pencrypt(x, y ) gnration de la cl publique partir de la cl secrte y , pk (y ) Destructeur : dchirement pdecrypt(pencrypt(x, y ), y ) y Signature numrique Constructeur : signature du x avec la cl secrte y , sign(x, y ) gnration de la cl publique partir de la cl secrte y , pk (y ) Destructeur : vrication de signature checksign(sign(x, y ), pk (y )) x
Fig.
Les constructeurs sont ajouts dans la grammaire des termes. Ils permettent doncs de construire de nouveaux termes.
. L, M, N = x, y, z, . . . a, b, c, k, s, . . . (M, N ) f (M1 , . . . , Mn )
31 32
Remarquons qu'il existe plusieurs versions dirents de calcul Dans ces travaux, nous utilisons les expressions proposes par B. Blanchet[Blanchet 2008, p.19]
39
Les destructeurs n'apparaissent pas dans les termes car ils manipulent plutt les termes dans les processus33 . La grammaire de processus en spi calcul sont tendue en ajoutant des oprations comme la suivante :
processus mission reception processus nul composition parallle rplication restriction application de destructeur dnition locale conditionnelle
Les destructeurs sont des fonctions partielles que les processus peuvent appliquer. Le processus let x = g (M1 , . . . , Mn ) in P esle Q essaie d'valuer g (M1 , . . . , Mn ) ; si cela russit, x est li au rsultat obtenu et P est excut ; sinon, Q est excut. La dnition locale let x = M in P est gale une substitution P {M/x} qui assigne le nom M la variable x du processus P . La condition if M = N then P then Q excute P si M et N se rduisent vers le mme terme, sinon elle excute Q[Blanchet 2008, p.19]. Pour illustrer la modlisation en spi calcul des protocoles cryptographiques, nous dcrivons ci-dessous la reprsentation formelle du protocole de distribution de cls de Denning-Sacco (cf. gure 4.1) :
PA = (new k ) (new skA ) let pkA = pk (skA ) in c pkA . c(pkB ) . c encrypt(sign(k, skA ), pkB ) . 0 PB = (new m) (new skB ) let pkB = pk (skB ) in c(pk ) . c pkB . c(mencrypt ) . let msign = pdecrypt(mencrypt , pkB ) in
let k = checksign(msign , pk ) in
Les processus PA , PB correspondent respectivement aux participants A et B . Le protocole est reprsent par le processus P qui se forme de deux processus PA et PB fonctionnant paralllement. Le processus PA gnre deux cls fraches : k de la
33
C'est--dire, les destructeurs sont utiliss pour modliser des activits de processus
40
cryptographique symtrique (elle sera la cl de session), skA de la cryptographique asymtrique. Puis, PA construit la cl publique pkA correspondant la cl secrte skA en utilisant le constructeur pkA = pk (skA ). Ensuite, la cl publique pkB est envoye sur le canal publique c : c pkA . Le processus PA reoit la cl publique de B sur le canal c : c(pkB ), il signe sa cl de session k avec sa cl secrte skA par le constructeur sign(k, skA ). La signature numrique est chire avec la cl publique de B en appliquant le constructeur encrypt(sign(k, skA ), pkB ), puis la signature chire est envoye sur le canal publique c : c encrypt(sign(k, skA ), pkB ) . Le processus PB gnr aussi une cl secrte de la cryptographique asymtrique skB . Il cre la cl publique correspondante en utilisant le constructeur pkB = pk (skB ). Il reoit une cl publique sur le canal publique c et la stocke dans le variable pk : c(pk ), puis il met sa cl publique sur ce canal : c pkB . Le processus PB reoit le message sur le canal publique c et le stocke dans la variable mencrypt , c'est une signature chire. Il utilise sa cl publique pour dchire ce message, le rsultat du dchirement est assign la variable msign . Le processus B vrie la donne msign en utilisant la cl publique reue pk , si la vrication est nie avec succs, il utilise la cl de session k tant reue par la vrication pour chire le message m : sencrypt(m, k ). Enn, il met le message chir sur le canal publique c : c sencrypt(m, k ) . Nous avons tudi la modlisation des protocoles en calcul (cf. gure 4.7) et des protocoles cryptographiques en spi calcul (cf. gure 4.10). Les modles formels sont crs naturellement partir des spcications informelles.
41
Les clauses de Horn sont des clauses logiques35 qui comportent au plus un atome positif. Les clauses de Horn donc s'crivent sous la forme :
(r1 r2 . . . rn ) h
ou
r1 r2 . . . rn h
Les clauses de Horn peuvent tre utilises pour modliser l'excution des protocoles cryptographiques et les vrier. L'ide d'utiliser les clauses de Horn a t propose la premire fois par Weidenbach[Weidenbach 1999]. Les clauses de Horn sont aussi le formalisme au cur du logiciel ProVerif, un outil de vrication automatique des protocoles cryptographiques, dvelopp par Blanchet B.[Blanchet 2001]. La modlisation d'un protocole en clauses de Horn est en fait celle des capacits de l'attaquant, qui se construisent par les oprations cryptographiques et par les caractres propres du protocole. Les capacits de l'attaquant se composent des capacits de dduction et des connaissances. Les oprations dans la gure 4.9 sont modlises sur les formes de clauses de Horns :
I (pair(x, y )) Forme la paire de deux messages I (pk (sk )) Cre une cl publique d'une cl secrte I (m) Dchire un message avec une cl secrte I (sencrypt(m, k )) Chire un message avec une cl partage I (m) Dchire un message avec une cl partage
La notion logique prdicat unaire36 I reprsente la connaissance de l'attaquant 37 . Les capacits initiales38 de l'attaquant se modlisent en considrant l'ensemble ni de clauses[Cortier 2009, p.35] :
CI0 = {I (t) | t I0 }
(4.1)
La clause I (m) I (pk ) I (pencrypt(m, pk )), reprsente une capacit de dduction de l'attaquant, signie que, si l'attaquant sait le message m et la cl publique pk , il peut raliser une chirement asymtrique pour crer le message chir
Une clause logique s'est forme d'une disjonction () des atomes logiques Un prdicat se rfre un proprit que le subjet possde, par exemple le prdicat attacker(m) veut dire : l'attaquant attacker connat le message m 37 Par exemple, le prdicat I (m) signie que l'attaquant sais m 38 Remarquons que l'capacit de l'attaque s'crire en un prdicat, l'capacit de dduction de l'attaquant s'crire en un clause de Horn
36 35
42
pencrypt(m, pk ). La clause I (sk ) I (pk (sk )) veut dire que, si l'attaquant sait la cl secrte sk , il peut crer la cl publique correspondante pk (sk ). La clause I (pencrypt(m, pk (sk ))) I (sk ) I (m) signie que, si l'attaquant sait le message chir (par le chirement asymtrique) et il sait aussi la cl secrte, il peut dchire le message pour savoir le texte claire. L'ide principale de la vrication des procotoles est de dcouvrir toutes les capacits de l'attaquant en utilisant un systme de dduction 39 . Un systme de dduction est un ensemble ni des rgles, chacun d'eux peut s'crire en un clause de Horn : u1 u2 . . . un u
tant donn un systme de dduction, le prdicat t est dductible en un pas partir d'un ensemble de prdicats S s'il existe u1 , . . . , un S et une rgle de dduction[Cortier 2009, p.21] :
u1 . . . un t
Le prdicat t est dductible partir de S s'il existe une suite nie t1 , . . . , tn tel que : ti+1 est dductible en un pas partir de S {t1 , . . . , ti } 0 i n 1 et t = tn . Le protocole comprend des rgles, chacun d'entre eux est reprsent de faon informel par un chang de message complexe entre des participants. Pour chaque protocole particulire, l'attaquant peut l'expoiter de faon propre. Dans le cas gnral, ses capacits tant obtenues par l'expoitation d'un protocole, sont modlises par des clauses de Horn sur la forme :
I (u) I (v )
En dbut de la modlisation, les capacits de l'attaquant se trouvent dans l'ensemble CI0 (cf. quation 4.1). L'ensemble de capacits s'est augment en ajoutant des nouveaux prdicats qui sont dductibles partir de CI0 en appliquant les rgles de dduction situs dans la modlisation de l'attaquant et dans la modlisation du protocole. Nous illustrons la modlisation des protocoles cryptographiques en donnant cidessous un exemple d'une version simplie du protocole de distribution de cls Denning-Sacco[Denning 1981] illustre dans le gure 4.1 :
43
Modliser les capacits tant obtenues par les oprations cryptographiques : le protocole Denning-Sacco utilise des primitives cryptographiques de la cryptographique asymtrique et de la cryptographique symtrique. Les capacits de l'attaquants sont modlises par les clauses :
attacker(m) attacker(pk ) attacker(sk ) attacker(pencrypt(m, pk (sk ))) attacker(sk ) attacker(m) attacker(sk ) attacker(sign(m, sk )) attacker(m) attacker(k ) attacker(sencrypt(m, k )) attacker(k ) attacker(pencrypt(m, pk )) attacker(pk (sk )) attacker(m) attacker(sign(m, sk )) attacker(m) attacker(sencrypt(m, k )) attacker(m)
L'attaquant sait les deux cls publiques de A et de B . Ainsi, ses connaissances initiales sont :
Modliser les capacits tant obtenues en exploitant le protocole propre : l'environnement des intractions entre A et B est publique, tout le monde peut couter, intercepter, changer les messages envoys par ces interlocuteurs. Dans le premier message : A B : {{k }skA }pkB , A met toujour le message {{k }skA }pkB s'il obtient la cl publique de B : pkB . Alors, un attaquant actif X peut trompe A en l'envoyant sa cl publique pk (skX ) et puis il va obtenir le message {{k }skA }pkX . Le premier message permet donc d'ajouter une clause :
attacker(pk (x)) attacker(pencrypt(sign(k, ska ), pk (x)))
De faon analogue pour le deuxime message B A : {m}k , B rpond toujours ce message s'il peut dchire le message prcdent et vrier le rsultat. Un attaquant actif peut trompe B en l'envoyant un message pencrypt(sign(k , ska ), pk (x)) qu'il a stock auparavant. Dans ce cas l, l'attaquant va obtenir le message {m}k . Le deuxime message permet donc d'ajouter une clause :
44
4.4
Nous avons tudi la modlisation formelle des protocoles cryptographiques par spi calcul et par les clauses de Horn. Cette section est consacr reprsenter les modles formels des attaques contre un protocole cryptographique. Revenons la section 4.1.3, un protocole de scurit vise assurer des proprits de scurit. L'attaque contre un protocole donc vise casser le proprit de scurit que le protocole assure. Dans ces travaux, nous n'aborderons que aux protocoles dont la proprit de scurit est le secret. Il existe deux notions de secret[Abadi 2000, p.14], chacune d'entre elles est signicative dans un modle formel. L'une se base sur l'quivalence40 entre des processus, cette notion est utilise dans les modles d'algbres de processus. L'autre se base sur les connaissances que l'attaquant peut dduire en utilisant un systme de dduction, il est bien entendu que cette notion est utilise dans les modles de traces.
P (M )|Q =c sencrypt(M, K ) |c(m) . let y = sdecrypt(m, K ) in c y c M P (N )|Q =c sencrypt(N, K ) |c(m) . let y = sdecrypt(m, K ) in c y c N
Alors, Q peut toujours distingue P (M ) de P (N ). L'attaquant contre un processus gnral P (x) est donc dni par un processus Q. Il va essayer de dtecter le changement de la variable x. Autrement dit, l'attaquant est un processus Q, tel que le processus P |Q met x sur un canal publique[Abadi 2005, p.11]41 .
L'quivalence observationnelle est trs importante dans la dmonstration formelle de la vrication des protocoles cryptographique[Cortier 2009, 65] 41 Il est bien entendu que si P |Q met x sur un canal publique, le changement de x sera dtect
40
45
Chapitre 5
47 48
49
50 51
5.1
Au chapitre prcdent, nous avons prsent des connaissances thoriques de la vrication automatique des protocoles cryptographiques. Ce chapitre est consacr proposer une solution la mthode gnrique d'attaque contre les botnets. Cette solution suivre le plan d'attaque propose dans la gure 3.8. Elle se base sur les travaux originaux de R. Milner[Milner 1999] en calcul, sur les travaux de M. Abadi et A. D. Gordon[Abadi 1998] en spi calcul et la dnition formelle d'attaque[Abadi 2000, Abadi 2005], et sur les travaux de B. Blanchet et X. Allamigeon[Blanchet 2005, Allamigeon 2005] en vrication des protocoles par les clauses de Horn et en reconstruction d'attaque.
Plan d'attaque
Nous avons vu dans la section 3.6.3, l'approche propose (cf. gure 3.8) pour l'attaque gnrique contre les botnets comprend trois tapes les plus importantes : 1. Modliser le protocole de communication du botnet. 2. Vrier le modle obtenu.
48
Le but de notre plan n'est rien d'autre qu'une solution rele, c'est--dire nous voulons crer un systme informatique qui permet d'attaquer automatiquement les botnets. Cependant, nous visons une attaque gnrale qui casse la scurit du protocole de communication. Cette attaque est considre comme une base sur laquelle les autres attaques peuvent se drouler1 .
Analyses
La premire tape peut tre ralise en utilisant une mthode d'algbre de processus (une rvision courte des travaux existants peut tre consulte dans l'annexe B) ou celle de clauses de Horn. D'une part, un algbre de processus, par exemple spi calcul, nous permet de construire naturellement un protocole de communication. D'autre part, les clauses de Horn ne modlise pas le protocole, ils construisent plutt l'ensemble de capacits d'attquant. La deuxime tape peut tre ralise aussi par l'algbre de processus ou les clauses de Horn. Cependant, la vrication des protocoles en utilisant les outils d'algbre de processus est assez complique2 . Il est dicile de raliser une telle vrication par un algorithme tant capable d'tre implment en un logiciel. D'autre part, la vrication par les clauses de Horn peut tre ralise en utilisant des algorithmes de rsolution sur les clauses3 . L'algbre de processus nous permet d'crire une attaque formelle sur la forme d'un processus. Cette forme nous permet d'implmenter facilement ce attaque dans un systme informatique. Cependant, la rconstruction d'une telle attaque en algbre de processus est dicile. En fait, il n'existe pas encore de mthodes permettant de reconstruire les attaques en modle de l'algbre de processus. En clauses de Horn, les deux auteurs B. Blanchet et X. Allamigeon ont propos une mthode de la reconstruction d'attaques. De plus, ils ont implment aussi un outil, appel ProVerif[Blanchet 2005], qui permet de reconstruire automatiquement les attaques.
49
4. Si le protocole est vulnrable, reconstruire l'attaque sous forme de spi calcul en utilisant ProVerif 5. Implmenter l'attaque (dans un systme informatique) protocole cryptographique modliser ce protocole en spi calcul
dcouvrir le protocole de communication du botnet reconstruire l'attaque sous forme de spi calcul en utilisant ProVerif
yes
Fig.
5.2
Dans cette section, nous appliquerons la mthode ci-dessus pour le cas du botnet Waledac en dcrivant les rprsentations en spi calcul du protocole de communication du botnet. En fait, le protocole est trs vulnrable et il est assez facile de dcouvir une attaque de l'homme milieu contre ce protocole. Il existe mme une autre attaque plus simplie grce la dcouverte de la cl K1 . De plus, nous pouvons aussi utiliser ProVerif pour le vrier et recontruire l'attaque contre lui. L'implmentation par le langage ddi4 de ProVerif peut tre consulte dans l'annexe A.
4
50
Spammeur o
messages
/ Serveur
Fig.
Sur le point de vue de scurit, l'tape le plus importante du protocole de communication entre un spammeur et le serveur de contrle est la distribution de la cl de session5 , parce que si nous connaissons la cl de session, nous pouvons dchirer tous les messages circulants.
pkspam
Spammeur o
o
Fig.
Serveur
/
Cette tape se compose des messages : Message 1. spammeur serveur : Message 2. serveur spammeur : Message 3. spammeur serveur :
5
51
Nous remarquons que la cl K1 a t dcouverte par rtro-ingnierie, alors le premire message peut tre simpli un message clair, comme le gure 5.3. Nous modlisons donc le protocole de distribution de cl de session en spi calcul :
(new ksession ) c(pkspam ) . c pencrypt(ksession , pkspam ) . c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) Spammer|Server
pkadv
/
adv
Spammeur o
o
Fig.
Adversaire o
/ o
{ksession }pk
Serveur
/
{message}ksession
Dans cette attaque, l'attaquant intercepte et change les messages circulant entre le spammeur et le serveur de contrle. Il intercepte la cl publique du spammeur et la change sa cl publique. Puis, il envoie sa cl publique au serveur de contrle. Le serveur utilise cette cl pour chire la cl de session, et envoie la cl de session chire spammeur. L'attaquant intercepte ce message encore une fois, dchire ce message en utilisant sa cl publique. L'attaquant rechire le message avec la cl publique du spammeur, et envoie le message rechir spammeur. Avec cette attaque, le spammer et le serveur de contrle ne peuvent pas reconnatre l'existence de l'attaquant. La modlisation de l'attaque en spi calcul :
Attacker
(new skatt ) c(pkspam ) . c pk (skatt ) . c(mserver ) . let ksession = pdecrypt(mserver , skatt ) in c pencrypt(ksession , pkspam ) . c(Mencrypted ) .
let M = sdecrypt(Mencrypted , ksession ) in Q(M )
Attack
Attacker|Pdistribution
52
Attack
Attacker|Pdistribution (new skatt ) c(pkspam ) . c pk (skatt ) . c(mserver ) . let ksession = pdecrypt(mserver , skatt ) in c pencrypt(ksession , pkspam ) . c(Mencrypted ) .
let M = sdecrypt(Mencrypted , ksession ) in Q(M )
| (new ksession ) c(pkspam ) . c pencrypt(ksession , pkspam ) . c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) c(mserver ) . let ksession = pdecrypt(mserver , skatt ) in c pencrypt(ksession , pkspam ) . c(Mencrypted ) .
let M = sdecrypt(Mencrypted , ksession ) in Q(M )
REACT
| c(m) . let k = pdecrypt(m, skspam ) in c sencrypt(M, k ) | c pencrypt(ksession , pkatt ) . c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) c(mserver ) . let ksession = pdecrypt(mserver , skatt ) in c pencrypt(ksession , pkspam ) . c(Mencrypted ) .
let M = sdecrypt(Mencrypted , ksession ) in Q(M )
REACT
| c(m) . let k = pdecrypt(m, skspam ) in c sencrypt(M, k ) | c pencrypt(ksession , pkatt ) . c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) c pencrypt(ksession , pkspam ) . c(Mencrypted ) .
let M = sdecrypt(Mencrypted , ksession ) in Q(M )
REACT
| c(m) . let k = pdecrypt(m, skspam ) in c sencrypt(M, k ) | c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) c(Mencrypted ) .
let M = sdecrypt(Mencrypted , ksession ) in Q(M )
REACT
| c sencrypt(M, ksession ) | c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) Q(M ) | c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M )
Il est en rsulte que
REACT
53
Attack Q(M ) | c(Ms ) . let M = sdecrypt(Ms , ksession ) in F (M ) Q(M ) est un processus quelconque de l'attaquant, le processus Attacker peut donc toujours distingue P (M ) et P (N ) (ex. Q(M ) c M ). De plus, le protocole vise protger le message M (ou N ). C'est--dire, l'attaquant peut casser le secret du protocole.
Conclusion et perspective
Sommaire
6.1 6.2 6.3 6.4 Contribution Limite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 56 57 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perspective Conclusion
Chapitre 6
6.1
Contribution
Les contributions du stage sont rappeles : les travaux raliss pendant la priode de stage se concentrent sur l'attaque contre des protocoles cryptographiques utiliss par des botnets. Dans la section 3.6.3, nous proposons un nouveau "framework" servant construire une attaque gnrique contre les botnets. Une telle attaque casse la scurit des protocoles de communication des botnet, donc peut tre utilise comme une base sur laquelle les attaques successives peuvent se droulent. Dans la section 4.4.1, nous proposons une nouvelle ide de la modlisation de l'attaque en spicalcul. L'attaque est reprsente comme un processus qui se fonctionne paralllement au protocole, et essaie rvler des informations que le protocole protge. Cette modlisation nous permet de mettre en application une attaque formelle car la reprsentation en spi calcul d'un processus est proche de sa reprsentation en un langage de programmation. Dans le chapitre 5, nous donnons des analyses dtaills pour la mise en place du framework. D'une part, nous expliquons la ncessit d'utilisation des mthodes formelles permettant de vrier automatiquement les protocoles cryptographiques. Nous transformons donc un problme rel des botnets en un problme assez formel pour proter les mthodes thoriques existantes. D'autre part, nous dcrivons clairement quelle mthode approprie utiliser dans chaque tape du framework et proposons une solution ralisable du framework en se basant sur un outil de vrication automatique, ProVerif. Nous appliquons ces mthodes dans un cas particulier du botnet Waledac. Dans la section 5.2, nous prsentons une reprsentation du protocole de communication utilis par le botnet en spi calcul. Puis, nous utilison ProVerif pour vrier cette reprsentation1 . L'attaque contre Waledac est modlise par un processus en spi
1
56
calcul, et nous dcrivons une dmonstration formelle qu'elle casse la condentialit du protocole. Notre framework ne se limite pas aux tels protocoles errons comme ceux de Waledac. Il est capable de dtecter des vulnrabilits (de protocole cryptographique) de n'importe quel botnet. Finalement, nous implementons un simulateur2 de Waledac en C++. Ce simulateur nous permet de visualiser le fonctionnement du botnet.
6.2 Limite
La premire limite, il est bien entendu que notre framework n'est pas encore implmnt comme un systme informatique. Ainsi nous ne pouvons que prvoir qu'il est feasible. Nous ne pouvons pas parler des dicults reles de la ralisation du framework. Notre approche rencontre aussi des limit thorique. La premire limite concerne la version de calcul (ou spi calcul) utilise : c'est une version monoadic dans laquelle nous ignorons la structure de tous les messages. En fait, cette simplication peut entraner des erreurs. Pour illustrer cette situation, nous dcrivons ici un exemple assez thorique3 :
6 mmmm S m m mmm mmm mmmmmmmm m m m m{ m A,B,I m A ,{IB }kSB }kSA vmm
A,B mmmm {IB }kSB
/B
Fig.
Le variant du protocole d'authentication de NeedhamSchroeder[Needham 1978] illustr ci-dessus est prsent dans [Abadi 1999, p.5], nous ne faisons attention que aux trois premires messages : Message 1. A S : Message 2. S A : Message 3. A B :
A envoie son identit et l'identit de l'interlocuteur B au serveur S . Puis, le serveur renvoie A des informations condentielles IA et IB qui sont chires avec les cls partages kSB et kSA . A reoit le message {A, B, IA , {IB }kSB }kSA , il le dchire en utilisant la cl kSA et fait suivre le donne {IB }kSB B . Dans le cas spcial : A et B sont une mme personne, s'appelle X : lorsque X reoit le message {IX }kSX mais X ignore la structure du message, il croit que le message reu
Ce simulateur peut tre consulte dans l'annexe D Ce n'est pas tout fait un exemple qui concerne directement l'attaque, cependant il est un avertissement de mauvais utilisation si la structure de message est ignore
3 2
6.3. Perspective
57
est {X, X, IX , {IX }kSX }kSX et alors il le dchire en utilisant la cl kSX , puis fait suivre une partie du message dchir. Dans ce cas l, X a rvl une information condentielle. Une autre limite thorique rside l'algorithme de rsolution de ProVerif : dans le cas gnral, cet algorithme ne s'arrte pas[Blanchet 2001, p.9]. Nous remarquons que la vrication du protocole, dans le cas gnral, est aussi un problme NPcomplet[Rusinowitch 2001]. Nous ne pouvons pas encore rsoudre compltement le problme de la reconstruction d'attaque en spi calul. En thorique, cette reconstruction peut tre obtenue par la trace de l'alogrithme de rsolution en clauses de Horn. Cependant, l'outil utilis, ProVerif, ne peut pas donner une reprsentation de l'attaque en spi calul.
6.3 Perspective
Une solution plus complte peut tre obtenue en utilisant la version polyadic du pi calcul[Milner 1991]. L'extension cryptographique de pi calcul polyadic a t propose par M. Abadi et B. Blanchet[Abadi 1999, Abadi 2005]. Dans notre approche, la reconstruction d'attaque se base sur une transformation de spi calcul aux clauses de Horn. Nous souhaitons donc avoir une methode qui permet de reconstruire directement l'attaque en spi calcul. Le bi-graph est une nouvelle mthode cre par R. Milner[Milner 2001]. Il permet aussi de modliser les processus concurents de faon plus forte que pi calcul, sa extension cryptographique donc est une approche potentielle pour l'analyse automatique des protocoles cryptographiques.
6.4 Conclusion
De nos jours, les botnets deviennent de plus en plus compliqus. Pour les liminer, il est ncessaire de coordonner plusieurs mthodes. Il existe des mthodes qui sont considres comme "thoriques". Cependant, ces mthodes nous permettent de rsoudre le problme de faon plus radicale. Dans ce stage, nous avons prouv que il est possible d'appliquer les mthodes thoriques pour proposer un framework gnrique d'attaque des botnets. Notre approche vise exploiter des vulnrabilts des protocoles de communication des botnet, particulirement les protocoles cryptographiques.
ProVerif
Sommaire
A.1 A.2 ProVerif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modlisation du protocole de Waledac . . . . . . . . . . . . . 59 59
Annexe A
A.1
ProVerif
ProVerif[Blanchet 2005] est un vricateur automatique de protocoles dvelopp par B. Blanchet et X. Allamigeon. ProVerif permet de vrier un protocole qui s'crit en spi calcul ou en clauses de Horn. Dans le cas gnral, le vricateur est proximatif[Blanchet 2001, p.2], c'est--dire s'il dit qu'il existe de vulnrabilit, c'est peut-tre une alerte fausse. Cependant, s'il dit qu'il n'existe pas de vulnrabilit, le protocole est scuris.
A.2 Modlisation du protocole de Waledac
Nous implmentons ici le protocole de communication du botnet Waledac en utilisant langage ddi de ProVerif.
(* TA Thanh Dinh (Ralis au LHS - LORIA - Nancy) Protocole du botnet Waledac Spammeur -> Serveur : pkSpam Serveur -> Spammeur : {sskServer}pkSpam *) (* Paramtres *) param attacker = active. param reconstructTrace = true. param traceDisplay = short. (* Chiffrement asymtrique *) fun pencrypt/2. fun pk/1.
60
reduc pdecrypt(pencrypt(m,k), pk(k)) = k. (* Chiffrement symtrique *) fun sencrypt/2. reduc sdecrypt(sencrypt(x,y),y) = x. (* Environnement *) free c. (* Cl de session *) private free s. (* Attaquant *) query attacker:s. (* Processus *) let spam = new skSpam; let pkSpam = pk(skSpam) in out(c, pkSpam). let server = in(c, x); let npk = x in out(c, sencrypt(s, npk)). process spam | server
Annexe A. ProVerif
Le protocole est modlis par spi calcul. Nous dnissons tout d'abord des primitives cryptographiques :
(* Chiffrement asymtrique *) fun pencrypt/2. fun pk/1. reduc pdecrypt(pencrypt(m,k), pk(k)) = k. (* Chiffrement symtrique *) fun sencrypt/2. reduc sdecrypt(sencrypt(x,y),y) = x.
Le canal publique sur lequel les messages sont changs est modlis par une variable :
(* Environnement *) free c.
La cl de session gnere par le serveur est modlise par une variable prive :
61
Process: ( new skSpam_10; {4}let pkSpam_11 = pk(skSpam_10) in {5}out(c, pkSpam_11); 0 ) | ( {1}in(c, x_8); {2}let npk_9 = x_8 in {3}out(c, sencrypt(s,npk_9)); 0 ) -- Query not attacker:s[] Completing... Starting query not attacker:s[] goal reachable: attacker:s[] 1. The attacker has some term y_40. attacker:y_40. 2. The message y_40 that the attacker may have by 1 may be received at input {1}. So the message sencrypt(s[],y_40) may be sent to the attacker at output {3}. attacker:sencrypt(s[],y_40). 3. By 2, the attacker may know sencrypt(s[],y_40). By 1, the attacker may know y_40. Using the function sdecrypt the attacker may obtain s[]. attacker:s[]. A more detailed output of the traces is available with param traceDisplay = long.
62
out(c, pk(skSpam_10_2)) at {5} in(c, a_1) at {1} out(c, sencrypt(s,a_1)) at {3} The attacker has the message s. A trace has been found. RESULT not attacker:s[] is false.
Annexe A. ProVerif
The attacker has the message s. A trace has been found. RESULT not attacker:s[] is false.
Le prdicat attacker(s) est f alse, c'est--dire, l'attaquant est capable de savoir la cl de session s. De plus, ProVerif trouve un attaque, il nous dit A trace has been found. Nous remarquons que si l'attaquant est passive, c'est--dire s'il ne peut que lire des messages circulant, le protocole est scuris. En eet, nous changons le paramtre :
Process: ( new skSpam_10; {4}let pkSpam_11 = pk(skSpam_10) in {5}out(c, pkSpam_11); 0 ) | ( {1}in(c, x_8); {2}let npk_9 = x_8 in {3}out(c, sencrypt(s,npk_9)); 0 ) -- Query not attacker:s[] nounif mess:c[],x_27/-5000 Completing... Starting query not attacker:s[] goal reachable: mess:c[],y_36 & attacker:y_36 -> attacker:s[]
63
4. The message y_41 that may be sent on channel c[] by 3 may be received at input {1}. So the message sencrypt(s[],y_41) may be sent on channel c[] at output {3}. mess:c[],sencrypt(s[],y_41).
5. By 2, the attacker may have the channel c[]. By 4, the message sencrypt(s[],y_41) may be sent on this channel. So the attacker may obtain the message sencrypt(s[],y_41) by listening on this channel. attacker:sencrypt(s[],y_41). 6. By 5, the attacker may know sencrypt(s[],y_41). By 1, the attacker may know y_41. Using the function sdecrypt the attacker may obtain s[]. attacker:s[]. Could not find a trace corresponding to this derivation. RESULT not attacker:s[] cannot be proved.
Il nous dit qu'il n'est pas possible de dterminer si l'attaquant peut obtenir la cl de session :
Annexe B
Algbre de processus
Sommaire
B.1 B.2 B.3 Processus Squentiels Communicants LOTOS . . . . . . . . . . . . . 65 65 66 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pi-calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Se situant dans le monde des algbres de processus, il existe de nombreuses approches ayant pour but de modliser et de vrier des protocoles cryptographiques. Nous considerons dans cette annexe quelques mthodes existantes.
B.1
Le processus squentiels communicants CSP1 est un algbre de processus, propos la premire fois par C. A. R Hoare[Hoare 1978]. En CSP, le processus est caractris par une trace (une suite d'activits)[Hoare 1985, p.19]2 . Cette trace est une abstraction mathmatique des interactions entre ce processus et l'environement dans lequel il se fonctionne. Le CSP permet aussi de modliser des interactions entre des processus en utilisant l'change de messages sur des canaux[Hoare 1985, p.113]. Le CSP est utilis pour modliser et vrier des protocoles cryptographiques par de nombreux chercheurs, ex[Schneider 1998]. Une explanation plus complte de la modlisation et d la vrication des protocoles cryptographiques peut tre consulte dans[Ryan 2001].
B.2
LOTOS
Le LOTOS [Bolognesi 1987]3 est un langage d'algbre des processus. Il permet de spcier l'architecture et le fonctionnement de systmes distribus[Fraikin 2001, p.1]. Le langage LOTOS peut tre utilis pour modliser les protocoles de scurit et les oprations cryptographiques[Germeau 1997].
Communicating Sequential Processes Pour le cas gnral, le processus n'est pas tout fait une suite d'activits dterministes, le CSP permet de modliser un processus par une notion indterministe de trace[Hoare 1985, p.81] 3 Language of Temporal Ordering Specication
2 1
66
B.3 Pi-calcul
L'algbre de processus calcul est propos la premire fois en 1993 par Robin Milner[Milner 1999], est un langage de programation simple mais trs exible. Le -calcul spcie le comportement de processus concurrents, et il joue le rle de la fondation de la programmation concurente au mme titre que le -calcul en programmation squentielle. Un programme en calcul est un systme dont les processus se fonctionnent paralllement en changeant entre eux des messages via des canaux, un processus possde d'ensemble propre des canaux sur lesquels il peut envoyer ou recevoir des messages[Abadi 1998]. La version originale du calcul ne possde pas des oprations cryptographiques. Cependant, le calcul est trs exible et il permet donc toujours d'y ajouter des notations modlisant les protocoles cryptographiques. En 1998, M. Abadi et C. Fournet ont tendu la premire fois le calcul en proposant le spi-calcul [Abadi 1998]. En 2001, ils ont gnralis le spi calcul en dnissant le calcul appliqu [Abadi 2001], leur nouveau modle permet de reprsenter les proprits des primitives cryptographiques (cf. 4.2.1) par des thories quationnelles[Baeten 2009, p.11].
Annexe C
Sommaire
C.1 C.2 Modle symbolique Modle calculatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 68
Jusqu' maintenant, les mthodes formelles de l'analyse des protocoles cryptographiques peuvent tre classies en deux approches. La premire approche repose sur une modlisation symbolique (ou modle de Dolev-Yao) des excution du protocole, les primitives cryptographiques dans cette modlisation sont considres comme des boites noires. La deuxime approche repose sur un modle calculatoire qui prend en considration les probabilites et la complexit algorithmique. Le modle symbolique prsente l'avantage de permettre des preuves de scurit beaucoup plus simples que dans le modle calculatoire et souvent automatique. Cependant le modle calculatoire permet de dnir une notion trs forte de scurit, garantissant n'importe quelles attaques probabilistics et polynomiales[Cortier 2009, p.9].
C.1
Modle symbolique
Le modle symbolique1 a t propos la premire fois par D. Dolev et A. Yao[Dolev 1983]. Ce modle traite les primitives cryptographiques comme des boites noires, les messages sont des termes sur les fonctions cryptographiques et l'attaquant est restreint calculer l'aide de ces fonctions. Le modle symbolique propose donc la cryptographique parfaite dans laquelle l'adversaire sais la texte clair dans le message chir si et seulement s'il possde la cl[Blanchet 2008, p.6]. Pour illustrer l'approche symbolique, on montre un exemple simple d'un protocole cryptographique donn dans [Blanchet 2008, p.3]. Le protocole est un variant simple du protocole de distribution de cls de Denning-Sacco cl publique[Denning 1981]. Dans ce protocole, les fonctions cryptographiques asym1
68
pencrypt(plain, pkey ) : plain pkey cipher pdecrypt(cipher, skey ) : cipher skey plain sign(plain, skey ) : plain skey signature sencrypt(plain, key ) : plain key cipher
Le protocole se compose de deux participants A et B . Le participant A choisit une cl frache (cl de session) k chaque excution du protocole. Il signe cette cl avec sa cl secrte skA , et chire le message obtenu avec la cl publique de don interlocuteur B , et lui envoie le message. Quand il le reoit, B le dchire en utilisant sa cl secrte skB , vrie la signature de A et obtient la cl k .
{{k}skA }pkB
A
o
Fig.
sk
En utilisant les fonctions cryptographiques dnies ci-dessus, on peut reprsenter le protocole par les quations suivantes :
Le modle calculatoire est dvlopp au dbut des annes 1980 par Goldwasser, Micali[Goldwasser 1984]. Il permet de raisonner sur des questions de complexit et de probabilit, car les primitives cryptographiques sont considres comme des vrais algorithmes et l'intrus y est modlis comme un algorithme qui peut s'excute ecacement[Hrdegen 2007, p.10].
Annexe D
TM Linux
An de visualiser des activits du botnet Waledac, nous avons dvelopp sur deux version du simulateur en C++. L'une utilise un thread pour chaque bot du botnet et l'autre sans. Dans le premier cas cela permet le calcul en parallle, rendant la simulation plus proche de la ralit, chaque bot fonctionnant de manire indpendante, dans le deuxime cas, les actions des bots sont eectues squentiellement, le ou les actions du bot numerot 2 sont eectues aprs le ou les actions du bot 2, ce qui est moins raliste. Cette deuxime version est utile cependant lorque nous souhaitons lancer la simulation sur un seul processeurs, puisqu'elle ncessite moins de ressources1 . Le simulateur est implmnt de faon orient objet. Il se compose de classes dcrits ci-dessous Classe Bot : Tout les bots de Waledac (spammers, repeaters, attackers, protecters, server) drivent de cette classe. Classe Spammer : Cette classe implmente les fonctionnalites d'un bot de type spammeur. Classe Repeater : Cette classe implmente les fonctionnalites d'un bot de type repeateur. Classe Attacker : Cette classe implmnte les fonctionnalites d'un bot de type attaquant. Elle drive de la classe Repeater (la plupart des attaques sur Waledac se font en introduisant des rpteurs). Classe Protecter Cette classe implmente les fonctionnalites d'un bot de type protecteur. ServerCC : Cette classe implmente les fonctionnalites d'un bot de type serveur de contrle. Nous utilisons galement des bibliothques Boost[Boost 2010], Qt[Nokia 2010] et VTK[VTK 2010] (avec support Qt). La communication simple entre des bots est implmente par un routage de messages dcrit par le gure D.1. Les bots utilisant la mthode send_message() pour envoyer un type particulire de message. Les rpteurs et les protecteurs ne retransmettent que des messages en utilisant aussi la mthode send_message(). Le serveur manipule ces messages par la mthode process_message().
1 nous conomisons le changement de contexte eectu par le systme d'exploitation lorqu'il bascule d'un thread l'autre
70
Fig.
D.2
Exprimentation
Le programme a des paramtres entrs. Par dfaut, le simulateur du botnet se compose de 20 rpeateurs, 15 protecteurs, 100 spammeurs, et 5 attackers (cf. D.2).
Fig.
L'architecture hirarchique de Waledac est visualise dans la gure D.3. La couche plus haute se compose d'un seul serveur de contrle. La couche plus base se compose de plusieurs spammeurs. Les activits de Waledac sont simules par le programme. Le simulateur commence avec plusieurs spammeurs : ces spammeurs sont reprsents par les noeuds rouges, les connections entre les spammeurs sont reprsentes aussi par les lignes rouges, gure D.4. Nous simulons l'attaque Sybil en ajoutant des faux-rpteurs. Lorque la liste de rpteurs d'un spammeur est remplie par les identits de faux-rpteurs, nous disons que ce rpteur est compromis, et nous le mettons en vert, gure D.5.
D.2. Exprimentation
71
Fig.
Fig.
Fig.
Bibliographie
[Abadi 1998] M. Abadi et A.D. Gordon. A calculus for cryptographic protocols : The spi calculus. Rapport technique SRC-149, Digital Equipment Corporation, System Research Center, Janvier 1998. http://www.hpl.hp.com/ techreports/Compaq-DEC/SRC-RR-149.pdf. 38, 47, 48, 66 [Abadi 1999] M. Abadi. Secrecy by typing in security protocols. Journal of the ACM (JACM), vol. 46, no. 5, pages 749786, 1999. 56, 57 [Abadi 2000] M. Abadi. Security protocols and their properties. NATO ASI SERIES F COMPUTER AND SYSTEMS SCIENCES, vol. 175, pages 3960, 2000. 44, 47 [Abadi 2001] M. Abadi et C. Fournet. Mobile values, new names, and secure communication. ACM SIGPLAN Notices, vol. 36, no. 3, page 115, 2001. 32, 66 [Abadi 2005] M. Abadi et B. Blanchet. Analyzing security protocols with secrecy types and logic programs. Journal of the ACM (JACM), vol. 52, no. 1, page 146, 2005. 44, 47, 57 [Allamigeon 2005] X. Allamigeon et B. Blanchet. Reconstruction of attacks against cryptographic protocols. In 18th IEEE Workshop Computer Security Foundations, 2005. CSFW-18 2005, pages 140154, 2005. 40, 47 [atrocity 2010] atrocity. Les botnets - Comment s'en protger ?, Mercredi 2010. http://atrocity.kazeo.com/Tutoriels-DDoS/ Les-botnets-Comment-s-en-proteger,a1883506.html. ix, 5 [Bacher 2005] P. Bacher, T. Holz, M. Kotter et G. Wicherski. Know your enemy : Tracking botnets. The Honeynet Project, 2005. http://www.honeynet.org/ papers/bots/. 19 [Baeten 2009] JCM Baeten, T. Basten et MA Reniers. Process algebra : Equational theories of communicating processes. Cambridge University Press New York, NY, USA, 2009. 33, 66 [Barthlemy 2005] P. Barthlemy, R. Rolland et P. Vron. Cryptographie : Principes et mises en oeuvre. Hermes Science Publications, 2005. 16 [Blanchet 2001] B. Blanchet et I. Rocquencourt. An ecient cryptographic protocol verier based on Prolog rules. In 14th IEEE Computer Security Foundations Workshop, 2001. Proceedings, pages 8296, 2001. 32, 40, 41, 42, 57, 59 [Blanchet 2005] B. Blanchet. ProVerif automatic cryptographic protocol verier user manual. CNRS, Dpartement dInformatique, Ecole Normale Suprieure, Paris, 2005. 40, 47, 48, 59 [Blanchet 2008] B. Blanchet. Vrication automatique de protocoles cryptographiques : modle formel et modle calculatoire. Habilitation Diriger des
74
Bibliographie
Recherches. PhD thesis, Ecole Normale Suprieure, Novembre 2008. 27, 28, 38, 39, 48, 67
[Bolognesi 1987] T. Bolognesi et E. Brinksma. Introduction to the ISO specication language LOTOS. Computer Networks and ISDN systems, vol. 14, no. 1, pages 2559, 1987. 65 [Boneh 1999] D. Boneh. Twenty years of attacks on the RSA cryptosystem. NoticesAmerican Mathematical Society, vol. 46, pages 203213, 1999. 30 [Boost 2010] Boost. Boost C++ Libraries, 2010. http://www.boost.org/. 69 [Botezatu 2008] B. Botezatu. Anatomy of a Botnet, 2008. http://www. malwarecity.com/blog/anatomy-of-a-botnet-196.html. ix, 4, 5 [Burrows 1990] M. Burrows, M. Abadi et R. Needham. A Logic of authentication. Rapport technique, Digital Systems Research Center, Fvrier 1990. http: //www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-39.pdf. 30 [Calvet 2009a] J. Calvet et P. M. Bureau. Analyse en profondeur de Waledac et de son rseau. MISC, vol. 45, Septembre 2009. 9, 12, 14, 18, 23 [Calvet 2009b] J. Calvet et P. M. Bureau. Malware Authors Don't Learn, and That's Good ! Proceedings of the 4th International Conference on Malicious and Unwanted Software, Octobre 2009. 9 [Cervesato 1999] I. Cervesato, N.A. Durgin, P.D. Lincoln, J.C. Mitchell et A. Scedrov. A meta-notation for protocol analysis. In Proceedings of the 12th IEEE Computer Security Foundations WorkshopCSFW, volume 99, pages 5569, 1999. 32 [CGI 2002] CGI. tude technique. Cryptographie cl publique et signature numrique. Principes de fonctionnement, 2002. www.cgi.com/cgi/pdf/cgi_ whpr_35_pki_f.pdf. 30 [Chiang 2007] K. Chiang et L. Lloyd. A case study of the Rustock rootkit and spam bot. In The First Workshop in Understanding Botnets, 2007. 20 [Comon 2002] H. Comon et V. Shmatikov. Is it possible to decide whether a cryptographic protocol is secure or not. Journal of Telecommunications and Information Technology, vol. 4, no. 2002, pages 515, 2002. 21 [Cortier 2003] V. Cortier. Vrication automatique des protocoles cryptographiques. PhD thesis, Ecole Normale Suprieure de Cachan, Mars 2003. 32 [Cortier 2005] V. Cortier. Vrier les protocoles cryptographiques. Technique et Science Informatique, vol. 24, pages 115140, 2005. 28, 29, 32 [Cortier 2009] V. Cortier. Analyse des protocoles cryptographiques : des modles symboliques aux modles calculatoire. Habilitation Diriger des Recherches, Novembre 2009. 27, 40, 41, 42, 44, 67 [Daemen 1999] J. Daemen et V. Rijmen. AES proposal : Rijndael. 1999. 15 [DeMillo 1982] R.A. DeMillo, N.A. Lynch et M.J. Merritt. Cryptographic protocols. In Proceedings of the fourteenth annual ACM symposium on Theory of computing, pages 383400. ACM, 1982. 28
Bibliographie
75
[Denning 1981] D.E. Denning et G.M. Sacco. Timestamps in key distribution protocols. Communications of the ACM, vol. 24, no. 8, pages 533536, 1981. 21, 27, 42, 67 [Desnos 2009] A. Desnos. vol. 46, 2009. 20
[Dolev 1983] D. Dolev et A. Yao. On the security of public key protocols. IEEE Transactions on information theory, vol. 29, no. 2, pages 198208, 1983. 40, 42, 67 [Douceur 2002] J. Douceur. The Sybil attack. Peer-to-Peer Systems, pages 251260, 2002. 18 [Ducrot 2007] F. Ducrot, M. Danho et X. Marronnier. Les botnets. Scurit Informatique, vol. 61, Octobre 2007. 3 [EFnet 2010] EFnet. Eris Free Network, Octobre 2010. http://www.efnet.org/. 3 [Eggdrop 2008] Eggdrop. Eggdrop, Avril 2008. http://www.eggdrop.fr. 3 [EggHeads 2008] EggHeads. A quoi sert un robot IRC, Avril 2008. http://www. eggdrop.fr/Introduction_aux_eggdrops. 3 [ENS 2004] ENS. Conception et preuves d'algorithmes cryptographiques, 2004. http://www.di.ens.fr/~wwwgrecc/Enseignement/CoursCryptoMMFAI. pdf. 30 [Fabrega 1999] F.J.T. Fabrega, J.C. Herzog et J.D. Guttman. Strand spaces : Proving security protocols correct. Journal of computer security, vol. 7, no. 2, pages 191230, 1999. 32 [Fielding 1999] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach et T. Berners-Lee. Hypertext Transfer Protocol HTTP/1.1. RFC 2616 (Draft Standard), Juin 1999. Updated by RFCs 2817, 5785. 11 [Filiol 2004] E. Filiol. Strong Cryptography Armoured Computer Viruses Forbidding Code Analysis : the Bradley virus. Rapport technique RR-5250, INRIA, 2004. 20 [Fortier 2005] H. Fortier. La scurit par l'obsecurit : un concept dangereux, Septembre 2005. 22 [Fraikin 2001] B. Fraikin et Tchoumtchoua J. Prsentation de la bote outils CADP : Application au protocole POTS, 2001. ftp://ftp.inrialpes.fr/ pub/vasy/publications/others/Fraikin-Tchoumtchoua-01.pdf. 65 [Garavel 2003] H. Garavel. Dfense et illustration des algebres de processus. Actes de l'Ecole d't Temps Rel, vol. 2003, 2003. 33 [Garey 1979] M.R. Garey et D.S. Johnson. Computers and intractability. a guide to the theory of np-completeness. a series of books in the mathematical sciences. W. H. Freeman and Company, San Francisco, Calif, 1979. 20 [Germeau 1997] F. Germeau et G. Leduc. Model-based design and verication of security protocols using LOTOS. Rutgers University, 1997. 65
76
Bibliographie
[Goldwasser 1984] S. Goldwasser et S. Micali. Probabilistic encryption. Journal of computer and system sciences, vol. 28, no. 2, pages 270299, 1984. 68 [Hoare 1978] C.A.R. Hoare. Communicating sequential processes. Communications of the ACM, vol. 21, no. 8, page 677, 1978. 65 [Hoare 1985] C.A.R. Hoare. Communicating sequential processes. Prentice Hall, 1985. http://www.usingcsp.com/cspbook.pdf. 65 [Holz 2008] T. Holz. Other Aspects of Storm Worm, 2008. 20 [Honeynet 2010] Honeynet. The Honeynet Project, 2010. 19 [Hund 2008] R. Hund, M. Hamann et T. Holz. Towards Next-Generation Botnets. In European Conference on Computer Network Defense, 2008. EC2ND 2008, pages 3340, 2008. 20 [Hrdegen 2007] Heinrich Hrdegen. Vrication des protocoles cryptographiques : Comparaison des modles symboliques avec une application des rsultats Etude des protocoles rcursifs. PhD thesis, Universit Henri Poincar - Nancy I, Novembre 2007. 68 [InfectionVectors 2004] InfectionVectors. Agobot and the Kit-chen Sink, Juillet 2004. 4 [INRIA 2010] INRIA. Le langage Caml, 2010. http://caml.inria.fr/. 32 [Keizer 2009] G. Keizer. Concker cashes in, installs spam bots and scareware, 2009. http://www.computerworld.com/s/article/9131380/Conficker_ cashes_in_installs_spam_bots_and_scareware. 10 [Krawczyk 1997] H. Krawczyk, M. Bellare et R. Canetti. HMAC : Keyed-Hashing for Message Authentication. RFC 2104 (Informational), Fvrier 1997. 30 [Lions 1996] J. L. Lions. Ariane 5 : Flight 501 Failure Report. By the Inquiry Board. Rapport technique, European Space Agency (ESA) et Centre National d'Etudes Spatiales (CNES), 1996. http://sunnyday.mit.edu/accidents/ Ariane5accidentreport.html. 26 [Mao 2003] W. Mao. Modern cryptography : theory and practice. Prentice Hall Professional Technical Reference, 2003. 15, 20, 27 [Menezes 1997] A.J. Menezes, P.C. Van Oorschot et S.A. Vanstone. Handbook of applied cryptography. CRC, 1997. 15, 16, 29 [Millen 2001] J. Millen et V. Shmatikov. Constraint solving for bounded-process cryptographic protocol analysis. In Proceedings of the 8th ACM Conference on Computer and Communications Security, page 175. ACM, 2001. 32 [Milner 1991] R. Milner. The polyadic -calculus : a tutorial. Logic and Algebra of Specication, vol. 94, pages 91180, 1991. 57 [Milner 1999] R. Milner. Communicating and mobile systems : the -calculus. Cambridge University Press, 1999. 35, 37, 38, 47, 66 [Milner 2001] R. Milner. Bigraphical reactive system : basic theory. Rapport technique 523, University of Cambridge, Computer Laboratory, 2001. 57
Bibliographie
77
[Monniaux 2009] D. Monniaux. Analyse statique : de la thorie la pratique. Habilitation Diriger des Recherches. PhD thesis, Universit Joseph-Fourier Grenoble I, Juin 2009. 26 [Nachreiner 2008] C. Nachreiner et S. Pinzon. Understanding and Blocking the New Botnets, Avril 2008. http://www.watchguard.com/docs/whitepaper/wg_ botnet_wp.pdf. 3 [Naoufel 2002] C. Naoufel. Conception, modlisation et simulation de systmes de production. Notes de cours, 2002. http://lgpp.epfl.ch/webdav/site/ lgpp/shared/Cours/MOSISP/MOSISP-Chap4.pdf. 33 [Needham 1978] R.M. Needham et M.D. Schroeder. Using encryption for authentication in large networks of computers. Communications of the ACM, vol. 21, no. 12, page 999, 1978. 20, 56 [NIST 1999] NIST. Data Encryption Standard. Rapport technique, National Institute of Standards and Technology, Octobre 1999. 15 [NIST 2001] NIST. Advanced Encryption Standard, Novembre 2001. 12, 15 [NIST 2007] NIST. Recommendation for Key Management - Part 1 : General. Rapport technique, National Institute of Standards and Technology, Mars 2007. 15, 30 [Nokia 2010] Nokia. Qt, 2010. http://qt.nokia.com/. 69 [Oikarinen 1993] J. Oikarinen et D. Reed. Internet Relay Chat Protocol. RFC 1459 (Experimental), Mai 1993. Updated by RFCs 2810, 2811, 2812, 2813. 3 [O'Neil 2010] S. O'Neil. Skype's Biggest Secret Revealed, 2010. http://www. enrupt.com/index.php/2010/07/07/skype-biggest-secret-revealed. 23 [OpenSSL 2010] OpenSSL. Cryptography and SSL/TLS Toolkit, Janvier 2010. http://www.openssl.org/. 12 [Postel 1981] J. Postel. Transmission Control Protocol. RFC 793 (Standard), Septembre 1981. Updated by RFCs 1122, 3168. 36 [Poulsen 2004] K. Poulsen. FBI busts alleged DDoS Maa, 2004. http://www. securityfocus.com/news/9411. 6 [Rivest 1978] R.L. Rivest, A. Shamir et L. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, vol. 21, no. 2, page 126, 1978. 12, 15 [Rivest 1992] R.L. Rivest. The RC4 Encryption Algorithm. Inc., March, vol. 12, 1992. 20 [Rusinowitch 2001] M. Rusinowitch et M. Turuani. Protocol insecurity with nite number of sessions is NP-complete. In 14th IEEE Computer Security Foundations Workshop, 2001. Proceedings, pages 174187, 2001. 57 [Ryan 2001] P. Ryan et S.A. Schneider. The modelling and analysis of security protocols : the csp approach. Addison-Wesley Professional, 2001. 65
78
Bibliographie
[Salman 2010] A. B. Salman. Know something interesting about Skype ?, 2010. http://www1.cs.columbia.edu/~salman/skype/. 23 [Sarat 2008] S. Sarat et A. Terzis. Measuring the storm worm network, 2008. http: //www.cs.jhu.edu/~sarat/storm.pdf. 10 [Schneider 1998] S. Schneider. Verifying authentication protocols in CSP. IEEE Transactions on Software Engineering, vol. 24, no. 9, pages 741758, 1998. 32, 65 [Schneier 2001] B. Schneier. Cryptographie applique : algorithmes, protocoles et codes source en c. Vuibert Informatique, 2001. 16 [Seward 2008] Julian Seward. bzip2 and libbzip2, 2008. http://bzip.org/. 14 [Skochinsky 2006] I. Skochinsky. Reversing Microsoft Visual C++ Part II : Classes, Methods and RTTI, 2006. http://www.openrce.org/articles/full_view/ 23. 11 [Skype 2010] Skype. Skype, 2010. http://www.skype.com/. 22 [Stamford 2002] S. Stamford, V. Paxson et N. Weaver. How to own the internet in your spare time. In Proceedings of the 11th USENIX Security Symposium, 2002. 20 [Stinson 2006] D.R. Stinson. Cryptography : theory and practice. CRC press, 2006. 16 [Stock 2009] B. Stock, J. Gobel, M. Engelberth, F.C. Freiling et T. Holz. Walowdac Analysis of a Peer-to-Peer Botnet. In European Conference on Computer Network Defense, 2009. (EC2ND) 2009, Novembre 2009. ix, 11, 12 [Symantec 2007] Symantec. PrettyPark.Worm, 2007. http://www.symantec.com/ security_response/writeup.jsp?docid=2000-121508-3334-99. 4 [Sysoev 2010] Igor Sysoev. nginx [engine x] a HTTP and reverse proxy server, Aot 2010. http://nginx.org/. 13 [TechNet 2010] TechNet. Cracking Down on Botnets, Fvrier 2010. 19 [Tenebro 2009] G. Tenebro. Waledac, Part 2 : Its Bootstraps and Armor, 2009. http://www.symantec.com/connect/fr/blogs/ waledac-part-2-its-bootstraps-and-armor. ix, 13 [Trackers 2010] Spam Trackers. Canadian Health and Care Mall, Mai 2010. http: //spamtrackers.eu/wiki/index.php/Canadian_Health%26Care_Mall. 10 [UPX 2010] UPX. Ultimate Packer for eXecutables, 2010. sourceforge.net/. 11
http://upx.
[Vogt 2007] R. Vogt, J. Aycock et M. Jacobson. Army of botnets. In Network and Distributed System Security Symposium (NDSS), 2007. 20 [VTK 2010] VTK. VTK - The Visualization Toolkit, 2010. http://www.vtk.org/. 69
Bibliographie
79
[Weidenbach 1999] C. Weidenbach. Towards an automatic analysis of security protocols in rst-order logic. Automated Deduction CADE-16, pages 7070, 1999. 41 [Wikipdia 2010] Wikipdia. Vol 501 d'Ariane 5, Juin 2010. wikipedia.org/wiki/Vol_501_d'Ariane_5. 26
http://fr.
[Wing 2002] J.M. Wing. FAQ on -Calculus. Microsoft Research, Dcembre 2002. 34 [Ylonen 2006a] T. Ylonen et C. Lonvick. The Secure Shell (SSH) Authentication Protocol. RFC 4252 (Proposed Standard), Janvier 2006. 33 [Ylonen 2006b] T. Ylonen et C. Lonvick. The Secure Shell (SSH) Protocol Architecture. RFC 4251 (Proposed Standard), Janvier 2006. 33 [Young 1996] A. Young et M. Yung. Cryptovirology : Extortion-based security threats and countermeasures. In IEEE Symposium on Security and Privacy, pages 129141, 1996. 20 [Young 2004] A. Young et M. Yung. Malicious cryptography : Exposing cryptovirology. John Wiley & Sons, 2004. 20
Index
quivalence observationnelle, 44, 48 abstraction, 33 AES, 15 algbre de processus, 32, 33 architecture pair--pair, 4 architecture traditionnelle, 4 attaque de l'homme du milieu, 17, 28 attaque par rejeu, 30 attaque Sybil, 18 autorit de certication, 28 BSoD, 26 calcul de processus, 33 certicate authority, 28 chirement parfait, 28 cl de session, 15 clause de Horn, 41 Communicating Sequential Processes, 65 comportement, 33 cryptocounter, 20 cryptographie cl publique, 30 cryptographie cl secrte, 29 cryptographie asymtrique, 30 cryptographie symtrique, 29 cryptographique parfaite, 67 cryptovirologie, 20 CSP, 65 dductible en un pas, 42 DDoS, 6 Denning-Sacco, 39, 42 discrete event system, 33 faux rpteur, 17 groupe, 34 idalisation, 33 ingnierie sociale, 10 man-in-the-middle attack, 17 modles de traces, 32 monoadic, 56 Needham-Schroeder, 20 nginx, 13 NP-complet, 20 observation, 33 pi-calcul, 35 polyadic, 57 primitive cryptographique, 27 Processus Squentiels Communicants, 65 proprit de scurit, 29 protecteurs, 13 ProVerif, 41 rlations de raction, 37 rpteurs, 12 Rambot, 20 renieur de paquets, 22 replay attack, 30 RList, 12, 14 RSA, 16 Rustock, 20 serveur de contrle, 13 signature numrique, 30 Skype, 22 spam, 6 spammeur, 12 spi-calcul, 38 SSH, 33 Storm, 10, 20 super-rpteur, 18 systme vnements discrets, 33 systme de dduction, 42
Index
TCP, 36 virus Bradley, 20 Waledac, 10 Walowdac, 11 Wide-Mouthed-Frog, 30
81