Propos recueillis par: Geoffrey Bertoli, Antoine Cervoise, Grégory Charbonneau, Romain Léonard, relu par Isabelle Feetz.
AprĂšs quelques heure de route et une courte nuit de sommeil, câest sous un ciel bleu et un soleil de plomb que nous avons assistĂ© Ă la onziĂšme Ă©ditoin du Symposium sur la SĂ©curitĂ© des Technologies de lâInformation et des Communications 2013 ou SSTIC.
info : les actes seront disponibles sous peu Ă lâadresse https://www.sstic.org/2013/actes/. Le support des prĂ©sentations peut ĂȘtre trouvĂ©s sur le site du SSTIC pour chaque confĂ©rence.
Innovation en crypto symétrique
Par John Daemen
Lâorateur a crĂ©Ă© de nombreux algorithmes de chiffrement, comme il sera soulignĂ© ultĂ©rieurement.
John a commencĂ© la prĂ©sentation par la description de la fonction de DES : câest une fonction f appliquĂ©e plusieurs fois Ă une partie du texte Ă chiffrer. Cette fonction f est composĂ©e de XOR et SBOX.
Ensuite, il présente le challenge AES :
Une des meilleures solutions proposĂ©es est lâalgorithme Blowfish, dâaprĂšs lui cet algorithme a beaucoup de potentiel. En effet, la diffusion est bonne, mais il utilise 4 S-Box diffĂ©rentes pour 4 parties diffĂ©rentes du plaintext.
Cet algorithme a Ă©tĂ© cryptanalysĂ© en 1994 car les clĂ©s utilisĂ©es dans les S-Box Ă©taient trop faibles. Il sâest donc demandĂ© sâil pouvait lâamĂ©liorer. Il a donc crĂ©Ă© un algorithme utilisant une seule S-Box rĂ©pliquĂ©e 4 fois mais utilisant une clĂ© plus forte optimisant ainsi la non linĂ©aritĂ©, en sĂ©rie avec la SBOX il a mis une « Linear mixing layer » amĂ©liorant par la mĂȘme occasion la diffusion de lâalgorithme. Cet algorithme ainsi optimisĂ©, nommĂ© Rijndael, est devenu AES.
Malgré tout, les attaques bicliques de 2011 ont permis de réduire le temps de cassage de la clé par 4 environ.
Lâorateur est ensuite revenu sur la maniĂšre dont il avait crĂ©e SHA-3. Contrairement aux autres algorithmes de hashage, SHA-3 nâutilise pas de « Cipher Block » mais uniquement des permutations. Son algorithme est robuste et utilise trĂšs peu de ressources, ce qui Ă©tait une des demandes des organisateurs du concours SHA-3.
Il a fini par rappeler les 3 principes importants pour créer un bon algorithme de chiffrement :
- Il vaut mieux repartir de zĂ©ro plutĂŽt que de faire des patchs de lâexistant (AES nâest pas un dĂ©rivĂ© de DES) ;
- La simplicitĂ© est primordiale : en effet, dans AES il nây a quâune seule S-Box, lâalgorithme de hashage utilisant des permutations est lui aussi plus simple ;
- Il vaut mieux se concentrer sur le rĂ©sultat que sur la publication : le rĂ©sultat nâen sera que meilleur.
Mise à plat de graphes de flot de contrÎle et exécution symbolique
Par Eloi Vanderbeken
Lâorateur travaille comme chercheur en sĂ©curitĂ© chez Oppida. Le sujet de la prĂ©sentation est la rĂ©cupĂ©ration dâun Graphe de Flot de ContrĂŽle (CFG), dâun binaire obfusquĂ© (ou obscurci/brouillĂ©), afin de le rendre lisible par un humain.
Il existe deux catĂ©gories dâobscurcissement :
- Des mĂ©thodes « bas niveau », qui sont rĂ©alisables aprĂšs la compilation, comme lâinsertion de code mort ou le chiffrement du contenu ;
- Des mĂ©thodes « haut niveau », qui nĂ©cessitent des informations contextuelles, comme lâĂ©tat des variables globales ou le CFG, et qui sont rĂ©alisĂ©es lors de la compilation. Parmi ces mĂ©thodes, on compte la mise Ă plat des CFG : câest ce type dâobscurcissement qui sera traitĂ© lors de cette prĂ©sentation.
Quâest ce que la mise Ă plat dâun graphe de flot de contrĂŽle ?
Câest le fait de modifier un CFG de maniĂšre Ă ce quâĂ chaque changement de bloc, on repasse par un gestionnaire, comme on peut le voir sur le schĂ©ma suivant :
Ainsi, un humain aura du mal Ă savoir quel bloc sera exĂ©cutĂ© et dans quelles conditions. Pour cela Il devra avoir un accĂšs Ă la valeur de chaque registre Ă chaque moment de lâexĂ©cution.
LâidĂ©e est donc de recrĂ©er un CFG lisible. Compte tenu de cette contrainte, il existe trois approches envisageables :
- Analyse dynamique avec suivi dâexĂ©cution ;
- Analyse dynamique avec suivi de données ;
- Analyse statique.
La premiĂšre mĂ©thode permet une reconstruction facile dâun CFG en rĂ©cupĂ©rant la trace dâexĂ©cution. Cependant, lâanalyse ne peut ĂȘtre exhaustive car il y a toujours une possibilitĂ© dâoublier des traces.
Pour la seconde mĂ©thode, il faut Ă prĂ©sent sâattacher Ă la transformation des donnĂ©es, lâidĂ©e nâĂ©tant pas de regarder les Ă©tapes de lâexĂ©cution mais de tracer les variables et leur modification.
Dans ce cas, les problĂšmes rĂ©sultent du fait quâon ne puisse rĂ©cupĂ©rer la structure du code initial et que les expressions mathĂ©matiques de description des variables peuvent sâavĂ©rer lourdes et complexes.
La troisiĂšme mĂ©thode est celle qui a Ă©tĂ© choisie par Eloi, elle sâappuie sur une abstraction des variables et une exĂ©cution symbolique du programme. Ici, lâavantage est que lâexĂ©cution symbolique permet de rĂ©cupĂ©rer lâintĂ©gralitĂ© du CFG, y compris la structure du code. En revanche, il faut faire attention aux abstractions choisies afin de ne pas induire des calculs lourds et complexes.
Lâorateur prĂ©sente tout dâabord comment rĂ©aliser une exĂ©cution symbolique. On exĂ©cute le code symboliquement de maniĂšre Ă obtenir une trace statique (celle-ci peut contenir plusieurs traces dynamiques, notamment si le code possĂšde des conditions). On rĂ©cupĂšre ensuite le contexte symbolique correspondant aux valeurs probables de chaque variable. Ensuite, on utilise un solveur dâĂ©quation basĂ© sur Z3 (un solveur dâĂ©quation dĂ©veloppĂ© par Microsoft) afin de pouvoir rĂ©soudre toutes les conditions de saut. Pour finir, on optimise la trace statique en supprimant les blocs vides et les conditions jamais atteintes.
Une démonstration a été faite en fin de présentation simplifiant notablement un CFG pourtant trÚs complexe.
Slides dispo : https://www.sstic.org/2013/presentation/execution_symbolique_et_CFG_flattening/
Polyglottes binaires et implications
Par Ange Albertini
Ange Albertini travaille actuellement chez Avira dans une division dâingĂ©nierie inversĂ©e. Il a dĂ©jĂ participĂ© Ă de nombreuses confĂ©rences et challenges. Il est Ă©galement connu pour des nombreuses publications traitant Ă©galement dâingĂ©nierie inversĂ©e.
La prĂ©sentation, dynamique et ludique, ponctuĂ©e de dĂ©mo, est axĂ©e sur lâĂ©tude de fichiers binaires dits « polyglottes ». Il sâagit de fichiers qui peuvent ĂȘtre interprĂ©tĂ©s diffĂ©remment en fonction du programme qui les lit.
Lâorateur nous explique donc les vulnĂ©rabilitĂ©s de certains de ces types de fichiers :
- Pour le format PE de Windows, le fichier doit commencer par MZ et doit contenir Ă lâoffset 0Ă3C du fichier lâadresse de la suite du PE ;
- Pour le format PDF, lâinterprĂ©tation dĂ©marre au marqueur %PDF qui doit ĂȘtre placĂ© dans les 1024 premiers octets ;
- Pour le format HTML, lâinterprĂ©tation dĂ©bute avec la balise qui peut se trouver nâimporte oĂč dans le fichier ;
- Pour les ZIP ou les JAR, il peut ĂȘtre placĂ© nâimporte oĂč.
En partant de ces donnĂ©es, il est possible de crĂ©er un fichier qui aura un comportement diffĂ©rent en fonction de lâinterprĂ©teur.
De plus, pour un PDF donné, on peut obtenir un comportement différent sur Adobe Acrobat Reader, sur Chrome ou Sumatra.
Ces comportements pourraient, par exemple, permettre de créer un fichier qui, au choix :
- Masquera un PDF malveillant à un antivirus qui le prendra, par exemple, pour un exécutable légitime ;
- Permettra lâupload dâune image sur un site Web qui pourra ensuite ĂȘtre exĂ©cutĂ©e en tant quâApplet Java malveillante.
Pour conclure, les Ă©diteurs de logiciel et les antivirus doivent refuser lâexĂ©cution de fichiers mal formĂ©s.
Recompilation dynamique de codes binaires hostiles
Par SĂ©bastien Josse
SĂ©bastien Josse est un chercheur en sĂ©curitĂ© actuellement employĂ© dans la section MaĂźtrise de lâInformation dâun laboratoire de recherche de la DGA.
La problĂ©matique de cette confĂ©rence rĂ©side dans la constante progression des mĂ©thodes quâutilisent les crĂ©ateurs de malware pour protĂ©ger leur code contre les antivirus, mais aussi contre lâingĂ©nierie inversĂ©e. Malheureusement, les outils dâanalyse, aussi bien statique que dynamique, ne jouent plus Ă armes Ă©gales avec ces mĂ©thodes de protection.
Dâun cĂŽtĂ©, lâanalyse statique se trouve limitĂ©e par des techniques dâobscurcissement de plus en plus perfectionnĂ©es comme lâaplatissement de graphes de flot, dĂ©jĂ prĂ©sentĂ© Ă lâavant-derniĂšre confĂ©rence par Eloi VanderbĂ©ken.
Dâun autre cĂŽtĂ©, lâanalyse dynamique est vite repĂ©rĂ©e par la prĂ©sence des interruptions nĂ©cessaires aux break-points.
Lâapproche de SĂ©bastien propose de descendre dâune couche systĂšme pour se placer au niveau de lâhyperviseur.
Pour ce faire, il a dĂ©veloppĂ© lâoutil VxStripper. Celui-ci sâinsĂšre dans la fonction de rĂ©Ă©criture de QEMU et gĂ©nĂšre un langage compatible avec LLVM.
Cet outillage lui permet dâabord de « dĂ©packer » le binaire, puis, aprĂšs une seconde passe, de simplifier le code de sortie pour obtenir un code au plus proche du code dâorigine.
Pour finir, lâoutil est dâores et dĂ©jĂ fonctionnel et la dĂ©monstration montre quâil est efficace sur un binaire simple. Apparemment, lâoutil nâest certes pas encore disponible, mais sa diffusion est prĂ©vue : seule la date officielle manque.
Présentations courtes
nftable par Ăric Leblond
AprĂšs avoir fondĂ© EdenWall Technologies, Ăric Leblond est actuellement dĂ©veloppeur principal chez Open Information Security Foundation. Il est responsable du port du pare-feu dâOpen Office vers LibreOffice =).
Ă lâheure actuelle, lâajout de rĂšgle est âpourriâ en termes de performance, selon lâorateur. IPSET a Ă©tĂ© introduit et permet de gĂ©rer des ensembles de maniĂšre trĂšs efficace. On peut dĂ©finir une liste dâIP afin de gĂ©rer le tout de maniĂšre plus dynamique, ce qui reste Ă voir selon lâorateur.
Les défauts de IPtables sont principalement la présence de code similaire pour de nombreux modules Netfilter et le fait que certaines fonctionnalités sont impossibles à mettre en place (port source == port destination).
Par consĂ©quent, un nouveau systĂšme de filtrage a Ă©tĂ© dĂ©veloppĂ© et prĂ©sentĂ© en 2008 (nftable) en vue de remplacer les IPtables et lâinfrastructure de filtrage. Cependant, aucun changement dans les hooks, le suivi des connexions ainsi que les helpers nâest prĂ©vu.
Le langage sera basĂ© sur une grammaire et accessible depuis une bibliothĂšque. De plus, la communication utilise Netlink ce qui permet de rĂ©aliser des modifications atomiques et un systĂšme de notification. Il y a donc une sĂ©paration distincte entre lâespace utilisateur et lâespace noyau.
Nftables fonctionne en mode fichier, en ligne de commande et en mode client (CLI). La gestion des ensembles anonymes ou nommĂ©s, mais : âĂa câest trop simple, on va faire un truc encore mieuxâ.
Il est possible de faire du mapping anonyme et nommĂ©, câest-Ă -dire de âdroper tout ce qui provient de ce rĂ©seau, sauf cette adresse IP prĂ©ciseâ, le tout en une seule ligne.
Il est Ă souligner quâil existe une bibliothĂšque de compatibilitĂ© avec IPtables (IPtables-Nftables) pour âne pas perdre tout le mondeâ.
DisponibilitĂ© fin 2013 Ă lâadresse suivante http://www.netfilter.org. Le support de prĂ©sentation est disponible Ă lâadresse suivante https://www.sstic.org/media/SSTIC2013/SSTIC-actes/nftable/SSTIC2013-Slides-nftable-leblond.pdf
Présentation courte
Parsifal, ou comment Ă©crire rapidement des parseurs robustes et efficaces
Olivier Levillain, ANSSI
Olivier Levillain est chef du laboratoire sĂ©curitĂ© des rĂ©seaux et protocoles au sein de la sous-direction expertise de lâAgence nationale de la sĂ©curitĂ© des systĂšmes dâinformation (ANSSI). Ses travaux actuels portent sur la sĂ©curitĂ© des navigateurs, mais ses centre dâintĂ©rĂȘts couvrent Ă©galement la sĂ©curitĂ© des systĂšmes, les vulnĂ©rabilitĂ©s liĂ©es au matĂ©riel ou encore les langages de programmation.
Pour Ă©tudier un format ou un protocole, le mieux est de lâimplĂ©menter. Cependant, de petits dĂ©tails au sein des protocoles peuvent ĂȘtre gĂȘnants.
Wireshark, Scapy et Hachoir connaissent dĂ©jĂ de nombreux protocoles et sont facilement utilisables, mais deux dâentre eux sont limitĂ©s au rĂ©seau. De plus, « Le Python, câest lent ».
Plusieurs outils ont Ă©tĂ© codĂ©s en Python dans le lab. mais ils sont considĂ©rĂ©s comme lents Ă lâexĂ©cution donc ils sont passĂ©s Ă C++, plus rapide, mais ils restent trop verbeux et pĂ©nibles Ă mettre au point.
Un outil en OCaml a donc été développé avec un préprocesseur nommé Parsifal.
La plaquette de Parsifal est la suivante :
- Efficacité du code produit ;
- Robustesse ;
- Adaptation Ă lâĂ©criture incrĂ©mentale de parseurs flexibles.
Parsifal permet Ă©galement dâextraire les objets dĂ©crits en plus de pouvoir les parser (client DNS en 200 lignes).
Lâorateur donne un exemple concret avec la structure dâune image PNG. Il dĂ©clare simplement la structure dâune image PNG (avec la taille, le Chunk Type, la data et le CRC) et il obtient un code permettant de parser lâobjet et de lâextraire.
Cet exemple est agrĂ©mentĂ© de dĂ©mo pour prouver le peu de code demandĂ© Ă lâutilisateur.
Les formats implémentés sont : X509, SSL/TLS, PE, Kerberos, TAR, DNS, PNG, PCAP ; ceux qui ne sont pas implémentés : Base64, Zlib, etc.
La v0.1 est publiée sur GitHub, la documentation reste à consolider.
Compromission dâun terminal sĂ©curisĂ© via lâinterface carte Ă puce
Par Guillaume Vinet
Lâutilisation dâune carte Ă puce est considĂ©rĂ©e comme lâĂ©quivalent dâun coffre-fort numĂ©rique Ă faible coĂ»t. Cependant, lâauthentification nĂ©cessite la saisie dâun code PIN sur le clavier du PC, ce qui nâest pas sĂ©curisĂ©, comme montrĂ© au CCC 2010. Un terminal bancaire a donc Ă©tĂ© crĂ©Ă©, avec branchement en USB sur le PC.
La saisie du code PIN est confinĂ©e dans le terminal, Ă lâexception des Ă©changes avec la carte, câest-Ă -dire que le code PIN ne transite pas par le PC.
Diverses attaques de terminal sont à exploiter : attaque physique, rayon électromagnétique ou démontage et analyse de la mémoire aprÚs saisie du code PIN.
Lâorateur sâest penchĂ© sur lâattaque par lâinterface de carte Ă puce car elle est rapide, non destructive, peu dĂ©tectable et rarement prise en compte.
Ainsi, on pourrait dĂ©brancher le terminal en le gardant sous tension et le brancher au PC dâanalyse, mais cela sâavĂšre un peu encombrant.
Lâorateur a donc visĂ© le protocole ISO 7816-3 en utilisant lâAnswer To Reset (ATR) ce qui permet de rĂ©cupĂ©rer des octets historiques.
Les actions suivantes sont Ă©galement possibles :
- Envoi dâun ATR => 2 octets => accĂšs illĂ©gal en lecture ;
- Envoi dâun ATR => 33 octets => accĂšs illĂ©gal en Ă©criture.
Le matĂ©riel disponible pour la mise en place de lâattaque :
- Java Card : dont la couche transport est bas niveau (APDU Ă©tendue) ;
- Fun Card, prussian card, Basic Card : programmables mais via un lecteur de cartes Ă puce ;
- Ămulateur physique de cartes Ă puce : problĂšme de coĂ»t et de prise en main.
Lâorateur a donc achetĂ© un Arduino peu coĂ»teux, rapidement pris en main, avec connexion USB, contrĂŽle via Python et contrĂŽle de la carte, ce qui lui a permis de rĂ©aliser des attaques par fuzzing.
Via un ATR mal formaté, il a pu trouver 4 failles avec possibilité de récupérer une partie de la réponse précédente.
Par attaque sur les octets de procĂ©dure T0, il a pu extraire le code du firmware du microcontrĂŽleur. Il a Ă©galement pu extraire la totalitĂ© de la XRAM, Ă©galement grĂące Ă une faille dans la bibliothĂšque du microcontrĂŽleur qui est normalement sensĂ©e empĂȘcher les dĂ©bordements de tampon.
Lâorateur conclut par une dĂ©mo en live oĂč il lit les derniĂšres rĂ©ponses et dump le firmware.
Attaques applicatives via périphériques USB modifies infection virale et fuites
BenoĂźt Badrignans est employĂ© chez SECLAB FR. Câest en travaillant sur le dĂ©veloppement de pĂ©riphĂ©riques USB et en constatant que le moindre problĂšme de conception dans le pĂ©riphĂ©rique entraĂźnait un plantage de la machine que lâidĂ©e de modifier des pĂ©riphĂ©riques USB lui est venue.
Dans le cadre de SI critique, les problĂ©matiques liĂ©es Ă lâUSB sont frĂ©quentes (cas de Stuxnet). Cela a permis une prise de conscience du risque et la mise en place de prĂ©conisations associĂ©es. Cependant, ces prĂ©conisations se concentrent sur la protection de pĂ©riphĂ©riques USB classiques avec un contenu malveillant.
Les recommandations traditionnelles sont :
- Ăviter lâUSB ;
- Utiliser un sas de décontamination ;
- DĂ©sactiver lâautorun ;
- Utiliser un antivirus Ă jour ;
- Interdire certains périphériques via le descripteur,
- Etc.
La prĂ©sentation dĂ©bute par un rappel du modĂšle de fonctionnement de lâUSB. Comme indiquĂ© sur la capture ci-dessous, il existe plusieurs mĂ©thodes pour compromettre un systĂšme via un pĂ©riphĂ©rique USB classique (virus sur une clĂ© USB, driver malveillant, etc.)
Par exemple, modifier un pĂ©riphĂ©rique USB en changeant le descripteur, permet dâautoriser un pĂ©riphĂ©rique qui serait normalement interdit.
On peut aussi écouter les informations qui passent sur le hub USB sur lequel est branché notre périphérique modifié.
Il est également possible de contourner le sas de décontamination en modifiant la table de partition. Si on peut simuler un clavier, on peut donc se faire passer pour la personne derriÚre le clavier.
Pour réaliser son périphérique modifié, il y a plusieurs options :
- Acheter directement un contrĂŽleur USB ;
- Modifier un tĂ©lĂ©phone portable (des couches dâAndroid permettent de faire passer un tĂ©lĂ©phone pour un clavier) ;
- Utiliser des outils de pentest prĂȘts Ă lâemploi (Facedancer USB pour Fuzzing) ;
- Acheter directement une clé USB piégée.
La surface dâattaque sâavĂšre donc supĂ©rieure Ă une clĂ© USB classique !
La premiĂšre dĂ©monstration se base sur le scĂ©nario ayant lâobjectif suivant : voler un fichier spĂ©cifique sur un systĂšme. Le systĂšme hĂŽte effectue un filtrage sur le descripteur USB, lâutilisateur courant nâest pas « root » et la clĂ© USB est montĂ©e en lecture seule.
Premier contournement : on peut facilement changer le descripteur USB (besoin dâingĂ©nierie sociale pour dĂ©terminer les descripteurs autorisĂ©s).
Notre clĂ© dispose de deux espaces de stockage : un premier accessible depuis lâOS (donc uniquement en lecture, que lâon nommera systĂšme A) et un second cachĂ© sur la clĂ©, qui nâest pas directement accessible (que lâon nommera systĂšme B). La clĂ© dispose aussi dâun microcontrĂŽleur qui lui permet dâagit sur la mĂ©moire de masse cachĂ©e. Comme il nâest pas possible de copier directement le fichier sur le stockage A, celle-ci accĂšde en lecture au fichier cible. Le dispositif USB lit octet par octet le contenu de la clĂ©, Ă chaque octet lu, un accĂšs en lecture est fait sur un fichier spĂ©cifique du systĂšme A. Le microcontrĂŽleur interprĂšte alors ces accĂšs en lecture et Ă©crit les octets lus (donc ceux du fichier cible) et les Ă©crits dans un fichier prĂ©sent sur le systĂšme B, donc cachĂ©.
Le second scĂ©nario est le suivant : infecter une machine cible, nâayant pas dâantivirus. Lâattaquant ne peut entrer directement sur le SI, ne connaĂźt pas le systĂšme cible (Linux/Windows/Mac), lâautorun est dĂ©sactivĂ© et le SI dispose dâun sas de contamination.
Pour contourner le sas de dĂ©contamination, il suffit dâattendre un certains nombre de connexions (physiques) pour exĂ©cuter la charge virale.
Pour connaĂźtre lâOS, on analyse le comportement du systĂšme lorsque lâon branche le pĂ©riphĂ©rique (est-ce que le systĂšme commence par lire ou Ă©crire sur lâĂ©quipement ? oĂč ? etc).
Une fois lâĂ©quipement branchĂ©, lâOS dĂ©tectĂ©, il suffit de dĂ©poser un logiciel malveillant en simulant des entrĂ©es clavier.
Quelles sont donc les contre-mesures ?
Pour commencer les recommandations habituelles sont Ă appliquer (DLP, dĂ©sactiver lâautorun, etc).
Ensuite, plusieurs options existent, comme par exemple Qubes OS qui permet de dĂ©lĂ©guer Ă une VM de faible niveau lâUSB (ou encore le rĂ©seau). Cependant, ce type de systĂšme nĂ©cessite de former les utilisateurs et impose certaines contraintes.
La proposition de lâorateur constitue une protection matĂ©rielle qui consiste Ă mettre un matĂ©riel de filtrage USB en rupture entre les pĂ©riphĂ©riques et le contrĂŽleur USB de la machine. Dans le cas de support amovible USB, le contenu de la clĂ© est dupliquĂ© sur lâĂ©quipement, la lecture des fichiers ne se fait donc plus sur le pĂ©riphĂ©rique mais sur lâĂ©quipement de filtrage. Il est aussi possible de mettre en place des rĂšgles de filtrage au niveau du clavier (interdire des combinaisons de touches, dĂ©tecter des saisies de touches trop rapides pour ĂȘtre effectuĂ©es par un humain).
En conclusion, la surface dâattaque fournie par lâUSB est grande, mĂȘme sans entrer dans les couches basses, et il est difficile de contrer cela au niveau logiciel. Par ailleurs, cela ne se limite pas Ă lâUSB, on peut envisager la fuite dâinformation via PS/2 ou le cĂąble audio.
Pour obtenir plus dâinformations sur la prĂ©sentation, lâarticle et les slides sont disponibles Ă cette adresse : https://www.sstic.org/2013/presentation/Attaques_applicatives_via_peripheriques_USB_modifies_infection_virale_et_fuites_d_informations/.
Red October
Par Nicolas Brulez
Lâorateur commence par un petit rappel des diffĂ©rentes attaques rĂ©centes :
- 2009 : Opération Aurora ;
- 2010Â : Stuxnet ;
- 2012Â : Flame ;
- 2013Â : Red October.
Le nom « Red October » a Ă©tĂ© choisi car lâattaque est potentiellement dâorigine russe. Il sâagit dâune campagne de cyber-espionnage ayant eu lieu de mai 2007 Ă janvier 2013.
Les informations obtenues par le malware Ă©taient rĂ©utilisĂ©es pour sâintroduire dans dâautres systĂšmes. Une soixantaine de noms de domaine ont Ă©tĂ© achetĂ©s pour des modules Nokia, iPhone, Windows mobile, pour Cisco et disques amovibles, outre les postes de travail.
Le scĂ©nario de lâattaque est le suivant :
- Infection initiale ;
- Par mail (boite mail anonyme ou boite « pownĂ©e ») phishing avec document piĂ©gĂ© (Word et Excel). Il nây avait aucun 0day (CVE 2009-1329, Ă CVE 2012-0158). Les exploits utilisĂ©s ont Ă©tĂ© rĂ©cupĂ©rĂ©s de Chine, en changeant le payload ;
- Le dropper extrait et exĂ©cute 3 fichiers sur la machine victime. Le fichier chiffrĂ© en RC4 et Zlib est une backdoor sâinjectant en mĂ©moire qui communique avec le C&C de maniĂšre chiffrĂ©e, aprĂšs un test sur microsoft.com ;
- Des modules complémentaires sont déployés (password, persistent, mobile, exfiltration, disque amovible, etc.). Une fois la connexion faite, les modules sont chargés « hors ligne » (sur le disque) et « en ligne » (en mémoire) : 34 modules, 9 groupes et plus de 100 fichiers.
Les noms de domaine ont été enregistrés par les équipes de Kaspersky pour faire des statistiques puisque les pirates ne les ont pas renouvelés.
Avec leur serveur (KSN), ils ont pu voir que la Suisse, le Kazakhstan et la GrÚce étaient les pays les plus ciblés.
La plupart des mails qui ont servi Ă lâenregistrement des noms de domaine sont en « .ru ». Les Ă©quipes de Kaspersky ont pu avoir accĂšs Ă un serveur de proxy qui redirigeait les flux vers les serveurs rĂ©els (le port 40080 des serveurs de contrĂŽle est ouvert).
LâoriginalitĂ© des modules pour mobiles : Nokia, IPhone et Windows Mobile
Le module utilise lâAPI du dĂ©veloppeur, lâID du tĂ©lĂ©phone, la version du firmware, les contacts, les journaux dâappels, le calendrier, etc.
Sur Windows mobile, le module va infecter le tĂ©lĂ©phone en plus de rĂ©cupĂ©rer des informations. Une fois infectĂ©, il se connecte par le C&C pour complĂ©ter lâinfection et va modifier le tĂ©lĂ©phone pour lancer des applications non signĂ©es.
Lâorateur conclut par le fait quâaucune dĂ©mo nâest disponible car « de toute façon, ça ne marche pas, je suis Ă lâarrache comme toujours ! ». Aucun support de prĂ©sentation nâest disponible.
(Lâ)EmbarquĂ© entre Confiance et DĂ©fiance
Par Aurélien Francillon
La derniĂšre confĂ©rence de la journĂ©e est prĂ©sentĂ©e par AurĂ©lien Francillon, chercheur chez Eurocom, rattachĂ© Ă lâinstitut Mines-TĂ©lĂ©com. La prĂ©sentation est un patchwork de diffĂ©rentes recherches quâil a effectuĂ©es sur lâinformatique embarquĂ©e.
Pourquoi ce titre ?
Il commence par expliquer pourquoi il a choisi ce titre et pourquoi il sâest tournĂ© vers lâembarquĂ©.
Au dĂ©part, hormis les cartes Ă puce, Ă©tudier des attaques ciblĂ©es sur les systĂšmes embarquĂ©s Ă©tait assez souvent tirĂ© par les cheveux. Cet aspect a pas mal changĂ© ces derniers temps. Câest aussi sa curiositĂ© Ă lâĂ©gard de ces systĂšmes et le fait quâils sont plus petits, donc moins complexes, soumis Ă peu de sĂ©curitĂ© qui lâont poussĂ© Ă se demander « Peut-on faire confiance Ă ces boites noires ? » et Ă sâorienter vers lâĂ©tude de lâembarquĂ©.
Pour commencer, il illustre sa prĂ©sentation en parlant dâAVR. Ce microcontrĂŽleur est basĂ© sur une architecture Harvard (http://fr.wikipedia.org/wiki/Architecture_Harvard), aussi utilisĂ©e dans les smartcard : les donnĂ©es mĂ©moire et programme y sont indĂ©pendantes. Ce type dâarchitecture induit quâil nâest pas possible dâeffectuer des injections de code classiques. Cependant, en utilisant le ROP (Return Oriented Programming, http://fr.wikipedia.org/wiki/Return-oriented_programming), il est possible dâexĂ©cuter du code dĂ©jĂ prĂ©sent en mĂ©moire programme (des gadgets). Si lâon est en prĂ©sence dâun jeu de gadgets « Turing complet », il est possible dâeffectuer des injections. Un systĂšme basĂ© sur une architecture Harvard ne protĂšge donc pas des injections de code.
Comment faire confiance à un systÚme embarqué ?
Pour rĂ©pondre Ă cette question, lâorateur utilise lâexemple duHTC G1. Ce tĂ©lĂ©phone utilise deux processeurs : un ARM9 pour le baseband (le code du baseband reprĂ©sente environ 20 Mo de code binaire) et un ARM11 pour la gestion dâAndroid. Lâorateur prĂ©sente la sĂ©quence de Secure Boot du tĂ©lĂ©phone. Ce modĂšle de sĂ©curitĂ© est basĂ© sur une signature des diffĂ©rents binaires. Câest en analysant la ROM utilisĂ©e pour le baseband que lâon dĂ©couvre que les certificats utilisĂ©s pour vĂ©rifier la signature sont en dur dans le code. On est en prĂ©sence de deux certificats, un certificat « commercial » et un certificat « gouvernemental ». Chaque certificat correspond Ă un mode de fonctionnement. Les premiĂšres questions qui peuvent venir Ă lâesprit sont :
- Pour quel gouvernement ?
- Y-a-t-il un certificat par gouvernement ?
- Est-ce une backdoor ?
Les rĂ©ponses aux deux premiĂšres questions ne sont pas donnĂ©es ici. Cependant, on peut affirmer quâil ne sâagit pas rĂ©ellement dâune backdoor car on a besoin dâun accĂšs physique au tĂ©lĂ©phone. Par contre, un gouvernement peut quand mĂȘme reprogrammer le baseband pour ses propres tĂ©lĂ©phones. Pour cela, il faut pouvoir modifier lâimage (micronoyau OKL4). Des versions antĂ©rieures sont disponibles en open source. Il est Ă©galement possible dâutiliser OKL4 comme hyperviseur (un PoC permettant de lancer le noyau Linux dans le baseband a dâailleurs Ă©tĂ© effectuĂ© lors des recherches).
AprÚs cet exemple, il nous est rappelé que les systÚmes embarqués sont partout.
Un ordinateur est dâailleurs une combinaison de systĂšmes embarquĂ©s. Par exemple, un disque dur en est un. Un papier Ă venir va prĂ©senter la possibilitĂ© de dĂ©poser une backdoor au sein dâun disque dur (le PoC est notamment rĂ©alisable car il nây a pas de vĂ©rification de la signature du firmware dans le disque dur). Ă suivre donc !
Comment font-ils pour faire cela de maniÚre sécurisée ?
Ici, les systĂšmes de clĂ©s sans contact pour les automobiles sont pris comme exemples. Dans le modĂšle vendu par les constructeurs, si on se trouve Ă proximitĂ© de notre voiture (moins de deux mĂštres) avec la clĂ©, sans contact, la voiture se dĂ©verrouille et il est possible de la dĂ©marrer en appuyant sur un simple bouton. AurĂ©lien a donc rĂ©alisĂ© la mĂȘme expĂ©rience sur plusieurs voitures (10 modĂšles de 8 constructeurs). LâexpĂ©rience consiste Ă crĂ©er un relai (par cĂąble ou sans fil) permettant de prolonger la portĂ©e de la clĂ©. Le rĂ©sultat est quâil est possible dâouvrir et dĂ©marrer la voiture Ă une centaine de mĂštres.
Peut-on faire confiance Ă ces systĂšmes ?
Plusieurs concepts permettent de contrÎler ces systÚmes : le premier présenté consiste à vérifier le code avec un autre code, contournable notamment grùce au ROP. La seconde méthode consiste à vérifier le systÚme au démarrage, méthode ne protégeant pas contre une compromission aprÚs le lancement du systÚme.
La derniÚre méthode est la méthode Secure and Minimal Architecture for (Establishing a Dynamic) Root of Trust (SMART), méthode présentée dans le document : http://www.eurecom.fr/fr/publication/3536/detail/smart-secure-and-minimal-architecture-for-establishing-a-dynamic-root-of-trust)
Pourquoi faire un systÚme sécurisé ?
Pour terminer la prĂ©sentation, on peut se poser la question : pourquoi sĂ©curiser ces systĂšmes ? En effet, du cotĂ© constructeur la question peut se poser. Cela coĂ»te plus cher, câest plus complexe Ă rĂ©aliser et cela ne fait pas nĂ©cessairement vendre davantage ou plus vite.
En conclusion de ce patchwork, lâorateur tient Ă rappeler quâil est important de rester curieux et de se poser des questions lorsque lâon se retrouve face Ă des boĂźtes noires.
Au moment oĂč ces lignes sont Ă©crites, la prĂ©sentation nâest pas disponible sur Internet. Elle le sera sĂ»rement par la suite Ă lâadresse : https://www.sstic.org/2013/presentation/conf_invit2_j1_2013/