• Non classifié(e)
  • Perspective
Publié le 3 octobre 2017

Comment automatiser la détection des CDNs ?

Introduction

Au sein des tests d’intrusion, la phase de reconnaissance est primordiale afin de déterminer, avec précision les potentiels vecteurs d’attaque à l’encontre d’une application Web.

De nombreux outils permettent de découvrir les services et installations vulnérables à l’aide de divers tests tels que l’énumération de services, la détection de CMS, la recherche de pages d’administration, etc.

Cependant, actuellement, aucun d’entre eux ne permet de détecter, de façon simple et efficace, si un site internet est protégé par des CDNs (Content Delivery Network).

Depuis quelques années, les CDNs sont devenues très populaires, offrant de multiples fonctionnalités visant à protéger les applications Web contre divers types d’attaques qui inondent le monde de l’internet. Pour ne citer que les plus connus :

  • Attaques de déni de service (classique, distribué, réfléchi)
  • Injection de code HTML/JavaScript, Injection SQL, etc.

En plus de l’aspect sécurité, les CDNs permettent également d’accélérer le chargement des pages web en améliorant le système de cache, le load balancing, la minimisation du JavaScript, etc.

A l’heure actuelle, les CDNs représentent un véritable challenge pour les pentesters. En effet, ils empêchent la récupération de l’adresse IP réelle du serveur, protégeant les applications contre toutes attaques système.

Leur détection résultera d’un véritable gain de temps, permettant ainsi aux analystes de se concentrer sur les facettes vulnérables de leur cible. C’est donc dans le but d’accompagner ces professionnels en sécurité que whichCDN a été développé.

Présentation de WhichCDN

WhichCDN possède 5 méthodes de détection différente :

  • Whois

Certains CDNs engendrent des modifications au sein des champs exposés par la commande whois (Name Server, nserver, etc.), permettant de détecter leur présence :

WhichCDN-Methode_Whois

  • La divulgation d’information

Un petit nombre de CDNs divulguent leurs présences lorsque l’on tente d’accéder directement au site internet par le biais de l’adresse IP résolue grâce à la commande système host :

WhichCDN-Fuite_info

  • Les en-têtes HTTP

Certains CDNs, plus ou moins intrusifs, ajoutent et/ou remplacent des champs au sein des en-têtes HTTP. Ces détails permettent ainsi d’identifier le type de technologie utilisé :

  • La verbosité des serveurs DNS

Lors de la résolution DNS d’un nom de domaine, il est commun d’y trouver le name server du CDN utilisé.

  • L’énumération de sous domaine

Les grandes entreprises utilisent souvent des sous-domaines afin de gérer leur CDN. Il est donc possible de les détecter en énumérant et vérifiant leur présence :

WhichCDN-Methode_sous-domaines

Utilisation de WhichCDN pour la détection des CDNs

WhichCDN est un script en python extrêmement simple à utiliser. Celui-ci est disponible à l’adresse suivante : https://github.com/Nitr4x/whichCDN

Une fois téléchargé (via la commande « git clone »), WhichCDN s’utilise de la manière suivante :
whichCDN exemple.com

WhichCDN-Interface

La capture d’écran ci-dessus permet ainsi d’affirmer que le site 0x00sec.org est protégé par Cloudflare.

Liste des CDNs supportés

A l’heure de la rédaction de cet article, WhichCDN est en mesure de supporter les CDNs suivants :

  • Cloudflare
  • Incapsula
  • Cloudfront
  • Akamai
  • Airee
  • CacheFly
  • EdgeCast
  • MaxCDN
  • Beluga
  • Limelight
  • Fastly
  • Myracloud
  • Microsft Azure

Axes d'amélioration pour WhichCDN

À ce jour, aucun moyen ne permet de contourner les protections de type CDN. Cependant, s’il devient possible dans le futur de contourner ces protections, il serait intéressant de rajouter ces vecteurs d’attaques au sein de whichCDN afin d’automatiser leur exploitation.

De plus, il serait intéressant d’accroître la liste des CDNs supportés avec d’autres fournisseurs tels que :

  • Azion
  • ArvanCloud
  • Beluga
  • DN77
  • CDNetwork
  • CDNsun
  • CDNvideo
  • ChinaCache
  • ChinaNetCenter
  • Highwinds
  • KeyCDN
  • Level3
  • NGENIX
  • Quantil
  • SkyparkCDN
  • Verizon Digital Media services
  • Turbobyte

Conclusion

whichCDN est un outil permettant de détecter avec précision le CDN utilisé par un site internet. Cette information permet aux experts de la Cybersécurité d’accélérer leur phase de reconnaissance et ainsi, gagner un temps précieux au cours des audits de sécurité.

Sa forte notoriété lui a déjà permis, quelque mois seulement après sa publication, d’être intégré dans la liste des outils disponibles sur la distribution blackArch Linux et, bientôt, Kali Linux.

Bon pentest à tous.

Article rédigé par
Régis Senet