Sécuriser ses appels réseau Android, de 2009 à 2019

Sécuriser ses appels réseau Android, de 2009 à 2019

Si, il y a 10 ans, à cause d'un écosystème encore en construction, HTTPS était un protocole complexe à mettre en place, aujourd'hui il semble que c'est l'inverse.

Rejouons l'histoire pour découvrir et comprendre ensemble les différentes failles de sécurité qui ont poussé le Web à passer sur HTTPS ainsi que les implémentations associées sur Android.

À travers du code et des analyses, implémentons, cassons et sécurisons ensemble du code réseau pour comprendre comment nous en sommes arrivés aux implémentations actuelles.

Nous découvrirons ensuite les limitations de 2019 : pouvons-nous empêcher tout le monde d'analyser notre trafic ? Qu'est-il possible de faire aujourd'hui, quels sont les risques pour l'utilisateur, le développeur, l'entreprise ? Quels sont les outils et bonnes pratiques pour empêcher ou au moins ralentir et complexifier nos analyses réseau par des personnes malicieuses ?

Michaël Ohayon, Développer Android

6b57bf263ebff55954a7f4e07323843d?s=128

Michaël Ohayon

November 28, 2019
Tweet

Transcript

  1. Sécuriser ses appels réseau Android, de 2009 à 2019

  2. Qui suis-je ? OHAYON MICHAËL Consultant Android @mikkL Xebian depuis

    3 ans
  3. Tout le monde possède un téléphone avec des applications

  4. #3 Netflix #8 WhatsApp #27 Microsoft Outlook #54 Doctolib #106

    Crédit Agricole #109 Assurance maladie Top des applications sur le Google Play Store
  5. #3 Netflix (Mot de passe général) #8 WhatsApp (Messages, photos)

    #27 Microsoft Outlook (Travail) #54 Doctolib (Médical) #106 Crédit Agricole (Banque) #109 Assurance maladie (Identité, Médical) Top des applications sur le Google Play Store
  6. Étudions comment le web a mis à jour ses standards

    de sécurité
  7. 1997

  8. Le web en 1997

  9. HTTP 1.1

  10. HTTP 1.1

  11. HTTP 1.1

  12. HTTP 1.1

  13. HTTP 1.1

  14. 2006

  15. Le web dans les années 2000

  16. 2008

  17. Today, we're making it even easier for you to use

    https to protect your mail every time you access it. We've added an option to Settings to always use https. https://gmail.googleblog.com/2008/07/making-security-easier.html 24 Juillet 2008
  18. Today, we're making it even easier for you to use

    https to protect your mail every time you access it. We've added an option to Settings to always use https. If you don't regularly log in via unencrypted wireless connections at coffee shops or airports or college dorms, then you might not need this additional layer of security. https://gmail.googleblog.com/2008/07/making-security-easier.html 24 Juillet 2008
  19. Today, we're making it even easier for you to use

    https to protect your mail every time you access it. We've added an option to Settings to always use https. If you don't regularly log in via unencrypted wireless connections at coffee shops or airports or college dorms, then you might not need this additional layer of security. But if you want to always use https, then this setting makes it super easy. Whenever you forget to type https://mail.google.com, we'll add the https for you https://gmail.googleblog.com/2008/07/making-security-easier.html 24 Juillet 2008
  20. 2009

  21. 23 Septembre 2009

  22. 2009 Android 1.6

  23. Pourquoi HTTPS est il si important ? Est il difficile

    d'intercepter le trafic HTTP ?
  24. ARP Spoofing en 2 minutes

  25. ARP Spoofing en 2 minutes

  26. ARP Spoofing en 2 minutes

  27. ARP Spoofing en 2 minutes

  28. ARP Spoofing en 2 minutes

  29. ARP Spoofing en 2 minutes

  30. ARP Spoofing en 2 minutes

  31. ARP Spoofing en 2 minutes

  32. ARP Spoofing en 2 minutes

  33. Sans HTTPS Tout le monde peut voir ce qu'il se

    passe
  34. We now use https by default for all Facebook users.

    This feature, which we first introduced as an option two years ago, means that your browser is told to communicate with Facebook using a secure connection, as indicated by the "https" rather than "http" in https://www.facebook.com. https://www.facebook.com/notes/facebook-engineering/secure-browsing-by-default/10151590414803920/ 31 Juillet 2013
  35. Comment fonctionne HTTPS ?

  36. Infrastructure à clé https://www.thesslstore.com/blog/root-certificates-intermediate

  37. https://android.googlesource.com/platform/system/ca-certificates/+/master/files Infrastructure à clé

  38. Infrastructure à clé

  39. Infrastructure à clé

  40. Pourquoi le déploiement du HTTPS a-t-il pris autant de temps

    ?
  41. Un accès avancé au serveur est requis pas seulement un

    accès FTP. . Prérequis technique
  42. Pourquoi payer quand ça fonctionne ? Le prix

  43. Le manque de documentation

  44. Le manque d'outil d'automatisation

  45. Pas si simple

  46. 2016

  47. This specification defines "secure contexts", thereby allowing user agent implementers

    and specification authors to enable certain features only when certain minimum standards of authentication and confidentiality are met. https://www.w3.org/TR/secure-contexts 15 Septembre 2016
  48. Warning: Direct access to the camera is a powerful feature.

    It requires consent from the user, and your site MUST be on a secure origin (HTTPS). https://developers.google.com/web/fundamentals/media/capturing-images/ 15 Septembre 2016
  49. 2018

  50. "Chrome will mark all HTTP sites as ‘not secure’ starting

    in July" https://www.theverge.com/2018/2/8/16991254/chrome-not-secure-marked-http-encryption-ssl 8 Février 2018
  51. Android 9

  52. Est il simple de passer au HTTPS ?

  53. Est il simple de passer au HTTPS ? OUI !

  54. None
  55. Est ce que tous mes problèmes de sécurité seront résolus

    ?
  56. Est ce que tous mes problèmes de sécurité seront résolus

    ? NON
  57. Quels sont les risques de ce système ?

  58. Mozilla was recently notified that an intermediate certificate, which chains

    up to a root included in Mozilla’s root store, was loaded into a firewall device that performed SSL man-in-the-middle (MITM) traffic management. It was then used, during the process of inspecting traffic, to generate certificates for domains the device owner does not legitimately own or control. The Certificate Authority (CA) has told us that this action was not permitted by their policies and practices and the agreement with their customer, and they have revoked the intermediate certificate that was loaded into the firewall device. While this is not a Firefox-specific issue, to protect our users we are adding the revoked certificate to OneCRL, our mechanism for directly sending revocation information to Firefox which will be shipping in Firefox 37. https://blog.mozilla.org/security/2015/03/23/revoking-trust-in-one-cnnic-intermediate-certificate/ 23 Mars 2015
  59. China Internet Network Information Center (CNNIC), a non-profit organization administrated

    by Cyberspace Administration of China (CAC), operates the “CNNIC Root” and “China Internet Network Information Center EV Certificates Root” certificates that are included in NSS, and used to issue certificates to organizations and the general public. CNNIC issued an unconstrained intermediate certificate that was labeled as a test certificate and had a two week validity, expiring April 3, 2015. Their customer loaded this certificate into a firewall device which performed SSL MITM, and a user inside their network accessed other servers, causing the firewall to issue certificates for domains that this customer did not own or control. Mozilla’s CA Certificate Policy prohibits certificates from being used in this manner when they chain up to a root certificate in Mozilla’s CA program. https://blog.mozilla.org/security/2015/03/23/revoking-trust-in-one-cnnic-intermediate-certificate/ 23 Mars 2015
  60. Abus de confiance https://www.thesslstore.com/blog/root-certificates-intermediate/

  61. Late on December 3rd, we became aware of unauthorized digital

    certificates for several Google domains. We investigated immediately and found the certificate was issued by an intermediate certificate authority (CA) linking back to ANSSI, a French certificate authority. Intermediate CA certificates carry the full authority of the CA, so anyone who has one can use it to create a certificate for any website they wish to impersonate. In response, we updated Chrome’s certificate revocation metadata immediately to block that intermediate CA, and then alerted ANSSI and other browser vendors. Our actions addressed the immediate problem for our users. https://security.googleblog.com/2013/12/further-improving-digital-certificate.html 7 Décembre 2013
  62. Est-ce possible sous Android ?

  63. Est-ce possible sous Android ? OUI

  64. L'exemple du "débug"

  65. Abus de confiance

  66. Abus de confiance

  67. Automatisation

  68. Comment l'empêcher ?

  69. Comment l'empêcher ? Puis-je tout contrôler ?

  70. Certification privée

  71. Est-ce que je peux tout faire ?

  72. Est-ce que je peux tout faire ? Ça dépend

  73. Est-ce que je peux tout faire ? Non Dans le

    cas où les appareils ne sont pas administrés par vous comme dans le cas d'un site Internet public
  74. Est-ce que je peux tout faire ? Oui Si vous

    avez le contrôle sur les appareils ou le code de vérification.
  75. OkHttp Certificate Pinner sous Android

  76. Bravo ! Vous avez appris le certificate pinning.

  77. None
  78. Est-ce que je dois épingler mes certificats ? OUI (Penser

    à la pérennité)
  79. Est-ce que tous mes soucis seront résolus ?

  80. Est-ce que tous mes soucis seront résolus ? Non (Mais

    la plupart oui)
  81. De quoi devrais-je me méfier ?

  82. De quoi devrais-je me méfier ? Le social engineering

  83. Ingénierie sociale https://www.androidpolice.com/2018/06/03/fake-fortnite-apks-dont-tricked-downloading-one/

  84. De quoi devrais-je me méfier ?

  85. De quoi devrais-je me méfier ? Le reverse engineering

  86. Décompilation https://blog.bramp.net/post/2015/08/01/decompile-and-recompile-android-apk/

  87. Interception d'appels

  88. Automatisation https://github.com/ac-pm/SSLUnpinning_Xposed

  89. Automatisation https://github.com/ac-pm/SSLUnpinning_Xposed

  90. Dois-je m'inquiéter ?

  91. Dois-je m'inquiéter ? Au niveau mobile, non.

  92. Dois-je m'inquiéter ? Au niveau mobile, non. L'équipe serveur devrait

    se méfier.
  93. • Il est temps de passer à HTTPS si ce

    n'est pas encore fait. • L'épinglage de certificats est une bonne pratique. • Les canaux de livraisons classiques sont généralement à privilégier. • Le trafic pourra être inspecté sous certaines conditions. • Le risque côté mobile est restreint mais pas côté serveur. Récapitulatif
  94. Des questions ? @Xebiconfr - #Xebicon19