Python, le langage de codage le plus populaire au monde, nouvelle arme de choix des hackers

1

Python, ce langage informatique très populaire pour sa simplicité et sa flexibilité d’utilisation, était récemment vanté dans The Economist comme étant le langage qui sera bientôt le plus utilisé au niveau mondial. Alors naturellement, comme tout outil ou service populaire, Python est devenu l’arme de prédilection des hackeurs.

Des ingénieurs informatiques de la société Imperva ont donc décidé d’enquêter sur les menaces dites Python. Or le meilleur endroit pour mener cette enquête était, bien entendu, GitHub. Selon une estimation grossière, plus de 20 % des répertoires GitHub destinés à mettre en œuvre un outil d’attaque ou du code exploitant une vulnérabilité sont écrits en Python. Dans pratiquement chaque thème lié à la sécurité sur GitHub, la majorité des répertoires sont programmés en Python, notamment des outils tels que w3af, Sqlmap et même le sinistre AutoSploit.

A l’aide d’un mécanisme intelligent et avancé de classification des divers logiciels clients web, il est possible de déterminer que pour les incidents de sécurité, une majorité (plus de 25 %) des clients identifiés – si l’on exclut les scanners de vulnérabilité – reposent sur Python.

A la différence d’autres clients, on observe dans Python de très nombreux vecteurs d’attaque différents ainsi que l’exploitation de failles connues. Les pirates, à l’instar des développeurs, apprécient les avantages de Python, d’où son succès auprès d’eux.

Image 1

Figure 1 – Incidents de sécurité par logiciel client, à l’exclusion des scanners de vulnérabilité. Plus de 25 % des clients sont des outils reposant sur Python et employés par des acteurs malveillants, ce qui en fait le vecteur le plus courant pour les tentatives d’exploitation de vulnérabilités.

Lors que nous étudions l’utilisation de Python dans des attaques contre les sites que nous protégeons, le résultat n’est guère surprenant : bon nombre d’entre eux (jusqu’à 77 %) ont été attaqués par un outil codé en Python et, dans plus d’un tiers des cas, un outil Python est responsable de la majorité des attaques quotidiennes. Ces proportions, au fil du temps, montrent que des outils Python sont utilisés aussi bien pour un scan horizontal que vertical.

Le graphique ci-dessous présente le pourcentage quotidien de sites subissant des attaques Python :

image 2
Modules Python

Les deux modules Python les plus couramment utilisés pour les attaques web sont Urllib et Python Requests. Le graphique ci-dessous représente la répartition des attaques. L’emploi du nouveau module Async IO est encore balbutiant, ce qui est tout à fait logique compte tenu des vastes possibilités offertes par la bibliothèque en matière d’attaques DDoS sur la couche 7, en particulier au moyen d’une technique de type « Spray & Pray » :

image 3

Python et les vulnérabilités connues

Les avantages du langage de programmation Python en font un outil prisé pour l’exploitation de vulnérabilités connues. Nous avons collecté des informations sur les dix principales failles récemment exploitées par un outil Python et nous ne nous attendons pas à voir cette tendance s’arrêter.

Les deux attaques les plus répandues au cours des deux derniers mois exploitaient respectivement les failles CVE-2017-9841, une vulnérabilité à l’exécution de code à distance (RCE) en PHP dans le framework PHPUnit, et CVE-2015-8562, une vulnérabilité RCE dans le framework Joomla. Il n’est pas étonnant que les attaques les plus courantes soient de type RCE, compte tenu du grand intérêt de cette technique pour des acteurs malveillants.

Un autre exemple, qui ne figure pas dans le Top 10, nous est fourni par CVE-2018-1000207, à l’origine de centaines d’attaques journalières sur plusieurs jours durant la dernière semaine d’août 2018. Une analyse plus approfondie révèle que l’attaque a été lancée contre plusieurs clients protégés par nos services, et ce par un groupe d’adresses IP situées en Chine.

Exploitation de failles CVE dans le temps

image 4

Nous pouvons observer, d’après nos données, une augmentation du nombre de failles CVE exploitées par des attaques ces dernières années :

image 5

En outre, Python sert à cibler des applications et frameworks spécifiques. Ci-dessous le Top 10, toujours selon nos données :

image 6

Une analyse de tous les frameworks ciblés par Python révèlent que les attaques les plus répandues visent Struts, WordPress, Joomla et Drupal, ce qui n’est pas une surprise car il s’agit actuellement de certains des frameworks les plus prisés.

Vecteurs d’attaque

Le paramètre HTTP le plus répandu que nous avons observé dans les attaques, représentant environ 30 % de tous ceux utilisés, correspond à une tentative de chargement de backdoor par une désérialisation PHP dans Joomla ! utilisant l’objet JDatabaseDriverMysqli. La charge malveillante employée est ICG-AuthExploiterBot.

Nous avons également détecté une charge malveillante qui était en fait une tentative d’infection par Coinbitminer (voir les détails en annexe ; à noter qu’il s’agit d’un simple exemple. Python étant si largement utilisé par les pirates, il existe une multitude de vecteurs d’attaque différents à prendre en considération. Python ne requiert que des compétences minimales de programmation, ce qui facilite l’écriture d’un script et l’exploitation d’une vulnérabilité).

Notre recommandation

Sauf si vous êtes en mesure de différencier les requêtes des outils Python de celles des autres outils, nous formulons toujours la même recommandation : gardez toujours la sécurité présente à l’esprit au cours du développement, mettez votre système à jour avec les correctifs et abstenez-vous de toute pratique jugée peu sûre.

Annexe – Exemple d’attaque

Voici un cas intéressant de charge malveillante que nous avons observé (avec une légère variante à la fin) :

image 7Après un décodage base64, nous obtenons une charge binaire :

image 8

La charge ci-dessus fait mention d’un répertoire GitHub pour un outil de désérialisation et une commande de téléchargement wget dans un fichier jpg, ce qui fait fortement penser à l’existence d’une activité malveillante.
image 9

Après téléchargement du fichier à partir de http://45.227.252.250/jre.jpg, nous constatons qu’il s’agit en fait d’un script contenant les instructions suivantes :

image 10

Les deux dernières lignes du script tentent de récupérer http://45.227.252.250/static/font.jpg %7Csh, un cheval de Troie identifié sous l’appellation Trojan.Coinbitminer par Symantec Endpoint Protection.

Cette découverte est liée à un tweet de la fin août 2018, parlant d’une nouvelle vulnérabilité Apache Struts, CVE-2018-11776, utilisée pour une infection avec ce même Coinbitminer.

About Author

Eric Guillotin

1 comentario

Leave A Reply